Skip to content

Commit

Permalink
Add convenient methods to load a network from a file
Browse files Browse the repository at this point in the history
  • Loading branch information
geofjamg committed Sep 21, 2016
1 parent 1dd1a9c commit ed9d768
Showing 1 changed file with 40 additions and 5 deletions.
Expand Up @@ -11,10 +11,7 @@
import eu.itesla_project.commons.io.MapModuleConfig;
import eu.itesla_project.computation.ComputationManager;
import eu.itesla_project.computation.local.LocalComputationManager;
import eu.itesla_project.iidm.datasource.DataSource;
import eu.itesla_project.iidm.datasource.FileDataSource;
import eu.itesla_project.iidm.datasource.GenericReadOnlyDataSource;
import eu.itesla_project.iidm.datasource.ReadOnlyDataSource;
import eu.itesla_project.iidm.datasource.*;
import eu.itesla_project.iidm.network.Network;
import eu.itesla_project.iidm.parameters.Parameter;
import eu.itesla_project.iidm.parameters.ParameterDefaultValueConfig;
Expand Down Expand Up @@ -274,7 +271,10 @@ public static void importAll(Path dir, Importer importer, boolean parallel, Cons
}

public static String getBaseName(Path file) {
String fileName = file.getFileName().toString();
return getBaseName(file.getFileName().toString());
}

public static String getBaseName(String fileName) {
int pos = fileName.indexOf('.'); // find first dot in case of double extension (.xml.gz)
return pos == -1 ? fileName : fileName.substring(0, pos);
}
Expand Down Expand Up @@ -335,4 +335,39 @@ public static Object readParameter(String format, Properties parameters, Paramet
return value;
}

public static ReadOnlyDataSource createReadOnly(Path directory, String fileNameOrBaseName) {
if (fileNameOrBaseName.endsWith(".zip")) {
return new ZipFileDataSource(directory, getBaseName(fileNameOrBaseName.substring(0, fileNameOrBaseName.length() - 4)));
} else if (fileNameOrBaseName.endsWith(".gz")) {
return new GzFileDataSource(directory, getBaseName(fileNameOrBaseName.substring(0, fileNameOrBaseName.length() - 3)));
} else {
return new FileDataSource(directory, getBaseName(fileNameOrBaseName));
}
}

public static ReadOnlyDataSource createReadOnly(Path file) {
if (!Files.isRegularFile(file)) {
throw new RuntimeException("File " + file + " does not exist or is not a regular file");
}
return createReadOnly(file.getParent(), file.getFileName().toString());
}

public static Network loadNetwork(Path file, ComputationManager computationManager, ImportConfig config, Properties parameters) {
ReadOnlyDataSource dataSource = createReadOnly(file);
for (Importer importer : Importers.list(computationManager, config)) {
if (importer.exists(dataSource)) {
return importer.import_(dataSource, parameters);
}
}
return null;
}

public static Network loadNetwork(Path file) {
return loadNetwork(file, LocalComputationManager.getDefault(), CONFIG.get(), null);
}

public static Network loadNetwork(String file) {
return loadNetwork(Paths.get(file));
}

}

0 comments on commit ed9d768

Please sign in to comment.