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:cl.b9.socialNetwork.jung.SNPajekNetWriter.java

/**
 * Writes <code>graph</code> to <code>w</code>.  Labels for vertices may
 * be supplied by <code>vs</code> (defaults to no labels if null), 
 * edge weights may be specified by <code>nev</code>
 * (defaults to weights of 1.0 if null), 
 * and vertex locations may be specified by <code>vld</code> (defaults
 * to no locations if null). //from   w w  w .j  a  va2 s .  c  om
 */
@SuppressWarnings("unchecked")
public void save(Graph<V, E> graph, Writer w, Transformer<V, String> vs, Transformer<E, Number> nev,
        Transformer<V, Point2D> vld, Transformer<V, String> shape) throws IOException {
    /*
     * TODO: Changes we might want to make:
     * - optionally writing out in list form
     */

    BufferedWriter writer = new BufferedWriter(w);
    if (nev == null)
        nev = new Transformer<E, Number>() {
            public Number transform(E e) {
                return 1;
            }
        };
    writer.write("*Vertices " + graph.getVertexCount());
    writer.newLine();

    List<V> id = new ArrayList<V>(graph.getVertices());//Indexer.getIndexer(graph);
    for (V currentVertex : graph.getVertices()) {
        // convert from 0-based to 1-based index
        int v_id = id.indexOf(currentVertex) + 1;
        writer.write("" + v_id);
        if (vs != null) {
            String label = vs.transform(currentVertex);
            if (label != null)
                writer.write(" \"" + label + "\"");
        }
        if (vld != null) {
            Point2D location = vld.transform(currentVertex);
            if (location != null)
                writer.write(" " + location.getX() + " " + location.getY());
        }
        if (shape != null) {
            writer.write(" " + shape.transform(currentVertex) + " x_fact 1");
        }
        writer.newLine();
    }

    Collection<E> d_set = new HashSet<E>();
    Collection<E> u_set = new HashSet<E>();

    boolean directed = graph instanceof DirectedGraph;

    boolean undirected = graph instanceof UndirectedGraph;

    // if it's strictly one or the other, no need to create extra sets
    if (directed)
        d_set.addAll(graph.getEdges());
    if (undirected)
        u_set.addAll(graph.getEdges());
    if (!directed && !undirected) // mixed-mode graph
    {
        u_set.addAll(graph.getEdges());
        d_set.addAll(graph.getEdges());
        for (E e : graph.getEdges()) {
            if (graph.getEdgeType(e) == EdgeType.UNDIRECTED) {
                d_set.remove(e);
            } else {
                u_set.remove(e);
            }
        }
    }

    // write out directed edges
    if (!d_set.isEmpty()) {
        writer.write("*Arcs");
        writer.newLine();
    }
    for (E e : d_set) {
        int source_id = id.indexOf(graph.getEndpoints(e).getFirst()) + 1;
        int target_id = id.indexOf(graph.getEndpoints(e).getSecond()) + 1;
        //            float weight = nev.get(e).floatValue();
        float weight = nev.transform(e).floatValue();
        writer.write(source_id + " " + target_id + " " + weight);
        writer.newLine();
    }

    // write out undirected edges
    if (!u_set.isEmpty()) {
        writer.write("*Edges");
        writer.newLine();
    }
    for (E e : u_set) {
        Pair<V> endpoints = graph.getEndpoints(e);
        int v1_id = id.indexOf(endpoints.getFirst()) + 1;
        int v2_id = id.indexOf(endpoints.getSecond()) + 1;
        //            float weight = nev.get(e).floatValue();
        float weight = nev.transform(e).floatValue();
        writer.write(v1_id + " " + v2_id + " " + weight);
        writer.newLine();
    }
    writer.close();
}

From source file:com.net2plan.libraries.GraphTheoryMetrics.java

