Changeset 11083
- Timestamp:
- 07/03/14 16:36:10 (10 years ago)
- Location:
- stable
- Files:
-
- 13 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 10130,10150,10154,10170,11079
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Clients.Hive.JobManager/3.3/HeuristicLab.Clients.Hive.JobManager-3.3.csproj
r8718 r11083 98 98 <Compile Include="ExtensionMethods\TreeNodeExtensions.cs" /> 99 99 <Compile Include="ListViewItemDateComparer.cs" /> 100 <Compile Include="MenuItems\CreateHiveJobMenuItem.cs" /> 101 <Compile Include="MenuItems\RunInHiveMenuItem.cs" /> 100 102 <Compile Include="Plugin.cs" /> 101 103 <Compile Include="Views\HiveJobManagerView.cs"> -
stable/HeuristicLab.Clients.Hive.JobManager/3.3/MenuItems/CreateHiveJobMenuItem.cs
r10150 r11083 22 22 using System; 23 23 using System.Collections.Generic; 24 using HeuristicLab.Clients.Hive;25 24 using HeuristicLab.Core; 26 25 using HeuristicLab.MainForm; 27 26 using HeuristicLab.Optimization; 27 using HeuristicLab.Optimizer; 28 28 29 namespace HeuristicLab. Optimizer.MenuItems{29 namespace HeuristicLab.Clients.Hive.JobManager { 30 30 public class CreateHiveJobMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider { 31 31 public override string Name { … … 48 48 Type contentType = content.GetType(); 49 49 ToolStripItem.Enabled = ItemTask.IsTypeSupported(contentType); 50 } else { 51 ToolStripItem.Enabled = false; 50 return; 52 51 } 53 52 } 53 ToolStripItem.Enabled = false; 54 54 } 55 55 … … 74 74 HiveTask task = hiveTask.CreateHiveTask(); 75 75 RefreshableJob rJob = new RefreshableJob(); 76 rJob.Job.Name = content. ItemName;76 rJob.Job.Name = content.ToString(); 77 77 rJob.HiveTasks.Add(task); 78 78 task.ItemTask.ComputeInParallel = content is Experiment || content is BatchRun; -
stable/HeuristicLab.Clients.Hive.JobManager/3.3/MenuItems/JobManagerMenuItem.cs
r9456 r11083 22 22 using System.Collections.Generic; 23 23 using System.Windows.Forms; 24 using HeuristicLab.Clients.Hive;25 24 using HeuristicLab.MainForm; 25 using HeuristicLab.Optimizer; 26 26 27 namespace HeuristicLab. Optimizer.MenuItems{27 namespace HeuristicLab.Clients.Hive.JobManager { 28 28 public class JobManagerMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider { 29 29 public override string Name { -
stable/HeuristicLab.Clients.Hive.JobManager/3.3/MenuItems/RunInHiveMenuItem.cs
r10150 r11083 23 23 using System.Collections.Generic; 24 24 using System.Threading; 25 using HeuristicLab.Clients.Hive;26 25 using HeuristicLab.Core; 27 26 using HeuristicLab.MainForm; 28 27 using HeuristicLab.Optimization; 28 using HeuristicLab.Optimizer; 29 29 using HeuristicLab.PluginInfrastructure; 30 30 31 namespace HeuristicLab. Optimizer.MenuItems{31 namespace HeuristicLab.Clients.Hive.JobManager { 32 32 public class RunInHiveMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider { 33 33 public override string Name { … … 50 50 Type contentType = content.GetType(); 51 51 ToolStripItem.Enabled = ItemTask.IsTypeSupported(contentType); 52 } else { 53 ToolStripItem.Enabled = false; 52 return; 54 53 } 55 54 } 55 ToolStripItem.Enabled = false; 56 56 } 57 57 … … 78 78 HiveTask task = hiveTask.CreateHiveTask(); 79 79 RefreshableJob rJob = new RefreshableJob(); 80 rJob.Job.Name = content. ItemName;80 rJob.Job.Name = content.ToString(); 81 81 rJob.HiveTasks.Add(task); 82 82 task.ItemTask.ComputeInParallel = content is Experiment || content is BatchRun; -
stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs
r9933 r11083 468 468 private void jobsTreeView_DragEnter(object sender, DragEventArgs e) { 469 469 e.Effect = DragDropEffects.None; 470 var obj = e.Data.GetData(Constants.DragDropDataFormat); 471 if (obj is IOptimizer) { 470 var obj = (IDeepCloneable)e.Data.GetData(Constants.DragDropDataFormat); 471 472 Type objType = obj.GetType(); 473 if (ItemTask.IsTypeSupported(objType)) { 472 474 if (Content.Id != Guid.Empty) e.Effect = DragDropEffects.None; 473 475 else if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; // ALT key … … 478 480 private void jobsTreeView_DragDrop(object sender, DragEventArgs e) { 479 481 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; 482 var obj = (IItem)e.Data.GetData(Constants.DragDropDataFormat); 483 484 IItem newObj = null; 485 if (e.Effect.HasFlag(DragDropEffects.Copy)) { 486 newObj = (IItem)obj.Clone(); 487 } else { 488 newObj = obj; 489 } 490 491 //IOptimizer and IExecutables need some special care 492 if (newObj is IOptimizer) { 493 ((IOptimizer)newObj).Runs.Clear(); 494 } 495 if (newObj is IExecutable) { 496 IExecutable exec = (IExecutable)newObj; 497 if (exec.ExecutionState != ExecutionState.Prepared) { 498 exec.Prepare(); 490 499 } 491 if (newOptimizer.ExecutionState != ExecutionState.Prepared) { 492 newOptimizer.Prepare(); 493 } 494 495 Content.HiveTasks.Add(new OptimizerHiveTask(newOptimizer)); 496 } 500 } 501 502 ItemTask hiveTask = ItemTask.GetItemTaskForItem(newObj); 503 Content.HiveTasks.Add(hiveTask.CreateHiveTask()); 497 504 } 498 505 } -
stable/HeuristicLab.Clients.Hive/3.3/HiveClient.cs
r9933 r11083 351 351 /// </summary> 352 352 /// <param name="parentHiveTask">shall be null if its the root task</param> 353 private void UploadTaskWithChildren( Progress progress, HiveTask hiveTask, HiveTask parentHiveTask, IEnumerable<Guid> groups, int[] taskCount, int totalJobCount, Guid configPluginId, Guid jobId, ILog log, bool isPrivileged, CancellationToken cancellationToken) {353 private void UploadTaskWithChildren(IProgress progress, HiveTask hiveTask, HiveTask parentHiveTask, IEnumerable<Guid> groups, int[] taskCount, int totalJobCount, Guid configPluginId, Guid jobId, ILog log, bool isPrivileged, CancellationToken cancellationToken) { 354 354 taskUploadSemaphore.WaitOne(); 355 355 bool semaphoreReleased = false; … … 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; -
stable/HeuristicLab.Clients.Hive/3.3/HiveTasks/EngineHiveTask.cs
r9456 r11083 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 } -
stable/HeuristicLab.Clients.Hive/3.3/HiveTasks/HiveTask.cs
r9886 r11083 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) { -
stable/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs
r9933 r11083 157 157 } 158 158 159 private Progress progress;160 public Progress Progress {159 private IProgress progress; 160 public IProgress Progress { 161 161 get { return progress; } 162 162 set { -
stable/HeuristicLab.Clients.Hive/3.3/TaskDownloader.cs
r9456 r11083 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)); -
stable/HeuristicLab.Clients.Hive/3.3/Tasks/EngineTask.cs
r9886 r11083 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; … … 54 59 this.Item = engine; 55 60 } 61 62 public EngineTask(IEngine engine) : base(engine) { } 56 63 57 64 [StorableConstructor] -
stable/HeuristicLab.Clients.Hive/3.3/Tasks/ItemTask.cs
r9456 r11083 22 22 using System; 23 23 using System.Drawing; 24 using System.Linq; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Hive; 27 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using HeuristicLab.PluginInfrastructure; 28 30 29 31 namespace HeuristicLab.Clients.Hive { … … 31 33 [StorableClass] 32 34 public abstract class ItemTask : NamedItem, ITask { 35 public virtual HiveTask CreateHiveTask() { 36 return new HiveTask(this, true); 37 } 38 33 39 public virtual bool IsParallelizable { 34 40 get { return true; } 41 set { } 35 42 } 36 43 … … 71 78 this.Item = cloner.Clone(original.Item); 72 79 } 80 public ItemTask(IItem item) { 81 Item = item; 82 } 73 83 74 84 [StorableHook(HookType.AfterDeserialization)] … … 211 221 return Name; 212 222 } 223 224 #region Helpers 225 public static bool IsTypeSupported(Type itemType) { 226 var supportedHiveTaskTypes = ApplicationManager.Manager.GetTypes(typeof(ItemTask)) 227 .Select(t => t.GetProperties().Single(x => x.Name == "Item" && x.PropertyType != typeof(IItem)).PropertyType); 228 return supportedHiveTaskTypes.Any(x => x.IsAssignableFrom(itemType)); 229 } 230 231 public static Type GetHiveTaskType(Type itemType) { 232 if (!IsTypeSupported(itemType)) throw new Exception("Item " + itemType + " is not supported for Hive."); 233 234 var typeHiveTaskMap = ApplicationManager.Manager.GetTypes(typeof(ItemTask)) 235 .Select(t => new Tuple<Type, Type>(t.GetProperties().Single(x => x.Name == "Item" && x.PropertyType != typeof(IItem)).PropertyType, t)); 236 237 return typeHiveTaskMap.Single(x => x.Item1.IsAssignableFrom(itemType)).Item2; 238 } 239 240 public static ItemTask GetItemTaskForItem(IItem item) { 241 Type itemType = item.GetType(); 242 Type hiveTaskType = GetHiveTaskType(itemType); 243 return Activator.CreateInstance(hiveTaskType, new object[] { item }) as ItemTask; 244 } 245 #endregion 213 246 } 214 247 } -
stable/HeuristicLab.Clients.Hive/3.3/Tasks/OptimizerTask.cs
r9886 r11083 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; } … … 46 50 } 47 51 48 public OptimizerTask(IOptimizer optimizer) {49 this.Item = optimizer;50 51 if (optimizer is Experiment ) {52 public OptimizerTask(IOptimizer optimizer) 53 : base(optimizer) { 54 55 if (optimizer is Experiment || optimizer is BatchRun) { 52 56 this.ComputeInParallel = true; 53 } else if (optimizer is BatchRun) {54 this.ComputeInParallel = false;55 57 } else { 56 58 this.ComputeInParallel = false; -
stable/HeuristicLab.Hive/3.3/ITask.cs
r9456 r11083 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.