Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/31/09 01:33:37 (15 years ago)
Author:
svonolfe
Message:

Added transaction management (#527)

File:
1 edited

Legend:

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

    r1449 r1468  
    2828using System.Linq.Expressions;
    2929using HeuristicLab.DataAccess.ADOHelper;
     30using HeuristicLab.Hive.Server.ADODataAccess.dsHiveServerTableAdapters;
     31using System.Data.Common;
     32using System.Data.SqlClient;
    3033
    3134namespace HeuristicLab.Hive.Server.ADODataAccess {
     35  class JobAdapterWrapper :
     36    DataAdapterWrapperBase<dsHiveServerTableAdapters.JobTableAdapter,
     37                      Job,
     38                      dsHiveServer.JobRow> {   
     39    public override void UpdateRow(dsHiveServer.JobRow row) {
     40      TransactionalAdapter.Update(row);
     41    }
     42
     43    public override dsHiveServer.JobRow
     44      InsertNewRow(Job job) {
     45      dsHiveServer.JobDataTable data =
     46        new dsHiveServer.JobDataTable();
     47
     48      dsHiveServer.JobRow row = data.NewJobRow();
     49      row.JobId = job.Id;
     50      data.AddJobRow(row);
     51
     52      return row;
     53    }
     54
     55    public override IEnumerable<dsHiveServer.JobRow>
     56      FindById(Guid id) {
     57      return TransactionalAdapter.GetDataById(id);
     58    }
     59
     60    public override IEnumerable<dsHiveServer.JobRow>
     61      FindAll() {
     62      return TransactionalAdapter.GetData();
     63    }
     64
     65    protected override void SetConnection(DbConnection connection) {
     66      adapter.Connection = connection as SqlConnection;
     67    }
     68
     69    protected override void SetTransaction(DbTransaction transaction) {
     70      adapter.Transaction = transaction as SqlTransaction;
     71    }
     72  }
     73 
    3274  class JobAdapter :
    33     CachedDataAdapter<dsHiveServerTableAdapters.JobTableAdapter,
     75    DataAdapterBase<dsHiveServerTableAdapters.JobTableAdapter,
    3476                      Job,
    35                       dsHiveServer.JobRow,
    36                       dsHiveServer.JobDataTable>,
     77                      dsHiveServer.JobRow>,
    3778    IJobAdapter {
    38     public JobAdapter() :
    39       base(ServiceLocator.GetDBSynchronizer()) {
    40     }
    41 
    4279    #region Fields
    4380    private IClientAdapter clientAdapter = null;
     
    4683      get {
    4784        if (clientAdapter == null)
    48           clientAdapter = ServiceLocator.GetClientAdapter();
     85          clientAdapter =
     86            this.Session.GetDataAdapter<ClientInfo, IClientAdapter>();
    4987
    5088        return clientAdapter;
     
    5795      get {
    5896        if (resultsAdapter == null) {
    59           resultsAdapter = ServiceLocator.GetJobResultsAdapter();
     97          resultsAdapter =
     98            this.Session.GetDataAdapter<JobResult, IJobResultsAdapter>();
    6099        }
    61100
     
    64103    }
    65104    #endregion
     105
     106    public JobAdapter(): base(new JobAdapterWrapper()) {
     107    }
    66108
    67109    #region Overrides
     
    176218      return row;
    177219    }
    178 
    179     protected override void UpdateRow(dsHiveServer.JobRow row) {
    180       Adapter.Update(row);
    181     }
    182 
    183     protected override dsHiveServer.JobRow
    184       InsertNewRow(Job job) {
    185       dsHiveServer.JobDataTable data =
    186         new dsHiveServer.JobDataTable();
    187 
    188       dsHiveServer.JobRow row = data.NewJobRow();
    189       row.JobId = job.Id;
    190       data.AddJobRow(row);
    191 
    192       return row;
    193     }
    194 
    195     protected override dsHiveServer.JobRow
    196       InsertNewRowInCache(Job job) {
    197       dsHiveServer.JobRow row = cache.NewJobRow();
    198       row.JobId = job.Id;
    199       cache.AddJobRow(row);
    200 
    201       return row;
    202     }
    203 
    204     protected override void FillCache() {
    205       Adapter.FillByActive(cache);
    206     }
    207 
    208     protected override void SynchronizeWithDb() {
    209       this.Adapter.Update(cache);
    210     }
    211 
    212     protected override bool PutInCache(Job job) {
    213       return job != null
    214         && (job.State == State.calculating
    215             || job.State == State.idle);
    216     }
    217 
    218     protected override IEnumerable<dsHiveServer.JobRow>
    219       FindById(Guid id) {
    220       return Adapter.GetDataById(id);
    221     }
    222 
    223     protected override dsHiveServer.JobRow
    224       FindCachedById(Guid id) {
    225       return cache.FindByJobId(id);
    226     }
    227 
    228     protected override IEnumerable<dsHiveServer.JobRow>
    229       FindAll() {
    230       return FindMultipleRows(
    231         new Selector(Adapter.GetData),
    232         new Selector(cache.AsEnumerable<dsHiveServer.JobRow>));
    233     }
    234 
    235220    #endregion
    236221
     
    242227            delegate() {
    243228              return Adapter.GetDataByParentJob(job.Id);
    244             },
    245             delegate() {
    246               return from j in
    247                    cache.AsEnumerable<dsHiveServer.JobRow>()
    248                  where  !j.IsParentJobIdNull() &&
    249                         j.ParentJobId == job.Id
    250                  select j;
    251229            });
    252230      }
     
    260238           delegate() {
    261239             return Adapter.GetDataByState(state.ToString());
    262            },
    263            delegate() {
    264              return from job in
    265                       cache.AsEnumerable<dsHiveServer.JobRow>()
    266                     where !job.IsJobStateNull() &&
    267                            job.JobState == state.ToString()
    268                     select job;
    269240           });
    270241    }
     
    276247            delegate() {
    277248              return Adapter.GetDataByClient(client.Id);
    278             },
    279             delegate() {
    280               return from job in
    281                  cache.AsEnumerable<dsHiveServer.JobRow>()
    282                where !job.IsResourceIdNull() &&
    283                       job.ResourceId == client.Id
    284                select job;
    285249            });
    286250      }
     
    296260            delegate() {
    297261              return Adapter.GetDataByCalculatingClient(client.Id);
    298             },
    299             delegate() {
    300               return from job in
    301                        cache.AsEnumerable<dsHiveServer.JobRow>()
    302                      where !job.IsResourceIdNull() &&
    303                             job.ResourceId == client.Id &&
    304                            !job.IsJobStateNull() &&
    305                             job.JobState == "calculating"
    306                      select job;
    307262            });
    308263      }
     
    311266    }
    312267
    313     public ICollection<Job> GetJobsOf(Guid userId) {
    314       throw new NotImplementedException(); 
    315      
     268    public ICollection<Job> GetJobsOf(Guid userId) {     
    316269      return
    317270          base.FindMultiple(
    318271            delegate() {
    319272              return Adapter.GetDataByUser(userId);
    320             },
    321             delegate() {
    322               return from job in
    323                 cache.AsEnumerable<dsHiveServer.JobRow>()
    324               where !job.IsUserIdNull() &&
    325                 job.UserId == Guid.Empty
    326               select job;
    327             });
    328     }
    329 
    330     public override bool Delete(Job job) {
     273            });
     274    }
     275
     276    protected override bool doDelete(Job job) {
    331277      if (job != null) {
    332278        dsHiveServer.JobRow row =
     
    342288          }
    343289
    344           return base.Delete(job);
     290          return base.doDelete(job);
    345291        }
    346292      }
Note: See TracChangeset for help on using the changeset viewer.