private void computeSPDistanceMetrics() {
    diameter = 0;//from   www.  ja  v a2 s. co m
    averageSPLength = 0;
    heterogeneity = 0;

    Graph<Node, Link> aux_graph = getGraph_JUNG();
    Transformer<Link, Double> aux_nev = getCostTransformer();

    /* Compute network diameter using nave Floyd-Warshall algorithm */
    double[][] costMatrix = new double[N][N];
    for (int n = 0; n < N; n++) {
        Arrays.fill(costMatrix[n], Double.MAX_VALUE);
        costMatrix[n][n] = 0;
    }

    for (Link edge : aux_graph.getEdges()) {
        int a_e = edge.getOriginNode().getIndex();
        int b_e = edge.getDestinationNode().getIndex();
        double newCost = aux_nev.transform(edge);
        if (newCost < costMatrix[a_e][b_e])
            costMatrix[a_e][b_e] = newCost;
    }

    for (int k = 0; k < N; k++) {
        for (int i = 0; i < N; i++) {
            if (i == k)
                continue;

            for (int j = 0; j < N; j++) {
                if (j == k || j == i)
                    continue;

                double newValue = costMatrix[i][k] + costMatrix[k][j];
                if (newValue < costMatrix[i][j])
                    costMatrix[i][j] = newValue;
            }
        }
    }

    int numPaths = 0;
    double sum = 0;
    double M = 0.0;
    double S = 0.0;

    for (int i = 0; i < N; i++) {
        for (int j = i + 1; j < N; j++) {
            double dist_ij = costMatrix[i][j];
            if (dist_ij < Double.MAX_VALUE) {
                sum += dist_ij;
                numPaths++;

                double tmpM = M;
                M += (dist_ij - tmpM) / numPaths;
                S += (dist_ij - tmpM) * (dist_ij - M);

                if (dist_ij > diameter)
                    diameter = dist_ij;
            }

            double dist_ji = costMatrix[j][i];
            if (dist_ji < Double.MAX_VALUE) {
                sum += dist_ji;
                numPaths++;

                double tmpM = M;
                M += (dist_ji - tmpM) / numPaths;
                S += (dist_ji - tmpM) * (dist_ji - M);

                if (dist_ji > diameter)
                    diameter = dist_ji;
            }
        }
    }

    if (numPaths == 0)
        return;

    averageSPLength = numPaths == 0 ? 0 : sum / numPaths;
    heterogeneity = averageSPLength == 0 ? 0 : Math.sqrt(S / numPaths) / averageSPLength;
}

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

public <T extends Comparable<T>> void validateTopology(Graph<T, Number> g, Graph<T, Object> g2,
        Transformer<Number, String> edge_weight, Transformer<Object, String> edge_weight2) {
    Assert.assertEquals(g2.getEdgeCount(), g.getEdgeCount());
    List<T> g_vertices = new ArrayList<T>(g.getVertices());
    List<T> g2_vertices = new ArrayList<T>(g2.getVertices());
    Collections.sort(g_vertices);
    Collections.sort(g2_vertices);
    Assert.assertEquals(g_vertices, g2_vertices);

    Set<String> g_edges = new HashSet<String>();
    for (Number n : g.getEdges())
        g_edges.add(String.valueOf(n));
    Set<Object> g2_edges = new HashSet<Object>(g2.getEdges());
    Assert.assertEquals(g_edges, g2_edges);

    for (T v : g2.getVertices()) {
        for (T w : g2.getVertices()) {
            Assert.assertEquals(g.isNeighbor(v, w), g2.isNeighbor(v, w));
            Set<String> e = new HashSet<String>();
            for (Number n : g.findEdgeSet(v, w))
                e.add(String.valueOf(n));
            Set<Object> e2 = new HashSet<Object>(g2.findEdgeSet(v, w));
            Assert.assertEquals(e.size(), e2.size());
            Assert.assertEquals(e, e2);// w  ww  .  j av a 2  s  . c om
        }
    }

    for (Object o : g2.getEdges()) {
        String weight = edge_weight.transform(new Double((String) o));
        String weight2 = edge_weight2.transform(o);
        Assert.assertEquals(weight2, weight);
    }
    //                Number n = g.findEdge(v, w);
    //                Object o = g2.findEdge(v, w);
    //                if (n != null)
    //                {
    //                    String weight = edge_weight.transform(n);
    //                    String weight2 = edge_weight2.transform(o);
    //                    Assert.assertEquals(weight2, weight);
    //                }
    //            }
    //        }

}

From source file:de.tudarmstadt.ukp.dkpro.lexsemresource.graph.EntityGraphJUNG.java

public double getAverageShortestPathLengthJUNG() {
    // implementation with JUNG's GraphStatistics
    Transformer<Entity, Double> distanceTransformer = DistanceStatistics.averageDistances(undirectedGraph);
    // logger.info("Average distances: " + distances);
    double distanceSum = 0.0;
    for (Entity e : undirectedGraph.getVertices()) {
        distanceSum += distanceTransformer.transform(e);
    }/* w  w w  .  j  a v  a 2s  .c  o m*/
    return distanceSum / getNumberOfNodes();
}

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

