- Timestamp:
- 12/16/08 17:26:43 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/JobAdapter.cs
r991 r995 30 30 31 31 namespace HeuristicLab.Hive.Server.ADODataAccess { 32 class JobAdapter : DataAdapterBase, IJobAdapter { 33 private dsHiveServerTableAdapters.JobTableAdapter adapter = 34 new dsHiveServerTableAdapters.JobTableAdapter(); 35 36 private dsHiveServer.JobDataTable data = 37 new dsHiveServer.JobDataTable(); 32 class JobAdapter : 33 CachedDataAdapter<dsHiveServerTableAdapters.JobTableAdapter, 34 Job, 35 dsHiveServer.JobRow, 36 dsHiveServer.JobDataTable>, 37 IJobAdapter { 38 #region Fields 39 dsHiveServer.JobDataTable data = 40 new dsHiveServer.JobDataTable(); 38 41 39 42 private IClientAdapter clientAdapter = null; … … 59 62 } 60 63 } 61 62 public JobAdapter() { 63 adapter.Fill(data); 64 } 65 66 protected override void Update() { 67 this.adapter.Update(this.data); 68 } 69 70 private Job Convert(dsHiveServer.JobRow row, 64 #endregion 65 66 #region Overrides 67 protected override Job Convert(dsHiveServer.JobRow row, 71 68 Job job) { 72 69 if (row != null && job != null) { 73 job. JobId = row.JobId;70 job.Id = row.JobId; 74 71 75 72 if (!row.IsParentJobIdNull()) 76 job.ParentJob = Get JobById(row.ParentJobId);73 job.ParentJob = GetById(row.ParentJobId); 77 74 else 78 75 job.ParentJob = null; 79 76 80 77 if (!row.IsResourceIdNull()) 81 job.Client = ClientAdapter.Get ClientById(row.ResourceId);78 job.Client = ClientAdapter.GetById(row.ResourceId); 82 79 else 83 80 job.Client = null; … … 86 83 job.State = (State)Enum.Parse(job.State.GetType(), row.Status); 87 84 else 88 job.State = State. idle;85 job.State = State.nullState; 89 86 90 87 return job; … … 93 90 } 94 91 95 pr ivate dsHiveServer.JobRow Convert(Job job,92 protected override dsHiveServer.JobRow Convert(Job job, 96 93 dsHiveServer.JobRow row) { 97 94 if (job != null && row != null) { 98 95 if (job.Client != null) { 99 ClientAdapter.Update Client(job.Client);100 row.ResourceId = job.Client. ResourceId;96 ClientAdapter.Update(job.Client); 97 row.ResourceId = job.Client.Id; 101 98 } else 102 99 row.SetResourceIdNull(); 103 100 104 101 if (job.ParentJob != null) { 105 Update Job(job.ParentJob);106 row.ParentJobId = job.ParentJob. JobId;102 Update(job.ParentJob); 103 row.ParentJobId = job.ParentJob.Id; 107 104 } else 108 105 row.SetParentJobIdNull(); 109 106 110 row.Status = job.State.ToString(); 107 if (job.State != State.nullState) 108 row.Status = job.State.ToString(); 109 else 110 row.SetStatusNull(); 111 111 } 112 112 … … 114 114 } 115 115 116 protected override void UpdateRow(dsHiveServer.JobRow row) { 117 adapter.Update(row); 118 } 119 120 protected override dsHiveServer.JobRow 121 InsertNewRow(Job job) { 122 dsHiveServer.JobRow row = data.NewJobRow(); 123 data.AddJobRow(row); 124 125 return row; 126 } 127 128 protected override dsHiveServer.JobRow 129 InsertNewRowInCache(Job job) { 130 dsHiveServer.JobRow row = cache.NewJobRow(); 131 cache.AddJobRow(row); 132 133 return row; 134 } 135 136 protected override void FillCache() { 137 adapter.FillByActive(cache); 138 } 139 140 public override void SyncWithDb() { 141 this.adapter.Update(this.cache); 142 } 143 144 protected override bool PutInCache(Job job) { 145 return job != null 146 && job.State != State.offline 147 && job.State != State.nullState; 148 } 149 150 protected override IEnumerable<dsHiveServer.JobRow> 151 FindById(long id) { 152 return adapter.GetDataById(id); 153 } 154 155 protected override dsHiveServer.JobRow 156 FindCachedById(long id) { 157 return cache.FindByJobId(id); 158 } 159 160 protected override IEnumerable<dsHiveServer.JobRow> 161 FindAll() { 162 return FindMultipleRows( 163 new Selector(adapter.GetData), 164 new Selector(cache.AsEnumerable<dsHiveServer.JobRow>)); 165 } 166 167 #endregion 168 116 169 #region IJobAdapter Members 117 [MethodImpl(MethodImplOptions.Synchronized)] 118 public void UpdateJob(Job job) { 170 public ICollection<Job> GetAllSubjobs(Job job) { 119 171 if (job != null) { 120 dsHiveServer.JobRow row = 121 data.FindByJobId(job.JobId); 122 123 if (row == null) { 124 row = data.NewJobRow(); 125 data.AddJobRow(row); 126 127 //write row to db to get primary key 128 adapter.Update(row); 129 } 130 131 Convert(job, row); 132 job.JobId = row.JobId; 133 } 134 } 135 136 public Job GetJobById(long id) { 137 dsHiveServer.JobRow row = 138 data.FindByJobId(id); 139 140 if (row != null) { 141 Job job = new Job(); 142 143 Convert(row, job); 144 145 return job; 172 return 173 base.FindMultiple( 174 delegate() { 175 return adapter.GetDataBySubjobs(job.Id); 176 }, 177 delegate() { 178 return from j in 179 cache.AsEnumerable<dsHiveServer.JobRow>() 180 where !j.IsParentJobIdNull() && 181 j.ParentJobId == job.Id 182 select j; 183 }); 146 184 } 147 185 148 186 return null; 149 }150 151 public ICollection<Job> GetAllJobs() {152 IList<Job> allJobs =153 new List<Job>();154 155 foreach (dsHiveServer.JobRow row in data) {156 Job job = new Job();157 Convert(row, job);158 allJobs.Add(job);159 }160 161 return allJobs;162 }163 164 public ICollection<Job> GetAllSubjobs(Job job) {165 IList<Job> allJobs =166 new List<Job>();167 168 if (job != null) {169 IEnumerable<dsHiveServer.JobRow> clientJobs =170 from j in171 data.AsEnumerable<dsHiveServer.JobRow>()172 where j.ParentJobId == job.JobId173 select j;174 175 foreach (dsHiveServer.JobRow row in176 clientJobs) {177 Job j = new Job();178 Convert(row, j);179 allJobs.Add(j);180 }181 }182 183 return allJobs;184 187 } 185 188 … … 189 192 190 193 public ICollection<Job> GetJobsOf(ClientInfo client) { 191 IList<Job> allJobs =192 new List<Job>();193 194 194 if (client != null) { 195 IEnumerable<dsHiveServer.JobRow> clientJobs = 196 from job in 197 data.AsEnumerable<dsHiveServer.JobRow>() 198 where !job.IsResourceIdNull() && 199 job.ResourceId == client.ResourceId 200 select job; 201 202 foreach (dsHiveServer.JobRow row in 203 clientJobs) { 204 Job job = new Job(); 205 Convert(row, job); 206 allJobs.Add(job); 207 } 208 } 209 210 return allJobs; 195 return 196 base.FindMultiple( 197 delegate() { 198 return adapter.GetDataByClient(client.Id); 199 }, 200 delegate() { 201 return from job in 202 cache.AsEnumerable<dsHiveServer.JobRow>() 203 where !job.IsResourceIdNull() && 204 job.ResourceId == client.Id 205 select job; 206 }); 207 } 208 209 return null; 211 210 } 212 211 213 212 public ICollection<Job> GetJobsOf(User user) { 214 IList<Job> allJobs =215 new List<Job>();216 217 213 if (user != null) { 218 IEnumerable<dsHiveServer.JobRow> userJobs = 219 from job in 220 data.AsEnumerable<dsHiveServer.JobRow>() 221 where 222 !job.IsPermissionOwnerIdNull() && 223 job.PermissionOwnerId == user.PermissionOwnerId 224 select job; 225 226 foreach (dsHiveServer.JobRow row in 227 userJobs) { 228 Job job = new Job(); 229 Convert(row, job); 230 allJobs.Add(job); 231 } 232 } 233 234 return allJobs; 235 } 236 237 [MethodImpl(MethodImplOptions.Synchronized)] 238 public bool DeleteJob(Job job) { 239 if (job != null) { 240 dsHiveServer.JobRow row = 241 data.FindByJobId(job.JobId); 242 243 if (row != null) { 244 row.Delete(); 245 adapter.Update(row); 246 247 return true; 248 } 249 } 250 251 return false; 252 } 253 214 return 215 base.FindMultiple( 216 delegate() { 217 return adapter.GetDataByUser(user.Id); 218 }, 219 delegate() { 220 return from job in 221 cache.AsEnumerable<dsHiveServer.JobRow>() 222 where !job.IsPermissionOwnerIdNull() && 223 job.PermissionOwnerId == user.Id 224 select job; 225 }); 226 } 227 228 return null; 229 } 254 230 #endregion 255 231 }
Note: See TracChangeset
for help on using the changeset viewer.