@Override
public List<CommandExecution> before(Path workingDir) throws IOException {
network.getStateManager().setWorkingState(workingStateId);
for (String amplModelFileName : AMPL_MODEL_FILE_NAMES) {
Files.copy(getClass().getResourceAsStream("/ampl/projector/" + amplModelFileName), workingDir.resolve(amplModelFileName));
}
Files.copy(config.getGeneratorsDomainsFile(), workingDir.resolve(AMPL_GENERATORS_DOMAINS_FILE_NAME));
mapper = AmplUtil.createMapper(network);
mapper.dump(workingDir.resolve("mapper.csv"));
new AmplNetworkWriter(network,
new FileDataSource(workingDir, "ampl"),
mapper,
new AmplExportConfig(AmplExportConfig.ExportScope.ALL, true, AmplExportConfig.ExportActionType.CURATIVE))
.write();
Command command = new SimpleCommandBuilder()
.id("projector")
.program(config.getAmplHomeDir().resolve("ampl").toString())
.args("projector.run")
.build();
return Collections.singletonList(new CommandExecution(command, 1, 0));
}