/**
 * Writes <code>graph</code> to <code>w</code>. Labels for vertices may be
 * supplied by <code>vs</code> (defaults to no labels if null), edge weights
 * may be specified by <code>nev</code> (defaults to weights of 1.0 if
 * null), and vertex locations may be specified by <code>vld</code>
 * (defaults to no locations if null)./*  w w w.ja  v a2 s .  c  o m*/
 */
public void save(MyGraph<V, E> graph, Writer w, Transformer<V, String> vs, Transformer<E, Number> nev,
        Transformer<V, Point2D> vld) throws IOException {
    /*
     * TODO: Changes we might want to make:
     * - optionally writing out in list form
     */

    BufferedWriter writer = new BufferedWriter(w);
    if (nev == null) {
        nev = new Transformer<E, Number>() {
            public Number transform(E e) {
                return 1;
            }
        };
    }
    writer.write("*Colors " + graph.getLayoutParameters().getBackgroundColorRgb() + ","
            + graph.getLayoutParameters().getEdgeColorRgb());
    writer.newLine();
    writer.write(
            "*Vertices " + graph.getVertexCount() + "," + graph.getLayoutParameters().areNodeIconsAllowed());
    writer.newLine();

    List<V> id = new ArrayList<V>(graph.getVertices());//Indexer.getIndexer(graph);
    for (V currentVertex : graph.getVertices()) {
        // convert from 0-based to 1-based index
        int v_id = id.indexOf(currentVertex) + 1;
        writer.write("" + v_id);
        if (vs != null) {
            String label = vs.transform(currentVertex);
            if (label != null) {
                writer.write(" \"" + label + "\"");
            }
        }
        if (vld != null) {
            Point2D location = vld.transform(currentVertex);
            if (location != null) {
                writer.write(" " + location.getX() + " " + location.getY() + " 0.0");
            }
        }
        writer.newLine();
    }

    Collection<E> d_set = new HashSet<E>();
    Collection<E> u_set = new HashSet<E>();

    boolean directed = graph instanceof DirectedGraph;

    boolean undirected = graph instanceof UndirectedGraph;

    // if it's strictly one or the other, no need to create extra sets
    if (directed) {
        d_set.addAll(graph.getEdges());
    }
    if (undirected) {
        u_set.addAll(graph.getEdges());
    }
    if (!directed && !undirected) // mixed-mode graph
    {
        u_set.addAll(graph.getEdges());
        d_set.addAll(graph.getEdges());
        for (E e : graph.getEdges()) {
            if (graph.getEdgeType(e) == EdgeType.UNDIRECTED) {
                d_set.remove(e);
            } else {
                u_set.remove(e);
            }
        }
    }

    // write out directed edges
    if (!d_set.isEmpty()) {
        writer.write("*Arcs");
        writer.newLine();
    }
    for (E e : d_set) {
        int source_id = id.indexOf(graph.getEndpoints(e).getFirst()) + 1;
        int target_id = id.indexOf(graph.getEndpoints(e).getSecond()) + 1;
        float weight = nev.transform(e).floatValue();
        writer.write(source_id + " " + target_id + " " + weight);
        writer.newLine();
    }

    // write out undirected edges
    if (!u_set.isEmpty()) {
        writer.write("*Edges");
        writer.newLine();
    }
    for (E e : u_set) {
        Pair<V> endpoints = graph.getEndpoints(e);
        int v1_id = id.indexOf(endpoints.getFirst()) + 1;
        int v2_id = id.indexOf(endpoints.getSecond()) + 1;
        float weight = nev.transform(e).floatValue();
        writer.write(v1_id + " " + v2_id + " " + weight);
        writer.newLine();
    }
    writer.close();
}

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

