BagConstraint bc = (BagConstraint) existingQ.getConstraint(); if ((bc.getQueryNode() instanceof QueryField) && (bc.getOp() == ConstraintOp.IN)) { QueryField qf = (QueryField) bc.getQueryNode(); if (qf.getFromElement().equals(existingQ.getFrom() .iterator().next()) Collection<?> bag = bc.getBag(); fromColls.put(fieldName, bag); for (Object bagItem : bag) { subQ.addToSelect(qc); QueryField qf = new QueryField(qc, "id"); subQ.setConstraint(new BagConstraint(qf, ConstraintOp.IN, bag));
/** * Construct a BagConstraint from an ObjectStoreBag. * * @param qn the QueryNode to compare to the bag * @param op the operation * @param osb an ObjectStoreBag */ public BagConstraint(QueryNode qn, ConstraintOp op, ObjectStoreBag osb) { ConstraintOp translatedOp = getTranslatedOp(op); if (qn == null) { throw new NullPointerException("qe cannot be null"); } if (translatedOp == null) { throw new NullPointerException("op cannot be null"); } if (!VALID_OPS.contains(translatedOp)) { throw new IllegalArgumentException("op cannot be " + translatedOp); } if (osb == null) { throw new NullPointerException("osb cannot be null"); } this.qn = qn; this.op = translatedOp; this.osb = osb; this.bag = null; }
Class<?> type = c.getQueryNode().getType(); String leftHandSide; if (c.getQueryNode() instanceof QueryEvaluable) { StringBuffer lhsBuffer = new StringBuffer(); queryEvaluableToString(lhsBuffer, (QueryEvaluable) c.getQueryNode(), q, state); leftHandSide = lhsBuffer.toString(); } else { StringBuffer lhsBuffer = new StringBuffer(); queryClassToString(lhsBuffer, (QueryClass) c.getQueryNode(), q, schema, ID_ONLY, state); leftHandSide = lhsBuffer.toString(); Collection<?> bagColl = c.getBag(); if (bagColl == null) { ObjectStoreBag osb = c.getOsb(); if (c.getOp() == ConstraintOp.IN) { buffer.append(leftHandSide); } else { if (((safeness == SAFENESS_SAFE) && (c.getOp() == ConstraintOp.IN)) || ((safeness == SAFENESS_ANTISAFE) && (c.getOp() == ConstraintOp.NOT_IN))) { if (c.getOp() == ConstraintOp.NOT_IN) { buffer.append("))"); + (c.getOp() == ConstraintOp.IN ? "IS" : "IS NOT") + " NULL)"); if (!filteredBag.isEmpty()) { buffer.append(" ") .append(c.getOp() == ConstraintOp.IN ? "OR" : "AND")
if ((bc.getBag() != null) && (bc.getOp() == ConstraintOp.NOT_IN)) { boolean empty = true; Class<?> type = bc.getQueryNode().getType(); for (Object bagItem : bc.getBag()) { if (!(ProxyReference.class.equals(bagItem.getClass()) || DynamicUtil.isInstance(bagItem, type))) {
cs.addConstraint(new MultipleInBagConstraint(bag, qes)); } else { cs.addConstraint(new BagConstraint(qes.get(0), ConstraintOp.IN, bag)); q.setConstraint(new MultipleInBagConstraint(bag, qes)); } else { q.setConstraint(new BagConstraint(qes.get(0), ConstraintOp.IN, bag));
if (constraint instanceof BagConstraint && constraint.getOp() == ConstraintOp.IN && ((BagConstraint) constraint).getQueryNode() instanceof QueryField && ((QueryField) ((BagConstraint) constraint).getQueryNode()).getFromElement() == qn && "id".equals(((QueryField) ((BagConstraint) constraint).getQueryNode()) .getFieldName())) { @SuppressWarnings("unchecked") Collection<Integer> bag = (Collection) ((BagConstraint) constraint).getBag(); BagConstraint bc = new BagConstraint(new QueryField(qc, "identifier"), ConstraintOp.IN, toStrings(bag)); q.setConstraint(bc);
BagConstraint cc1 = (BagConstraint) c1; BagConstraint cc2 = (BagConstraint) c2; checkQueryNodes(msg + ": BagConstraint nodes are not equal", cc1.getQueryNode(), cc2.getQueryNode(), q1, q2); Assert.assertEquals(msg + ": Bags are not equal", cc1.getBag(), cc2.getBag()); Assert.assertEquals(msg + ": OSBs are not equal", cc1.getOsb(), cc2.getOsb()); } else if (c1 instanceof SubqueryExistsConstraint) { SubqueryExistsConstraint cc1 = (SubqueryExistsConstraint) c1;
((ConstraintSet) con).removeConstraint(c); if (cs.getOp().equals(ConstraintOp.OR)) { nodes.put((QueryEvaluable) ((BagConstraint) c).getQueryNode(), cs); } else { ConstraintSet replacement = new ConstraintSet(ConstraintOp.OR); nodes.put((QueryEvaluable) ((BagConstraint) c).getQueryNode(), replacement); cs.addConstraint(replacement);
public void apply(Constraint constraint) { if (constraint instanceof BagConstraint) { BagConstraint bagConstraint = (BagConstraint) constraint; if (bagConstraint.getBag() != null) { bagConstraints.add(bagConstraint); } } else if (constraint instanceof MultipleInBagConstraint) { bagConstraints.add((ConstraintWithBag) constraint); } } });
public static Query dynamicBagConstraint2() throws Exception { Query q = new Query(); QueryClass qc = new QueryClass(new HashSet(Arrays.asList(new Class[] {Broke.class, CEO.class}))); q.addFrom(qc); q.addToSelect(qc); q.setConstraint(new BagConstraint(qc, ConstraintOp.IN, new HashSet(Arrays.asList(new Object[] {data.get("EmployeeB1")})))); q.setDistinct(false); return q; }
if ((bc.getBag() != null) && (bc.getOp() == ConstraintOp.IN)) { boolean empty = true; Class<?> type = bc.getQueryNode().getType(); for (Object bagItem : bc.getBag()) { if (!(bagItem == null || ProxyReference.class.equals(bagItem.getClass()) || DynamicUtil.isInstance(bagItem, type))) {
if (constraint instanceof BagConstraint && constraint.getOp() == ConstraintOp.IN && ((BagConstraint) constraint).getQueryNode() instanceof QueryField && ((QueryField) ((BagConstraint) constraint).getQueryNode()).getFromElement() == qn && "id".equals(((QueryField) ((BagConstraint) constraint).getQueryNode()) .getFieldName())) { @SuppressWarnings("unchecked") Collection<Integer> bag = (Collection) ((BagConstraint) constraint).getBag(); BagConstraint bc = new BagConstraint(new QueryField(qc, "identifier"), ConstraintOp.IN, toStrings(bag)); q.setConstraint(bc);
((ConstraintSet) con).removeConstraint(c); if (cs.getOp().equals(ConstraintOp.OR)) { nodes.put((QueryEvaluable) ((BagConstraint) c).getQueryNode(), cs); } else { ConstraintSet replacement = new ConstraintSet(ConstraintOp.OR); nodes.put((QueryEvaluable) ((BagConstraint) c).getQueryNode(), replacement); cs.addConstraint(replacement);
public void apply(Constraint constraint) { if (constraint instanceof BagConstraint) { BagConstraint bagConstraint = (BagConstraint) constraint; if (bagConstraint.getBag() != null) { bagConstraints.add(bagConstraint); } } else if (constraint instanceof MultipleInBagConstraint) { bagConstraints.add((ConstraintWithBag) constraint); } } });
Class<?> type = c.getQueryNode().getType(); String leftHandSide; if (c.getQueryNode() instanceof QueryEvaluable) { StringBuffer lhsBuffer = new StringBuffer(); queryEvaluableToString(lhsBuffer, (QueryEvaluable) c.getQueryNode(), q, state); leftHandSide = lhsBuffer.toString(); } else { StringBuffer lhsBuffer = new StringBuffer(); queryClassToString(lhsBuffer, (QueryClass) c.getQueryNode(), q, schema, ID_ONLY, state); leftHandSide = lhsBuffer.toString(); Collection<?> bagColl = c.getBag(); if (bagColl == null) { ObjectStoreBag osb = c.getOsb(); if (c.getOp() == ConstraintOp.IN) { buffer.append(leftHandSide); } else { if (((safeness == SAFENESS_SAFE) && (c.getOp() == ConstraintOp.IN)) || ((safeness == SAFENESS_ANTISAFE) && (c.getOp() == ConstraintOp.NOT_IN))) { if (c.getOp() == ConstraintOp.NOT_IN) { buffer.append("))"); + (c.getOp() == ConstraintOp.IN ? "IS" : "IS NOT") + " NULL)"); if (!filteredBag.isEmpty()) { buffer.append(" ") .append(c.getOp() == ConstraintOp.IN ? "OR" : "AND")
q.setConstraint(new BagConstraint(qf, ConstraintOp.NOT_IN, ignoredClasses));
if ((bc.getBag() != null) && (bc.getOp() == ConstraintOp.NOT_IN)) { boolean empty = true; Class<?> type = bc.getQueryNode().getType(); for (Object bagItem : bc.getBag()) { if (!(ProxyReference.class.equals(bagItem.getClass()) || DynamicUtil.isInstance(bagItem, type))) {