コード例 #1
0
 public GraphTraversal2 Or(params GraphTraversal2[] orTraversals)
 {
     if (orTraversals.Length == 0)
     {
         //Infix And step
         GraphTraversal2 firstTraversal   = GraphTraversal2.__();
         GraphTraversal2 sencondTraversal = GraphTraversal2.__();
         for (var i = 1; i < GremlinTranslationOpList.Count; i++)
         {
             firstTraversal.AddGremlinOperator(GremlinTranslationOpList[i].Copy());
         }
         for (var i = 1; i < GremlinTranslationOpList.Count; i++)
         {
             GremlinTranslationOpList.RemoveAt(i);
         }
         LastGremlinTranslationOp = GremlinTranslationOpList.First();
         GremlinOrOp newOrOp = new GremlinOrOp(firstTraversal, sencondTraversal);
         AddGremlinOperator(newOrOp);
     }
     else
     {
         AddGremlinOperator(new GremlinOrOp(orTraversals));
     }
     return(this);
 }
コード例 #2
0
 internal void AddGremlinOperator(GremlinTranslationOperator newGremlinTranslationOp)
 {
     GremlinTranslationOpList.Add(newGremlinTranslationOp);
     if (LastGremlinTranslationOp == null)
     {
         LastGremlinTranslationOp = newGremlinTranslationOp;
     }
     else
     {
         newGremlinTranslationOp.InputOperator = LastGremlinTranslationOp;
         LastGremlinTranslationOp = newGremlinTranslationOp;
     }
 }
コード例 #3
0
 internal void InsertGremlinOperator(int index, GremlinTranslationOperator newGremlinTranslationOp)
 {
     if (index >= GremlinTranslationOpList.Count || index == 0)
     {
         throw new QueryCompilationException();
     }
     GremlinTranslationOpList.Insert(index, newGremlinTranslationOp);
     newGremlinTranslationOp.InputOperator = GremlinTranslationOpList[index - 1];
     if (index + 1 < GremlinTranslationOpList.Count())
     {
         GremlinTranslationOpList[index + 1].InputOperator = newGremlinTranslationOp;
     }
 }
コード例 #4
0
 internal void AddGremlinOperator(GremlinTranslationOperator newGremlinTranslationOp)
 {
     if (LastGremlinTranslationOp is GremlinAndOp && (LastGremlinTranslationOp as GremlinAndOp).IsInfix)
     {
         (LastGremlinTranslationOp as GremlinAndOp).SecondTraversal.AddGremlinOperator(newGremlinTranslationOp);
     }
     else if (LastGremlinTranslationOp is GremlinOrOp && (LastGremlinTranslationOp as GremlinOrOp).IsInfix)
     {
         (LastGremlinTranslationOp as GremlinOrOp).SecondTraversal.AddGremlinOperator(newGremlinTranslationOp);
     }
     else
     {
         GremlinTranslationOpList.Add(newGremlinTranslationOp);
         if (LastGremlinTranslationOp == null)
         {
             LastGremlinTranslationOp = newGremlinTranslationOp;
         }
         else
         {
             newGremlinTranslationOp.InputOperator = LastGremlinTranslationOp;
             LastGremlinTranslationOp = newGremlinTranslationOp;
         }
     }
 }
コード例 #5
0
 internal GremlinTranslationOperator GetStartOp()
 {
     return(GremlinTranslationOpList.Count == 0 ? null : GremlinTranslationOpList.First());
 }