protected void computeBetweenness(Queue<V> queue, Transformer<E, ? extends Number> edge_weights) {
    for (V v : graph.getVertices()) {
        // initialize the betweenness data for this new vertex
        for (V s : graph.getVertices())
            this.vertex_data.put(s, new BetweennessData());

        //         if (v.equals(new Integer(0)))
        //            System.out.println("pause");

        vertex_data.get(v).numSPs = 1;/*from w w  w  .ja  v  a  2  s . co  m*/
        vertex_data.get(v).distance = 0;

        Stack<V> stack = new Stack<V>();
        //            Buffer<V> queue = new UnboundedFifoBuffer<V>();
        //            queue.add(v);
        queue.offer(v);

        while (!queue.isEmpty()) {
            //                V w = queue.remove();
            V w = queue.poll();
            stack.push(w);
            BetweennessData w_data = vertex_data.get(w);

            for (E e : graph.getOutEdges(w)) {
                // TODO (jrtom): change this to getOtherVertices(w, e)
                V x = graph.getOpposite(w, e);
                if (x.equals(w))
                    continue;
                double wx_weight = edge_weights.transform(e).doubleValue();

                //                for(V x : graph.getSuccessors(w)) 
                //                {
                //                   if (x.equals(w))
                //                      continue;

                // FIXME: the other problem is that I need to 
                // keep putting the neighbors of things we've just 
                // discovered in the queue, if they're undiscovered or
                // at greater distance.

                // FIXME: this is the problem, right here, I think: 
                // need to update position in queue if distance changes
                // (which can only happen with weighted edges).
                // for each outgoing edge e from w, get other end x
                // if x not already visited (dist x < 0)
                //   set x's distance to w's dist + edge weight
                //   add x to queue; pri in queue is x's dist
                // if w's dist + edge weight < x's dist 
                //   update x's dist
                //   update x in queue (MapBinaryHeap)
                //   clear x's incoming edge list
                // if w's dist + edge weight = x's dist
                //   add e to x's incoming edge list

                BetweennessData x_data = vertex_data.get(x);
                double x_potential_dist = w_data.distance + wx_weight;

                if (x_data.distance < 0) {
                    //                        queue.add(x);
                    //                        vertex_data.get(x).distance = vertex_data.get(w).distance + 1;
                    x_data.distance = x_potential_dist;
                    queue.offer(x);
                }

                // note:
                // (1) this can only happen with weighted edges
                // (2) x's SP count and incoming edges are updated below 
                if (x_data.distance > x_potential_dist) {
                    x_data.distance = x_potential_dist;
                    // invalidate previously identified incoming edges
                    // (we have a new shortest path distance to x)
                    x_data.incomingEdges.clear();
                    // update x's position in queue
                    ((MapBinaryHeap<V>) queue).update(x);
                }
                //                  if (vertex_data.get(x).distance == vertex_data.get(w).distance + 1) 
                // 
                //                    if (x_data.distance == x_potential_dist) 
                //                    {
                //                        x_data.numSPs += w_data.numSPs;
                ////                        vertex_data.get(x).predecessors.add(w);
                //                        x_data.incomingEdges.add(e);
                //                    }
            }
            for (E e : graph.getOutEdges(w)) {
                V x = graph.getOpposite(w, e);
                if (x.equals(w))
                    continue;
                double e_weight = edge_weights.transform(e).doubleValue();
                BetweennessData x_data = vertex_data.get(x);
                double x_potential_dist = w_data.distance + e_weight;
                if (x_data.distance == x_potential_dist) {
                    x_data.numSPs += w_data.numSPs;
                    //                        vertex_data.get(x).predecessors.add(w);
                    x_data.incomingEdges.add(e);
                }
            }
        }
        while (!stack.isEmpty()) {
            V x = stack.pop();

            //              for (V w : vertex_data.get(x).predecessors) 
            for (E e : vertex_data.get(x).incomingEdges) {
                V w = graph.getOpposite(x, e);
                double partialDependency = vertex_data.get(w).numSPs / vertex_data.get(x).numSPs
                        * (1.0 + vertex_data.get(x).dependency);
                vertex_data.get(w).dependency += partialDependency;
                //                  E w_x = graph.findEdge(w, x);
                //                  double w_x_score = edge_scores.get(w_x).doubleValue();
                //                  w_x_score += partialDependency;
                //                  edge_scores.put(w_x, w_x_score);
                double e_score = edge_scores.get(e).doubleValue();
                edge_scores.put(e, e_score + partialDependency);
            }
            if (!x.equals(v)) {
                double x_score = vertex_scores.get(x).doubleValue();
                x_score += vertex_data.get(x).dependency;
                vertex_scores.put(x, x_score);
            }
        }
    }

    if (graph instanceof UndirectedGraph) {
        for (V v : graph.getVertices()) {
            double v_score = vertex_scores.get(v).doubleValue();
            v_score /= 2.0;
            vertex_scores.put(v, v_score);
        }
        for (E e : graph.getEdges()) {
            double e_score = edge_scores.get(e).doubleValue();
            e_score /= 2.0;
            edge_scores.put(e, e_score);
        }
    }

    vertex_data.clear();
}

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

