public Expression contains(Value map, Value arg) { if (map instanceof Const) return new InExpression((Val) arg, (Const) map); if (map instanceof SubQ) return new InSubQExpression((Val) arg, (SubQ) map); return new ContainsExpression((Val) map, (Val) arg); }
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf) { InExpState istate = (InExpState) state; if (_val instanceof Type) _const.calculateValue(sel, ctx, istate.constantState, _val, istate.valueState); else _const.calculateValue(sel, ctx, istate.constantState, null, null); _val.calculateValue(sel, ctx, istate.valueState, null, null); List list = null; Collection coll = getCollection(ctx, istate.constantState); if (coll != null) { list = new ArrayList(coll.size()); for (Iterator itr = coll.iterator(); itr.hasNext();) list.add(_val.toDataStoreValue(sel, ctx, istate.valueState, itr.next())); } Column[] cols = null; if (_val instanceof PCPath) cols = ((PCPath) _val).getColumns(istate.valueState); else if (_val instanceof GetObjectId) cols = ((GetObjectId) _val).getColumns(istate.valueState); if (list == null || list.isEmpty()) buf.append("1 <> 1"); else if (_val.length(sel, ctx, istate.valueState) == 1) createInContains(sel, ctx, istate.valueState, buf, list, cols); else orContains(sel, ctx, istate.valueState, buf, list, cols); sel.append(buf, state.joins); }
/** * Based on the inClauseLimit of the DBDictionary, create the needed IN * clauses */ private void createInContains(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf, List list, Column[] cols) { int inClauseLimit = ctx.store.getDBDictionary().inClauseLimit; if (inClauseLimit <= 0 || list.size() <= inClauseLimit) inContains(sel, ctx, state, buf, list, cols); else { buf.append("("); for (int low = 0, high; low < list.size(); low = high) { if (low > 0) buf.append(" OR "); high = java.lang.Math.min(low + inClauseLimit, list.size()); inContains(sel, ctx, state, buf, list.subList(low, high), cols); } buf.append(")"); } }
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf) { InExpState istate = (InExpState) state; _const.calculateValue(sel, ctx, istate.constantState, null, null); _val.calculateValue(sel, ctx, istate.valueState, null, null); List list = null; Collection coll = getCollection(ctx, istate.constantState); if (coll != null) { list = new ArrayList(coll.size()); for (Iterator itr = coll.iterator(); itr.hasNext();) list.add(_val.toDataStoreValue(sel, ctx, istate.valueState, itr.next())); } Column[] cols = null; if (_val instanceof PCPath) cols = ((PCPath) _val).getColumns(istate.valueState); else if (_val instanceof GetObjectId) cols = ((GetObjectId) _val).getColumns(istate.valueState); if (list == null || list.isEmpty()) buf.append("1 <> 1"); else if (_val.length(sel, ctx, istate.valueState) == 1) createInContains(sel, ctx, istate.valueState, buf, list, cols); else orContains(sel, ctx, istate.valueState, buf, list, cols); sel.append(buf, state.joins); }
public Expression bindVariable(Value var, Value val) { // handle the strange case of using a constant path to bind a // variable; in these cases the variable acts like an unbound // variable that we limit by using an IN clause on the constant // value collection if (val instanceof Const) { PCPath path = new PCPath(_type, (Variable) var); path.setMetaData(var.getMetaData()); return new InExpression(path, (Const) val); } return new BindVariableExpression((Variable) var, (PCPath) val, false); }
/** * Based on the inClauseLimit of the DBDictionary, create the needed IN * clauses */ private void createInContains(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf, List list, Column[] cols) { int inClauseLimit = ctx.store.getDBDictionary().inClauseLimit; if (inClauseLimit <= 0 || list.size() <= inClauseLimit) inContains(sel, ctx, state, buf, list, cols); else { buf.append("("); for (int low = 0, high; low < list.size(); low = high) { if (low > 0) buf.append(" OR "); high = java.lang.Math.min(low + inClauseLimit, list.size()); inContains(sel, ctx, state, buf, list.subList(low, high), cols); } buf.append(")"); } }
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf) { InExpState istate = (InExpState) state; if (_val instanceof Type) _const.calculateValue(sel, ctx, istate.constantState, _val, istate.valueState); else _const.calculateValue(sel, ctx, istate.constantState, null, null); _val.calculateValue(sel, ctx, istate.valueState, null, null); List list = null; Collection coll = getCollection(ctx, istate.constantState); if (coll != null) { list = new ArrayList(coll.size()); for (Iterator itr = coll.iterator(); itr.hasNext();) list.add(_val.toDataStoreValue(sel, ctx, istate.valueState, itr.next())); } Column[] cols = null; if (_val instanceof PCPath) cols = ((PCPath) _val).getColumns(istate.valueState); else if (_val instanceof GetObjectId) cols = ((GetObjectId) _val).getColumns(istate.valueState); if (list == null || list.isEmpty()) buf.append("1 <> 1"); else if (_val.length(sel, ctx, istate.valueState) == 1) createInContains(sel, ctx, istate.valueState, buf, list, cols); else orContains(sel, ctx, istate.valueState, buf, list, cols); sel.append(buf, state.joins); }
public Expression bindVariable(Value var, Value val) { // handle the strange case of using a constant path to bind a // variable; in these cases the variable acts like an unbound // variable that we limit by using an IN clause on the constant // value collection if (val instanceof Const) { PCPath path = new PCPath(_type, (Variable) var); path.setMetaData(var.getMetaData()); return new InExpression(path, (Const) val); } return new BindVariableExpression((Variable) var, (PCPath) val, false); }
/** * Based on the inClauseLimit of the DBDictionary, create the needed IN * clauses */ private void createInContains(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf, List list, Column[] cols) { int inClauseLimit = ctx.store.getDBDictionary().inClauseLimit; if (inClauseLimit <= 0 || list.size() <= inClauseLimit) inContains(sel, ctx, state, buf, list, cols); else { buf.append("("); for (int low = 0, high; low < list.size(); low = high) { if (low > 0) buf.append(" OR "); high = java.lang.Math.min(low + inClauseLimit, list.size()); inContains(sel, ctx, state, buf, list.subList(low, high), cols); } buf.append(")"); } }
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf) { InExpState istate = (InExpState) state; if (_val instanceof Type) _const.calculateValue(sel, ctx, istate.constantState, _val, istate.valueState); else _const.calculateValue(sel, ctx, istate.constantState, null, null); _val.calculateValue(sel, ctx, istate.valueState, null, null); List list = null; Collection coll = getCollection(ctx, istate.constantState); if (coll != null) { list = new ArrayList(coll.size()); for (Iterator itr = coll.iterator(); itr.hasNext();) list.add(_val.toDataStoreValue(sel, ctx, istate.valueState, itr.next())); } Column[] cols = null; if (_val instanceof PCPath) cols = ((PCPath) _val).getColumns(istate.valueState); else if (_val instanceof GetObjectId) cols = ((GetObjectId) _val).getColumns(istate.valueState); if (list == null || list.isEmpty()) buf.append("1 <> 1"); else if (_val.length(sel, ctx, istate.valueState) == 1) createInContains(sel, ctx, istate.valueState, buf, list, cols); else orContains(sel, ctx, istate.valueState, buf, list, cols); sel.append(buf, state.joins); }
public Expression bindVariable(Value var, Value val) { // handle the strange case of using a constant path to bind a // variable; in these cases the variable acts like an unbound // variable that we limit by using an IN clause on the constant // value collection if (val instanceof Const) { PCPath path = new PCPath(_type, (Variable) var); path.setMetaData(var.getMetaData()); return new InExpression(path, (Const) val); } return new BindVariableExpression((Variable) var, (PCPath) val, false); }
/** * Based on the inClauseLimit of the DBDictionary, create the needed IN * clauses */ private void createInContains(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf, List list, Column[] cols) { int inClauseLimit = ctx.store.getDBDictionary().inClauseLimit; if (inClauseLimit <= 0 || list.size() <= inClauseLimit) inContains(sel, ctx, state, buf, list, cols); else { buf.append("("); for (int low = 0, high; low < list.size(); low = high) { if (low > 0) buf.append(" OR "); high = java.lang.Math.min(low + inClauseLimit, list.size()); inContains(sel, ctx, state, buf, list.subList(low, high), cols); } buf.append(")"); } }
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf) { InExpState istate = (InExpState) state; if (_val instanceof Type) _const.calculateValue(sel, ctx, istate.constantState, _val, istate.valueState); else _const.calculateValue(sel, ctx, istate.constantState, null, null); _val.calculateValue(sel, ctx, istate.valueState, null, null); List list = null; Collection coll = getCollection(ctx, istate.constantState); if (coll != null) { list = new ArrayList(coll.size()); for (Iterator itr = coll.iterator(); itr.hasNext();) list.add(_val.toDataStoreValue(sel, ctx, istate.valueState, itr.next())); } Column[] cols = null; if (_val instanceof PCPath) cols = ((PCPath) _val).getColumns(istate.valueState); else if (_val instanceof GetObjectId) cols = ((GetObjectId) _val).getColumns(istate.valueState); if (list == null || list.isEmpty()) buf.append("1 <> 1"); else if (_val.length(sel, ctx, istate.valueState) == 1) createInContains(sel, ctx, istate.valueState, buf, list, cols); else orContains(sel, ctx, istate.valueState, buf, list, cols); sel.append(buf, state.joins); }
public Expression bindVariable(Value var, Value val) { // handle the strange case of using a constant path to bind a // variable; in these cases the variable acts like an unbound // variable that we limit by using an IN clause on the constant // value collection if (val instanceof Const) { PCPath path = new PCPath(_type, (Variable) var); path.setMetaData(var.getMetaData()); return new InExpression(path, (Const) val); } return new BindVariableExpression((Variable) var, (PCPath) val, false); }
/** * Based on the inClauseLimit of the DBDictionary, create the needed IN * clauses */ private void createInContains(Select sel, ExpContext ctx, ExpState state, SQLBuffer buf, List list, Column[] cols) { int inClauseLimit = ctx.store.getDBDictionary().inClauseLimit; if (inClauseLimit <= 0 || list.size() <= inClauseLimit) inContains(sel, ctx, state, buf, list, cols); else { buf.append("("); for (int low = 0, high; low < list.size(); low = high) { if (low > 0) buf.append(" OR "); high = java.lang.Math.min(low + inClauseLimit, list.size()); inContains(sel, ctx, state, buf, list.subList(low, high), cols); } buf.append(")"); } }
public Expression bindVariable(Value var, Value val) { // handle the strange case of using a constant path to bind a // variable; in these cases the variable acts like an unbound // variable that we limit by using an IN clause on the constant // value collection if (val instanceof Const) { PCPath path = new PCPath(_type, (Variable) var); path.setMetaData(var.getMetaData()); return new InExpression(path, (Const) val); } return new BindVariableExpression((Variable) var, (PCPath) val, false); }
public Expression contains(Value map, Value arg) { if (map instanceof Const) { if (arg instanceof Type) { // limited support for table per class inheritance verifyTypeOperation(arg, map, false); if (((ClassMapping) arg.getMetaData()).getDiscriminator().getColumns().length == 0) return new EqualTypeExpression((Val) arg, (Val) map); } return new InExpression((Val) arg, (Const) map); } if (map instanceof SubQ) return new InSubQExpression((Val) arg, (SubQ) map); return new ContainsExpression((Val) map, (Val) arg); }
public Expression contains(Value map, Value arg) { if (map instanceof Const) { if (arg instanceof Type) { // limited support for table per class inheritance verifyTypeOperation(arg, map, false); if (((ClassMapping) arg.getMetaData()).getDiscriminator().getColumns().length == 0) return new EqualTypeExpression((Val) arg, (Val) map); } return new InExpression((Val) arg, (Const) map); } if (map instanceof SubQ) return new InSubQExpression((Val) arg, (SubQ) map); return new ContainsExpression((Val) map, (Val) arg); }
public Expression contains(Value map, Value arg) { if (map instanceof Const) { if (arg instanceof Type) { // limited support for table per class inheritance verifyTypeOperation(arg, map, false); if (((ClassMapping) arg.getMetaData()).getDiscriminator().getColumns().length == 0) return new EqualTypeExpression((Val) arg, (Val) map); } return new InExpression((Val) arg, (Const) map); } if (map instanceof SubQ) return new InSubQExpression((Val) arg, (SubQ) map); return new ContainsExpression((Val) map, (Val) arg); }
public Expression contains(Value map, Value arg) { if (map instanceof Const) { if (arg instanceof Type) { // limited support for table per class inheritance verifyTypeOperation(arg, map, false); if (((ClassMapping) arg.getMetaData()).getDiscriminator().getColumns().length == 0) return new EqualTypeExpression((Val) arg, (Val) map); } return new InExpression((Val) arg, (Const) map); } if (map instanceof SubQ) return new InSubQExpression((Val) arg, (SubQ) map); return new ContainsExpression((Val) map, (Val) arg); }