source: xssim/src/simulator/workload/reader/archive/AbstractWAReader.java @ 104

Revision 104, 2.1 KB checked in by wojtekp, 13 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package simulator.workload.reader.archive;
2
3import java.io.IOException;
4import java.text.ParseException;
5import java.text.SimpleDateFormat;
6import java.util.Date;
7import java.util.Locale;
8
9import simulator.workload.exceptons.NoSuchCommentException;
10import simulator.workload.reader.archive.gwf.Grms3GWFJobReader;
11import simulator.workload.reader.archive.swf.Grms3SWFJobReader;
12
13/**
14 *
15 * @author Marcin Krystek
16 *
17 * @param <Task>
18 * @param <Job>
19 */
20
21public abstract class AbstractWAReader<Task, Job> implements WAReader<Job>{
22       
23        protected WAParser waParser = null;
24        protected String taskData[];
25       
26       
27        public AbstractWAReader(String fileName) throws NullPointerException, IOException{
28                this.waParser = AbstractWAParser.getInstance(fileName);
29                taskData = null;
30        }
31       
32        public AbstractWAReader(WAParser parser) {
33                this.waParser = parser;
34                taskData = null;
35        }
36       
37        protected abstract Task createTask(String[] data);
38       
39        public void close() throws IOException{
40                if(waParser != null)
41                        waParser.close();
42        }
43       
44        public static synchronized Date getStartTime(String workloadFileName) throws IOException, NoSuchCommentException{
45                Date date = null;
46                WAParser parser = AbstractWAParser.getInstance(workloadFileName);
47                parser.loadHeader();
48               
49                String s = parser.getCommentValue(WAFields.COMMENT_STARTTIME);
50               
51                parser.close();
52                try {
53                        SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy", Locale.ENGLISH);
54                        date = df.parse(s);
55                } catch (ParseException e) {
56                        throw new IOException(e.getMessage());
57                }
58               
59                return date;
60        }
61       
62        public void reset() throws IOException{
63                if(waParser != null)
64                        waParser.reset();
65        }
66       
67        public WAParser getParser(){
68                return this.waParser;
69        }
70       
71        public static AbstractWAReader
72                        <org.qcg.broker.schemas.jobdesc.Task,
73                        org.qcg.broker.schemas.jobdesc.QcgJob> getInstace(String fileName){
74               
75                String name = fileName.trim().toLowerCase();
76               
77                try {
78                       
79                        if(name.endsWith("swf")){
80                                return new Grms3SWFJobReader(fileName);
81                               
82                        } else if(name.endsWith("gwf")){
83                                return new Grms3GWFJobReader(fileName);
84                        }
85                       
86                } catch(Exception e){
87                        e.printStackTrace();
88                }
89               
90                return null;
91        }
92}
Note: See TracBrowser for help on using the repository browser.