protected void computeBetweenness(Queue<V> queue, Transformer<E, ? extends Number> edge_weights) {
    for (V v : graph.getVertices()) {
        // initialize the betweenness data for this new vertex
        for (V s : graph.getVertices())
            this.vertex_data.put(s, new BetweennessData());

        //         if (v.equals(new Integer(0)))
        //            System.out.println("pause");

        vertex_data.get(v).numSPs = 1;//from   w ww .  ja  va  2 s  . c o  m
        vertex_data.get(v).distance = 0;

        Stack<V> stack = new Stack<V>();
        //            Buffer<V> queue = new UnboundedFifoBuffer<V>();
        //            queue.add(v);
        queue.offer(v);

        while (!queue.isEmpty()) {
            //                V w = queue.remove();
            V w = queue.poll();
            stack.push(w);
            BetweennessData w_data = vertex_data.get(w);
            for (E e : graph.getOutEdges(w)) {
                // TODO (jrtom): change this to getOtherVertices(w, e)
                V x = graph.getOpposite(w, e);
                if (x.equals(w))
                    continue;
                double wx_weight = edge_weights.transform(e).doubleValue();

                //                for(V x : graph.getSuccessors(w)) 
                //                {
                //                   if (x.equals(w))
                //                      continue;

                // FIXME: the other problem is that I need to 
                // keep putting the neighbors of things we've just 
                // discovered in the queue, if they're undiscovered or
                // at greater distance.

                // FIXME: this is the problem, right here, I think: 
                // need to update position in queue if distance changes
                // (which can only happen with weighted edges).
                // for each outgoing edge e from w, get other end x
                // if x not already visited (dist x < 0)
                //   set x's distance to w's dist + edge weight
                //   add x to queue; pri in queue is x's dist
                // if w's dist + edge weight < x's dist 
                //   update x's dist
                //   update x in queue (MapBinaryHeap)
                //   clear x's incoming edge list
                // if w's dist + edge weight = x's dist
                //   add e to x's incoming edge list

                BetweennessData x_data = vertex_data.get(x);
                double x_potential_dist = w_data.distance + wx_weight;
                if (x_potential_dist > this.egoNetworkSize)
                    continue;

                if (x_data.distance < 0) {
                    //                        queue.add(x);
                    //                        vertex_data.get(x).distance = vertex_data.get(w).distance + 1;
                    x_data.distance = x_potential_dist;
                    queue.offer(x);
                }

                // note:
                // (1) this can only happen with weighted edges
                // (2) x's SP count and incoming edges are updated below 
                if (x_data.distance > x_potential_dist) {
                    x_data.distance = x_potential_dist;
                    // invalidate previously identified incoming edges
                    // (we have a new shortest path distance to x)
                    x_data.incomingEdges.clear();
                    // update x's position in queue
                    ((MapBinaryHeap<V>) queue).update(x);
                }
                //                  if (vertex_data.get(x).distance == vertex_data.get(w).distance + 1) 
                // 
                //                    if (x_data.distance == x_potential_dist) 
                //                    {
                //                        x_data.numSPs += w_data.numSPs;
                ////                        vertex_data.get(x).predecessors.add(w);
                //                        x_data.incomingEdges.add(e);
                //                    }
            }
            for (E e : graph.getOutEdges(w)) {
                V x = graph.getOpposite(w, e);
                if (x.equals(w))
                    continue;
                double e_weight = edge_weights.transform(e).doubleValue();
                BetweennessData x_data = vertex_data.get(x);
                double x_potential_dist = w_data.distance + e_weight;
                if (x_data.distance == x_potential_dist) {
                    x_data.numSPs += w_data.numSPs;
                    //                        vertex_data.get(x).predecessors.add(w);
                    x_data.incomingEdges.add(e);
                }
            }
        }
        while (!stack.isEmpty()) {
            V x = stack.pop();

            //              for (V w : vertex_data.get(x).predecessors) 
            for (E e : vertex_data.get(x).incomingEdges) {
                V w = graph.getOpposite(x, e);
                double partialDependency = vertex_data.get(w).numSPs / vertex_data.get(x).numSPs
                        * (1.0 + vertex_data.get(x).dependency);
                vertex_data.get(w).dependency += partialDependency;
                //                  E w_x = graph.findEdge(w, x);
                //                  double w_x_score = edge_scores.get(w_x).doubleValue();
                //                  w_x_score += partialDependency;
                //                  edge_scores.put(w_x, w_x_score);
                double e_score = edge_scores.get(e).doubleValue();
                edge_scores.put(e, e_score + partialDependency);
            }
            if (!x.equals(v)) {
                double x_score = vertex_scores.get(x).doubleValue();
                x_score += vertex_data.get(x).dependency;
                vertex_scores.put(x, x_score);
            }
        }
    }

    if (graph instanceof UndirectedGraph) {
        for (V v : graph.getVertices()) {
            double v_score = vertex_scores.get(v).doubleValue();
            v_score /= 2.0;
            vertex_scores.put(v, v_score);
        }
        for (E e : graph.getEdges()) {
            double e_score = edge_scores.get(e).doubleValue();
            e_score /= 2.0;
            edge_scores.put(e, e_score);
        }
    }

    vertex_data.clear();
}

