Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *
   *  *  Copyright 2014 Orient Technologies LTD (info(at)orientechnologies.com)
   *  *
   *  *  Licensed under the Apache License, Version 2.0 (the "License");
   *  *  you may not use this file except in compliance with the License.
   *  *  You may obtain a copy of the License at
   *  *
   *  *       http://www.apache.org/licenses/LICENSE-2.0
  *  *
  *  *  Unless required by applicable law or agreed to in writing, software
  *  *  distributed under the License is distributed on an "AS IS" BASIS,
  *  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  *  See the License for the specific language governing permissions and
  *  *  limitations under the License.
  *  *
  *  * For more information: http://www.orientechnologies.com
  *
  */
 package com.orientechnologies.orient.graph.server.command;
 
 import java.util.List;
 import java.util.Set;
 
 
   private static final String[] NAMES = { "GET|gephi/*" };
 
   public OServerCommandGetGephi() {
   }
 
   public OServerCommandGetGephi(final OServerCommandConfiguration iConfig) {
   }
 
   @Override
   public boolean execute(final OHttpRequest iRequestOHttpResponse iResponsethrows Exception {
     String[] urlParts = checkSyntax(
         iRequest.url,
         4,
         "Syntax error: gephi/<database>/<language>/<query-text>[/<limit>][/<fetchPlan>].<br>Limit is optional and is setted to 20 by default. Set expressely to 0 to have no limits.");
 
     final String language = urlParts[2];
     final String text = urlParts[3];
     final int limit = urlParts.length > 4 ? Integer.parseInt(urlParts[4]) : 20;
     final String fetchPlan = urlParts.length > 5 ? urlParts[5] : null;
 
     iRequest.data.commandInfo = "Gephi";
     iRequest.data.commandDetail = text;
 
     final ODatabaseDocumentTx db = getProfiledDatabaseInstance(iRequest);
 
     final OModifiableBoolean shutdownFlag = new OModifiableBoolean();
     final OrientGraph graph = OGraphCommandExecutorSQLFactory.getGraph(falseshutdownFlag);
     try {
 
       final Iterable<OrientVertexvertices;
       if (language.equals("sql"))
         vertices = graph.command(new OSQLSynchQuery<OrientVertex>(textlimit).setFetchPlan(fetchPlan)).execute();
       else if (language.equals("gremlin")) {
         List<Objectresult = new ArrayList<Object>();
         OGremlinHelper.execute(graphtextnullnullresultnullnull);
 
         vertices = new ArrayList<OrientVertex>(result.size());
 
         for (Object o : result) {
           ((ArrayList<OrientVertex>) vertices).add(graph.getVertex((OIdentifiableo));
         }
       } else
         throw new IllegalArgumentException("Language '" + language + "' is not supported. Use 'sql' or 'gremlin'");
 
       sendRecordsContent(iRequestiResponseverticesfetchPlan);
 
     } finally {
       if (graph != null && shutdownFlag.getValue())
         graph.shutdown();
 
       if (db != null)
         db.close();
    }
    return false;
  }
  protected void sendRecordsContent(final OHttpRequest iRequestfinal OHttpResponse iResponseIterable<OrientVertexiRecords,
      String iFetchPlanthrows IOException {
    final StringWriter buffer = new StringWriter();
    final OJSONWriter json = new OJSONWriter(buffer.);
    json.setPrettyPrint(true);
    generateGraphDbOutput(iRecordsjson);
  }
  protected void generateGraphDbOutput(final Iterable<OrientVertexiVerticesfinal OJSONWriter jsonthrows IOException {
    if (iVertices == null)
      return;
    // CREATE A SET TO SPEED UP SEARCHES ON VERTICES
    final Set<OrientVertexvertexes = new HashSet<OrientVertex>();
    for (OrientVertex id : iVertices)
      vertexes.add(id);
    final Set<OrientEdgeedges = new HashSet<OrientEdge>();
    for (OrientVertex vertex : vertexes) {
      json.resetAttributes();
      json.beginObject(0, falsenull);
      json.beginObject(1, false"an");
      json.beginObject(2, falsevertex.getIdentity());
      // ADD ALL THE EDGES
      for (Edge e : vertex.getEdges(.))
        edges.add((OrientEdgee);
      // ADD ALL THE PROPERTIES
      for (String field : vertex.getPropertyKeys()) {
        final Object v = vertex.getProperty(field);
        if (v != null)
          json.writeAttribute(3, falsefieldv);
      }
      json.endObject(2, false);
      json.endObject(1, false);
      json.endObject(0, false);
      json.newline();
    }
    for (OrientEdge edge : edges) {
      json.resetAttributes();
      json.beginObject();
      json.beginObject(1, false"ae");
      json.beginObject(2, falseedge.getId());
      json.writeAttribute(3, false"directed"false);
      json.writeAttribute(3, false"source"edge.getVertex(.).getId());
      json.writeAttribute(3, false"target"edge.getVertex(.).getId());
      for (String field : edge.getPropertyKeys()) {
        final Object v = edge.getProperty(field);
        if (v != null)
          json.writeAttribute(3, falsefieldv);
      }
      json.endObject(2, false);
      json.endObject(1, false);
      json.endObject(0, false);
      json.newline();
    }
  }
  public String[] getNames() {
    return ;
  }
New to GrepCode? Check out our FAQ X