Changeset 6178 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/HiveJob.cs
- Timestamp:
- 05/10/11 17:58:59 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/HiveJob.cs
r6168 r6178 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.ComponentModel; 24 25 using System.Drawing; 25 26 using System.Linq; … … 55 56 } 56 57 58 [Storable] 57 59 protected Job job; 58 60 public Job Job { … … 60 62 set { 61 63 if (job != value) { 64 DeregisterJobEvents(); 62 65 job = value; 66 RegisterJobEvents(); 67 itemJobDownloaded = false; 63 68 OnJobChanged(); 64 69 OnToStringChanged(); 65 70 OnItemImageChanged(); 66 71 } 72 67 73 } 68 74 } 69 75 70 76 [Storable] 71 protected ItemJob jobItem;72 public ItemJob JobItem{73 get { return jobItem; }77 protected ItemJob itemJob; 78 public ItemJob ItemJob { 79 get { return itemJob; } 74 80 internal set { 75 if ( jobItem!= null && syncJobsWithOptimizers) {81 if (itemJob != null && syncJobsWithOptimizers) { 76 82 this.childHiveJobs.Clear(); 77 83 } 78 if ( jobItem!= value) {79 Dergister JobItemsEvents();80 jobItem= value;81 Register JobItemEvents();84 if (itemJob != value) { 85 DergisterItemJobEvents(); 86 itemJob = value; 87 RegisterItemJobEvents(); 82 88 OnJobItemChanged(); 83 } 84 } 89 itemJobDownloaded = true; 90 } 91 } 92 } 93 94 // job downloaded since last status change 95 [Storable] 96 private bool itemJobDownloaded = false; 97 public bool ItemJobDownloaded { 98 get { return itemJobDownloaded; } 85 99 } 86 100 … … 106 120 } 107 121 108 public HiveJob(ItemJob jobItem, bool autoCreateChildHiveJobs)122 public HiveJob(ItemJob itemJob, bool autoCreateChildHiveJobs) 109 123 : this() { 110 124 this.syncJobsWithOptimizers = autoCreateChildHiveJobs; 111 this. JobItem = jobItem;125 this.ItemJob = itemJob; 112 126 this.syncJobsWithOptimizers = true; 113 127 } … … 117 131 this.Job = job; 118 132 try { 119 this. JobItem= PersistenceUtil.Deserialize<ItemJob>(jobData.Data);133 this.ItemJob = PersistenceUtil.Deserialize<ItemJob>(jobData.Data); 120 134 } 121 135 catch { 122 this. JobItem= null;136 this.ItemJob = null; 123 137 } 124 138 this.childHiveJobs = new ItemList<HiveJob>(); … … 130 144 : base(original, cloner) { 131 145 this.Job = cloner.Clone(original.job); 132 this. JobItem = cloner.Clone(original.JobItem);146 this.ItemJob = cloner.Clone(original.ItemJob); 133 147 this.childHiveJobs = cloner.Clone(original.childHiveJobs); 134 148 this.syncJobsWithOptimizers = original.syncJobsWithOptimizers; 149 this.itemJobDownloaded = original.itemJobDownloaded; 135 150 } 136 151 public override IDeepCloneable Clone(Cloner cloner) { … … 141 156 protected virtual void UpdateChildHiveJobs() { } 142 157 143 protected virtual void Register JobItemEvents() {144 if ( JobItem!= null) {145 JobItem.ComputeInParallelChanged += new EventHandler(JobItem_ComputeInParallelChanged);146 JobItem.ToStringChanged += new EventHandler(JobItem_ToStringChanged);147 } 148 } 149 protected virtual void Dergister JobItemsEvents() {150 if ( JobItem!= null) {151 JobItem.ComputeInParallelChanged -= new EventHandler(JobItem_ComputeInParallelChanged);152 JobItem.ToStringChanged -= new EventHandler(JobItem_ToStringChanged);158 protected virtual void RegisterItemJobEvents() { 159 if (ItemJob != null) { 160 ItemJob.ComputeInParallelChanged += new EventHandler(JobItem_ComputeInParallelChanged); 161 ItemJob.ToStringChanged += new EventHandler(JobItem_ToStringChanged); 162 } 163 } 164 protected virtual void DergisterItemJobEvents() { 165 if (ItemJob != null) { 166 ItemJob.ComputeInParallelChanged -= new EventHandler(JobItem_ComputeInParallelChanged); 167 ItemJob.ToStringChanged -= new EventHandler(JobItem_ToStringChanged); 153 168 } 154 169 } … … 168 183 this.OnToStringChanged(); 169 184 } 170 185 171 186 protected virtual void JobItem_ComputeInParallelChanged(object sender, EventArgs e) { 172 if ( JobItem!= null && syncJobsWithOptimizers) {187 if (ItemJob != null && syncJobsWithOptimizers) { 173 188 this.UpdateChildHiveJobs(); 174 189 } … … 180 195 181 196 public override string ToString() { 182 if ( jobItem!= null) {183 return jobItem.ToString();197 if (itemJob != null) { 198 return itemJob.ToString(); 184 199 } else { 185 200 return base.ToString(); … … 196 211 job.Command = lightweightJob.Command; 197 212 job.LastJobDataUpdate = lightweightJob.LastJobDataUpdate; 198 213 199 214 OnJobStateChanged(); 200 215 OnToStringChanged(); … … 210 225 /// </param> 211 226 public virtual JobData GetAsJobData(bool withoutChildOptimizers, out List<IPluginDescription> plugins) { 212 plugins = null; 213 return null; 227 plugins = new List<IPluginDescription>(); 228 if (this.itemJob == null) 229 return null; 230 231 IEnumerable<Type> usedTypes; 232 byte[] jobByteArray = PersistenceUtil.Serialize(this.ItemJob, out usedTypes); 233 234 JobData jobData = new JobData() { 235 JobId = job.Id, 236 Data = jobByteArray 237 }; 238 239 PluginUtil.CollectDeclaringPlugins(plugins, usedTypes); 240 241 return jobData; 214 242 } 215 243 … … 239 267 if (handler != null) handler(this, EventArgs.Empty); 240 268 } 269 270 private void RegisterJobEvents() { 271 if (job != null) 272 job.PropertyChanged += new PropertyChangedEventHandler(job_PropertyChanged); 273 } 274 275 private void DeregisterJobEvents() { 276 if (job != null) 277 job.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(job_PropertyChanged); 278 } 279 280 private void job_PropertyChanged(object sender, PropertyChangedEventArgs e) { 281 if (e.PropertyName == "State") { 282 itemJobDownloaded = false; 283 } 284 } 241 285 #endregion 242 286 243 287 /// <summary> 244 288 /// Returns a list of HiveJobs including this and all its child-jobs recursively … … 326 370 } else { 327 371 ServiceLocator.Instance.CallHiveService(s => s.PauseJob(this.job.Id)); 328 } 372 } 329 373 } 330 374 … … 343 387 JobData jobData = new JobData(); 344 388 jobData.JobId = this.job.Id; 345 jobData.Data = PersistenceUtil.Serialize(this. jobItem);389 jobData.Data = PersistenceUtil.Serialize(this.itemJob); 346 390 service.UpdateJobData(this.Job, jobData); 347 391 service.RestartJob(this.job.Id); … … 350 394 }); 351 395 } 352 396 353 397 public ICollection<IItemTreeNodeAction<HiveJob>> Actions { 354 398 get { … … 364 408 public class HiveJob<T> : HiveJob where T : ItemJob { 365 409 366 public new T JobItem{367 get { return (T)base. JobItem; }368 internal set { base. JobItem= value; }410 public new T ItemJob { 411 get { return (T)base.ItemJob; } 412 internal set { base.ItemJob = value; } 369 413 } 370 414 371 415 #region Constructors and Cloning 372 416 public HiveJob() : base() { } 417 public HiveJob(T itemJob) : base(itemJob, true) { } 373 418 protected HiveJob(HiveJob original, Cloner cloner) 374 419 : base(original, cloner) {
Note: See TracChangeset
for help on using the changeset viewer.