package jws; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import org.graphstream.stream.file.FileSink; import org.graphstream.stream.file.FileSinkDGS; import org.graphstream.stream.file.FileSinkDOT; import org.graphstream.stream.file.FileSinkGML; import org.graphstream.stream.file.FileSinkImages; import org.graphstream.stream.file.FileSinkImages.OutputPolicy; import org.graphstream.stream.file.FileSinkImages.OutputType; import org.graphstream.stream.file.FileSinkImages.Resolution; import org.graphstream.stream.file.FileSinkImages.Resolutions; import org.graphstream.ui.swingViewer.Viewer; import org.graphstream.ui.swingViewer.Viewer.CloseFramePolicy; import abs.backend.java.lib.types.ABSValue; import abs.backend.java.observing.COGView; import abs.backend.java.observing.GuardView; import abs.backend.java.observing.ObjectView; import abs.backend.java.observing.RegistratingObserver; import abs.backend.java.observing.TaskView; public class SystemVisualizer extends RegistratingObserver { final ObjectGraph graph; public SystemVisualizer() { graph = new GraphStreamGraph(); } protected SystemVisualizer(ObjectGraph graph) { this.graph = graph; } @Override public synchronized void taskCreated(TaskView task) { if (task.getSource() != null) { graph.addEdge(task.getSource(), task.getTarget()); } } @Override public synchronized void newCOGCreated(COGView cog, ObjectView initialObject) { cog.registerObjectCreationListener(this); cog.getScheduler().registerTaskSchedulerObserver(this); graph.addObject(initialObject, true); } @Override public synchronized void objectCreated(ObjectView o) { graph.addObject(o, false); //graph.addEdge(edgeCounter.incrementAndGet()+"edge", initialObjects.get(o.getCOG()), o, true); } @Override public synchronized void systemStarted() { graph.begin(); } @Override public synchronized void systemFinished() { graph.end(); } }