package com.tinkerpop.blueprints.oupls.jung; import com.tinkerpop.blueprints.Edge; import org.apache.commons.collections15.Transformer; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class JungHelper { public static Double totalWeight(final Iterable<Edge> edges, final String weightKey) { double total = 0.0d; for (Edge edge : edges) { Object weight = edge.getProperty(weightKey); if (null != weight && weight instanceof Number) { total = total + ((Number) weight).doubleValue(); } } return total; } public static List<Edge> filterEdgeLabels(final Iterable<Edge> edges, final Set<String> labels, final boolean filter) { List<Edge> returnEdges = new ArrayList<Edge>(); for (Edge edge : edges) { if (labels.contains(edge.getLabel())) { if (!filter) { returnEdges.add(edge); } } else { if (filter) { returnEdges.add(edge); } } } return returnEdges; } public static Transformer<Edge, Number> makeTransformer(final Set<String> labels, final Boolean filterLabels, final Number filterValue, final Boolean probability, final String weightKey, final Boolean normalizeWeights, final Boolean invertWeights) { if (labels != null && weightKey != null) { return new EdgeLabelWeightTransformer(labels, filterLabels, weightKey, normalizeWeights, invertWeights); } else if (labels != null) { return new EdgeLabelTransformer(labels, filterLabels, filterValue, probability); } else if (weightKey != null) { return new EdgeWeightTransformer(weightKey, normalizeWeights, invertWeights); } else { return null; } } }