Free cookie consent management tool by TermsFeed Policy Generator

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

Refactored DAL, Improved Caching (#372)

File:
1 edited

Legend:

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

    r972 r995  
    3030
    3131namespace HeuristicLab.Hive.Server.ADODataAccess {
    32   class UserAdapter : DataAdapterBase, IUserAdapter {
    33     private dsHiveServerTableAdapters.HiveUserTableAdapter adapter =
    34         new dsHiveServerTableAdapters.HiveUserTableAdapter();
    35 
    36     private dsHiveServer.HiveUserDataTable data =
     32  class UserAdapter :
     33    DataAdapterBase<
     34      dsHiveServerTableAdapters.HiveUserTableAdapter,
     35      User,
     36      dsHiveServer.HiveUserRow>,
     37    IUserAdapter {
     38    #region Fields
     39    dsHiveServer.HiveUserDataTable data =
    3740        new dsHiveServer.HiveUserDataTable();
    3841
     
    5255    private IUserGroupAdapter UserGroupAdapter {
    5356      get {
    54         if(userGroupAdapter == null) {
     57        if (userGroupAdapter == null)
    5558          userGroupAdapter = ServiceLocator.GetUserGroupAdapter();
    56         }
    5759
    5860        return userGroupAdapter;
     
    6466    private IJobAdapter JobAdapter {
    6567      get {
    66         if (jobAdapter == null) {
     68        if (jobAdapter == null)
    6769          jobAdapter = ServiceLocator.GetJobAdapter();
    68         }
    6970
    7071        return jobAdapter;
    7172      }
    7273    }
     74    #endregion
    7375
    74     public UserAdapter() {
    75       adapter.Fill(data);
    76     }
    77 
    78     protected override void Update() {
    79       this.adapter.Update(this.data);
    80     }
    81 
    82     private User Convert(dsHiveServer.HiveUserRow row,
     76    #region Overrides
     77    protected override User Convert(dsHiveServer.HiveUserRow row,
    8378      User user) {
    8479      if (row != null && user != null) {
    8580        /*Parent - PermissionOwner*/
    86         user.PermissionOwnerId = row.PermissionOwnerId;
    87         PermOwnerAdapter.GetPermissionOwnerById(user);
     81        user.Id = row.PermissionOwnerId;
     82        PermOwnerAdapter.GetById(user);
    8883
    8984        /*User*/
     
    9893    }
    9994
    100     private dsHiveServer.HiveUserRow Convert(User user,
     95    protected override dsHiveServer.HiveUserRow Convert(User user,
    10196      dsHiveServer.HiveUserRow row) {
    10297      if (user != null && row != null) {
    103         row.Password = user.Password;
     98        if (user.Password == null)
     99          row.SetPasswordNull();
     100        else
     101          row.Password = user.Password;
    104102
    105103        return row;
    106104      } else
    107         return null;     
     105        return null;
    108106    }
     107
     108    protected override dsHiveServer.HiveUserRow
     109      InsertNewRow(User user) {
     110      dsHiveServer.HiveUserRow row =
     111        data.NewHiveUserRow();
     112
     113      row.PermissionOwnerId = user.Id;
     114
     115      data.AddHiveUserRow(row);
     116
     117      return row;
     118    }
     119
     120    protected override void
     121      UpdateRow(dsHiveServer.HiveUserRow row) {
     122      adapter.Update(row);
     123    }
     124
     125    protected override IEnumerable<dsHiveServer.HiveUserRow>
     126      FindById(long id) {
     127      return adapter.GetDataById(id);
     128    }
     129
     130    protected override IEnumerable<dsHiveServer.HiveUserRow>
     131      FindAll() {
     132      return adapter.GetData();
     133    }
     134    #endregion
    109135
    110136    #region IUserAdapter Members
    111137
    112138    [MethodImpl(MethodImplOptions.Synchronized)]
    113     public void UpdateUser(User user) {
     139    public override void Update(User user) {
    114140      if (user != null) {
    115         PermOwnerAdapter.UpdatePermissionOwner(user);
     141        PermOwnerAdapter.Update(user);
    116142
    117         dsHiveServer.HiveUserRow row =
    118           data.FindByPermissionOwnerId(user.PermissionOwnerId);
    119         if (row == null) {
    120           row = data.NewHiveUserRow();
    121           row.PermissionOwnerId = user.PermissionOwnerId;
    122           data.AddHiveUserRow(row);
    123         }
    124 
    125         Convert(user, row);
     143        base.Update(user);
    126144      }
    127145    }
    128146
    129     public User GetUserById(long userId) {
    130       User user = new User();
    131 
    132       dsHiveServer.HiveUserRow row =
    133           data.FindByPermissionOwnerId(userId);
    134 
    135       if(row != null) {
    136         Convert(row, user);
    137 
    138         return user;
    139       } else {
    140         return null;
    141       }
    142     }
    143 
    144     public User GetUserByName(String name) {
    145       User user = new User();
    146 
    147       PermissionOwner permOwner =
    148         PermOwnerAdapter.GetPermissionOwnerByName(name);
    149 
    150       if (permOwner != null) {
    151         dsHiveServer.HiveUserRow row =
    152           data.FindByPermissionOwnerId(permOwner.PermissionOwnerId);
    153 
    154         if (row != null) {
    155           Convert(row, user);
    156 
    157           return user;
    158         }
     147    public User GetByName(String name) {
     148      if (name != null) {
     149        return base.FindSingle(
     150          delegate() {
     151            return adapter.GetDataByName(name);
     152          });
    159153      }
    160154
     
    162156    }
    163157
    164     public ICollection<User> GetAllUsers() {
    165       ICollection<User> allUsers =
    166         new List<User>();
     158    [MethodImpl(MethodImplOptions.Synchronized)]
     159    public override bool Delete(User user) {
     160      if (user != null) {
     161        //Referential integrity with user groups
     162        ICollection<UserGroup> userGroups =
     163          UserGroupAdapter.MemberOf(user);
     164        foreach (UserGroup group in userGroups) {
     165          group.Members.Remove(user);
     166          UserGroupAdapter.Update(group);
     167        }
    167168
    168       foreach (dsHiveServer.HiveUserRow row in data) {
    169         User user = new User();
    170         Convert(row, user);
    171         allUsers.Add(user);
    172       }
     169        //Referential integrity with jobs
     170        ICollection<Job> jobs =
     171          JobAdapter.GetJobsOf(user);
     172        foreach (Job job in jobs) {
     173          JobAdapter.Delete(job);
     174        }
    173175
    174       return allUsers;
    175     }
    176 
    177     [MethodImpl(MethodImplOptions.Synchronized)]
    178     public bool DeleteUser(User user) {
    179       if (user != null) {
    180         dsHiveServer.HiveUserRow row =
    181           data.FindByPermissionOwnerId(user.PermissionOwnerId);
    182 
    183         if (row != null) {
    184           //Referential integrity with user groups
    185           ICollection<UserGroup> userGroups =
    186             UserGroupAdapter.MemberOf(user);
    187           foreach (UserGroup group in userGroups) {
    188             group.Members.Remove(user);
    189             UserGroupAdapter.UpdateUserGroup(group);
    190           }
    191 
    192           //Referential integrity with jobs
    193           ICollection<Job> jobs =
    194             JobAdapter.GetJobsOf(user);
    195           foreach (Job job in jobs) {
    196             JobAdapter.DeleteJob(job);
    197           }
    198 
    199           row.Delete();
    200           adapter.Update(row);
    201 
    202           return PermOwnerAdapter.DeletePermissionOwner(user);
    203         }
     176        return base.Delete(user) &&
     177            PermOwnerAdapter.Delete(user);
    204178      }
    205179
Note: See TracChangeset for help on using the changeset viewer.