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.sql.functions;
 
 import java.util.List;
 import java.util.Map;
 
 
Executes a GREMLIN expression as function of SQL engine.

Author(s):
Luca Garulli (l.garulli--at--orientechnologies.com)
 
 public class OSQLFunctionGremlin extends OSQLFunctionAbstract {
   public static final String NAME = "gremlin";
   private List<Object>       result;
 
   public OSQLFunctionGremlin() {
     super(, 1, 1);
   }
 
   public Object execute(Object iThisfinal OIdentifiable iCurrentRecordObject iCurrentResultfinal Object[] iParams,
       final OCommandContext iContext) {
     if (!(iCurrentRecord instanceof ODocument))
       // NOT DOCUMENT OR GRAPHDB? IGNORE IT
       return null;
 
 
      = new ArrayList<Object>();
 
     OGremlinHelper.execute(db, (StringiParams[0], null, (MapiContext.getVariables(), ,
         new OGremlinHelper.OGremlinCallback() {
 
           @Override
           public boolean call(ScriptEngine iEngineOrientBaseGraph iGraph) {
             if (iCurrentRecord == null || !(iCurrentRecord instanceof ODocument))
               return false;
 
             final ODocument document = (ODocumentiCurrentRecord;
             OClass clazz =ODocumentInternal.getImmutableSchemaClass(document);
             if (clazz != null && clazz.isSubClassOf("E")) {
               // EDGE TYPE, CREATE THE BLUEPRINTS'S WRAPPER
               OrientEdge graphElement = (OrientEdgenew OrientElementIterable<OrientEdge>(iGraph, Arrays
                   .asList(new ODocument[] { document })).iterator().next();
               iEngine.getBindings(.).put("current"graphElement);
               iEngine.getBindings(.).put("it"graphElement); // FRAMES LIKE SYNTAX
 
             } else {
 
               // VERTEX TYPE, CREATE THE BLUEPRINTS'S WRAPPER
               OrientVertex graphElement = (OrientVertexnew OrientElementIterable<OrientVertex>(iGraph, Arrays
                   .asList(new ODocument[] { document })).iterator().next();
               iEngine.getBindings(.).put("current"graphElement);
               iEngine.getBindings(.).put("it"graphElement); // FRAMES LIKE SYNTAX
             }
 
             return true;
           }
         }, null);
 
     return ;
   }
  public boolean aggregateResults() {
    return false;
  }
  public String getSyntax() {
    return "gremlin(<gremlin-expression>)";
  }
  public boolean filterResult() {
    return true;
  }
  public Object getResult() {
    return ;
  }
New to GrepCode? Check out our FAQ X