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 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); } }
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; } }
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; } } }