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

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

Introduction

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

Prototype

public O transform(I input);

Source Link

Document

Transforms the input object (leaving it unchanged) into some output object.

Usage

From source file:edu.uci.ics.jung.io.TestGraphMLReader.java

public void testAttributes() throws IOException {
    Graph<Number, Number> graph = new UndirectedSparseGraph<Number, Number>();
    gmlreader.load("src/test/resources/edu/uci/ics/jung/io/graphml/attributes.graphml", graph);

    Assert.assertEquals(graph.getVertexCount(), 6);
    Assert.assertEquals(graph.getEdgeCount(), 7);

    // test vertex IDs
    BidiMap<Number, String> vertex_ids = gmlreader.getVertexIDs();
    for (Map.Entry<Number, String> entry : vertex_ids.entrySet()) {
        Assert.assertEquals(entry.getValue().charAt(0), 'n');
        Assert.assertEquals(Integer.parseInt(entry.getValue().substring(1)), entry.getKey().intValue());
    }// www.ja  va  2  s  .co  m

    // test edge IDs
    BidiMap<Number, String> edge_ids = gmlreader.getEdgeIDs();
    for (Map.Entry<Number, String> entry : edge_ids.entrySet()) {
        Assert.assertEquals(entry.getValue().charAt(0), 'e');
        Assert.assertEquals(Integer.parseInt(entry.getValue().substring(1)), entry.getKey().intValue());
    }

    // test data
    //        Map<String, SettableTransformer<Number, String>> vertex_data = gmlreader
    //                .getVertexData();
    //        Map<String, SettableTransformer<Number, String>> edge_data = gmlreader
    //                .getEdgeData();
    Map<String, GraphMLMetadata<Number>> vertex_metadata = gmlreader.getVertexMetadata();
    Map<String, GraphMLMetadata<Number>> edge_metadata = gmlreader.getEdgeMetadata();

    // test vertex colors
    //        Transformer<Number, String> vertex_color = vertex_data.get("d0");
    Transformer<Number, String> vertex_color = vertex_metadata.get("d0").transformer;
    Assert.assertEquals(vertex_color.transform(0), "green");
    Assert.assertEquals(vertex_color.transform(1), "yellow");
    Assert.assertEquals(vertex_color.transform(2), "blue");
    Assert.assertEquals(vertex_color.transform(3), "red");
    Assert.assertEquals(vertex_color.transform(4), "yellow");
    Assert.assertEquals(vertex_color.transform(5), "turquoise");

    // test edge weights
    //        Transformer<Number, String> edge_weight = edge_data.get("d1");
    Transformer<Number, String> edge_weight = edge_metadata.get("d1").transformer;
    Assert.assertEquals(edge_weight.transform(0), "1.0");
    Assert.assertEquals(edge_weight.transform(1), "1.0");
    Assert.assertEquals(edge_weight.transform(2), "2.0");
    Assert.assertEquals(edge_weight.transform(3), null);
    Assert.assertEquals(edge_weight.transform(4), null);
    Assert.assertEquals(edge_weight.transform(5), null);
    Assert.assertEquals(edge_weight.transform(6), "1.1");

}

From source file:edu.uci.ics.jung.algorithms.scoring.BetweennessCentrality.java

/**
 * Calculates betweenness scores based on the all-pairs weighted shortest paths in the
 * graph./*from  w  ww.j a va  2s  . co m*/
 * 
 * <p>NOTE: This version of the algorithm may not work correctly on all graphs; we're still
 * working out the bugs.  Use at your own risk.
 * @param graph the graph for which the scores are to be calculated
 * @param edge_weights the edge weights to be used in the path length calculations
 */
public BetweennessCentrality(Graph<V, E> graph, Transformer<E, ? extends Number> edge_weights) {
    // reject negative-weight edges up front
    for (E e : graph.getEdges()) {
        double e_weight = edge_weights.transform(e).doubleValue();
        if (e_weight < 0)
            throw new IllegalArgumentException(String.format("Weight for edge '%s' is < 0: %d", e, e_weight));
    }

    initialize(graph);
    computeBetweenness(new MapBinaryHeap<V>(new BetweennessComparator()), edge_weights);
}

From source file:net.sf.eventgraphj.centrality.EgoNetworkBetweennessCentrality.java

/**
 * Calculates betweenness scores based on the all-pairs weighted shortest paths in the
 * graph.//from   w w  w.  ja va 2  s  .c  o m
 * 
 * <p>NOTE: This version of the algorithm may not work correctly on all graphs; we're still
 * working out the bugs.  Use at your own risk.
 * @param graph the graph for which the scores are to be calculated
 * @param edge_weights the edge weights to be used in the path length calculations
 */
