public static Element union(Collection<Element> elements) { Element result; if(elements.size() == 1) { result = elements.iterator().next(); } else { ElementUnion e = new ElementUnion(); for(Element element : elements) { e.addElement(element); } result = e; } return result; }
@Override public void visit(ElementUnion el) { ElementUnion retval = new ElementUnion(); for (Element e : el.getElements()) { e.visit(this); retval.addElement(getResult()); } push(retval); }
@Override public Element transform(ElementUnion el, List<Element> elts) { if ( el.getElements() == elts ) return el ; ElementUnion el2 = new ElementUnion() ; el2.getElements().addAll(elts) ; return el2 ; }
public static void addUnionElements(ElementUnion out, Element e) { if(e instanceof ElementUnion) { ElementUnion u = (ElementUnion)e; for(Element m : u.getElements()) { out.addElement(m); } } else if(e instanceof ElementGroup && ((ElementGroup)e).isEmpty()) { // nothing todo } else { out.addElement(e); } }
@Override public int hashCode() { int calcHashCode = Element.HashUnion ; calcHashCode ^= getElements().hashCode() ; return calcHashCode ; }
public ElementUnion(Element el) { //Used by the SPARQL 1.1 style UNION this() ; addElement(el) ; }
public static Element unionElements(Element first, Element second) { ElementUnion result = new ElementUnion(); addUnionElements(result, first); addUnionElements(result, second); return result; }
@Override public boolean equalTo(Element el2, NodeIsomorphismMap isoMap) { if ( el2 == null ) return false ; if ( ! ( el2 instanceof ElementUnion) ) return false ; ElementUnion eu2 = (ElementUnion)el2 ; if ( this.getElements().size() != eu2.getElements().size() ) return false ; for ( int i = 0 ; i < this.getElements().size() ; i++ ) { Element e1 = getElements().get(i) ; Element e2 = eu2.getElements().get(i) ; if ( ! e1.equalTo(e2, isoMap) ) return false ; } return true ; }
@Override public void visit(ElementUnion el) { ElementUnion newElt = new ElementUnion() ; transformFromTo(el.getElements(), newElt.getElements()) ; Element el2 = transform.transform(el, newElt.getElements()) ; push(el2) ; }
@Override public Element transform(ElementUnion eltUnion, List<Element> elts) { ElementUnion el2 = new ElementUnion() ; for ( int i = 0 ; i < elts.size() ; i++ ) { Element el = elts.get(i) ; if ( ! ( el instanceof ElementGroup ) ) { ElementGroup elg = new ElementGroup() ; elg.addElement(el); el = elg ; } el2.addElement(el); } return el2 ; }
@Override public void visit(ElementUnion el) { ElementUnion retval = new ElementUnion(); for (Element e : el.getElements()) { e.visit(this); retval.addElement(getResult()); } push(retval); }
@Override public void visit(ElementUnion el) { for (final Element e : el.getElements()) { e.visit( this ); } }
@Override public void visit(ElementUnion el) { ElementUnion newElt = new ElementUnion() ; boolean b = transformFromTo(el.getElements(), newElt.getElements()) ; Element el2 = transform.transform(el, newElt.getElements()) ; push(el2) ; }
final public Element GroupOrUnionGraphPattern() throws ParseException { Element el = null ; ElementUnion el2 = null ; el = GroupGraphPattern(); label_10: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UNION: ; break; default: jj_la1[33] = jj_gen; break label_10; } jj_consume_token(UNION); if ( el2 == null ) { el2 = new ElementUnion() ; el2.addElement(el) ; } el = GroupGraphPattern(); el2.addElement(el) ; } {if (true) return (el2==null)? el : el2 ;} throw new Error("Missing return statement in function"); }
@Override public void visit(ElementUnion el) { for (Element e : el.getElements()) { e.visit(this); } }
@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 ; } // Multiple unions. // 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(ElementUnion el) { unionCount++; for (Element e : el.getElements()) { e.visit(this); } }
final public Element GroupOrUnionGraphPattern() throws ParseException { Element el = null ; ElementUnion el2 = null ; el = GroupGraphPattern(); label_24: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UNION: ; break; default: jj_la1[89] = jj_gen; break label_24; } jj_consume_token(UNION); if ( el2 == null ) { el2 = new ElementUnion() ; el2.addElement(el) ; } el = GroupGraphPattern(); el2.addElement(el) ; } {if (true) return (el2==null)? el : el2 ;} throw new Error("Missing return statement in function"); }
@Override public void visit(ElementUnion el) { for (final Element e : el.getElements()) { e.visit( this ); } }
final public Element GroupOrUnionGraphPattern() throws ParseException { Element el = null ; ElementUnion el2 = null ; el = GroupGraphPattern(); label_19: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UNION: ; break; default: jj_la1[80] = jj_gen; break label_19; } jj_consume_token(UNION); if ( el2 == null ) { el2 = new ElementUnion() ; el2.addElement(el) ; } el = GroupGraphPattern(); el2.addElement(el) ; } {if (true) return (el2==null)? el : el2 ;} throw new Error("Missing return statement in function"); }