Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/07/08 18:03:51 (16 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/PermissionOwnerAdapter.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 PermissionOwnerAdapter: IPermissionOwner {
    32     #region IPermissionOwner Members
     32  class PermissionOwnerAdapter: DataAdapterBase, IPermissionOwnerAdapter {
    3333    private dsHiveServerTableAdapters.PermissionOwnerTableAdapter adapter =
    3434     new dsHiveServerTableAdapters.PermissionOwnerTableAdapter();
    3535
    36     private PermissionOwner Convert(dsHiveServer.PermissionOwnerRow row,
     36    private dsHiveServer.PermissionOwnerDataTable data =
     37      new dsHiveServer.PermissionOwnerDataTable();
     38
     39    public PermissionOwnerAdapter() {
     40      adapter.Fill(data);
     41    }
     42
     43    protected override void Update() {
     44      this.adapter.Update(this.data);
     45    }
     46
     47    private PermissionOwner Convert(dsHiveServer.PermissionOwnerRow row,
    3748      PermissionOwner permOwner) {
    3849      if (row != null && permOwner != null) {
     
    5263      dsHiveServer.PermissionOwnerRow row) {
    5364      if (row != null && permOwner != null) {
    54         row.PermissionOwnerId = permOwner.PermissionOwnerId;
    5565        row.Name = permOwner.Name;
    5666
     
    5969        return null;
    6070    }
    61 
     71   
     72    #region IPermissionOwner Members
     73    [MethodImpl(MethodImplOptions.Synchronized)]
    6274    public void UpdatePermissionOwner(PermissionOwner permOwner) {
    6375      if (permOwner != null) {
    64         dsHiveServer.PermissionOwnerDataTable data =
    65           adapter.GetDataById(permOwner.PermissionOwnerId);
    66 
    67         dsHiveServer.PermissionOwnerRow row;
    68         if (data.Count == 0) {
     76        dsHiveServer.PermissionOwnerRow row =
     77          data.FindByPermissionOwnerId(permOwner.PermissionOwnerId);
     78       
     79        if (row == null) {
    6980          row = data.NewPermissionOwnerRow();
    7081          data.AddPermissionOwnerRow(row);
    71         } else {
    72           row = data[0];
     82
     83          //write row to db to get primary key
     84          adapter.Update(row);
    7385        }
    7486
    75         row.Name = permOwner.Name;
    76 
    77         adapter.Update(data);
    78 
     87        Convert(permOwner, row);
    7988        permOwner.PermissionOwnerId = row.PermissionOwnerId;
    8089      }
    8190    }
    8291
    83     internal bool FillPermissionOwner(PermissionOwner permOwner) {
     92    public bool GetPermissionOwnerById(PermissionOwner permOwner) {
    8493      if (permOwner != null) {
    85         dsHiveServer.PermissionOwnerDataTable data =
    86           adapter.GetDataById(permOwner.PermissionOwnerId);
    87         if (data.Count == 1) {
    8894          dsHiveServer.PermissionOwnerRow row =
    89             data[0];
     95            data.FindByPermissionOwnerId(permOwner.PermissionOwnerId);
     96
     97        if(row != null) {
    9098          Convert(row, permOwner);
    9199
     
    101109      permOwner.PermissionOwnerId = permOwnerId;
    102110
    103       if (FillPermissionOwner(permOwner))
     111      if (GetPermissionOwnerById(permOwner))
    104112        return permOwner;
    105113      else
     
    107115    }
    108116
     117    public PermissionOwner GetPermissionOwnerByName(String name) {
     118      PermissionOwner permOwner = new PermissionOwner();
     119
     120      dsHiveServer.PermissionOwnerRow row =
     121        data.Single<dsHiveServer.PermissionOwnerRow>(
     122          r => !r.IsNameNull() && r.Name == name);
     123
     124      if (row != null) {
     125        Convert(row, permOwner);
     126
     127        return permOwner;
     128      } else {
     129        return null;
     130      }
     131    }
     132
    109133    public ICollection<PermissionOwner> GetAllPermissionOwners() {
    110134      ICollection<PermissionOwner> allPermissionOwners =
    111135        new List<PermissionOwner>();
    112 
    113       dsHiveServer.PermissionOwnerDataTable data =
    114           adapter.GetData();
    115136
    116137      foreach (dsHiveServer.PermissionOwnerRow row in data) {
     
    123144    }
    124145
     146    [MethodImpl(MethodImplOptions.Synchronized)]
    125147    public bool DeletePermissionOwner(PermissionOwner permOwner) {
    126148      if (permOwner != null) {
    127         dsHiveServer.PermissionOwnerDataTable data =
    128            adapter.GetDataById(permOwner.PermissionOwnerId);
     149          dsHiveServer.PermissionOwnerRow row =
     150            data.FindByPermissionOwnerId(permOwner.PermissionOwnerId);
    129151
    130         if (data.Count == 1) {
    131           dsHiveServer.PermissionOwnerRow row = data[0];
     152          if(row != null) {
     153            data.RemovePermissionOwnerRow(row);
    132154
    133           row.Delete();
    134           return adapter.Update(data) > 0;
     155            return true;
     156          }
    135157        }
    136       }
    137158
    138159      return false;
Note: See TracChangeset for help on using the changeset viewer.