3 import Analysis.TaskStateAnalysis.*;
7 public class WebInterface {
8 TaskAnalysis taskanalysis;
12 Hashtable taskgraphmap;
14 public WebInterface(State state, TaskAnalysis taskanalysis, TaskGraph taskgraph) {
16 this.taskanalysis=taskanalysis;
17 this.taskgraph=taskgraph;
18 taskmap=new Hashtable();
19 taskgraphmap=new Hashtable();
22 public boolean specialRequest(String filename) {
23 System.out.println(filename);
24 if (filename.equals("/index.html"))
26 if (taskmap.containsKey(filename))
28 if (taskgraphmap.containsKey(filename))
33 public String handleresponse(String filename, BufferedWriter out, HTTPResponse resp) {
34 if (filename.equals("/index.html"))
35 return indexpage(out, resp);
36 if (taskmap.containsKey(filename))
37 return flagstate((ClassDescriptor) taskmap.get(filename), out, resp);
38 if (taskgraphmap.containsKey(filename))
39 return taskstate((ClassDescriptor) taskgraphmap.get(filename), out, resp);
43 private String flagstate(ClassDescriptor cd, BufferedWriter out, HTTPResponse resp) {
44 Set objects=taskanalysis.getFlagStates(cd);
45 File file=new File(cd.getSymbol()+".dot");
48 Runtime r=Runtime.getRuntime();
49 FileOutputStream dotstream=new FileOutputStream(file,false);
50 FlagState.DOTVisitor.visit(dotstream, objects);
52 Process p=r.exec("dot -Tjpg "+cd.getSymbol()+".dot -o"+cd.getSymbol()+".jpg");
54 p=r.exec("dot -Tps "+cd.getSymbol()+".dot -o"+cd.getSymbol()+".ps");
57 PrintWriter pw=new PrintWriter(out);
58 pw.println("<a href=\"/"+ cd.getSymbol()+".ps\">ps</a><br>");
59 pw.println("<img src=\"/"+ cd.getSymbol()+".jpg\">");
61 } catch (Exception e) {e.printStackTrace();System.exit(-1);}
65 private String taskstate(ClassDescriptor cd, BufferedWriter out, HTTPResponse resp) {
66 Set objects=taskgraph.getTaskNodes(cd);
67 File file=new File(cd.getSymbol()+"-t.dot");
70 Runtime r=Runtime.getRuntime();
71 FileOutputStream dotstream=new FileOutputStream(file,false);
72 FlagState.DOTVisitor.visit(dotstream, objects);
74 Process p=r.exec("dot -Tjpg "+cd.getSymbol()+"-t.dot -o"+cd.getSymbol()+"-t.jpg");
76 p=r.exec("dot -Tps "+cd.getSymbol()+".dot -o"+cd.getSymbol()+"-t.ps");
79 PrintWriter pw=new PrintWriter(out);
80 pw.println("<a href=\"/"+ cd.getSymbol()+"-t.ps\">ps</a><br>");
81 pw.println("<img src=\"/"+ cd.getSymbol()+"-t.jpg\">");
83 } catch (Exception e) {e.printStackTrace();System.exit(-1);}
88 private String indexpage(BufferedWriter out, HTTPResponse resp) {
89 PrintWriter pw=new PrintWriter(out);
90 for(Iterator it_classes=state.getClassSymbolTable().getDescriptorsIterator();it_classes.hasNext();) {
91 ClassDescriptor cd=(ClassDescriptor) it_classes.next();
92 if (taskanalysis.getFlagStates(cd)!=null) {
93 pw.println("<a href=\""+cd.getSymbol()+".html\">"+ cd.getSymbol() +"</a>");
95 taskmap.put("/"+cd.getSymbol()+".html", cd);
97 if (taskgraph.getTaskNodes(cd)!=null) {
98 pw.println("<a href=\""+cd.getSymbol()+"-t.html\">"+ cd.getSymbol() +"</a>");
100 taskgraphmap.put("/"+cd.getSymbol()+"-t.html", cd);