package simulator.workload.reader.archive; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import simulator.workload.exceptons.NoSuchCommentException; import simulator.workload.reader.archive.gwf.Grms3GWFJobReader; import simulator.workload.reader.archive.swf.Grms3SWFJobReader; /** * * @author Marcin Krystek * * @param * @param */ public abstract class AbstractWAReader implements WAReader{ protected WAParser waParser = null; protected String taskData[]; public AbstractWAReader(String fileName) throws NullPointerException, IOException{ this.waParser = AbstractWAParser.getInstance(fileName); taskData = null; } public AbstractWAReader(WAParser parser) { this.waParser = parser; taskData = null; } protected abstract Task createTask(String[] data); public void close() throws IOException{ if(waParser != null) waParser.close(); } public static synchronized Date getStartTime(String workloadFileName) throws IOException, NoSuchCommentException{ Date date = null; WAParser parser = AbstractWAParser.getInstance(workloadFileName); parser.loadHeader(); String s = parser.getCommentValue(WAFields.COMMENT_STARTTIME); parser.close(); try { SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy", Locale.ENGLISH); date = df.parse(s); } catch (ParseException e) { throw new IOException(e.getMessage()); } return date; } public void reset() throws IOException{ if(waParser != null) waParser.reset(); } public WAParser getParser(){ return this.waParser; } public static AbstractWAReader getInstace(String fileName){ String name = fileName.trim().toLowerCase(); try { if(name.endsWith("swf")){ return new Grms3SWFJobReader(fileName); } else if(name.endsWith("gwf")){ return new Grms3GWFJobReader(fileName); } } catch(Exception e){ e.printStackTrace(); } return null; } }