List of usage examples for org.apache.commons.collections15 Transformer transform
public O transform(I input);
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"); } }