List of usage examples for org.apache.commons.collections15 Transformer Transformer
Transformer
From source file:pku.sei.checkedcoverage.jung.ShowJungGraph.java
public static void main(String[] args) throws InterruptedException { Options options = createOptions();//from w w w.ja v a 2 s . c o m CommandLineParser parser = new GnuParser(); CommandLine cmdLine; try { cmdLine = parser.parse(options, args, true); } catch (ParseException e) { System.err.println("Error parsing the command line arguments: " + e.getMessage()); return; } if (cmdLine.hasOption('h')) { printHelp(options, System.out); System.exit(0); } String[] additionalArgs = cmdLine.getArgs(); if (additionalArgs.length != 2) { printHelp(options, System.err); System.exit(-1); } File traceFile = new File(additionalArgs[0]); String slicingCriterionString = additionalArgs[1]; Long threadId = null; if (cmdLine.hasOption('t')) { try { threadId = Long.parseLong(cmdLine.getOptionValue('t')); } catch (NumberFormatException e) { System.err.println("Illegal thread id: " + cmdLine.getOptionValue('t')); System.exit(-1); } } TraceResult trace; try { trace = TraceResult.readFrom(traceFile); } catch (IOException e) { System.err.format("Could not read the trace file \"%s\": %s%n", traceFile, e); System.exit(-1); return; } List<SlicingCriterion> sc = null; try { sc = SlicingCriterion.parseAll(slicingCriterionString, trace.getReadClasses()); } catch (IllegalArgumentException e) { System.err.println("Error parsing slicing criterion: " + e.getMessage()); System.exit(-1); return; } List<ThreadId> threads = trace.getThreads(); if (threads.size() == 0) { System.err.println("The trace file contains no tracing information."); System.exit(-1); } ThreadId tracing = null; for (ThreadId t : threads) { if (threadId == null) { if ("main".equals(t.getThreadName()) && (tracing == null || t.getJavaThreadId() < tracing.getJavaThreadId())) tracing = t; } else if (t.getJavaThreadId() == threadId.longValue()) { tracing = t; } } if (tracing == null) { System.err.println(threadId == null ? "Couldn't find the main thread." : "The thread you specified was not found."); System.exit(-1); return; } Transformer<InstructionInstance, Object> transformer; Transformer<Object, String> vertexLabelTransformer; Transformer<Object, String> vertexTooltipTransformer; String granularity = cmdLine.getOptionValue("granularity"); if (granularity == null || "instance".equals(granularity)) { transformer = new Transformer<InstructionInstance, Object>() { public InstructionInstance transform(InstructionInstance inst) { return inst; } }; vertexLabelTransformer = new Transformer<Object, String>() { public String transform(Object inst) { return getShortInstructionText(((InstructionInstance) inst).getInstruction()); } }; vertexTooltipTransformer = new Transformer<Object, String>() { public String transform(Object inst) { return getInstructionTooltip(((InstructionInstance) inst).getInstruction()); } }; } else if ("instruction".equals(granularity)) { transformer = new Transformer<InstructionInstance, Object>() { public Instruction transform(InstructionInstance inst) { return inst.getInstruction(); } }; vertexLabelTransformer = new Transformer<Object, String>() { public String transform(Object inst) { return getShortInstructionText(((Instruction) inst)); } }; vertexTooltipTransformer = new Transformer<Object, String>() { public String transform(Object inst) { return getInstructionTooltip(((Instruction) inst)); } }; } else if ("line".equals(granularity)) { transformer = new Transformer<InstructionInstance, Object>() { public Line transform(InstructionInstance inst) { return new Line(inst.getInstruction().getMethod(), inst.getInstruction().getLineNumber()); } }; vertexLabelTransformer = new Transformer<Object, String>() { public String transform(Object inst) { Line line = (Line) inst; return line.getMethod().getName() + ":" + line.getLineNr(); } }; vertexTooltipTransformer = new Transformer<Object, String>() { public String transform(Object inst) { Line line = (Line) inst; return "Line " + line.getLineNr() + " in method " + line.getMethod().getReadClass().getName() + "." + line.getMethod(); } }; } else { System.err.println("Illegal granularity specification: " + granularity); System.exit(-1); return; } int maxLevel = Integer.MAX_VALUE; if (cmdLine.hasOption("maxlevel")) { try { maxLevel = Integer.parseInt(cmdLine.getOptionValue("maxlevel")); } catch (NumberFormatException e) { System.err.println("Argument to \"maxlevel\" must be an integer."); System.exit(-1); return; } } long startTime = System.nanoTime(); ShowJungGraph<Object> showGraph = new ShowJungGraph<Object>(trace, transformer); showGraph.setMaxLevel(maxLevel); showGraph.setVertexLabelTransformer(vertexLabelTransformer); showGraph.setVertexTooltipTransformer(vertexTooltipTransformer); if (cmdLine.hasOption("progress")) showGraph.addProgressMonitor(new ConsoleProgressMonitor()); boolean multithreaded; if (cmdLine.hasOption("multithreaded")) { String multithreadedStr = cmdLine.getOptionValue("multithreaded"); multithreaded = ("1".equals(multithreadedStr) || "true".equals(multithreadedStr)); } else { multithreaded = Runtime.getRuntime().availableProcessors() > 1; } DirectedGraph<Object, SliceEdge<Object>> graph = showGraph.getGraph(tracing, sc, multithreaded); long endTime = System.nanoTime(); System.out.format((Locale) null, "%nSlice graph consists of %d nodes.%n", graph.getVertexCount()); System.out.format((Locale) null, "Computation took %.2f seconds.%n", 1e-9 * (endTime - startTime)); showGraph.displayGraph(graph); }
From source file:pku.sei.checkedcoverage.jung.ShowJungGraph.java
public void displayGraph(DirectedGraph<VertexType, SliceEdge<VertexType>> graph) { JFrame mainFrame = new JFrame("slice graph display"); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Layout<VertexType, SliceEdge<VertexType>> layout = new KKLayout<VertexType, SliceEdge<VertexType>>(graph); final VisualizationViewer<VertexType, SliceEdge<VertexType>> viewer = new VisualizationViewer<VertexType, SliceEdge<VertexType>>( layout);/* w w w .j a v a 2s. c om*/ viewer.getRenderContext().setVertexLabelTransformer(this.vertexLabelTransformer); viewer.setVertexToolTipTransformer(this.vertexTooltipTransformer); viewer.getRenderContext().setEdgeLabelTransformer(new Transformer<SliceEdge<VertexType>, String>() { public String transform(SliceEdge<VertexType> edge) { Variable var = edge.getVariable(); if (var instanceof ArrayElement) { ArrayElement elem = (ArrayElement) var; return "arr" + elem.getArrayId() + "[" + elem.getArrayIndex() + "]"; } else if (var instanceof LocalVariable) { LocalVariable localVar = (LocalVariable) var; if (localVar.getVarName() != null) return localVar.getVarName(); return "local" + localVar.getVarIndex(); } else if (var instanceof StackEntry) { return "stack"; } else if (var instanceof ObjectField) { ObjectField objField = (ObjectField) var; return "obj" + objField.getObjectId() + "." + objField.getFieldName(); } else if (var instanceof StaticField) { StaticField objField = (StaticField) var; String ownerInternalClassName = objField.getOwnerInternalClassName(); String simpleClassName = getSimpleClassName(ownerInternalClassName); return simpleClassName + "." + objField.getFieldName(); } else { assert var == null; return ""; } } }); viewer.setEdgeToolTipTransformer(new Transformer<SliceEdge<VertexType>, String>() { public String transform(SliceEdge<VertexType> edge) { Variable var = edge.getVariable(); if (var instanceof ArrayElement) { ArrayElement elem = (ArrayElement) var; return "Array element " + elem.getArrayIndex() + " of array #" + elem.getArrayId(); } else if (var instanceof LocalVariable) { LocalVariable localVar = (LocalVariable) var; if (localVar.getVarName() != null) return "Local variable \"" + localVar.getVarName() + "\""; return "Local variable #" + localVar.getVarIndex(); } else if (var instanceof StackEntry) { return "Dependency over the operand stack"; } else if (var instanceof ObjectField) { ObjectField objField = (ObjectField) var; return "Field \"" + objField.getFieldName() + "\" of object #" + objField.getObjectId(); } else if (var instanceof StaticField) { StaticField objField = (StaticField) var; String ownerInternalClassName = objField.getOwnerInternalClassName(); return "Static field \"" + objField.getFieldName() + "\" of class \"" + Type.getType(ownerInternalClassName).getClassName(); } else { assert var == null; return "Control dependency"; } } }); viewer.getRenderContext().setEdgeDrawPaintTransformer(new Transformer<SliceEdge<VertexType>, Paint>() { public Paint transform(SliceEdge<VertexType> edge) { return edge.getVariable() == null ? Color.red : Color.black; } }); viewer.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR); viewer.getRenderContext().setVertexShapeTransformer(new Transformer<VertexType, Shape>() { public Shape transform(VertexType inst) { Font font = viewer.getFont(); String text = viewer.getRenderContext().getVertexLabelTransformer().transform(inst); FontRenderContext fontRenderContext = ((Graphics2D) viewer.getGraphics()).getFontRenderContext(); Rectangle2D bounds = font.getStringBounds(text, fontRenderContext); return new RoundRectangle2D.Double(-.6 * bounds.getWidth(), -.6 * bounds.getHeight(), 1.2 * bounds.getWidth(), 1.2 * bounds.getHeight(), 8, 8); } }); viewer.setBackground(Color.white); DefaultModalGraphMouse<InstructionInstance, SliceEdge<VertexType>> mouse = new DefaultModalGraphMouse<InstructionInstance, SliceEdge<VertexType>>(); mouse.setMode(Mode.ANNOTATING); viewer.setGraphMouse(mouse); mainFrame.getContentPane().add(viewer); mainFrame.pack(); mainFrame.setVisible(true); }
From source file:Presentacion.SimpleGraphView.java
public void printarNewmanParcial(Grafo<Cancion, Float> G) { init(G);/*from w ww .j a v a 2 s.c o m*/ crearGrafo(G); Transformer<Cancion, Paint> vertexPaint = new Transformer<Cancion, Paint>() { public Paint transform(Cancion can) { return Color.RED; } }; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); add(vv); revalidate(); }
From source file:Presentacion.SimpleGraphView.java
public void printarNewmanFinal(Grafo<Cancion, Float> G, Solucion s) { init(G);/*w ww. ja v a2s .c o m*/ crearGrafo(G); solu = s; Transformer<Cancion, Paint> vertexPaint = new Transformer<Cancion, Paint>() { Integer n = solu.obtenerComunidades().size(); Color[] cols = new Color[n]; public Paint transform(Cancion can) { for (Integer i = 0; i < n; i++) cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f); Integer color = solu.consultarComunidad(can); Color c = cols[color]; return c; } }; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); add(vv); revalidate(); }
From source file:Presentacion.SimpleGraphView.java
public void printarLouvainParcial(Grafo<Cancion, Float> G) { init(G);/* w w w. j av a 2s. co m*/ crearGrafo(G); Transformer<Cancion, Paint> vertexPaint = new Transformer<Cancion, Paint>() { Integer n = soluL.obtenerComunidades().size(); Color[] cols = new Color[n]; public Paint transform(Cancion can) { for (Integer i = 0; i < n; i++) cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f); Integer color = soluL.consultarComunidad(can); Color c = cols[color]; return c; } }; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); add(vv); revalidate(); }
From source file:Presentacion.SimpleGraphView.java
public void printarLouvainIteracion0(Grafo<Cancion, Float> G, ArrayList<Comunidad> Com) { ComL = Com;/*from www .j a v a2s. c om*/ soluL = new Solucion("", ComL); crearGrafo(G); Gr = G; Transformer<Cancion, Paint> vertexPaint = new Transformer<Cancion, Paint>() { Integer n = Gr.ObtenerNodos().size(); Color[] cols = new Color[n]; public Paint transform(Cancion can) { for (Integer i = 0; i < n; i++) cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f); Integer color = Gr.consultarIndice(can); Color c = cols[color]; return c; } }; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); add(vv); revalidate(); }
From source file:Presentacion.SimpleGraphView.java
public void printarLouvainFinal(Grafo<Cancion, Float> G, Solucion s) { solu = s;/*from w w w. j a v a2s .c o m*/ init(G); crearGrafo(G); Transformer<Cancion, Paint> vertexPaint = new Transformer<Cancion, Paint>() { Integer n = solu.obtenerComunidades().size(); Color[] cols = new Color[n]; public Paint transform(Cancion can) { for (Integer i = 0; i < n; i++) cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f); Integer color = solu.consultarComunidad(can); Color c = cols[color]; return c; } }; ; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); add(vv); revalidate(); }
From source file:Presentacion.SimpleGraphView.java
public void printarCliqueParcial(Grafo<Cancion, Float> G, ArrayList<ArrayList<Cancion>> sol) { init(G);//from w w w. ja va 2 s . c om crearGrafo(G); CliqueParcial = sol; Transformer<Cancion, Paint> vertexPaint = new Transformer<Cancion, Paint>() { Integer n = CliqueParcial.size(); Color[] cols = new Color[n]; public Paint transform(Cancion can) { for (Integer i = 0; i < n; i++) cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f); Integer color = consultarComunidadCliqueParcial(can); Color c = cols[color]; return c; } }; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); add(vv); revalidate(); }
From source file:Presentacion.SimpleGraphView.java
public void printarCliqueFinal(Grafo<Cancion, Float> G, Solucion s) { solu = s;//from w w w. java2 s.c o m init(G); crearGrafo(G); Transformer<Cancion, Paint> vertexPaint = new Transformer<Cancion, Paint>() { Integer n = solu.obtenerComunidades().size(); Color[] cols = new Color[n]; public Paint transform(Cancion can) { for (Integer i = 0; i < n; i++) cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f); Integer color = solu.consultarComunidad(can); Color c = cols[color]; return c; } }; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); add(vv); revalidate(); deboHacerfinalClique = false; }
From source file:proteinHypernetworkVisualization.implementation.jung.visualization.DefaultGraphStyle.java
public void setGraphStyle(final VisualizationViewer vv, boolean labelVertices) { vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line()); vv.getRenderContext().setVertexShapeTransformer(getVertexShapeTransformer()); vv.getRenderContext().setVertexFillPaintTransformer(new Transformer<Object, Paint>() { public Paint transform(Object v) { Color c = getDefaultVertexColor(v, vv); if (vv.getPickedVertexState().isPicked(v)) { c = Color.WHITE;//c.brighter(); }/*from w w w . j a va 2 s .c om*/ return makeTransparent(c); } }); vv.getRenderContext().setVertexDrawPaintTransformer(new Transformer<Object, Paint>() { public Paint transform(Object v) { if (vv.getPickedVertexState().isPicked(v)) { return makeTransparent(Color.WHITE); } return makeTransparent(getDefaultVertexColor(v, vv)); } }); vv.getRenderContext().setVertexStrokeTransformer(new Transformer<Object, Stroke>() { public Stroke transform(Object i) { return new BasicStroke(0); } }); vv.getRenderContext().setEdgeDrawPaintTransformer(new Transformer<Object, Paint>() { Graph g = vv.getGraphLayout().getGraph(); public Paint transform(Object e) { for (Object v : g.getEndpoints(e)) { if (vv.getPickedVertexState().isPicked(v)) return makeTransparent(Color.RED); } return makeTransparent(getDefaultEdgeColor(e, vv)); } }); vv.getRenderContext().setEdgeStrokeTransformer(new Transformer<Object, Stroke>() { Graph g = vv.getGraphLayout().getGraph(); public Stroke transform(Object e) { for (Object v : g.getEndpoints(e)) { if (vv.getPickedVertexState().isPicked(v)) return new BasicStroke(3); } return new BasicStroke(1); } }); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller()); labelVertices(vv, false); //vv.setVertexToolTipTransformer(new ToStringLabeller()); }