- Timestamp:
- 06/20/11 14:16:53 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Util/PluginUtil.cs
r6444 r6452 30 30 namespace HeuristicLab.Clients.Hive { 31 31 public static class PluginUtil { 32 private static object locker = new object();33 32 34 33 /// <summary> … … 41 40 /// <returns></returns> 42 41 public static List<Guid> GetPluginDependencies(IHiveService service, List<Plugin> onlinePlugins, List<Plugin> alreadyUploadedPlugins, IEnumerable<IPluginDescription> neededPlugins) { 43 lock (locker) { 44 var pluginIds = new List<Guid>(); 45 Dictionary<IPluginDescription, byte[]> checksumsNeededPlugins = CalcChecksumsForPlugins(neededPlugins); 42 var pluginIds = new List<Guid>(); 43 Dictionary<IPluginDescription, byte[]> checksumsNeededPlugins = CalcChecksumsForPlugins(neededPlugins); 46 44 47 foreach (var neededPlugin in checksumsNeededPlugins) { 48 Plugin foundPlugin = alreadyUploadedPlugins.FirstOrDefault(p => p.Hash.SequenceEqual(neededPlugin.Value)); 45 foreach (var neededPlugin in checksumsNeededPlugins) { 46 Plugin foundPlugin = alreadyUploadedPlugins.FirstOrDefault(p => p.Hash.SequenceEqual(neededPlugin.Value)); 47 if (foundPlugin == null) { 48 foundPlugin = onlinePlugins.FirstOrDefault(p => { 49 if (p.Hash != null) { 50 return p.Hash.SequenceEqual(neededPlugin.Value); 51 } else { 52 return false; 53 } 54 }); 55 49 56 if (foundPlugin == null) { 50 foundPlugin = onlinePlugins.FirstOrDefault(p => { 51 if (p.Hash != null) { 52 return p.Hash.SequenceEqual(neededPlugin.Value); 53 } else { 54 return false; 55 } 56 }); 57 58 if (foundPlugin == null) { 59 Plugin p = CreatePlugin(neededPlugin.Key, neededPlugin.Value); 60 List<PluginData> pd = CreatePluginDatas(neededPlugin.Key); 61 try { 62 p.Id = service.AddPlugin(p, pd); 63 alreadyUploadedPlugins.Add(p); 64 pluginIds.Add(p.Id); 65 } 66 catch (FaultException<PluginAlreadyExistsFault> fault) { 67 onlinePlugins.Add(service.GetPlugin(fault.Detail.Id)); 68 } 69 } else { 70 pluginIds.Add(foundPlugin.Id); 57 Plugin p = CreatePlugin(neededPlugin.Key, neededPlugin.Value); 58 List<PluginData> pd = CreatePluginDatas(neededPlugin.Key); 59 try { 60 p.Id = service.AddPlugin(p, pd); 61 alreadyUploadedPlugins.Add(p); 62 pluginIds.Add(p.Id); 63 } 64 catch (FaultException<PluginAlreadyExistsFault> fault) { 65 onlinePlugins.Add(service.GetPlugin(fault.Detail.Id)); 71 66 } 72 67 } else { 73 68 pluginIds.Add(foundPlugin.Id); 74 69 } 70 } else { 71 pluginIds.Add(foundPlugin.Id); 75 72 } 76 return pluginIds;77 73 } 74 return pluginIds; 78 75 } 79 76
Note: See TracChangeset
for help on using the changeset viewer.