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.Set;

Hi-level function to move inside a graph. Return the incoming connections. If the current element is a vertex, then will be returned edges otherwise vertices.

Author(s):
Luca Garulli (l.garulli--at--orientechnologies.com)
 
 public abstract class OSQLFunctionMove extends OSQLFunctionConfigurableAbstract {
   public static final String NAME = "move";
 
   public OSQLFunctionMove() {
     super(, 1, 2);
   }
 
   public OSQLFunctionMove(final String iNamefinal int iMinfinal int iMax) {
     super(iNameiMiniMax);
   }
 
   protected abstract Object move(final OrientBaseGraph graphfinal OIdentifiable iRecordfinal String[] iLabels);
 
   public String getSyntax() {
     return "Syntax error: " +  + "([<labels>])";
   }
 
   public Object execute(final Object iThisfinal OIdentifiable iCurrentRecordfinal Object iCurrentResult,
       final Object[] iParametersfinal OCommandContext iContext) {
     final OModifiableBoolean shutdownFlag = new OModifiableBoolean();
     final OrientBaseGraph graph = OGraphCommandExecutorSQLFactory.getGraph(falseshutdownFlag);
     try {
       final String[] labels;
       if (iParameters != null && iParameters.length > 0 && iParameters[0] != null)
         labels = OMultiValue.array(iParametersString.classnew OCallable<ObjectObject>() {
 
           @Override
           public Object call(final Object iArgument) {
             return OStringSerializerHelper.getStringContent(iArgument);
           }
         });
       else
         labels = null;
 
       return OSQLEngine.foreachRecord(new OCallable<ObjectOIdentifiable>() {
         @Override
         public Object call(final OIdentifiable iArgument) {
           return move(graphiArgumentlabels);
         }
       }, iThisiContext);
     } finally {
       if (shutdownFlag.getValue())
         graph.shutdown(false);
     }
   }
 
   protected Object v2v(final OrientBaseGraph graphfinal OIdentifiable iRecordfinal Direction iDirectionfinal String[] iLabels) {
     final ODocument rec = iRecord.getRecord();
 
    if (ODocumentInternal.getImmutableSchemaClass(rec) != null)
      if (ODocumentInternal.getImmutableSchemaClass(rec).isSubClassOf(.)) {
        // VERTEX
        final OrientVertex vertex = graph.getVertex(rec);
        if (vertex != null)
          return vertex.getVertices(iDirectioniLabels);
      }
    return null;
  }
  protected Object v2e(final OrientBaseGraph graphfinal OIdentifiable iRecordfinal Direction iDirectionfinal String[] iLabels) {
    final ODocument rec = iRecord.getRecord();
    if (ODocumentInternal.getImmutableSchemaClass(rec) != null)
      if (ODocumentInternal.getImmutableSchemaClass(rec).isSubClassOf(.)) {
        // VERTEX
        final OrientVertex vertex = graph.getVertex(rec);
        if (vertex != null)
          return vertex.getEdges(iDirectioniLabels);
      }
    return null;
  }
  protected Object e2v(final OrientBaseGraph graphfinal OIdentifiable iRecordfinal Direction iDirectionfinal String[] iLabels) {
    final ODocument rec = iRecord.getRecord();
    if (ODocumentInternal.getImmutableSchemaClass(rec) != null)
      if (ODocumentInternal.getImmutableSchemaClass(rec).isSubClassOf(.)) {
        // EDGE
        final OrientEdge edge = graph.getEdge(rec);
        if (edge != null) {
          if (..equals(iDirection)) {
            Set<Vertexresult = new HashSet<Vertex>();
            result.add(edge.getVertex(.));
            result.add(edge.getVertex(.));
            return result;
          } else {
            final OrientVertex out = (OrientVertexedge.getVertex(iDirection);
            return out;
          }
        }
      }
    return null;
  }
New to GrepCode? Check out our FAQ X