public static void visit(String bindingName, QueryMetadataInterface metadata, Command processingCommand) { MultiSourceElementReplacementVisitor visitor = new MultiSourceElementReplacementVisitor(bindingName, metadata); PreOrPostOrderNavigator nav = new PreOrPostOrderNavigator(visitor, PreOrPostOrderNavigator.PRE_ORDER, true); nav.setSkipEvaluatable(true); processingCommand.acceptVisitor(nav); }
public static void doVisit(LanguageObject object, LanguageVisitor visitor, boolean order) { doVisit(object, visitor, order, false); }
public void visit(SetCriteria obj) { preVisitVisitor(obj); visitNode(obj.getExpression()); visitNodes(obj.getValues()); postVisitVisitor(obj); } public void visit(SetQuery obj) {
public void visit(GroupBy obj) { preVisitVisitor(obj); visitNodes(obj.getSymbols()); postVisitVisitor(obj); } public void visit(GroupSymbol obj) {
public void visit(Function obj) { preVisitVisitor(obj); Expression[] args = obj.getArgs(); if(args != null) { for(int i=0; i<args.length; i++) { visitNode(args[i]); } } postVisitVisitor(obj); } public void visit(GroupBy obj) {
@Override public void visit(DependentSetCriteria obj1) { if (obj1.hasMultipleAttributes()) { Array array = (Array) obj1.getExpression(); visitNodes(array.getExpressions()); super.postVisitVisitor(obj1); } else { super.visit(obj1); } }
@Override public void visit(Query query) { //don't allow confusion with deep nesting by removing intermediate groups List<GroupSymbol> fromGroups = null; if (query.getFrom() != null) { fromGroups = query.getFrom().getGroups(); HashMap<GroupSymbol, GroupSymbol> groupMap = new HashMap<GroupSymbol, GroupSymbol>(); for (GroupSymbol g : fromGroups) { groupMap.put(g, g); } visitor.outerGroups.add(groupMap); } super.visit(query); if (fromGroups != null) { visitor.outerGroups.remove(visitor.outerGroups.size() - 1); } } });
protected void preVisitVisitor(LanguageObject obj) { if(order == PRE_ORDER) { visitVisitor(obj); } }
public static void doVisit(LanguageObject object, LanguageVisitor visitor, boolean order, boolean deep) { PreOrPostOrderNavigator nav = new PreOrPostOrderNavigator(visitor, order, deep); object.acceptVisitor(nav); }
@Override public void visit(OrderByItem obj) { preVisitVisitor(obj); visitNode(obj.getSymbol()); postVisitVisitor(obj); } public void visit(Query obj) {
public void visit(SetClauseList obj) { preVisitVisitor(obj); visitNodes(obj.getClauses()); postVisitVisitor(obj); }
@Override public void visit(DependentSetCriteria obj1) { if (obj1.hasMultipleAttributes() && obj1.getExpression() instanceof Array) { Array array = (Array) obj1.getExpression(); visitNodes(array.getExpressions()); super.postVisitVisitor(obj1); } else { super.visit(obj1); } }
@Override public void visit(Query query) { //don't allow confusion with deep nesting by removing intermediate groups List<GroupSymbol> fromGroups = null; if (query.getFrom() != null) { fromGroups = query.getFrom().getGroups(); HashMap<GroupSymbol, GroupSymbol> groupMap = new HashMap<GroupSymbol, GroupSymbol>(); for (GroupSymbol g : fromGroups) { groupMap.put(g, g); } visitor.outerGroups.add(groupMap); } super.visit(query); if (fromGroups != null) { visitor.outerGroups.remove(visitor.outerGroups.size() - 1); } } });
protected void preVisitVisitor(LanguageObject obj) { if(order == PRE_ORDER) { visitVisitor(obj); } }
public static void doVisit(LanguageObject object, LanguageVisitor visitor, boolean order, boolean deep) { PreOrPostOrderNavigator nav = new PreOrPostOrderNavigator(visitor, order, deep); object.acceptVisitor(nav); }
@Override public void visit(WindowSpecification obj) { preVisitVisitor(obj); visitNodes(obj.getPartition()); visitNode(obj.getOrderBy()); postVisitVisitor(obj); }
public void visit(DeclareStatement obj) { preVisitVisitor(obj); visitNode(obj.getVariable()); visitNode(obj.getExpression()); postVisitVisitor(obj); } public void visit(Delete obj) {
public void visit(GroupBy obj) { preVisitVisitor(obj); visitNodes(obj.getSymbols()); postVisitVisitor(obj); } public void visit(GroupSymbol obj) {
public static void doVisit(LanguageObject object, LanguageVisitor visitor, boolean order) { doVisit(object, visitor, order, false); }
public static void visit(String bindingName, QueryMetadataInterface metadata, Command processingCommand) { MultiSourceElementReplacementVisitor visitor = new MultiSourceElementReplacementVisitor(bindingName, metadata); PreOrPostOrderNavigator nav = new PreOrPostOrderNavigator(visitor, PreOrPostOrderNavigator.PRE_ORDER, true); nav.setSkipEvaluatable(true); processingCommand.acceptVisitor(nav); }