Changeset 15639 for branches/2864_PermutationProblems/HeuristicLab.Problems.Instances.LinearOrdering/3.3/LOPSGBInstanceProvider.cs
- Timestamp:
- 01/22/18 17:15:29 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2864_PermutationProblems/HeuristicLab.Problems.Instances.LinearOrdering/3.3/LOPSGBInstanceProvider.cs
r15541 r15639 29 29 using System.Text.RegularExpressions; 30 30 31 namespace HeuristicLab.Problems.Instances.LinearOrdering 32 { 33 public class LOPSGBInstanceProvider : ProblemInstanceProvider<LOPData> 31 namespace HeuristicLab.Problems.Instances.LinearOrdering { 32 public class LOPSGBInstanceProvider : ProblemInstanceProvider<LOPData> { 33 34 public override string Name 34 35 { 36 get { return "SGB"; } 37 } 35 38 36 public override string Name { 37 get { return "SGB"; } 39 public override string Description 40 { 41 get { return "Linear Ordering Problems SGB test instances"; } 42 } 43 44 public override Uri WebLink 45 { 46 get { return new Uri("http://www.optsicom.es/lolib/lop/SGB.zip"); } 47 } 48 49 public override string ReferencePublication 50 { 51 get { return String.Empty; } 52 } 53 54 public override IEnumerable<IDataDescriptor> GetDataDescriptors() { 55 var instanceArchiveName = GetResourceName("SGB.zip"); 56 if (String.IsNullOrEmpty(instanceArchiveName)) yield break; 57 58 using (var instanceStream = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) { 59 foreach (var entry in instanceStream.Entries.Select(x => x.Name).OrderBy(x => x)) { 60 yield return new LOPDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null); 38 61 } 62 } 63 } 39 64 40 public override string Description { 41 get { return "Linear Ordering Problems SGB test instances"; } 65 public override LOPData LoadData(IDataDescriptor id) { 66 var descriptor = (LOPDataDescriptor)id; 67 var instanceArchiveName = GetResourceName("SGB.zip"); 68 using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) { 69 var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier); 70 71 using (var stream = entry.Open()) { 72 var parser = new LOPParser(); 73 parser.Parse(stream); 74 return Load(parser); 42 75 } 76 } 77 } 43 78 44 public override Uri WebLink { 45 get { return new Uri("http://www.optsicom.es/lolib/lop/SGB.zip"); } 46 } 79 public override bool CanImportData 80 { 81 get { return true; } 82 } 83 public override LOPData ImportData(string path) { 84 var parser = new LOPParser(); 85 parser.Parse(path); 86 return Load(parser); 87 } 47 88 48 public override string ReferencePublication { 49 get { return String.Empty; } 50 } 89 private LOPData Load(LOPParser parser) { 90 var instance = new LOPData { 91 Name = parser.Name, 92 Description = parser.Description, 93 Dimension = parser.Dimension, 94 Matrix = parser.Matrix, 95 BestKnownPermutation = parser.BestKnownPermutation, 96 BestKnownQuality = parser.BestKnownQuality 97 }; 98 return instance; 99 } 51 100 52 public override IEnumerable<IDataDescriptor> GetDataDescriptors()53 54 var instanceArchiveName = GetResourceName("SGB.zip");55 if (String.IsNullOrEmpty(instanceArchiveName)) yield break;101 public override bool CanExportData 102 { 103 get { return false; } 104 } 56 105 57 using (var instanceStream = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) 58 { 59 foreach (var entry in instanceStream.Entries.Select(x => x.Name).OrderBy(x => x)) 60 { 61 yield return new LOPDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null); 62 } 63 } 64 } 106 private string GetDescription() { 107 return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + "."; 108 } 65 109 66 public override LOPData LoadData(IDataDescriptor id) 67 { 68 var descriptor = (LOPDataDescriptor)id; 69 var instanceArchiveName = GetResourceName("SGB.zip"); 70 using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) 71 { 72 var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier); 73 74 using (var stream = entry.Open()) 75 { 76 var parser = new LOPParser(); 77 parser.Parse(stream); 78 return Load(parser); 79 } 80 } 81 } 82 83 public override bool CanImportData { 84 get { return true; } 85 } 86 public override LOPData ImportData(string path) 87 { 88 var parser = new LOPParser(); 89 parser.Parse(path); 90 return Load(parser); 91 } 92 93 private LOPData Load(LOPParser parser) 94 { 95 var instance = new LOPData 96 { 97 Name = parser.Name, 98 Description = parser.Description, 99 Dimension = parser.Dimension, 100 Matrix = parser.Matrix, 101 BestKnownPermutation = parser.BestKnownPermutation, 102 BestKnownQuality = parser.BestKnownQuality 103 }; 104 return instance; 105 } 106 107 public override bool CanExportData { 108 get { return false; } 109 } 110 111 private string GetDescription() 112 { 113 return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + "."; 114 } 115 116 protected virtual string GetResourceName(string fileName) 117 { 118 return Assembly.GetExecutingAssembly().GetManifestResourceNames() 119 .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success); 120 } 110 protected virtual string GetResourceName(string fileName) { 111 return Assembly.GetExecutingAssembly().GetManifestResourceNames() 112 .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success); 121 113 } 114 } 122 115 }
Note: See TracChangeset
for help on using the changeset viewer.