From source file:com.diversityarrays.dal.server.SqlWorker.java

public Response createResponse(SqlResponseType rtype, String sql, String metaTagName,
        Transformer<Boolean, DalResponseBuilder> builderFactory) {

    if (metaTagName == null && !rtype.isText()) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        new IllegalArgumentException("No metaTagName supplied for rtype=" + rtype).printStackTrace(pw);
        pw.close();//  w ww.ja v  a 2s  .  c o m
        return new Response(Response.Status.INTERNAL_ERROR, NanoHTTPD.MIME_PLAINTEXT, sw.toString());
    }

    Response result;

    Statement stmt = null;
    ResultSet rs = null;
    try {

        Connection conn = getConnection();

        stmt = conn.createStatement();

        if (rtype.isText()) {
            StringBuilder sb = new StringBuilder("<html><body>");

            sb.append("<code>").append(DbUtil.htmlEscape(sql)).append("</code><hr/>");

            boolean hasResultSet = stmt.execute(sql);

            if (hasResultSet) {
                rs = stmt.getResultSet();
                DalServerUtil.appendResultSetRowsAsTable("No data rows returned", rs, sb);
                sb.append("</body></html>");
            } else {
                int n = stmt.getUpdateCount();
                sb.append("Update count=").append(n);
            }

            result = new Response(Response.Status.OK, NanoHTTPD.MIME_HTML, sb.toString());
        } else {
            if (verbose) {
                System.err.println("sql: " + sql);
            }

            DalResponseBuilder builder = builderFactory == null ? DalServerUtil.createBuilder(rtype.isJson())
                    : builderFactory.transform(rtype.isJson());
            boolean hasResultSet = stmt.execute(sql);

            if (hasResultSet) {
                rs = stmt.getResultSet();
                DalServerUtil.appendResultSetRows(rs, builder, metaTagName);
                result = builder.build(Response.Status.OK);
            } else {
                int n = stmt.getUpdateCount();
                builder.startTag(DALClient.TAG_INFO).attribute(DALClient.ATTR_MESSAGE, "Update Count=" + n)
                        .endTag();
                result = builder.build(Response.Status.OK);
            }
        }
    } catch (SQLException e) {
        // Once for the log
        e.printStackTrace();

        if (SqlResponseType.TEXT == rtype) {
            // Browser request gets it all as text
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            e.printStackTrace(pw);
            pw.close();
            result = new Response(Response.Status.OK, NanoHTTPD.MIME_PLAINTEXT, sw.toString());
        } else {
            // DAL client gets just the message part
            result = DalServerUtil.buildErrorResponse(SqlResponseType.JSON == rtype, e.getMessage());
        }
    } catch (DalDbException e) {
        result = DalServerUtil.buildErrorResponse(SqlResponseType.JSON == rtype, e.getMessage());
    } finally {
        SqlUtil.closeSandRS(stmt, rs);
    }

    return result;
}

From source file:com.diversityarrays.kdxplore.curate.StatsData.java

