Example usage for org.apache.commons.collections15 Transformer Transformer

List of usage examples for org.apache.commons.collections15 Transformer Transformer

Introduction

In this page you can find the example usage for org.apache.commons.collections15 Transformer Transformer.

Prototype

Transformer

Source Link

Usage

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());
}