Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/07/08 18:03:51 (15 years ago)
Author:
svonolfe
Message:

Added caching, thread safety to DataAccess layer (#372)

File:
1 edited

Legend:

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

    r905 r925  
    2727using HeuristicLab.Hive.Server.Core.InternalInterfaces.DataAccess;
    2828using HeuristicLab.Hive.Contracts.BusinessObjects;
     29using System.Runtime.CompilerServices;
    2930
    3031namespace HeuristicLab.Hive.Server.ADODataAccess {
    31   class UserAdapter: IUserAdapter {
     32  class UserAdapter : DataAdapterBase, IUserAdapter {
    3233    private dsHiveServerTableAdapters.HiveUserTableAdapter adapter =
    3334        new dsHiveServerTableAdapters.HiveUserTableAdapter();
    3435
    35     private PermissionOwnerAdapter permOwnerAdapter =
    36       new PermissionOwnerAdapter();
     36    private dsHiveServer.HiveUserDataTable data =
     37        new dsHiveServer.HiveUserDataTable();
     38
     39    private IPermissionOwnerAdapter permOwnerAdapter =
     40       ServiceLocator.GetPermissionOwnerAdapter();
     41
     42    public UserAdapter() {
     43      adapter.Fill(data);
     44    }
     45
     46    protected override void Update() {
     47      this.adapter.Update(this.data);
     48    }
    3749
    3850    private User Convert(dsHiveServer.HiveUserRow row,
     
    4153        /*Parent - PermissionOwner*/
    4254        user.PermissionOwnerId = row.PermissionOwnerId;
    43         permOwnerAdapter.FillPermissionOwner(user);
     55        permOwnerAdapter.GetPermissionOwnerById(user);
    4456
    4557        /*User*/
     
    5769      dsHiveServer.HiveUserRow row) {
    5870      if (user != null && row != null) {
    59         row.PermissionOwnerId = user.PermissionOwnerId;
    6071        row.Password = user.Password;
    6172
     
    6778    #region IUserAdapter Members
    6879
     80    [MethodImpl(MethodImplOptions.Synchronized)]
    6981    public void UpdateUser(User user) {
    7082      if (user != null) {
    7183        permOwnerAdapter.UpdatePermissionOwner(user);
    7284
    73         dsHiveServer.HiveUserDataTable data =
    74           adapter.GetDataById(user.PermissionOwnerId);
    75 
    76         dsHiveServer.HiveUserRow row;
    77         if (data.Count == 0) {
     85        dsHiveServer.HiveUserRow row =
     86          data.FindByPermissionOwnerId(user.PermissionOwnerId);
     87        if (row == null) {
    7888          row = data.NewHiveUserRow();
    7989          row.PermissionOwnerId = user.PermissionOwnerId;
    8090          data.AddHiveUserRow(row);
    81         } else {
    82           row = data[0];
    83         }
     91        }
    8492
    8593        Convert(user, row);
    86 
    87         adapter.Update(data);
    8894      }
    8995    }
     
    9298      User user = new User();
    9399
    94       dsHiveServer.HiveUserDataTable data =
    95           adapter.GetDataById(userId);
    96       if (data.Count == 1) {
    97         dsHiveServer.HiveUserRow row =
    98           data[0];
     100      dsHiveServer.HiveUserRow row =
     101          data.FindByPermissionOwnerId(userId);
     102
     103      if(row != null) {
    99104        Convert(row, user);
    100105
     
    108113      User user = new User();
    109114
    110       dsHiveServer.HiveUserDataTable data =
    111           adapter.GetDataByName(name);
    112       if (data.Count == 1) {
     115      PermissionOwner permOwner =
     116        permOwnerAdapter.GetPermissionOwnerByName(name);
     117
     118      if (permOwner != null) {
    113119        dsHiveServer.HiveUserRow row =
    114           data[0];
    115         Convert(row, user);
     120          data.FindByPermissionOwnerId(permOwner.PermissionOwnerId);
    116121
    117         return user;
    118       } else {
    119         return null;
     122        if (row != null) {
     123          Convert(row, user);
     124
     125          return user;
     126        }
    120127      }
     128
     129      return null;
    121130    }
    122131
     
    124133      ICollection<User> allUsers =
    125134        new List<User>();
    126 
    127       dsHiveServer.HiveUserDataTable data =
    128           adapter.GetData();
    129135
    130136      foreach (dsHiveServer.HiveUserRow row in data) {
     
    137143    }
    138144
     145    [MethodImpl(MethodImplOptions.Synchronized)]
    139146    public bool DeleteUser(User user) {
    140       //referential integrity will delete the client object
    141       return permOwnerAdapter.DeletePermissionOwner(user);
     147      if (user != null) {
     148        dsHiveServer.HiveUserRow row =
     149          data.FindByPermissionOwnerId(user.PermissionOwnerId);
     150
     151        if (row != null) {
     152          data.RemoveHiveUserRow(row);
     153
     154          return permOwnerAdapter.DeletePermissionOwner(user);
     155        }
     156      }
     157
     158      return false;
    142159    }
    143160
Note: See TracChangeset for help on using the changeset viewer.