#region License Information
/* HeuristicLab
* Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
*
* This file is part of HeuristicLab.
*
* HeuristicLab is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* HeuristicLab is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with HeuristicLab. If not, see .
*/
#endregion
using HeuristicLab.Hive.Server.Core.InternalInterfaces.DataAccess;
using HeuristicLab.PluginInfrastructure;
using System.Runtime.CompilerServices;
using HeuristicLab.Hive.Contracts.Interfaces;
using HeuristicLab.Hive.Server.Core;
using HeuristicLab.Hive.Server.Core.InternalInterfaces;
///
/// The service locator for the server core
///
public class ServiceLocator {
private static DiscoveryService discoveryService =
new DiscoveryService();
private static ITransactionManager transManager = null;
private static IClientManager clientManager = null;
private static IJobManager jobManager = null;
private static IUserRoleManager userRoleManager = null;
private static IClientCommunicator clientCommunicator = null;
private static ILifecycleManager lifecycleManager = null;
private static IClientAdapter clientAdapter = null;
private static IClientGroupAdapter clientGroupAdapter = null;
private static IResourceAdapter resourceAdapter = null;
private static IUserAdapter userAdapter = null;
private static IUserGroupAdapter userGroupAdapter = null;
private static IPermissionOwnerAdapter permOwnerAdapter = null;
private static IJobAdapter jobAdapter = null;
private static IJobResultsAdapter jobResultsAdapter = null;
private static IScheduler scheduler = null;
///
/// Gets the db transaction manager
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static ITransactionManager GetTransactionManager() {
if (transManager == null) {
transManager = discoveryService.GetInstances()[0];
}
return transManager;
}
///
/// Gets the client manager
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IClientManager GetClientManager() {
if (clientManager == null)
clientManager = new ClientManager();
return clientManager;
}
///
/// Gets the job manager
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IJobManager GetJobManager() {
if (jobManager == null)
jobManager = new JobManager();
return jobManager;
}
///
/// Gets the user role manager
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IUserRoleManager GetUserRoleManager() {
if (userRoleManager == null)
userRoleManager = new UserRoleManager();
return userRoleManager;
}
///
/// Gets the client Communicator
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IClientCommunicator GetClientCommunicator() {
if (clientCommunicator == null)
clientCommunicator = new ClientCommunicator();
return clientCommunicator;
}
///
/// Gets the lifecycle manager
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static ILifecycleManager GetLifecycleManager() {
if (lifecycleManager == null) {
lifecycleManager = new LifecycleManager();
}
return lifecycleManager;
}
///
/// Gets the client database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IClientAdapter GetClientAdapter() {
if (clientAdapter == null) {
clientAdapter = discoveryService.GetInstances()[0];
}
return clientAdapter;
}
///
/// Gets the client group database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IClientGroupAdapter GetClientGroupAdapter() {
if (clientGroupAdapter == null) {
clientGroupAdapter = discoveryService.GetInstances()[0];
}
return clientGroupAdapter;
}
///
/// Gets the resource database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IResourceAdapter GetResourceAdapter() {
if (resourceAdapter == null) {
resourceAdapter = discoveryService.GetInstances()[0];
}
return resourceAdapter;
}
///
/// Gets the user database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IUserAdapter GetUserAdapter() {
if (userAdapter == null) {
userAdapter = discoveryService.GetInstances()[0];
}
return userAdapter;
}
///
/// Gets the user group database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IUserGroupAdapter GetUserGroupAdapter() {
if (userGroupAdapter == null) {
userGroupAdapter = discoveryService.GetInstances()[0];
}
return userGroupAdapter;
}
///
/// Gets the permission owner database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IPermissionOwnerAdapter GetPermissionOwnerAdapter() {
if (permOwnerAdapter == null) {
permOwnerAdapter = discoveryService.GetInstances()[0];
}
return permOwnerAdapter;
}
///
/// Gets the job database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IJobAdapter GetJobAdapter() {
if (jobAdapter == null) {
jobAdapter = discoveryService.GetInstances()[0];
}
return jobAdapter;
}
///
/// Gets the job results database adapter
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IJobResultsAdapter GetJobResultsAdapter() {
if (jobResultsAdapter == null) {
jobResultsAdapter = discoveryService.GetInstances()[0];
}
return jobResultsAdapter;
}
///
/// Gets the scheduler
///
///
[MethodImpl(MethodImplOptions.Synchronized)]
public static IScheduler GetScheduler() {
if (scheduler == null) {
scheduler = discoveryService.GetInstances()[0];
}
return scheduler;
}
}