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/UserGroupAdapter.cs

    r972 r995  
    3131
    3232namespace HeuristicLab.Hive.Server.ADODataAccess {
    33   class UserGroupAdapter: DataAdapterBase, IUserGroupAdapter {
    34     private dsHiveServerTableAdapters.UserGroupTableAdapter adapter =
    35         new dsHiveServerTableAdapters.UserGroupTableAdapter();
    36 
    37     private dsHiveServer.UserGroupDataTable data =
    38       new dsHiveServer.UserGroupDataTable();
     33  class UserGroupAdapter:
     34    DataAdapterBase<
     35      dsHiveServerTableAdapters.UserGroupTableAdapter,
     36      UserGroup,
     37      dsHiveServer.UserGroupRow>,
     38    IUserGroupAdapter {
     39
     40    #region Fields
     41    dsHiveServer.UserGroupDataTable data =
     42        new dsHiveServer.UserGroupDataTable();
    3943
    4044    private dsHiveServerTableAdapters.PermissionOwner_UserGroupTableAdapter permOwnerUserGroupAdapter =
    4145      new dsHiveServerTableAdapters.PermissionOwner_UserGroupTableAdapter();
    42 
    43     private dsHiveServer.PermissionOwner_UserGroupDataTable permOwnerUserGroupData =
    44       new dsHiveServer.PermissionOwner_UserGroupDataTable();
    4546
    4647    private IPermissionOwnerAdapter permOwnerAdapter = null;
     
    6566      }
    6667    }
    67 
    68     public UserGroupAdapter() {
    69       adapter.Fill(data);
    70       permOwnerUserGroupAdapter.Fill(permOwnerUserGroupData);
    71     }
    72 
    73     protected override void Update() {
    74       this.adapter.Update(this.data);
    75       this.permOwnerUserGroupAdapter.Update(permOwnerUserGroupData);
    76     }
    77 
    78     private UserGroup Convert(dsHiveServer.UserGroupRow row,
     68    #endregion
     69
     70    #region Overrides
     71    protected override UserGroup Convert(dsHiveServer.UserGroupRow row,
    7972      UserGroup userGroup) {
    8073      if (row != null && userGroup != null) {
    8174        /*Parent - Permission Owner*/
    82         userGroup.PermissionOwnerId = row.PermissionOwnerId;
    83         PermOwnerAdapter.GetPermissionOwnerById(userGroup);
     75        userGroup.Id = row.PermissionOwnerId;
     76        PermOwnerAdapter.GetById(userGroup);
    8477
    8578        //first check for created references
    86         IEnumerable<dsHiveServer.PermissionOwner_UserGroupRow> userGroupRows =
    87           from permOwner in
    88             permOwnerUserGroupData.AsEnumerable<dsHiveServer.PermissionOwner_UserGroupRow>()
    89           where permOwner.UserGroupId == userGroup.PermissionOwnerId
    90           select permOwner;
     79        dsHiveServer.PermissionOwner_UserGroupDataTable userGroupRows =
     80          permOwnerUserGroupAdapter.GetDataByUserGroupId(userGroup.Id);
    9181
    9282        foreach (dsHiveServer.PermissionOwner_UserGroupRow permOwnerUserGroupRow in
     
    9787            from p in
    9888              userGroup.Members
    99             where p.PermissionOwnerId == permOwnerUserGroupRow.PermissionOwnerId
     89            where p.Id == permOwnerUserGroupRow.PermissionOwnerId
    10090            select p;
    10191          if (permOwners.Count<PermissionOwner>() == 1)
     
    10494          if (permOwner == null) {
    10595            PermissionOwner permissionOwner =
    106               UserAdapter.GetUserById(permOwnerUserGroupRow.PermissionOwnerId);
     96              UserAdapter.GetById(permOwnerUserGroupRow.PermissionOwnerId);
    10797
    10898            if (permissionOwner == null) {
    10999              //is a user group
    110100              permissionOwner =
    111                 GetUserGroupById(permOwnerUserGroupRow.PermissionOwnerId);
     101                GetById(permOwnerUserGroupRow.PermissionOwnerId);
    112102            }
    113103
     
    122112
    123113        foreach (PermissionOwner permOwner in userGroup.Members) {
    124           dsHiveServer.PermissionOwner_UserGroupRow permOwnerUserGroupRow =
    125             permOwnerUserGroupData.FindByPermissionOwnerIdUserGroupId(
    126               permOwner.PermissionOwnerId,
    127               userGroup.PermissionOwnerId);
    128 
    129           if (permOwnerUserGroupRow == null) {
     114          dsHiveServer.PermissionOwner_UserGroupDataTable found =
     115            permOwnerUserGroupAdapter.GetDataByPermownerUsergroupId(
     116              permOwner.Id,
     117              userGroup.Id);
     118          if (found.Count != 1) {
    130119            deleted.Add(permOwner);
    131120          }
     
    141130    }
    142131
    143     private dsHiveServer.UserGroupRow Convert(UserGroup userGroup,
     132    protected override dsHiveServer.UserGroupRow Convert(UserGroup userGroup,
    144133      dsHiveServer.UserGroupRow row) {
    145134      if (userGroup != null && row != null) {
    146         row.PermissionOwnerId = userGroup.PermissionOwnerId;
     135        row.PermissionOwnerId = userGroup.Id;
    147136     
    148137        //update references
     
    150139          //first update the member to make sure it exists in the DB
    151140          if (permOwner is User) {
    152             UserAdapter.UpdateUser(permOwner as User);
     141            UserAdapter.Update(permOwner as User);
    153142          } else if (permOwner is UserGroup) {
    154             UpdateUserGroup(permOwner as UserGroup);
     143            Update(permOwner as UserGroup);
    155144          }
    156145
    157146          //secondly check for created references
    158147          dsHiveServer.PermissionOwner_UserGroupRow permOwnerUserGroupRow =
    159             permOwnerUserGroupData.FindByPermissionOwnerIdUserGroupId(
    160               permOwner.PermissionOwnerId,
    161               userGroup.PermissionOwnerId);
     148            null;
     149          dsHiveServer.PermissionOwner_UserGroupDataTable found =
     150            permOwnerUserGroupAdapter.GetDataByPermownerUsergroupId(
     151              permOwner.Id,
     152              userGroup.Id);
     153          if (found.Count == 1)
     154            permOwnerUserGroupRow = found[0];
    162155
    163156          if (permOwnerUserGroupRow == null) {
    164157            permOwnerUserGroupRow =
    165               permOwnerUserGroupData.NewPermissionOwner_UserGroupRow();
     158              found.NewPermissionOwner_UserGroupRow();
    166159
    167160            permOwnerUserGroupRow.PermissionOwnerId =
    168               permOwner.PermissionOwnerId;
     161              permOwner.Id;
    169162            permOwnerUserGroupRow.UserGroupId =
    170               userGroup.PermissionOwnerId;
    171 
    172             permOwnerUserGroupData.AddPermissionOwner_UserGroupRow(
    173               permOwnerUserGroupRow);
     163              userGroup.Id;
     164
     165            found.AddPermissionOwner_UserGroupRow(permOwnerUserGroupRow);
     166
     167            permOwnerUserGroupAdapter.Update(permOwnerUserGroupRow);
    174168          }
    175169        }
    176170
    177171        //thirdly check for deleted references
    178         IEnumerable<dsHiveServer.PermissionOwner_UserGroupRow> userGroupRows =
    179           from permOwner in
    180             permOwnerUserGroupData.AsEnumerable<dsHiveServer.PermissionOwner_UserGroupRow>()
    181           where permOwner.UserGroupId == userGroup.PermissionOwnerId 
    182           select permOwner;
     172        dsHiveServer.PermissionOwner_UserGroupDataTable userGroupRows =
     173            permOwnerUserGroupAdapter.GetDataByUserGroupId(userGroup.Id);
    183174
    184175        ICollection<dsHiveServer.PermissionOwner_UserGroupRow> deleted =
     
    192183            from p in
    193184              userGroup.Members
    194             where p.PermissionOwnerId == permOwnerUserGroupRow.PermissionOwnerId
     185            where p.Id == permOwnerUserGroupRow.PermissionOwnerId
    195186            select p;
    196187
     
    203194        }
    204195
    205         foreach (dsHiveServer.PermissionOwner_UserGroupRow permOwnerUserGroupRow in
    206           deleted) {
    207           permOwnerUserGroupData.RemovePermissionOwner_UserGroupRow(
    208             permOwnerUserGroupRow);
    209         }
    210 
     196        foreach (dsHiveServer.PermissionOwner_UserGroupRow
     197          permOwnerUserGroupRow in deleted) {
     198          permOwnerUserGroupRow.Delete();
     199          permOwnerUserGroupAdapter.Update(permOwnerUserGroupRow);
     200        }
    211201      }
    212202
    213203      return row;
    214204    }
     205
     206    protected override dsHiveServer.UserGroupRow
     207      InsertNewRow(UserGroup group) {
     208      dsHiveServer.UserGroupRow row =
     209        data.NewUserGroupRow();
     210
     211      row.PermissionOwnerId = group.Id;
     212
     213      data.AddUserGroupRow(row);
     214      adapter.Update(row);
     215
     216      return row;
     217    }
     218
     219    protected override void
     220     UpdateRow(dsHiveServer.UserGroupRow row) {
     221      adapter.Update(row);
     222    }
     223
     224    protected override IEnumerable<dsHiveServer.UserGroupRow>
     225      FindById(long id) {
     226      return adapter.GetDataById(id);
     227    }
     228
     229    protected override IEnumerable<dsHiveServer.UserGroupRow>
     230      FindAll() {
     231      return adapter.GetData();
     232    }
     233    #endregion
    215234
    216235    #region IUserGroupAdapter Members
    217236    [MethodImpl(MethodImplOptions.Synchronized)]
    218     public void UpdateUserGroup(UserGroup group) {
     237    public override void Update(UserGroup group) {
    219238      if (group != null) {
    220         PermOwnerAdapter.UpdatePermissionOwner(group);
    221 
    222         dsHiveServer.UserGroupRow row =
    223           data.FindByPermissionOwnerId(group.PermissionOwnerId);
    224 
    225         if (row == null) {
    226           row = data.NewUserGroupRow();
    227           row.PermissionOwnerId = group.PermissionOwnerId;
    228           data.AddUserGroupRow(row);
    229         }
    230 
    231         Convert(group, row);
    232       }
    233     }
    234 
    235     public UserGroup GetUserGroupById(long userGroupId) {
    236       UserGroup userGroup = new UserGroup();
    237 
    238       dsHiveServer.UserGroupRow row =
    239         data.FindByPermissionOwnerId(userGroupId);
    240 
    241       if (row != null) {
    242         Convert(row, userGroup);
    243 
    244         return userGroup;
    245       } else {
    246         return null;
    247       }
    248     }
    249 
    250     public UserGroup GetUserGroupByName(string name) {
    251       UserGroup group = new UserGroup();
    252 
    253       PermissionOwner permOwner =
    254         PermOwnerAdapter.GetPermissionOwnerByName(name);
    255 
    256       if (permOwner != null) {
    257         dsHiveServer.UserGroupRow row =
    258           data.FindByPermissionOwnerId(permOwner.PermissionOwnerId);
    259 
    260         if (row != null) {
    261           Convert(row, group);
    262 
    263           return group;
    264         }
     239        PermOwnerAdapter.Update(group);
     240
     241        base.Update(group);
     242      }
     243    }
     244
     245    public UserGroup GetByName(String name) {
     246      if (name != null) {
     247        return base.FindSingle(
     248          delegate() {
     249            return adapter.GetDataByName(name);
     250          });
    265251      }
    266252
    267253      return null;
    268     }
    269 
    270     public ICollection<UserGroup> GetAllUserGroups() {
    271       ICollection<UserGroup> allUserGroups =
    272         new List<UserGroup>();
    273 
    274       foreach (dsHiveServer.UserGroupRow row in data) {
    275         UserGroup userGroup = new UserGroup();
    276 
    277         Convert(row, userGroup);
    278         allUserGroups.Add(userGroup);
    279       }
    280 
    281       return allUserGroups;
    282254    }
    283255
     
    287259     
    288260      if (permOwner != null) {
    289         IEnumerable<dsHiveServer.PermissionOwner_UserGroupRow> userGroupRows =
    290          from userGroup in
    291            permOwnerUserGroupData.AsEnumerable<dsHiveServer.PermissionOwner_UserGroupRow>()
    292          where userGroup.PermissionOwnerId == permOwner.PermissionOwnerId
    293          select userGroup;
     261        dsHiveServer.PermissionOwner_UserGroupDataTable userGroupRows =
     262          permOwnerUserGroupAdapter.GetDataByPermissionOwnerId(permOwner.Id);
    294263
    295264        foreach (dsHiveServer.PermissionOwner_UserGroupRow userGroupRow in
    296265          userGroupRows) {
    297266          UserGroup userGroup =
    298             GetUserGroupById(userGroupRow.UserGroupId);
     267            GetById(userGroupRow.UserGroupId);
    299268          userGroups.Add(userGroup);
    300269        }
     
    305274
    306275    [MethodImpl(MethodImplOptions.Synchronized)]
    307     public bool DeleteUserGroup(UserGroup group) {
     276    public override bool Delete(UserGroup group) {
    308277      if (group != null) {
    309         dsHiveServer.UserGroupRow row =
    310           data.FindByPermissionOwnerId(group.PermissionOwnerId);
    311 
    312         if (row != null) {
    313           ICollection<dsHiveServer.PermissionOwner_UserGroupRow> deleted =
    314             new List<dsHiveServer.PermissionOwner_UserGroupRow>();
    315          
    316           foreach (dsHiveServer.PermissionOwner_UserGroupRow permOwnerUserGroupRow in
    317             permOwnerUserGroupData) {
    318             if (permOwnerUserGroupRow.UserGroupId == group.PermissionOwnerId ||
    319               permOwnerUserGroupRow.PermissionOwnerId == group.PermissionOwnerId) {
    320               deleted.Add(permOwnerUserGroupRow);
    321             }
    322           }
    323 
    324           foreach (dsHiveServer.PermissionOwner_UserGroupRow permOwnerUserGroupRow in
    325             deleted) {
    326             permOwnerUserGroupData.RemovePermissionOwner_UserGroupRow(
    327               permOwnerUserGroupRow);
    328           }
    329 
    330           row.Delete();
    331           adapter.Update(row);
    332           return PermOwnerAdapter.DeletePermissionOwner(group);
    333         }
     278        return base.Delete(group) &&
     279          PermOwnerAdapter.Delete(group);
    334280      }
    335281
Note: See TracChangeset for help on using the changeset viewer.