Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/16/08 17:26:43 (16 years ago)
Author:
svonolfe
Message:

Refactored DAL, Improved Caching (#372)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/ClientGroupAdapter.cs

    r991 r995  
    3131
    3232namespace HeuristicLab.Hive.Server.ADODataAccess {
    33   class ClientGroupAdapter : DataAdapterBase, IClientGroupAdapter {
    34     private dsHiveServerTableAdapters.ClientGroupTableAdapter adapter =
    35         new dsHiveServerTableAdapters.ClientGroupTableAdapter();
    36 
    37     private dsHiveServer.ClientGroupDataTable data =
    38       new dsHiveServer.ClientGroupDataTable();
     33  class ClientGroupAdapter :
     34    DataAdapterBase<dsHiveServerTableAdapters.ClientGroupTableAdapter,
     35    ClientGroup,
     36    dsHiveServer.ClientGroupRow>,
     37    IClientGroupAdapter {
     38    #region Fields
     39    dsHiveServer.ClientGroupDataTable data =
     40        new dsHiveServer.ClientGroupDataTable();
    3941
    4042    private dsHiveServerTableAdapters.ClientGroup_ResourceTableAdapter resourceClientGroupAdapter =
    4143      new dsHiveServerTableAdapters.ClientGroup_ResourceTableAdapter();
    42 
    43     private dsHiveServer.ClientGroup_ResourceDataTable resourceClientGroupData =
    44       new dsHiveServer.ClientGroup_ResourceDataTable();
    4544
    4645    private IResourceAdapter resourceAdapter = null;
     
    6564      }
    6665    }
    67 
    68     public ClientGroupAdapter() {
    69       adapter.Fill(data);
    70       resourceClientGroupAdapter.Fill(resourceClientGroupData);
    71     }
    72 
    73     protected override void Update() {
    74       this.adapter.Update(this.data);
    75       this.resourceClientGroupAdapter.Update(resourceClientGroupData);
    76     }
    77 
    78     private ClientGroup Convert(dsHiveServer.ClientGroupRow row,
     66    #endregion
     67
     68    #region Overrides
     69    protected override ClientGroup Convert(dsHiveServer.ClientGroupRow row,
    7970      ClientGroup clientGroup) {
    8071      if (row != null && clientGroup != null) {
    8172        /*Parent - Permission Owner*/
    82         clientGroup.ResourceId = row.ResourceId;
    83         ResAdapter.GetResourceById(clientGroup);
     73        clientGroup.Id = row.ResourceId;
     74        ResAdapter.GetById(clientGroup);
    8475
    8576        //first check for created references
    86         IEnumerable<dsHiveServer.ClientGroup_ResourceRow> clientGroupRows =
    87           from resource in
    88             resourceClientGroupData.AsEnumerable<dsHiveServer.ClientGroup_ResourceRow>()
    89           where resource.ClientGroupId == clientGroup.ResourceId
    90           select resource;
     77        dsHiveServer.ClientGroup_ResourceDataTable clientGroupRows =
     78            resourceClientGroupAdapter.GetDataByClientGroupId(clientGroup.Id);
    9179
    9280        foreach (dsHiveServer.ClientGroup_ResourceRow resourceClientGroupRow in
     
    9785            from p in
    9886              clientGroup.Resources
    99             where p.ResourceId == resourceClientGroupRow.ResourceId
     87            where p.Id == resourceClientGroupRow.ResourceId
    10088            select p;
    10189          if (resources.Count<Resource>() == 1)
     
    10492          if (resource == null) {
    10593            Resource res =
    106               ClientAdapter.GetClientById(resourceClientGroupRow.ResourceId);
     94              ClientAdapter.GetById(resourceClientGroupRow.ResourceId);
    10795
    10896            if (res == null) {
    10997              //is a client group
    11098              res =
    111                 GetClientGroupById(resourceClientGroupRow.ResourceId);
     99                GetById(resourceClientGroupRow.ResourceId);
    112100            }
    113101
     
    122110
    123111        foreach (Resource resource in clientGroup.Resources) {
    124           dsHiveServer.ClientGroup_ResourceRow permOwnerUserGroupRow =
    125             resourceClientGroupData.FindByClientGroupIdResourceId(
    126               clientGroup.ResourceId,
    127               resource.ResourceId);
    128 
    129           if (permOwnerUserGroupRow == null) {
     112          dsHiveServer.ClientGroup_ResourceDataTable found =
     113            resourceClientGroupAdapter.GetDataByClientGroupResourceId(
     114            clientGroup.Id,
     115            resource.Id);
     116
     117          if (found.Count != 1) {
    130118            deleted.Add(resource);
    131119          }
     
    141129    }
    142130
    143     private dsHiveServer.ClientGroupRow Convert(ClientGroup clientGroup,
     131    protected override dsHiveServer.ClientGroupRow Convert(ClientGroup clientGroup,
    144132      dsHiveServer.ClientGroupRow row) {
    145133      if (clientGroup != null && row != null) {
    146         row.ResourceId = clientGroup.ResourceId;
     134        row.ResourceId = clientGroup.Id;
    147135
    148136        //update references
     
    150138          //first update the member to make sure it exists in the DB
    151139          if (resource is ClientInfo) {
    152             ClientAdapter.UpdateClient(resource as ClientInfo);
     140            ClientAdapter.Update(resource as ClientInfo);
    153141          } else if (resource is ClientGroup) {
    154             UpdateClientGroup(resource as ClientGroup);
     142            Update(resource as ClientGroup);
    155143          }
    156144
    157145          //secondly check for created references
    158146          dsHiveServer.ClientGroup_ResourceRow resourceClientGroupRow =
    159             resourceClientGroupData.FindByClientGroupIdResourceId(
    160                             clientGroup.ResourceId,
    161                             resource.ResourceId);
     147            null;
     148          dsHiveServer.ClientGroup_ResourceDataTable found =
     149            resourceClientGroupAdapter.GetDataByClientGroupResourceId(
     150              clientGroup.Id,
     151              resource.Id);
     152          if (found.Count == 1)
     153            resourceClientGroupRow = found[0];
    162154
    163155          if (resourceClientGroupRow == null) {
    164156            resourceClientGroupRow =
    165               resourceClientGroupData.NewClientGroup_ResourceRow();
     157              found.NewClientGroup_ResourceRow();
    166158
    167159            resourceClientGroupRow.ResourceId =
    168               resource.ResourceId;
     160              resource.Id;
    169161            resourceClientGroupRow.ClientGroupId =
    170               clientGroup.ResourceId;
    171 
    172             resourceClientGroupData.AddClientGroup_ResourceRow(
     162              clientGroup.Id;
     163
     164            found.AddClientGroup_ResourceRow(resourceClientGroupRow);
     165
     166            resourceClientGroupAdapter.Update(
    173167              resourceClientGroupRow);
    174168          }
     
    176170
    177171        //thirdly check for deleted references
    178         IEnumerable<dsHiveServer.ClientGroup_ResourceRow> clientGroupRows =
    179           from permOwner in
    180             resourceClientGroupData.AsEnumerable<dsHiveServer.ClientGroup_ResourceRow>()
    181           where permOwner.ClientGroupId == clientGroup.ResourceId
    182           select permOwner;
     172        dsHiveServer.ClientGroup_ResourceDataTable clientGroupRows =
     173          resourceClientGroupAdapter.GetDataByClientGroupId(clientGroup.Id);
    183174
    184175        ICollection<dsHiveServer.ClientGroup_ResourceRow> deleted =
     
    192183            from r in
    193184              clientGroup.Resources
    194             where r.ResourceId == resourceClientGroupRow.ResourceId
     185            where r.Id == resourceClientGroupRow.ResourceId
    195186            select r;
    196187
     
    203194        }
    204195
    205         foreach (dsHiveServer.ClientGroup_ResourceRow resoruceClientGroupRow in
    206           deleted) {
    207           resourceClientGroupData.RemoveClientGroup_ResourceRow(
    208             resoruceClientGroupRow);
    209         }
    210 
     196        foreach (dsHiveServer.ClientGroup_ResourceRow resourceClientGroupRow in deleted) {
     197          resourceClientGroupRow.Delete();
     198          resourceClientGroupAdapter.Update(resourceClientGroupRow);
     199        }
    211200      }
    212201
    213202      return row;
    214203    }
     204
     205    protected override dsHiveServer.ClientGroupRow
     206      InsertNewRow(ClientGroup group) {
     207      dsHiveServer.ClientGroupRow row =
     208        data.NewClientGroupRow();
     209
     210      row.ResourceId = group.Id;
     211
     212      data.AddClientGroupRow(row);
     213      adapter.Update(row);
     214
     215      return row;
     216    }
     217
     218    protected override void
     219      UpdateRow(dsHiveServer.ClientGroupRow row) {
     220      adapter.Update(row);
     221    }
     222
     223    protected override IEnumerable<dsHiveServer.ClientGroupRow>
     224      FindById(long id) {
     225      return adapter.GetDataById(id);
     226    }
     227
     228    protected override IEnumerable<dsHiveServer.ClientGroupRow>
     229      FindAll() {
     230      return adapter.GetData();
     231    }
     232    #endregion
    215233
    216234    #region IClientGroupAdapter Members
    217235    [MethodImpl(MethodImplOptions.Synchronized)]
    218     public void UpdateClientGroup(ClientGroup group) {
     236    public override void Update(ClientGroup group) {
    219237      if (group != null) {
    220         ResAdapter.UpdateResource(group);
    221 
    222         dsHiveServer.ClientGroupRow row =
    223           data.FindByResourceId(group.ResourceId);
    224 
    225         if (row == null) {
    226           row = data.NewClientGroupRow();
    227           row.ResourceId = group.ResourceId;
    228           data.AddClientGroupRow(row);
    229         }
    230 
    231         Convert(group, row);
    232       }
    233     }
    234 
    235     public ClientGroup GetClientGroupById(long clientGroupId) {
    236       ClientGroup clientGroup = new ClientGroup();
    237 
    238       dsHiveServer.ClientGroupRow row =
    239         data.FindByResourceId(clientGroupId);
    240 
    241       if (row != null) {
    242         Convert(row, clientGroup);
    243 
    244         return clientGroup;
    245       } else {
    246         return null;
    247       }
    248     }
    249 
    250     public ClientGroup GetClientGroupByName(string name) {
     238        ResAdapter.Update(group);
     239
     240        base.Update(group);
     241      }
     242    }
     243
     244    public ClientGroup GetByName(string name) {
    251245      ClientGroup group = new ClientGroup();
    252 
    253246      Resource res =
    254         ResAdapter.GetResourceByName(name);
     247        ResAdapter.GetByName(name);
    255248
    256249      if (res != null) {
    257         dsHiveServer.ClientGroupRow row =
    258           data.FindByResourceId(res.ResourceId);
    259 
    260         if (row != null) {
    261           Convert(row, group);
    262 
    263           return group;
    264         }
     250        return GetById(res.Id);
    265251      }
    266252
    267253      return null;
    268     }
    269 
    270     public ICollection<ClientGroup> GetAllClientGroups() {
    271       ICollection<ClientGroup> allClientGroups =
    272         new List<ClientGroup>();
    273 
    274       foreach (dsHiveServer.ClientGroupRow row in data) {
    275         ClientGroup clientGroup = new ClientGroup();
    276 
    277         Convert(row, clientGroup);
    278         allClientGroups.Add(clientGroup);
    279       }
    280 
    281       return allClientGroups;
    282254    }
    283255
     
    288260      if (resource != null) {
    289261        IEnumerable<dsHiveServer.ClientGroup_ResourceRow> clientGroupRows =
    290          from clientGroup in
    291            resourceClientGroupData.AsEnumerable<dsHiveServer.ClientGroup_ResourceRow>()
    292          where clientGroup.ResourceId == resource.ResourceId
    293          select clientGroup;
     262         resourceClientGroupAdapter.GetDataByResourceId(resource.Id);
    294263
    295264        foreach (dsHiveServer.ClientGroup_ResourceRow clientGroupRow in
    296265          clientGroupRows) {
    297266          ClientGroup clientGroup =
    298             GetClientGroupById(clientGroupRow.ClientGroupId);
     267            GetById(clientGroupRow.ClientGroupId);
    299268          clientGroups.Add(clientGroup);
    300269        }
     
    305274
    306275    [MethodImpl(MethodImplOptions.Synchronized)]
    307     public bool DeleteClientGroup(ClientGroup group) {
     276    public override bool Delete(ClientGroup group) {
    308277      if (group != null) {
    309         dsHiveServer.ClientGroupRow row =
    310           data.FindByResourceId(group.ResourceId);
    311 
    312         if (row != null) {
    313           ICollection<dsHiveServer.ClientGroup_ResourceRow> deleted =
    314             new List<dsHiveServer.ClientGroup_ResourceRow>();
    315 
    316           foreach (dsHiveServer.ClientGroup_ResourceRow resourceClientGroupRow in
    317             resourceClientGroupData) {
    318             if (resourceClientGroupRow.ClientGroupId == group.ResourceId ||
    319               resourceClientGroupRow.ResourceId == group.ResourceId) {
    320               deleted.Add(resourceClientGroupRow);
    321             }
    322           }
    323 
    324           foreach (dsHiveServer.ClientGroup_ResourceRow resourceClientGroupRow in
    325             deleted) {
    326             resourceClientGroupData.RemoveClientGroup_ResourceRow(
    327               resourceClientGroupRow);
    328           }
    329 
    330           row.Delete();
    331           adapter.Update(row);
    332 
    333           return ResAdapter.DeleteResource(group);
    334         }
     278        return base.Delete(group) &&
     279          ResAdapter.Delete(group);
    335280      }
    336281
Note: See TracChangeset for help on using the changeset viewer.