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); }
internal void AddGremlinOperator(GremlinTranslationOperator newGremlinTranslationOp) { GremlinTranslationOpList.Add(newGremlinTranslationOp); if (LastGremlinTranslationOp == null) { LastGremlinTranslationOp = newGremlinTranslationOp; } else { newGremlinTranslationOp.InputOperator = LastGremlinTranslationOp; LastGremlinTranslationOp = newGremlinTranslationOp; } }
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; } }
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; } } }
internal GremlinTranslationOperator GetStartOp() { return(GremlinTranslationOpList.Count == 0 ? null : GremlinTranslationOpList.First()); }