Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/31/09 01:33:37 (15 years ago)
Author:
svonolfe
Message:

Added transaction management (#527)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Hive.Server.Core/ClientManager.cs

    r1449 r1468  
    2828using HeuristicLab.Hive.Contracts;
    2929using HeuristicLab.Hive.Server.DataAccess;
     30using HeuristicLab.DataAccess.Interfaces;
    3031
    3132namespace HeuristicLab.Hive.Server.Core {
    3233  class ClientManager: IClientManager {
    3334
    34     IClientAdapter clientAdapter;
    35     IClientGroupAdapter clientGroupAdapter;
    36 
     35    ISessionFactory factory;
    3736    List<ClientGroup> clientGroups;
    3837
    3938    public ClientManager() {
    40       clientAdapter = ServiceLocator.GetClientAdapter();
    41       clientGroupAdapter = ServiceLocator.GetClientGroupAdapter();
    42 
     39      factory = ServiceLocator.GetSessionFactory();
     40     
    4341      clientGroups = new List<ClientGroup>();
    44 
    45       ClientGroup cg = new ClientGroup { Id = Guid.NewGuid(), Name = "SuperGroup" };
    46       cg.Resources = new List<Resource>();
    47 
    48       clientGroups.Add(cg);
    4942    }
    5043
     
    5649    /// <returns></returns>
    5750    public ResponseList<ClientInfo> GetAllClients() {
    58       ResponseList<ClientInfo> response = new ResponseList<ClientInfo>();
    59 
    60       response.List = new List<ClientInfo>(clientAdapter.GetAll());
    61       response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_GET_ALL_CLIENTS;
    62       response.Success = true;
    63 
    64       return response;
     51      ISession session = factory.GetSessionForCurrentThread();
     52
     53      try {
     54        IClientAdapter clientAdapter =
     55          session.GetDataAdapter<ClientInfo, IClientAdapter>();
     56
     57        ResponseList<ClientInfo> response = new ResponseList<ClientInfo>();
     58
     59        response.List = new List<ClientInfo>(clientAdapter.GetAll());
     60        response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_GET_ALL_CLIENTS;
     61        response.Success = true;
     62
     63        return response;
     64      }
     65      finally {
     66        if (session != null)
     67          session.EndSession();
     68      }
    6569    }
    6670
     
    7074    /// <returns></returns>
    7175    public ResponseList<ClientGroup> GetAllClientGroups() {
    72       ResponseList<ClientGroup> response = new ResponseList<ClientGroup>();
    73 
    74       response.List = new List<ClientGroup>(clientGroupAdapter.GetAll());
    75       response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_GET_ALL_CLIENTGROUPS;
    76       response.Success = true;
    77 
    78       return response;
     76      ISession session = factory.GetSessionForCurrentThread();
     77
     78      try {
     79        IClientGroupAdapter clientGroupAdapter =
     80          session.GetDataAdapter<ClientGroup, IClientGroupAdapter>();
     81        ResponseList<ClientGroup> response = new ResponseList<ClientGroup>();
     82
     83        response.List = new List<ClientGroup>(clientGroupAdapter.GetAll());
     84        response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_GET_ALL_CLIENTGROUPS;
     85        response.Success = true;
     86
     87        return response;
     88      }
     89      finally {
     90        if (session != null)
     91          session.EndSession();
     92      }
    7993    }
    8094
     
    91105    /// <returns></returns>
    92106    public Response AddClientGroup(ClientGroup clientGroup) {
    93       Response response = new Response();
    94 
    95       if (clientGroup.Id != Guid.Empty) {
    96         response.Success = false;
    97         response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_ID_MUST_NOT_BE_SET;
    98         return response;
    99       }
    100       clientGroupAdapter.Update(clientGroup);
    101       response.Success = true;
    102       response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_CLIENTGROUP_ADDED;
    103 
    104       return response;
     107      ISession session = factory.GetSessionForCurrentThread();
     108
     109      try {
     110        IClientGroupAdapter clientGroupAdapter =
     111          session.GetDataAdapter<ClientGroup, IClientGroupAdapter>();
     112
     113        Response response = new Response();
     114
     115        if (clientGroup.Id != Guid.Empty) {
     116          response.Success = false;
     117          response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_ID_MUST_NOT_BE_SET;
     118        } else {
     119          clientGroupAdapter.Update(clientGroup);
     120          response.Success = true;
     121          response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_CLIENTGROUP_ADDED;
     122        }
     123
     124        return response;
     125      }
     126      finally {
     127        if (session != null)
     128          session.EndSession();
     129      }
    105130    }
    106131
     
    112137    /// <returns></returns>
    113138    public Response AddResourceToGroup(Guid clientGroupId, Resource resource) {
    114       Response response = new Response();
    115 
    116       if (resource.Id != Guid.Empty) {
    117         response.Success = false;
    118         response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_ID_MUST_NOT_BE_SET;
    119         return response;
    120       }
    121 
    122       ClientGroup clientGroup = clientGroupAdapter.GetById(clientGroupId);
    123       if (clientGroup == null) {
    124         response.Success = false;
    125         response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_CLIENTGROUP_DOESNT_EXIST;
    126         return response;
    127       }
    128       clientGroup.Resources.Add(resource);
    129 
    130       response.Success = true;
    131       response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_ADDED_TO_GROUP;
    132 
    133       return response;
     139      ISession session = factory.GetSessionForCurrentThread();
     140
     141      try {
     142        IClientGroupAdapter clientGroupAdapter =
     143          session.GetDataAdapter<ClientGroup, IClientGroupAdapter>();
     144
     145        Response response = new Response();
     146
     147        if (resource.Id != Guid.Empty) {
     148          response.Success = false;
     149          response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_ID_MUST_NOT_BE_SET;
     150          return response;
     151        }
     152
     153        ClientGroup clientGroup = clientGroupAdapter.GetById(clientGroupId);
     154        if (clientGroup == null) {
     155          response.Success = false;
     156          response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_CLIENTGROUP_DOESNT_EXIST;
     157          return response;
     158        }
     159        clientGroup.Resources.Add(resource);
     160
     161        response.Success = true;
     162        response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_ADDED_TO_GROUP;
     163
     164        return response;
     165      }
     166      finally {
     167        if (session != null)
     168          session.EndSession();
     169      }
    134170    }
    135171
     
    141177    /// <returns></returns>
    142178    public Response DeleteResourceFromGroup(Guid clientGroupId, Guid resourceId) {
    143       Response response = new Response();
    144 
    145       ClientGroup clientGroup = clientGroupAdapter.GetById(clientGroupId);
    146       if (clientGroup == null) {
     179      ISession session = factory.GetSessionForCurrentThread();
     180
     181      try {
     182        IClientGroupAdapter clientGroupAdapter =
     183          session.GetDataAdapter<ClientGroup, IClientGroupAdapter>();
     184
     185        Response response = new Response();
     186
     187        ClientGroup clientGroup = clientGroupAdapter.GetById(clientGroupId);
     188        if (clientGroup == null) {
     189          response.Success = false;
     190          response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_CLIENTGROUP_DOESNT_EXIST;
     191          return response;
     192        }
     193        foreach (Resource resource in clientGroup.Resources) {
     194          if (resource.Id == resourceId) {
     195            clientGroup.Resources.Remove(resource);
     196            response.Success = true;
     197            response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_REMOVED;
     198            return response;
     199          }
     200        }
    147201        response.Success = false;
    148         response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_CLIENTGROUP_DOESNT_EXIST;
    149         return response;
    150       }
    151       foreach (Resource resource in clientGroup.Resources) {
    152         if (resource.Id == resourceId) {
    153           clientGroup.Resources.Remove(resource);
    154           response.Success = true;
    155           response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_REMOVED;
    156           return response;
    157         }
    158       }
    159       response.Success = false;
    160       response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_NOT_FOUND;
    161 
    162       return response;
     202        response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_NOT_FOUND;
     203
     204        return response;
     205      }
     206      finally {
     207        if (session != null)
     208          session.EndSession();
     209      }
    163210    }
    164211    #endregion
Note: See TracChangeset for help on using the changeset viewer.