1 package at.ac.tuwien.lsdc;
4 import java.io.IOException;
5 import java.util.LinkedList;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
10 import at.ac.tuwien.lsdc.sched.AbstractScheduler;
11 import at.ac.tuwien.lsdc.sched.SchedulerA;
12 import at.ac.tuwien.lsdc.sched.SchedulerB;
13 import at.ac.tuwien.lsdc.sched.SchedulerC;
14 import at.ac.tuwien.lsdc.types.ScenarioData;
15 import at.ac.tuwien.lsdc.types.SchedulerEvent;
16 import at.ac.tuwien.lsdc.types.SchedulerType;
17 import at.ac.tuwien.lsdc.util.CSVParser;
18 import at.ac.tuwien.lsdc.util.CSVScenariosLogger;
21 * Read config (command line properties) and start Scheduler-Simulation.
23 public class SchedSimulator {
25 private static final String USAGE = "USAGE";
27 private static final Logger log = LoggerFactory
28 .getLogger(SchedSimulator.class);
30 private static SchedulerType schedulerType;
31 private static File inputFile;
32 private static File logFile;
33 private static File scenarioLogFile;
35 public static void main(String[] args) throws Exception {
36 if (args.length == 4) {
37 parseCommandLineArgs(args);
38 } else if (args.length == 1) {
39 String[] newArgs = args[0].split(" ");
40 if (newArgs.length == 4) {
41 parseCommandLineArgs(newArgs);
47 LinkedList<SchedulerEvent> apps = CSVParser.parseFile(inputFile);
48 AbstractScheduler scheduler;
49 switch (schedulerType) {
51 scheduler = new SchedulerA();
53 scheduler = new SchedulerB();
55 scheduler = new SchedulerC();
58 ScenarioData data = scheduler.initAndStart(apps);
59 // CSVScenariosLogger logger = new
60 // CSVScenariosLogger("out_scen"+scenario+"sched"+schedulerType+".csv");
61 // logger.appendScenarioData(data);
64 private static void parseCommandLineArgs(String[] args) {
65 String schedulerTypeStr = args[0];
66 String inputFileStr = args[1];
67 String logFileStr = args[2];
68 String scenarioLogFileStr = args[3];
70 schedulerType = SchedulerType.valueOf(schedulerTypeStr);
71 inputFile = new File(inputFileStr);
72 if (!inputFile.canRead())
73 throw new IOException("Can not read input file");
74 logFile = new File(logFileStr);
75 if (!logFile.canWrite())
76 throw new IOException("Can not write to log file");
77 boolean fileWriteOK = false;
78 scenarioLogFile = new File(scenarioLogFileStr);
79 if (scenarioLogFile.exists()) {
80 fileWriteOK = scenarioLogFile.canWrite();
81 scenarioLogFile.delete();
82 scenarioLogFile.createNewFile();
84 scenarioLogFile.createNewFile();
88 throw new IOException("Can not write to Scenario Log File "
89 + scenarioLogFileStr);
90 } catch (Exception e) {