Changeset 5958 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager
- Timestamp:
- 04/05/11 17:45:59 (14 years ago)
- Location:
- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/ExperimentManagerClient.cs
r5955 r5958 257 257 } 258 258 259 hiveJob.Job.PluginsNeededIds = GetPluginDependencies(service, this.onlinePlugins, this.alreadyUploadedPlugins, plugins, useLocalPlugins);259 hiveJob.Job.PluginsNeededIds = PluginUtil.GetPluginDependencies(service, this.onlinePlugins, this.alreadyUploadedPlugins, plugins, useLocalPlugins); 260 260 hiveJob.Job.PluginsNeededIds.Add(configPluginId); 261 261 … … 350 350 } 351 351 352 #region Plugin Management353 /// <summary>354 /// Checks if plugins are available on Hive Server. If not they are uploaded. Ids are returned.355 /// </summary>356 /// <param name="service">An active service-proxy</param>357 /// <param name="onlinePlugins">List of plugins which are available online</param>358 /// <param name="alreadyUploadedPlugins">List of plugins which have been uploaded from this HiveExperiment</param>359 /// <param name="neededPlugins">List of plugins which need to be uploaded</param>360 /// <param name="useLocalPlugins">If true, the plugins which are already online are ignored. All local plugins are uploaded, but only once.</param>361 /// <returns></returns>362 private static List<Guid> GetPluginDependencies(IHiveService service, IEnumerable<Plugin> onlinePlugins, List<Plugin> alreadyUploadedPlugins, IEnumerable<IPluginDescription> neededPlugins, bool useLocalPlugins) {363 var pluginIds = new List<Guid>();364 foreach (var neededPlugin in neededPlugins) {365 Plugin foundPlugin = alreadyUploadedPlugins.SingleOrDefault(p => p.Name == neededPlugin.Name && p.Version == neededPlugin.Version);366 if (foundPlugin == null) {367 foundPlugin = onlinePlugins.SingleOrDefault(p => p.Name == neededPlugin.Name && p.Version == neededPlugin.Version);368 if (useLocalPlugins || foundPlugin == null) {369 Plugin p = CreatePlugin(neededPlugin, useLocalPlugins);370 List<PluginData> pd = CreatePluginDatas(neededPlugin);371 p.Id = service.AddPlugin(p, pd);372 alreadyUploadedPlugins.Add(p);373 pluginIds.Add(p.Id);374 } else {375 pluginIds.Add(foundPlugin.Id);376 }377 } else {378 pluginIds.Add(foundPlugin.Id);379 }380 }381 return pluginIds;382 }383 384 private static Plugin CreatePlugin(IPluginDescription plugin, bool useLocalPlugins) {385 return new Plugin() { Name = plugin.Name, Version = plugin.Version, IsLocal = useLocalPlugins };386 }387 388 private static List<PluginData> CreatePluginDatas(IPluginDescription plugin) {389 List<PluginData> pluginDatas = new List<PluginData>();390 391 foreach (IPluginFile pf in plugin.Files) {392 PluginData pluginData = new PluginData();393 394 pluginData.Data = File.ReadAllBytes(pf.Name);395 pluginData.FileName = Path.GetFileName(pf.Name);396 pluginDatas.Add(pluginData);397 }398 return pluginDatas;399 }400 #endregion401 402 352 public static OptimizerJob LoadOptimizerJob(Guid jobId) { 403 353 JobData jobData = ServiceLocator.Instance.CallHiveService(s => s.GetJobData(jobId)); -
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/HiveJobClient.cs
r5793 r5958 491 491 }; 492 492 493 CollectDeclaringPlugins(plugins, usedTypes);493 PluginUtil.CollectDeclaringPlugins(plugins, usedTypes); 494 494 495 495 return jobData; 496 496 } 497 497 498 private void CollectDeclaringPlugins(List<IPluginDescription> plugins, IEnumerable<Type> usedTypes) {499 foreach (Type type in usedTypes) {500 var plugin = ApplicationManager.Manager.GetDeclaringPlugin(type);501 if (plugin != null && !plugins.Contains(plugin)) {502 plugins.Add(plugin);503 CollectPluginDependencies(plugins, plugin);504 }505 }506 }507 508 private void CollectPluginDependencies(List<IPluginDescription> plugins, IPluginDescription plugin) {509 if (plugin == null) return;510 foreach (var dependency in plugin.Dependencies) {511 if (!plugins.Contains(dependency)) {512 plugins.Add(dependency);513 CollectPluginDependencies(plugins, dependency);514 }515 }516 }517 498 518 499 #region Events
Note: See TracChangeset
for help on using the changeset viewer.