Changeset 6033 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Jobs/OptimizerJob.cs
- Timestamp:
- 04/19/11 18:58:53 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Jobs/OptimizerJob.cs
r5958 r6033 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Drawing;25 24 using HeuristicLab.Common; 26 25 using HeuristicLab.Core; … … 32 31 [Item("Optimizer Job", "Represents Job which executes a IOptimizer object.")] 33 32 [StorableClass] 34 public class OptimizerJob : AbstractJob {33 public class OptimizerJob : ItemJob { 35 34 public override bool IsParallelizable { 36 get { return this. Optimizer is Optimization.Experiment || this.Optimizeris BatchRun; }35 get { return this.Item is Experiment || this.Item is BatchRun; } 37 36 } 38 37 39 [Storable] 40 protected IOptimizer optimizer; 41 public IOptimizer Optimizer { 42 get { return optimizer; } 43 set { 44 if (value != optimizer) { 45 if (optimizer != null) DeregisterOptimizerEvents(); 46 optimizer = value; 47 if (optimizer != null) RegisterOptimizerEvents(); 48 OnOptimizerChanged(); 49 } 50 } 38 public new IOptimizer Item { 39 get { return (IOptimizer)base.Item; } 40 set { base.Item = value; } 51 41 } 52 42 … … 58 48 } 59 49 60 public OptimizerJob() : base() { 61 62 } 50 public OptimizerJob() : base() { } 63 51 public OptimizerJob(IOptimizer optimizer) 64 52 : this() { 65 this.Optimizer= optimizer;53 this.Item = optimizer; 66 54 67 if (optimizer is Optimization.Experiment) {55 if (optimizer is Experiment) { 68 56 this.ComputeInParallel = true; 69 } else if (optimizer is Optimization.BatchRun) {57 } else if (optimizer is BatchRun) { 70 58 this.ComputeInParallel = false; 71 59 } else { … … 77 65 protected OptimizerJob(OptimizerJob original, Cloner cloner) 78 66 : base(original, cloner) { 79 this.Optimizer = cloner.Clone(original.Optimizer);80 67 this.IndexInParentOptimizerList = original.IndexInParentOptimizerList; 81 68 this.CollectChildJobs = original.CollectChildJobs; 82 this.RegisterOptimizerEvents();83 69 } 84 70 public override IDeepCloneable Clone(Cloner cloner) { … … 86 72 } 87 73 88 [StorableHook(HookType.AfterDeserialization)]89 protected virtual void AfterDeserialization() {90 RegisterOptimizerEvents();91 }92 93 74 /// <summary> 94 75 /// Casts the Optimizer to an Experiment. Returns null if cast was not successfull. 95 76 /// </summary> 96 public Optimization.Experiment OptimizerAsExperiment {97 get { return Optimizer as Optimization.Experiment; }77 public Experiment OptimizerAsExperiment { 78 get { return Item as Experiment; } 98 79 } 99 80 … … 101 82 /// Casts the Optimizer to an BatchRun. Returns null if cast was not successfull. 102 83 /// </summary> 103 public Optimization.BatchRun OptimizerAsBatchRun {104 get { return Optimizer as Optimization.BatchRun; }84 public BatchRun OptimizerAsBatchRun { 85 get { return Item as BatchRun; } 105 86 } 106 87 … … 108 89 109 90 public override ExecutionState ExecutionState { 110 get { return optimizer.ExecutionState; }91 get { return Item.ExecutionState; } 111 92 } 112 93 113 94 public override TimeSpan ExecutionTime { 114 get { return optimizer.ExecutionTime; }95 get { return Item.ExecutionTime; } 115 96 } 116 97 117 98 public override void Prepare() { 118 optimizer.Prepare();99 Item.Prepare(); 119 100 } 120 101 121 102 public override void Start() { 122 if (( optimizer is Optimization.Experiment && OptimizerAsExperiment.Optimizers.Count == 0) || // experiment would not fire OnStopped if it has 0 optimizers123 ( optimizer is Optimization.BatchRun && OptimizerAsBatchRun.Optimizer == null)) { // batchrun would not fire OnStopped if algorithm == null103 if ((Item is Experiment && OptimizerAsExperiment.Optimizers.Count == 0) || // experiment would not fire OnStopped if it has 0 optimizers 104 (Item is BatchRun && OptimizerAsBatchRun.Optimizer == null)) { // batchrun would not fire OnStopped if algorithm == null 124 105 OnJobStopped(); 125 106 } else { 126 optimizer.Start();107 Item.Start(); 127 108 } 128 109 } 129 110 130 111 public override void Pause() { 131 optimizer.Pause();112 Item.Pause(); 132 113 } 133 114 134 115 public override void Stop() { 135 optimizer.Stop();116 Item.Stop(); 136 117 } 137 118 … … 142 123 143 124 #region Optimizer Events 144 protected virtual void RegisterOptimizerEvents() { 145 optimizer.Stopped += new EventHandler(optimizer_Stopped); 146 optimizer.Paused += new EventHandler(optimizer_Paused); 147 optimizer.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 148 optimizer.DescriptionChanged += new EventHandler(optimizer_DescriptionChanged); 149 optimizer.ItemImageChanged += new EventHandler(optimizer_ItemImageChanged); 150 optimizer.NameChanged += new EventHandler(optimizer_NameChanged); 151 optimizer.NameChanging += new EventHandler<CancelEventArgs<string>>(optimizer_NameChanging); 152 optimizer.ToStringChanged += new EventHandler(optimizer_ToStringChanged); 125 protected override void RegisterItemEvents() { 126 base.RegisterItemEvents(); 127 Item.Stopped += new EventHandler(optimizer_Stopped); 128 Item.Paused += new EventHandler(optimizer_Paused); 129 Item.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 130 Item.DescriptionChanged += new EventHandler(optimizer_DescriptionChanged); 131 Item.NameChanged += new EventHandler(optimizer_NameChanged); 132 Item.NameChanging += new EventHandler<CancelEventArgs<string>>(optimizer_NameChanging); 153 133 } 154 134 155 135 protected virtual void DeregisterOptimizerEvents() { 156 optimizer.Stopped -= new EventHandler(optimizer_Stopped); 157 optimizer.Paused -= new EventHandler(optimizer_Paused); 158 optimizer.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 159 optimizer.DescriptionChanged -= new EventHandler(optimizer_DescriptionChanged); 160 optimizer.ItemImageChanged -= new EventHandler(optimizer_ItemImageChanged); 161 optimizer.NameChanged -= new EventHandler(optimizer_NameChanged); 162 optimizer.NameChanging -= new EventHandler<CancelEventArgs<string>>(optimizer_NameChanging); 163 optimizer.ToStringChanged -= new EventHandler(optimizer_ToStringChanged); 164 } 165 166 protected void optimizer_ToStringChanged(object sender, EventArgs e) { 167 this.OnToStringChanged(); 136 Item.Stopped -= new EventHandler(optimizer_Stopped); 137 Item.Paused -= new EventHandler(optimizer_Paused); 138 Item.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 139 Item.DescriptionChanged -= new EventHandler(optimizer_DescriptionChanged); 140 Item.NameChanged -= new EventHandler(optimizer_NameChanged); 141 Item.NameChanging -= new EventHandler<CancelEventArgs<string>>(optimizer_NameChanging); 142 base.DeregisterItemEvents(); 168 143 } 169 144 … … 174 149 protected void optimizer_NameChanged(object sender, EventArgs e) { 175 150 this.OnNameChanged(); 176 }177 178 protected void optimizer_ItemImageChanged(object sender, EventArgs e) {179 this.OnItemImageChanged();180 151 } 181 152 … … 198 169 199 170 #region INamedItem Members 200 201 171 public override bool CanChangeDescription { 202 get { return optimizer.CanChangeDescription; }172 get { return Item.CanChangeDescription; } 203 173 } 204 174 205 175 public override bool CanChangeName { 206 get { return optimizer.CanChangeName; }176 get { return Item.CanChangeName; } 207 177 } 208 178 209 179 public override string Description { 210 get { return optimizer.Description; }211 set { optimizer.Description = value; }180 get { return Item.Description; } 181 set { Item.Description = value; } 212 182 } 213 183 214 184 public override string Name { 215 get { return optimizer.Name; } 216 set { optimizer.Name = value; } 217 } 218 #endregion 219 220 #region IItem Members 221 222 public override string ItemDescription { 223 get { return optimizer.ItemDescription; } 224 } 225 226 public override Image ItemImage { 227 get { return optimizer.ItemImage; } 228 } 229 230 public override string ItemName { 231 get { return optimizer.ItemName; } 232 } 233 234 public override Version ItemVersion { 235 get { return optimizer.ItemVersion; } 185 get { return Item.Name; } 186 set { Item.Name = value; } 236 187 } 237 188 #endregion
Note: See TracChangeset
for help on using the changeset viewer.