public EgoNetworkBetweennessCentrality(Graph<V, E> graph, Transformer<E, ? extends Number> edge_weights) {
    // reject negative-weight edges up front
    for (E e : graph.getEdges()) {
        double e_weight = edge_weights.transform(e).doubleValue();
        if (e_weight < 0)
            throw new IllegalArgumentException(String.format("Weight for edge '%s' is < 0: %d", e, e_weight));
    }

    initialize(graph);
    computeBetweenness(new MapBinaryHeap<V>(new BetweennessComparator()), edge_weights);
}

From source file:net.itransformers.topologyviewer.gui.MyVisualizationViewer.java

private Transformer<String, String> createEdgeToolTipTransformer() {
    return new Transformer<String, String>() {
        private Transformer<String, String> createTransformer() {
            TooltipType tooltipType = getTooltip(currentFilter, ForType.EDGE);
            if (tooltipType == null)
                return null;
            String transformerClassName = tooltipType.getTransformer();
            if (transformerClassName == null) {
                return new DefaultEdgeTooltipTransformer(tooltipType, edgeMetadatas);
            } else {
                try {
                    final Class<?> aClass = Class.forName(transformerClassName, true,
                            this.getClass().getClassLoader());
                    if (EdgeTooltipTransformerBase.class.isAssignableFrom(aClass)) {
                        Class<EdgeTooltipTransformerBase> transformerBaseClass = (Class<EdgeTooltipTransformerBase>) aClass;
                        Constructor<EdgeTooltipTransformerBase> constr = transformerBaseClass
                                .getConstructor(new Class[] { TooltipType.class, Map.class });
                        try {
                            EdgeTooltipTransformerBase inst = constr.newInstance(tooltipType, edgeMetadatas);
                            return inst;
                        } catch (IllegalArgumentException iae) {
                            logger.error(constr.toString());
                            throw iae;
                        }//from w  w w  .j a  v a  2s . co m
                        //                            return inst;
                    } else {
                        throw new RuntimeException("not implemented");
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }

        public String transform(String s) {
            final Transformer<String, String> transformer = createTransformer();
            if (transformer == null)
                return "";
            return transformer.transform(s);
        }
    };
}

From source file:net.itransformers.topologyviewer.gui.MyVisualizationViewer.java

private Transformer<String, String> createNodeTooltipTransformer() {
    return new Transformer<String, String>() {
        private Transformer<String, String> createTransformer() {
            TooltipType tooltipType = getTooltip(currentFilter, ForType.NODE);
            if (tooltipType == null)
                return null;
            String transformerClassName = tooltipType.getTransformer();
            if (transformerClassName == null) {
                return new DefaultNodeTooltipTransformer(tooltipType, vertexMetadatas);
            } else {
                try {
                    final Class<?> aClass = Class.forName(transformerClassName, true,
                            this.getClass().getClassLoader());
                    if (NodeTooltipTransformerBase.class.isAssignableFrom(aClass)) {
                        Class<NodeTooltipTransformerBase> transformerBaseClass = (Class<NodeTooltipTransformerBase>) aClass;
                        Constructor<NodeTooltipTransformerBase> constr = transformerBaseClass
                                .getConstructor(new Class[] { TooltipType.class, Map.class });
                        try {
                            NodeTooltipTransformerBase inst = constr.newInstance(tooltipType, vertexMetadatas);
                            return inst;
                        } catch (IllegalArgumentException iae) {
                            logger.error(constr.toString());
                            throw iae;
                        }//from ww  w . jav  a 2s . c  om
                    } else {
                        throw new RuntimeException("not implemented");
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }

        public String transform(String s) {
            final Transformer<String, String> transformer = createTransformer();
            if (transformer == null)
                return null;
            return transformer.transform(s);
        }
    };
}

From source file:edu.uci.ics.jung.io.GraphMLWriter.java

/**
 * //from www.  java 2  s. c om
 * @param graph
 * @param w
 * @throws IOException 
 */
public void save(Hypergraph<V, E> graph, Writer w) throws IOException {
    BufferedWriter bw = new BufferedWriter(w);

    // write out boilerplate header
    bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
    bw.write("<graphml xmlns=\"http://graphml.graphdrawing.org/xmlns/graphml\"\n"
            + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"  \n");
    bw.write("xsi:schemaLocation=\"http://graphml.graphdrawing.org/xmlns/graphml\">\n");

    // write out data specifiers, including defaults
    for (String key : graph_data.keySet())
        writeKeySpecification(key, "graph", graph_data.get(key), bw);
    for (String key : vertex_data.keySet())
        writeKeySpecification(key, "node", vertex_data.get(key), bw);
    for (String key : edge_data.keySet())
        writeKeySpecification(key, "edge", edge_data.get(key), bw);

    // write out graph-level information
    // set edge default direction
    bw.write("<graph edgedefault=\"");
    directed = !(graph instanceof UndirectedGraph);
    if (directed)
        bw.write("directed\">\n");
    else
        bw.write("undirected\">\n");

    // write graph description, if any
    String desc = graph_desc.transform(graph);
    if (desc != null)
        bw.write("<desc>" + desc + "</desc>\n");

    // write graph data out if any
    for (String key : graph_data.keySet()) {
        Transformer<Hypergraph<V, E>, ?> t = graph_data.get(key).transformer;
        Object value = t.transform(graph);
        if (value != null)
            bw.write(format("data", "key", key, value.toString()) + "\n");
    }

    // write vertex information
    writeVertexData(graph, bw);

    // write edge information
    writeEdgeData(graph, bw);

    // close graph
    bw.write("</graph>\n");
    bw.write("</graphml>\n");
    bw.flush();

    bw.close();
}

From source file:edu.uci.ics.jung.io.GraphMLWriter.java

protected void writeEdgeData(Hypergraph<V, E> g, Writer w) throws IOException {
    for (E e : g.getEdges()) {
        Collection<V> vertices = g.getIncidentVertices(e);
        String id = edge_ids.transform(e);
        String e_string;/*from  w ww.  j  a  v a2 s .  com*/
        boolean is_hyperedge = !(g instanceof Graph);
        if (is_hyperedge) {
            e_string = "<hyperedge ";
            // add ID if present
            if (id != null)
                e_string += "id=\"" + id + "\" ";
        } else {
            Pair<V> endpoints = new Pair<V>(vertices);
            V v1 = endpoints.getFirst();
            V v2 = endpoints.getSecond();
            e_string = "<edge ";
            // add ID if present
            if (id != null)
                e_string += "id=\"" + id + "\" ";
            // add edge type if doesn't match default
            EdgeType edge_type = g.getEdgeType(e);
            if (directed && edge_type == EdgeType.UNDIRECTED)
                e_string += "directed=\"false\" ";
            if (!directed && edge_type == EdgeType.DIRECTED)
                e_string += "directed=\"true\" ";
            e_string += "source=\"" + vertex_ids.transform(v1) + "\" target=\"" + vertex_ids.transform(v2)
                    + "\"";
        }

        boolean closed = false;
        // write description out if any
        String desc = edge_desc.transform(e);
        if (desc != null) {
            w.write(e_string + ">\n");
            closed = true;
            w.write("<desc>" + desc + "</desc>\n");
        }
        // write data out if any
        for (String key : edge_data.keySet()) {
            Transformer<E, ?> t = edge_data.get(key).transformer;
            Object value = t.transform(e);
            if (value != null) {
                if (!closed) {
                    w.write(e_string + ">\n");
                    closed = true;
                }
                w.write(format("data", "key", key, value.toString()) + "\n");
            }
        }
        // if this is a hyperedge, write endpoints out if any
        if (is_hyperedge) {
            for (V v : vertices) {
                if (!closed) {
                    w.write(e_string + ">\n");
                    closed = true;
                }
                w.write("<endpoint node=\"" + vertex_ids.transform(v) + "\"/>\n");
            }
        }

        if (!closed)
            w.write(e_string + "/>\n"); // no contents; close the edge with "/>"
        else if (is_hyperedge)
            w.write("</hyperedge>\n");
        else
            w.write("</edge>\n");
    }
}

From source file:edu.uci.ics.jung.io.GraphMLWriter.java

protected void writeVertexData(Hypergraph<V, E> graph, BufferedWriter w) throws IOException {
    for (V v : graph.getVertices()) {
        String v_string = String.format("<node id=\"%s\"", vertex_ids.transform(v));
        boolean closed = false;
        // write description out if any
        String desc = vertex_desc.transform(v);
        if (desc != null) {
            w.write(v_string + ">\n");
            closed = true;//  w  w w  .  jav a 2s.c o m
            w.write("<desc>" + desc + "</desc>\n");
        }
        // write data out if any
        for (String key : vertex_data.keySet()) {
            Transformer<V, ?> t = vertex_data.get(key).transformer;
            if (t != null) {
                Object value = t.transform(v);
                if (value != null) {
                    if (!closed) {
                        w.write(v_string + ">\n");
                        closed = true;
                    }
                    w.write(format("data", "key", key, value.toString()) + "\n");
                }
            }
        }
        if (!closed)
            w.write(v_string + "/>\n"); // no contents; close the node with "/>"
        else
            w.write("</node>\n");
    }
}

From source file:net.itransformers.utils.MyGraphMLWriter.java

/**
 * //from  w  w  w.j  a  v  a 2s  .co  m
 * @param graph
 * @param w
 * @throws IOException 
 */
public void save(Hypergraph<V, E> graph, Writer w) throws IOException {
    BufferedWriter bw = new BufferedWriter(w);

    // write out boilerplate header
    bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
    bw.write("<graphml xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">  \n");

    // write out data specifiers, including defaults
    for (String key : graph_data.keySet())
        writeKeySpecification(key, "graph", graph_data.get(key), bw);
    for (String key : vertex_data.keySet())
        writeKeySpecification(key, "node", vertex_data.get(key), bw);
    for (String key : edge_data.keySet())
        writeKeySpecification(key, "edge", edge_data.get(key), bw);

    // write out graph-level information
    // set edge default direction
    bw.write("<graph edgedefault=\"");
    directed = !(graph instanceof UndirectedGraph);
    if (directed)
        bw.write("directed\">\n");
    else
        bw.write("undirected\">\n");

    // write graph description, if any
    String desc = graph_desc.transform(graph);
    if (desc != null)
        bw.write("<desc>" + desc + "</desc>\n");

    // write graph data out if any
    for (String key : graph_data.keySet()) {
        Transformer<Hypergraph<V, E>, ?> t = graph_data.get(key).transformer;
        Object value = t.transform(graph);
        if (value != null)
            bw.write(format("data", "key", key, value.toString()) + "\n");
    }

    // write vertex information
    writeVertexData(graph, bw);

    // write edge information
    writeEdgeData(graph, bw);

    // close graph
    bw.write("</graph>\n");
    bw.write("</graphml>\n");
    bw.flush();

    bw.close();
}

From source file:net.itransformers.utils.MyGraphMLWriter.java

protected void writeEdgeData(Hypergraph<V, E> g, Writer w) throws IOException {
    for (E e : g.getEdges()) {
        Collection<V> vertices = g.getIncidentVertices(e);
        String id = edge_ids.transform(e);
        String e_string;/*from  w  w w. j av a 2 s . co m*/
        boolean is_hyperedge = !(g instanceof Graph);
        if (is_hyperedge) {
            e_string = "<hyperedge ";
            // add ID if present
            if (id != null)
                e_string += "id=\"" + id + "\" ";
        } else {
            Pair<V> endpoints = new Pair<V>(vertices);
            V v1 = endpoints.getFirst();
            V v2 = endpoints.getSecond();
            e_string = "<edge ";
            // add ID if present
            if (id != null)
                e_string += "id=\"" + id + "\" ";
            // add edge type if doesn't match default
            EdgeType edge_type = g.getEdgeType(e);
            if (directed && edge_type == EdgeType.UNDIRECTED)
                e_string += "directed=\"false\" ";
            if (!directed && edge_type == EdgeType.DIRECTED)
                e_string += "directed=\"true\" ";
            e_string += "source=\"" + vertex_ids.transform(v1) + "\" target=\"" + vertex_ids.transform(v2)
                    + "\"";
        }

        boolean closed = false;
        // write description out if any
        String desc = edge_desc.transform(e);
        if (desc != null) {
            w.write(e_string + ">\n");
            closed = true;
            w.write("<desc>" + desc + "</desc>\n");
        }
        // write data out if any
        for (String key : edge_data.keySet()) {
            Transformer<E, ?> t = edge_data.get(key).transformer;
            Object value = t.transform(e);
            if (value != null) {
                if (!closed) {
                    w.write(e_string + ">\n");
                    closed = true;
                }
                w.write(format("data", "key", key, StringEscapeUtils.escapeXml(value.toString())) + "\n");
            }
        }
        // if this is a hyperedge, write endpoints out if any
        if (is_hyperedge) {
            for (V v : vertices) {
                if (!closed) {
                    w.write(e_string + ">\n");
                    closed = true;
                }
                w.write("<endpoint node=\"" + vertex_ids.transform(v) + "\"/>\n");
            }
        }

        if (!closed)
            w.write(e_string + "/>\n"); // no contents; close the edge with "/>"
        else if (is_hyperedge)
            w.write("</hyperedge>\n");
        else
            w.write("</edge>\n");
    }
}