package simulator.utils.workload; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import simulator.workload.reader.archive.swf.SWFParser; import simulator.workload.writer.swf.QcgSWFJobWriter; public class SwfManageTool { protected List managersList; protected QcgSWFJobWriter writer; protected SWFParser parser; protected File readFromFile; protected List createTaskManageToolsList() throws IOException{ List list = new ArrayList(); list.add(new IncorrectTaskRemover()); list.add(new SubmitTimeNormalizer()); list.add(new StartTimeCalcultor()); return list; } protected void prepareTools(String swfFileName) throws IOException{ File file = new File(swfFileName); String dirName = file.getParent(); String fileName = file.getName(); this.readFromFile = new File(dirName, Calendar.getInstance().getTimeInMillis()+"_"+fileName); file.renameTo(this.readFromFile); parser = new SWFParser(this.readFromFile.getAbsolutePath()); this.writer = new QcgSWFJobWriter(dirName, fileName); this.writer.writeFieldDescriptionHeader(); // rewrite swf header HashMap header = parser.loadHeader(); Set keys = header.keySet(); Iterator itr = keys.iterator(); while(itr.hasNext()){ String key = itr.next(); this.writer.writeComment(key, header.get(key)); } } protected void close() throws IOException{ if(this.parser != null) this.parser.close(); if(this.writer != null) this.writer.close(); if(this.readFromFile != null) this.readFromFile.delete(); } public void run(String swfFileName){ try { prepareTools(swfFileName); this.managersList = createTaskManageToolsList(); String task[] = null; while((task = parser.readTask()) != null){ for(int i = 0; i < managersList.size(); i++){ TaskManagerInterface taskManager = managersList.get(i); task = taskManager.manageTask(task); } if(task != null) writer.writeLine(task); } } catch (IOException e) { e.printStackTrace(); } finally { try { close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String args[]){ SwfManageTool swfManager = new SwfManageTool(); //swfManager.run("src/simulator/utils/workload/DAS.swf"); swfManager.run("src/test/ariel/workload/SDSC/SDSC-SP2-1998-3.1-cln-1000_cp.swf"); } }