public void setTraitInstances(List<TraitInstance> tiList,
        Transformer<TraitInstance, List<KdxSample>> sampleProvider) {
    traitInstances.clear();/*  w ww.ja  va  2 s  . c  o m*/
    if (tiList != null) {
        traitInstances.addAll(tiList);
    }
    // FIXME optimise this by only updating the Stats whose traitInstances have changed
    statsNameByTi.clear();
    for (TraitInstance ti : traitInstances) {
        String traitName = ti.trait == null ? "Trait#" + ti.getTraitId() //$NON-NLS-1$
                : ti.trait.getAliasOrName();
        String statsName = traitNameStyle.makeTraitInstanceName(traitName, ti.getInstanceNumber());
        statsNameByTi.put(ti, statsName);
    }

    instanceNumbers.clear();

    for (TraitInstance ti : traitInstances) {
        String statsName = statsNameByTi.get(ti);

        // Don't bother with "instance number" for CALC
        if (ti.trait == null || TraitDataType.CALC != ti.trait.getTraitDataType()) {
            instanceNumbers.add(ti.getInstanceNumber());
        }

        if (TraitDataType.TEXT == ti.getTraitDataType()) {
            expressionByTraitInstance.put(ti, ""); //$NON-NLS-1$
        } else {
            try {
                ValidationRule rule = ValidationRule.create(ti.trait.getTraitValRule());
                validationRuleByTraitInstance.put(ti, rule);
                expressionByTraitInstance.put(ti, rule.getExpression());
            } catch (InvalidRuleException e) {
                invalidRuleByTraitInstance.put(ti, e);
            }
        }

        Trait trait = ti.trait;
        if (trait != null) {
            // TODO: make caller give all of the devices and we create a tab for each
            //       deviceType as well as for <null> (if there is more than one device)
            List<KdxSample> list = sampleProvider.transform(ti);

            SimpleStatistics<?> statistics = StatsUtil.createStatistics(statsName, nStdDevForOutlier,
                    trialPlantingDate, trait, list);
            if (statistics != null) {
                statsByTraitInstance.put(ti, statistics);
            }
        }
    }

    sortTraitInstances();
}

From source file:lu.lippmann.cdb.graph.GraphViewImpl.java

