- Timestamp:
- 11/12/13 20:35:30 (11 years ago)
- Location:
- trunk/sources
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs
r9894 r10130 23 23 using System.ComponentModel; 24 24 using System.Linq; 25 using System.Reflection; 25 26 using System.Text; 26 27 using System.Threading; … … 468 469 private void jobsTreeView_DragEnter(object sender, DragEventArgs e) { 469 470 e.Effect = DragDropEffects.None; 470 var obj = e.Data.GetData(Constants.DragDropDataFormat); 471 if (obj is IOptimizer) { 471 var obj = e.Data.GetData(Constants.DragDropDataFormat) as IDeepCloneable; 472 Type objType = obj.GetType(); 473 474 var typeHiveTaskMap = ApplicationManager.Manager.GetTypes(typeof(ItemTask)) 475 .Select(t => new Tuple<PropertyInfo, Type>(t.GetProperties().Single(x => x.Name == "Item" && x.PropertyType != typeof(IItem)), t)); 476 477 var hiveTaskFound = typeHiveTaskMap.Any(x => x.Item1.PropertyType.IsAssignableFrom(objType)); 478 479 if (hiveTaskFound) { 472 480 if (Content.Id != Guid.Empty) e.Effect = DragDropEffects.None; 473 481 else if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; // ALT key … … 478 486 private void jobsTreeView_DragDrop(object sender, DragEventArgs e) { 479 487 if (e.Effect != DragDropEffects.None) { 480 var obj = e.Data.GetData(Constants.DragDropDataFormat); 481 482 var optimizer = obj as IOptimizer; 483 if (optimizer != null) { 484 IOptimizer newOptimizer = null; 485 if (e.Effect.HasFlag(DragDropEffects.Copy)) { 486 newOptimizer = (IOptimizer)optimizer.Clone(); 487 newOptimizer.Runs.Clear(); 488 } else { 489 newOptimizer = optimizer; 488 var obj = e.Data.GetData(Constants.DragDropDataFormat) as IDeepCloneable; 489 Type objType = obj.GetType(); 490 491 var typeHiveTaskMap = ApplicationManager.Manager.GetTypes(typeof(ItemTask)) 492 .Select(t => new Tuple<PropertyInfo, Type>(t.GetProperties().Single(x => x.Name == "Item" && x.PropertyType != typeof(IItem)), t)); 493 494 var hiveTaskType = typeHiveTaskMap.Single(x => x.Item1.PropertyType.IsAssignableFrom(objType)).Item2; 495 496 IDeepCloneable newObj = null; 497 if (e.Effect.HasFlag(DragDropEffects.Copy)) { 498 newObj = obj.Clone(new Cloner()); 499 } else { 500 newObj = obj; 501 } 502 503 //IOptimizer and IExecutables need some special care 504 if (newObj is IOptimizer) { 505 ((IOptimizer)newObj).Runs.Clear(); 506 } 507 if (newObj is IExecutable) { 508 IExecutable exec = newObj as IExecutable; 509 if (exec.ExecutionState != ExecutionState.Prepared) { 510 exec.Prepare(); 490 511 } 491 if (newOptimizer.ExecutionState != ExecutionState.Prepared) { 492 newOptimizer.Prepare(); 493 } 494 495 Content.HiveTasks.Add(new OptimizerHiveTask(newOptimizer)); 496 } 512 } 513 514 ItemTask hiveTask = Activator.CreateInstance(hiveTaskType, new object[] { newObj }) as ItemTask; 515 Content.HiveTasks.Add(hiveTask.CreateHiveTask()); 497 516 } 498 517 } -
trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveClient.cs
r9893 r10130 362 362 List<IPluginDescription> plugins; 363 363 364 if (hiveTask.ItemTask.ComputeInParallel && (hiveTask.ItemTask.Item is Optimization.Experiment || hiveTask.ItemTask.Item is Optimization.BatchRun)) {364 if (hiveTask.ItemTask.ComputeInParallel) { 365 365 hiveTask.Task.IsParentTask = true; 366 366 hiveTask.Task.FinishWhenChildJobsFinished = true; -
trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveTasks/EngineHiveTask.cs
r9456 r10130 32 32 #region Constructors and cloning 33 33 public EngineHiveTask() { } 34 public EngineHiveTask(EngineTask engine Job, IScope parentScopeClone)35 : base(engine Job) {34 public EngineHiveTask(EngineTask engineTask, IScope parentScopeClone) 35 : base(engineTask) { 36 36 this.parentScopeClone = parentScopeClone; 37 37 } -
trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveTasks/HiveTask.cs
r9819 r10130 182 182 } 183 183 184 public HiveTask(ItemTask item Job, bool autoCreateChildHiveJobs)184 public HiveTask(ItemTask itemTask, bool autoCreateChildHiveTasks) 185 185 : this() { 186 this.syncTasksWithOptimizers = autoCreateChildHive Jobs;187 this.ItemTask = item Job;186 this.syncTasksWithOptimizers = autoCreateChildHiveTasks; 187 this.ItemTask = itemTask; 188 188 this.syncTasksWithOptimizers = true; 189 189 } 190 190 191 public HiveTask(Task job, TaskData taskData, bool autoCreateChildHiveTasks) {191 public HiveTask(Task task, TaskData taskData, bool autoCreateChildHiveTasks) { 192 192 this.syncTasksWithOptimizers = autoCreateChildHiveTasks; 193 this.Task = job;193 this.Task = task; 194 194 try { 195 195 this.ItemTask = PersistenceUtil.Deserialize<ItemTask>(taskData.Data); … … 545 545 public new T ItemTask { 546 546 get { return (T)base.ItemTask; } 547 internalset { base.ItemTask = value; }547 set { base.ItemTask = value; } 548 548 } 549 549 … … 552 552 [StorableConstructor] 553 553 protected HiveTask(bool deserializing) { } 554 public HiveTask(T item Job) : base(itemJob, true) { }554 public HiveTask(T itemTask) : base(itemTask, true) { } 555 555 protected HiveTask(HiveTask<T> original, Cloner cloner) 556 556 : base(original, cloner) { -
trunk/sources/HeuristicLab.Clients.Hive/3.3/TaskDownloader.cs
r9456 r10130 24 24 using System.Linq; 25 25 using System.Threading; 26 using HeuristicLab.Clients.Hive.Jobs;27 26 using HeuristicLab.Common; 28 27 … … 79 78 80 79 public TaskDownloader(IEnumerable<Guid> jobIds) { 81 t his.taskIds = jobIds;82 t his.taskDownloader = new ConcurrentTaskDownloader<ItemTask>(Settings.Default.MaxParallelDownloads, Settings.Default.MaxParallelDownloads);83 t his.taskDownloader.ExceptionOccured += new EventHandler<EventArgs<Exception>>(taskDownloader_ExceptionOccured);84 this.results = new Dictionary<Guid, HiveTask>();80 taskIds = jobIds; 81 taskDownloader = new ConcurrentTaskDownloader<ItemTask>(Settings.Default.MaxParallelDownloads, Settings.Default.MaxParallelDownloads); 82 taskDownloader.ExceptionOccured += new EventHandler<EventArgs<Exception>>(taskDownloader_ExceptionOccured); 83 results = new Dictionary<Guid, HiveTask>(); 85 84 } 86 85 … … 88 87 foreach (Guid taskId in taskIds) { 89 88 taskDownloader.DownloadTaskDataAndTask(taskId, 90 (localJob, itemJob) => { 91 if (localJob != null && itemJob != null) { 92 HiveTask hiveTask; 93 if (itemJob is OptimizerTask) { 94 hiveTask = new OptimizerHiveTask((OptimizerTask)itemJob); 95 } else { 96 hiveTask = new HiveTask(itemJob, true); 97 } 98 hiveTask.Task = localJob; 89 (localTask, itemTask) => { 90 if (localTask != null && itemTask != null) { 91 HiveTask hiveTask = itemTask.CreateHiveTask(); 92 hiveTask.Task = localTask; 99 93 try { 100 94 resultsLock.EnterWriteLock(); 101 this.results.Add(localJob.Id, hiveTask);95 results.Add(localTask.Id, hiveTask); 102 96 } 103 97 finally { resultsLock.ExitWriteLock(); } … … 113 107 public event EventHandler<EventArgs<Exception>> ExceptionOccured; 114 108 private void OnExceptionOccured(Exception exception) { 115 this.exceptionOccured = true;116 this.currentException = exception;109 exceptionOccured = true; 110 currentException = exception; 117 111 var handler = ExceptionOccured; 118 112 if (handler != null) handler(this, new EventArgs<Exception>(exception)); -
trunk/sources/HeuristicLab.Clients.Hive/3.3/Tasks/EngineTask.cs
r9819 r10130 29 29 [StorableClass] 30 30 public class EngineTask : ItemTask { 31 public override HiveTask CreateHiveTask() { 32 //only used when deserializing, so no problem with parentscope 33 return new EngineHiveTask(this, null); 34 } 35 31 36 [Storable] 32 37 protected IOperation initialOperation; … … 52 57 public EngineTask(IOperation initialOperation, IEngine engine) { 53 58 this.initialOperation = initialOperation; 59 this.Item = engine; 60 } 61 62 public EngineTask(IEngine engine) { 54 63 this.Item = engine; 55 64 } -
trunk/sources/HeuristicLab.Clients.Hive/3.3/Tasks/ItemTask.cs
r9456 r10130 31 31 [StorableClass] 32 32 public abstract class ItemTask : NamedItem, ITask { 33 public virtual HiveTask CreateHiveTask() { 34 return new HiveTask(this, true); 35 } 36 33 37 public virtual bool IsParallelizable { 34 38 get { return true; } 39 set { } 35 40 } 36 41 -
trunk/sources/HeuristicLab.Clients.Hive/3.3/Tasks/OptimizerTask.cs
r9819 r10130 30 30 [StorableClass] 31 31 public class OptimizerTask : ItemTask { 32 public override HiveTask CreateHiveTask() { 33 return new OptimizerHiveTask(this); 34 } 35 32 36 public override bool IsParallelizable { 33 37 get { return this.Item is Experiment || this.Item is BatchRun; } -
trunk/sources/HeuristicLab.Hive/3.3/ITask.cs
r9456 r10130 33 33 /// indicates wether it is possible to create childjobs from this job 34 34 /// </summary> 35 bool IsParallelizable { get; }35 bool IsParallelizable { get; set; } 36 36 37 37 /// <summary>
Note: See TracChangeset
for help on using the changeset viewer.