Element asElement(Op op) { ElementGroup g = asElementGroup(op) ; if ( g.getElements().size() == 1 ) return g.getElements().get(0) ; return g ; }
Element asElement(Op op) { ElementGroup g = asElementGroup(op) ; if ( g.getElements().size() == 1 ) return g.getElements().get(0) ; return g ; }
@Override public void visit(OpUnion opUnion) { Element eLeft = asElementGroup(opUnion.getLeft()) ; Element eRight = asElementGroup(opUnion.getRight()) ; if ( eLeft instanceof ElementUnion ) { ElementUnion elUnion = (ElementUnion)eLeft ; elUnion.addElement(eRight) ; return ; } // if ( eRight instanceof ElementUnion ) // { // ElementUnion elUnion = (ElementUnion)eRight ; // elUnion.getElements().add(0, eLeft) ; // return ; // } ElementUnion elUnion = new ElementUnion() ; elUnion.addElement(eLeft) ; elUnion.addElement(eRight) ; currentGroup().addElement(elUnion) ; }
@Override public void visit(OpLeftJoin opLeftJoin) { Element eLeft = asElement(opLeftJoin.getLeft()) ; ElementGroup eRight = asElementGroup(opLeftJoin.getRight()) ; if ( opLeftJoin.getExprs() != null ) { for ( Expr expr : opLeftJoin.getExprs() ) { ElementFilter f = new ElementFilter(expr) ; eRight.addElement(f) ; } } ElementGroup g = currentGroup() ; if ( ! emptyGroup(eLeft) ) g.addElement(eLeft) ; ElementOptional opt = new ElementOptional(eRight) ; g.addElement(opt) ; }
public void visit(OpUnion opUnion) { Element eLeft = asElementGroup(opUnion.getLeft()) ; Element eRight = asElementGroup(opUnion.getRight()) ; if ( eLeft instanceof ElementUnion ) { ElementUnion elUnion = (ElementUnion)eLeft ; elUnion.addElement(eRight) ; return ; } // if ( eRight instanceof ElementUnion ) // { // ElementUnion elUnion = (ElementUnion)eRight ; // elUnion.getElements().add(0, eLeft) ; // return ; // } ElementUnion elUnion = new ElementUnion() ; elUnion.addElement(eLeft) ; elUnion.addElement(eRight) ; currentGroup().addElement(elUnion) ; }
public void visit(OpLeftJoin opLeftJoin) { Element eLeft = asElement(opLeftJoin.getLeft()) ; ElementGroup eRight = asElementGroup(opLeftJoin.getRight()) ; if ( opLeftJoin.getExprs() != null ) { for ( Expr expr : opLeftJoin.getExprs() ) { ElementFilter f = new ElementFilter(expr) ; eRight.addElement(f) ; } } ElementGroup g = currentGroup() ; if ( ! emptyGroup(eLeft) ) g.addElement(eLeft) ; ElementOptional opt = new ElementOptional(eRight) ; g.addElement(opt) ; }
@Override public void visit(OpMinus opMinus) { Element eLeft = asElement(opMinus.getLeft()) ; Element eRight = asElementGroup(opMinus.getRight()) ; ElementMinus elMinus = new ElementMinus(eRight) ; ElementGroup g = currentGroup() ; if ( ! emptyGroup(eLeft) ) g.addElement(eLeft) ; g.addElement(elMinus) ; }
public void visit(OpJoin opJoin) { // Keep things clearly separated. Element eLeft = asElement(opJoin.getLeft()) ; Element eRight = asElementGroup(opJoin.getRight()) ; ElementGroup g = currentGroup() ; g.addElement(eLeft) ; g.addElement(eRight) ; return ; }
@Override public void visit(OpJoin opJoin) { // Keep things clearly separated. Element eLeft = asElement(opJoin.getLeft()) ; Element eRight = asElementGroup(opJoin.getRight()) ; ElementGroup g = currentGroup() ; g.addElement(eLeft) ; g.addElement(eRight) ; return ; }