source: xssim/src/simulator/workload/writer/swf/AbstractSWFJobWriter.java @ 104

Revision 104, 7.0 KB checked in by wojtekp, 13 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package simulator.workload.writer.swf;
2
3import java.io.File;
4import java.io.FileWriter;
5import java.io.IOException;
6import java.io.Writer;
7import java.util.ArrayList;
8import java.util.HashMap;
9import java.util.Map;
10
11import simulator.GridSchedulingSimulator;
12
13/**
14 *
15 * @author Marcin Krystek
16 *
17 * @param <Job>
18 */
19public abstract class AbstractSWFJobWriter<Job> implements SWFJobWriter<Job>{
20
21        public static String COMMENT = ";";
22        public static String FIELD_SEPARATOR = "\t\t";
23        public static String IRRELEVANT = "-1";
24       
25        protected long submitTime;
26        protected boolean useTaskMapping;
27        protected Map<String, Long> tasksLength;
28        protected ArrayList<String> taskMapping;
29        protected Writer writer;
30       
31        protected AbstractSWFJobWriter(String dirName, String fileName) throws IOException{
32                submitTime = 0;
33                useTaskMapping = true;
34                tasksLength = new HashMap<String, Long>();
35                taskMapping = new ArrayList<String>();
36               
37                File dir = new File(dirName);
38                if(!dir.exists()) {
39                        dir.mkdirs();
40                } else if(!dir.isDirectory()){
41                        throw new IOException(dirName + " is not a directory.");
42                }
43               
44                File swfFile = new File(dir, fileName);
45                writer = new FileWriter(swfFile);
46        }
47       
48       
49       
50        public void writeFieldDescriptionHeader() throws IOException {
51                writer.write(COMMENT + "Automatically generated workload description by the " + GridSchedulingSimulator.SIMULATOR_NAME + "\n");
52                writer.write(COMMENT + FIELD_SEPARATOR + "j|" + FIELD_SEPARATOR + "s|" + FIELD_SEPARATOR + "w|" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "c|" + FIELD_SEPARATOR + "c|" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "p|" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "s|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "g|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "q|" + FIELD_SEPARATOR + "p|" + FIELD_SEPARATOR + "p|" + FIELD_SEPARATOR + "t|\n"+
53                                         COMMENT + FIELD_SEPARATOR + "o|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "a|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "p|" + FIELD_SEPARATOR + "p|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + "x|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "a|" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "h|\n"+
54                                         COMMENT + FIELD_SEPARATOR + "b|" + FIELD_SEPARATOR + "b|" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + "n|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "o|" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "a|" + FIELD_SEPARATOR + "d|" + FIELD_SEPARATOR + "d|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "i|\n"+
55                                         COMMENT + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "c|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "c|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + "c|" + FIELD_SEPARATOR + "n|\n"+
56                                         COMMENT + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + "a|" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "u|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "k|\n"+
57                                         COMMENT + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "l|" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + "s|" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "s|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "t|" + FIELD_SEPARATOR + "j|" + FIELD_SEPARATOR + " |\n"+
58                                         COMMENT + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "l|" + FIELD_SEPARATOR + "m|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "q|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "a|" + FIELD_SEPARATOR + "n|" + FIELD_SEPARATOR + "i|" + FIELD_SEPARATOR + "o|" + FIELD_SEPARATOR + "t|\n"+
59                                         COMMENT + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "o|" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + "d|" + FIELD_SEPARATOR + "q|" + FIELD_SEPARATOR + "q|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "b|" + FIELD_SEPARATOR + "r|" + FIELD_SEPARATOR + "o|" + FIELD_SEPARATOR + "b|" + FIELD_SEPARATOR + "i|\n"+
60                                         COMMENT + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "c|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "l|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "n|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "m|\n"+
61                                         COMMENT + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "e|" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + " |" + FIELD_SEPARATOR + "e|\n");
62        }
63       
64        public void writeComment(String key, String value) throws IOException {
65                writer.write(COMMENT+key+": "+value+"\n");
66        }
67       
68        public void setJobSubmitTime(long submitTime) {
69                this.submitTime = submitTime;
70        }
71
72        public void addTaskLength(String taskId, long taskLength) {
73                this.tasksLength.put(taskId, taskLength);
74        }
75
76        public void setOverwrite(boolean overwrite) {
77        }
78       
79        public void useTaskMapping(boolean use) {
80                this.useTaskMapping = use;
81        }       
82       
83        public void writeLine(String array[]) throws IOException{
84                for (int i = 0; i < array.length; i++) {
85                        writer.write(FIELD_SEPARATOR + array[i]);
86                }
87                writer.write("\n");
88        }
89       
90        public void close() throws IOException {
91                if(useTaskMapping){
92                        writer.write(COMMENT+"IDMapping: swfID:jobID:taskID\n"+COMMENT+" ");
93                        for(int i = 1; i <= taskMapping.size(); i++){
94                                writer.write(taskMapping.get(i-1) + ", ");
95                                if(i %  10 == 0){
96                                        writer.write("\n"+COMMENT + " ");
97                                }
98                        }
99                        writer.write("\n"+COMMENT+"IDMapping: end\n");
100                }
101               
102                this.taskMapping.clear();
103                this.tasksLength.clear();
104               
105                writer.close();
106        }
107
108}
Note: See TracBrowser for help on using the repository browser.