]> git.somenet.org - pub/jan/lsdc.git/blob - src/at/ac/tuwien/lsdc/SchedSimulator.java
started input handling of SchedulerSimulator
[pub/jan/lsdc.git] / src / at / ac / tuwien / lsdc / SchedSimulator.java
1 package at.ac.tuwien.lsdc;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.LinkedList;
6
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
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;
19
20 /**
21  * Read config (command line properties) and start Scheduler-Simulation.
22  */
23 public class SchedSimulator {
24
25         private static final String USAGE = "USAGE";
26
27         private static final Logger log = LoggerFactory
28                         .getLogger(SchedSimulator.class);
29
30         private static SchedulerType schedulerType;
31         private static File inputFile;
32         private static File logFile;
33         private static File scenarioLogFile;
34
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);
42                         } else {
43                                 log.info(USAGE);
44                                 System.exit(1);
45                         }
46                 }
47                 LinkedList<SchedulerEvent> apps = CSVParser.parseFile(inputFile);
48                 AbstractScheduler scheduler;
49                 switch (schedulerType) {
50                 case A:
51                         scheduler = new SchedulerA();
52                 case B:
53                         scheduler = new SchedulerB();
54                 default:
55                         scheduler = new SchedulerC();
56                 }
57
58                 ScenarioData data = scheduler.initAndStart(apps);
59                 // CSVScenariosLogger logger = new
60                 // CSVScenariosLogger("out_scen"+scenario+"sched"+schedulerType+".csv");
61                 // logger.appendScenarioData(data);
62         }
63
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];
69                 try {
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();
83                         } else {
84                                 scenarioLogFile.createNewFile();
85                                 fileWriteOK = true;
86                         }
87                         if (!fileWriteOK)
88                                 throw new IOException("Can not write to Scenario Log File "
89                                                 + scenarioLogFileStr);
90                 } catch (Exception e) {
91                         e.printStackTrace();
92                         log.info(USAGE);
93                         System.exit(1);
94                 }
95         }
96 }