Changeset 7842 for branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPInstanceProvider.cs
- Timestamp:
- 05/16/12 16:28:49 (12 years ago)
- Location:
- branches/HeuristicLab.TimeSeries
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.TimeSeries
- Property svn:mergeinfo changed
-
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPInstanceProvider.cs
r7548 r7842 26 26 using System.Reflection; 27 27 using System.Text.RegularExpressions; 28 using ICSharpCode.SharpZipLib.Zip; 28 29 29 30 namespace HeuristicLab.Problems.Instances.ElloumiCTAP { … … 49 50 } 50 51 52 private const string FileName = "ElloumiCTAP"; 53 51 54 public override IEnumerable<IDataDescriptor> GetDataDescriptors() { 52 var solutions = Assembly.GetExecutingAssembly() 53 .GetManifestResourceNames() 54 .Where(x => x.EndsWith(".sol")) 55 .ToDictionary(x => Path.GetFileNameWithoutExtension(x) + ".dat", x => x); 55 Dictionary<string, string> solutions = new Dictionary<string, string>(); 56 var solutionsArchiveName = GetResourceName(FileName + @"\.sol\.zip"); 57 if (!String.IsNullOrEmpty(solutionsArchiveName)) { 58 using (var solutionsZipFile = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) { 59 foreach (var entry in GetZipContents(solutionsZipFile)) 60 solutions.Add(Path.GetFileNameWithoutExtension(entry) + ".dat", entry); 61 } 62 } 63 var instanceArchiveName = GetResourceName(FileName + @"\.dat\.zip"); 64 if (String.IsNullOrEmpty(instanceArchiveName)) yield break; 56 65 57 return Assembly.GetExecutingAssembly()58 .GetManifestResourceNames()59 .Where(x => x.EndsWith(".dat"))60 .OrderBy(x => x)61 .Select(x => new ElloumiCTAPDataDescriptor(GetPrettyName(x), GetDescription(), x, solutions.ContainsKey(x) ? solutions[x] : String.Empty));66 using (var instanceStream = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) { 67 foreach (var entry in GetZipContents(instanceStream).OrderBy(x => x)) { 68 yield return new ElloumiCTAPDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, solutions.ContainsKey(entry) ? solutions[entry] : String.Empty); 69 } 70 } 62 71 } 63 72 64 73 public override CTAPData LoadData(IDataDescriptor id) { 65 74 var descriptor = (ElloumiCTAPDataDescriptor)id; 66 using (var stream = Assembly.GetExecutingAssembly() 67 .GetManifestResourceStream(descriptor.InstanceIdentifier)) { 68 var parser = new ElloumiCTAPParser(); 69 parser.Parse(stream); 70 var instance = Load(parser); 75 var instanceArchiveName = GetResourceName(FileName + @"\.dat\.zip"); 76 using (var instancesZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) { 77 var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier); 78 using (var stream = instancesZipFile.GetInputStream(entry)) { 79 var parser = new ElloumiCTAPParser(); 80 parser.Parse(stream); 81 var instance = Load(parser); 71 82 72 instance.Name = id.Name;73 instance.Description = id.Description;83 instance.Name = id.Name; 84 instance.Description = id.Description; 74 85 75 if (!String.IsNullOrEmpty(descriptor.SolutionIdentifier)) { 76 using (Stream solStream = Assembly.GetExecutingAssembly() 77 .GetManifestResourceStream(descriptor.SolutionIdentifier)) { 78 ElloumiCTAPSolutionParser slnParser = new ElloumiCTAPSolutionParser(); 79 slnParser.Parse(solStream, instance.MemoryRequirements.Length); 80 if (slnParser.Error != null) throw slnParser.Error; 86 if (!String.IsNullOrEmpty(descriptor.SolutionIdentifier)) { 87 var solutionsArchiveName = GetResourceName(FileName + @"\.sol\.zip"); 88 using (var solutionsZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) { 89 entry = solutionsZipFile.GetEntry(descriptor.SolutionIdentifier); 90 using (var solStream = solutionsZipFile.GetInputStream(entry)) { 91 ElloumiCTAPSolutionParser slnParser = new ElloumiCTAPSolutionParser(); 92 slnParser.Parse(solStream, instance.MemoryRequirements.Length); 93 if (slnParser.Error != null) throw slnParser.Error; 81 94 82 instance.BestKnownAssignment = slnParser.Assignment; 83 instance.BestKnownQuality = slnParser.Quality; 95 instance.BestKnownAssignment = slnParser.Assignment; 96 instance.BestKnownQuality = slnParser.Quality; 97 } 98 } 84 99 } 100 return instance; 85 101 } 86 return instance;87 102 } 88 103 } … … 119 134 return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + "."; 120 135 } 136 137 protected virtual string GetResourceName(string fileName) { 138 return Assembly.GetExecutingAssembly().GetManifestResourceNames() 139 .Where(x => Regex.Match(x, @".*\.Data\." + fileName).Success).SingleOrDefault(); 140 } 141 142 protected IEnumerable<string> GetZipContents(ZipInputStream zipFile) { 143 ZipEntry entry; 144 while ((entry = zipFile.GetNextEntry()) != null) { 145 yield return entry.Name; 146 } 147 } 121 148 } 122 149 }
Note: See TracChangeset
for help on using the changeset viewer.