Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/05/11 17:45:59 (14 years ago)
Author:
cneumuel
Message:

#1233

  • initial port of HiveEngine
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  
    257257      }
    258258
    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);
    260260      hiveJob.Job.PluginsNeededIds.Add(configPluginId);
    261261
     
    350350    }
    351351
    352     #region Plugin Management
    353     /// <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     #endregion
    401 
    402352    public static OptimizerJob LoadOptimizerJob(Guid jobId) {
    403353      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  
    491491      };
    492492
    493       CollectDeclaringPlugins(plugins, usedTypes);
     493      PluginUtil.CollectDeclaringPlugins(plugins, usedTypes);
    494494
    495495      return jobData;
    496496    }
    497497
    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     }
    517498
    518499    #region Events
Note: See TracChangeset for help on using the changeset viewer.