Пример #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 AddOperator(GremlinTranslationOperator newOp)
 {
     if (GetEndOp() is GremlinAndInfixOp)
     {
         ((GremlinAndInfixOp)GetEndOp()).SecondTraversal.AddOperator(newOp);
     }
     else if (GetEndOp() is GremlinOrInfixOp)
     {
         ((GremlinOrInfixOp)GetEndOp()).SecondTraversal.AddOperator(newOp);
     }
     else
     {
         newOp.InputOperator = GetEndOp();
         this.TranslationOpList.Add(newOp);
     }
 }
Пример #5
0
 internal void InsertOperator(int index, GremlinTranslationOperator newOp)
 {
     if (index > this.TranslationOpList.Count)
     {
         throw new QueryCompilationException();
     }
     if (index == this.TranslationOpList.Count)
     {
         AddOperator(newOp);
     }
     if (index == 0)
     {
         this.TranslationOpList[index].InputOperator = newOp;
         this.TranslationOpList.Insert(index, newOp);
     }
     else
     {
         newOp.InputOperator = this.TranslationOpList[index - 1];
         this.TranslationOpList.Insert(index, newOp);
         this.TranslationOpList[index + 1].InputOperator = newOp;
     }
 }
Пример #6
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;
         }
     }
 }