/**
 * {@inheritDoc}/*from w ww .  j a va2  s . c  om*/
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void init() {
    this.setBackground(new Color(235, 240, 245));
    //this.setBackground(Color.WHITE);

    this.removeAll();

    //normal init
    final CadralShapeRenderer vlasr = new CadralShapeRenderer(null, vv.getRenderContext());

    // -----------------------------
    // customize the render context
    // -----------------------------
    final Transformer<CNode, String> vertexLabelTransformer = new Transformer<CNode, String>() {
        @Override
        public String transform(final CNode node) {
            final String tagString = (!node.getTags().isEmpty()) ? " [TAGGED!]" : "";
            final FontMetrics fm = vv.getFontMetrics(vv.getFont());
            final int textWidth = fm.stringWidth(node.getName());
            final int tagWidth = fm.stringWidth(tagString);
            int nodeWidth = (int) ShapeFactory.createShape(node.getShape()).getBounds().getWidth();
            final boolean hasTags = !node.getTags().isEmpty();
            final int realTextWidth = textWidth + (hasTags ? tagWidth : 0);
            final String modifiedNodeName = node.getName() + (hasTags ? tagString : "");
            if (realTextWidth > nodeWidth - 10) {
                int maxSubStringIndex = -1;
                for (int subStringIndex = node.getName().length(); subStringIndex >= 1; subStringIndex--) {
                    String newString = node.getName().substring(0, subStringIndex) + "..." + tagString;
                    if (fm.stringWidth(newString) < nodeWidth - 10) {
                        maxSubStringIndex = subStringIndex;
                        break;
                    }
                }
                return node.getName().substring(0, maxSubStringIndex) + "..." + tagString;
            } else {
                return modifiedNodeName;
            }
        }
    };

    vv.getRenderContext().setVertexLabelTransformer(vertexLabelTransformer);
    vv2.getRenderContext().setVertexLabelTransformer(vertexLabelTransformer);

    final Transformer<CNode, String> vertexTooltipTransformer = new Transformer<CNode, String>() {
        @Override
        public String transform(final CNode input) {
            if (!input.getTags().isEmpty()) {
                return buildTooltipFromTags(input.getName(), input.getTags());
            } else {
                if (!input.getName().equals(vertexLabelTransformer.transform(input))) {
                    return input.getName();
                } else {
                    return null;
                }
            }
        }
    };
    vv.setVertexToolTipTransformer(vertexTooltipTransformer);
    vv2.setVertexToolTipTransformer(vertexTooltipTransformer);

    final Transformer<CEdge, String> edgeTooltipTransformer = new Transformer<CEdge, String>() {
        @Override
        public String transform(final CEdge input) {
            if (!input.getTags().isEmpty()) {
                return buildTooltipFromTags(input.getName(), input.getTags());
            } else {
                return input.getName();
            }
        }
    };
    vv.setEdgeToolTipTransformer(edgeTooltipTransformer);
    vv2.setEdgeToolTipTransformer(edgeTooltipTransformer);

    vv.getRenderContext().setVertexFillPaintTransformer(new CadralVertexColorRenderer());
    vv2.getRenderContext().setVertexFillPaintTransformer(new CadralVertexColorRenderer());

    final CadralFontTransformer cadralFontTransformer = new CadralFontTransformer();
    vv.getRenderContext().setVertexFontTransformer(cadralFontTransformer);

    vv.getRenderContext().setVertexShapeTransformer(vlasr);
    vv2.getRenderContext().setVertexShapeTransformer(vlasr);

    //VERTEX LABEL RENDERER
    vv.getRenderer().setVertexLabelRenderer(vlasr);
    vv2.getRenderer().setVertexLabelRenderer(vlasr);

    //FIXME : magic number
    vv.getRenderContext().setLabelOffset(16);
    vv2.getRenderContext().setLabelOffset(16);

    // custom edges
    final Transformer<CEdge, String> edgeLabelTransformer = new Transformer<CEdge, String>() {
        @Override
        public String transform(final CEdge input) {
            return input.getExpression() + (input.getTags().isEmpty() ? "" : " [TAGGED!]");
        }
    };
    vv.getRenderContext().setEdgeLabelTransformer(edgeLabelTransformer);
    vv2.getRenderContext().setEdgeLabelTransformer(edgeLabelTransformer);

    final Font myFont = new Font("Helvetica", 0, 12);

    //FAST EDGE LABEL RENDERER BUT NOT GOOD ENOUGH
    //sun.font.FontManager.getFont2D(myFont);   

    vv.getRenderContext().setEdgeFontTransformer(cadralFontTransformer);
    vv2.getRenderContext().setEdgeFontTransformer(new ConstantTransformer(myFont));

    vv.getRenderContext().setEdgeLabelClosenessTransformer(new ConstantTransformer(0.5));
    vv2.getRenderContext().setEdgeLabelClosenessTransformer(new ConstantTransformer(0.5));

    vv.getRenderContext().setEdgeDrawPaintTransformer(getDefaultEdgeDrawPaintTransformer());
    vv2.getRenderContext().setEdgeDrawPaintTransformer(getDefaultEdgeDrawPaintTransformer());

    vv.getRenderContext().setEdgeLabelRenderer(new DefaultEdgeLabelRenderer(Color.BLUE, false));
    vv2.getRenderContext().setEdgeLabelRenderer(new DefaultEdgeLabelRenderer(Color.BLUE, false));

    vv.getRenderContext().setArrowDrawPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));
    vv.getRenderContext().setArrowFillPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));

    vv2.getRenderContext().setArrowDrawPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));
    vv2.getRenderContext().setArrowFillPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));

    //Manage Zoom
    vv.addMouseWheelListener(new MouseWheelListener() {

        private int zoom = 0;

        @Override
        public void mouseWheelMoved(MouseWheelEvent e) {

            if (e.getWheelRotation() < 0) {
                zoom++;
            } else {
                zoom--;
            }

            if (zoom > 0) {
                if (zoom < 9) {
                    double scale = 1 + zoom / 6.0;
                    CadralShapeRenderer.setScale(scale);
                    cadralFontTransformer.setScale(scale);
                }
            } else {
                CadralShapeRenderer.setScale(1);
                cadralFontTransformer.setScale(1);
            }
        }
    });

    final Container panel = new JPanel(new BorderLayout());
    final Container rightPanel = new JPanel(new GridLayout(2, 1));
    panel.add(vv);
    final JPanel top = new JPanel();
    final JButton button = new JButton("Rescale");
    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            rescaleSatelliteView();
        }
    });
    top.add(button);
    rightPanel.add(top);
    rightPanel.add(vv2);
    panel.add(rightPanel, BorderLayout.EAST);

    setLayout(new BorderLayout());

    add(metaInfosPanel, BorderLayout.NORTH);

    if (!USE_EXPERIMENTAL_SATELLITE_VIEW) {
        add(vv, BorderLayout.EAST);
    } else {
        add(panel, BorderLayout.EAST);
    }

    add(sharedLabel, BorderLayout.SOUTH);

    add(aboutPanel, BorderLayout.CENTER);

    validate();
    repaint();
}