package com.plectix.simulator; import java.util.ArrayList; import org.apache.commons.cli.ParseException; import com.plectix.simulator.simulator.SimulatorCommandLine; import com.plectix.simulator.simulator.options.SimulatorFlagOption; import com.plectix.simulator.simulator.options.SimulatorOption; import com.plectix.simulator.simulator.options.SimulatorParameterizedOption; import com.plectix.simulator.util.CommandLineUtils; public final class SimulatorTestOptions { private final ArrayList<String> arguments = new ArrayList<String>(); public final SimulatorCommandLine toCommandLine() throws ParseException { String[] argumentsArray = arguments.toArray(new String[arguments.size()]); arguments.clear(); return this.createCommandLine(argumentsArray); } public static final SimulatorCommandLine defaultContactMapCommandLine(String filename, Integer opMode) throws ParseException { return defaultContactMapCommandLine(filename, false, opMode); } public static final SimulatorCommandLine defaultContactMapCommandLine(String filename, boolean influenceMap, Integer opMode) throws ParseException { return defaultContactMapOptions(filename, influenceMap, opMode).toCommandLine(); } public static final SimulatorTestOptions defaultContactMapOptions(String filename, Integer opMode) { return defaultContactMapOptions(filename, false, opMode); } public static final SimulatorTestOptions defaultContactMapOptions(String filename, boolean influenceMap, Integer opMode) { SimulatorTestOptions options = new SimulatorTestOptions(); options.append(SimulatorFlagOption.SHORT_CONSOLE_OUTPUT); options.appendContactMap(filename); options.append(SimulatorFlagOption.NO_DUMP_ITERATION_NUMBER); options.append(SimulatorFlagOption.NO_DUMP_RULE_ITERATION); if (influenceMap) { options.append(SimulatorFlagOption.BUILD_INFLUENCE_MAP); } else { options.append(SimulatorFlagOption.NO_BUILD_INFLUENCE_MAP); } options.append(SimulatorFlagOption.NO_COMPUTE_QUALITATIVE_COMPRESSION); options.append(SimulatorFlagOption.NO_COMPUTE_QUANTITATIVE_COMPRESSION); options.append(SimulatorFlagOption.NO_ENUMERATE_COMPLEXES); // options.append(SimulatorOption.ALLOW_INCOMPLETE_SUBSTANCE); options.appendOperationMode(opMode); return options; } public final void appendOperationMode(Integer opMode) { append(SimulatorParameterizedOption.OPERATION_MODE); if (opMode!= null) append(opMode.toString()); else append("1"); } public final void appendContactMap(String filename) { append(SimulatorParameterizedOption.CONTACT_MAP); append(filename); } public final void appendFocus(String filename) { append(SimulatorParameterizedOption.FOCUS_ON); append(filename); } public final void append(SimulatorOption option) { arguments.add("--" + option.getLongName()); } private final void append(String option) { arguments.add(option); } private final SimulatorCommandLine createCommandLine(String[] args) throws ParseException { return new SimulatorCommandLine(CommandLineUtils.normalize(args)); } public void appendSimulation(String filename) { append(SimulatorParameterizedOption.SIMULATIONFILE); append(filename); } public void appendQuantitativeCompression(String filename) { append(SimulatorFlagOption.OUTPUT_QUANTITATIVE_COMPRESSION); append(filename); } }