public PredExp getFieldExpr(int valType) throws PredExpException { switch (valType) { case ParticleType.INTEGER: return PredExp.integerBin(getField()); case ParticleType.STRING: return PredExp.stringBin(getField()); case ParticleType.GEOJSON: return PredExp.geoJSONBin(getField()); default: throw new PredExpException("PredExp Unsupported Particle Type: " + valType); } }
@Override public PredExp getFieldExpr(int valType) { return PredExp.recLastUpdate(); } }
Qualifier[] qs = (Qualifier[])get(QUALIFIERS); for(Qualifier q : qs) rs.addAll(q.toPredExp()); rs.add(PredExp.and(qs.length)); break; case OR: qs = (Qualifier[])get(QUALIFIERS); for(Qualifier q : qs) rs.addAll(q.toPredExp()); rs.add(PredExp.or(qs.length)); break; case IN: // Conver IN to a collection of or as Aerospike has not support for IN query List<?> inList = (List<?>) val.getObject(); for(Object value : inList) rs.addAll(new Qualifier(this.getField(), FilterOperation.EQ, Value.get(value)).toPredExp()); rs.add(PredExp.or(inList.size())); break; case EQ: case ParticleType.INTEGER: rs.add(getFieldExpr(valType)); rs.add(PredExp.integerValue(val.toLong())); rs.add(PredExp.integerEqual()); break; case ParticleType.STRING: rs.add(getFieldExpr(valType)); rs.add(PredExp.stringValue(val.toString())); rs.add(PredExp.stringEqual()); break; default:
PredExp.integerBin("bin2"), PredExp.integerValue(126), PredExp.integerGreater(), PredExp.integerBin("bin2"), PredExp.integerValue(140), PredExp.integerLessEq(), PredExp.and(2), PredExp.integerBin("bin2"), PredExp.integerValue(360), PredExp.integerEqual(), PredExp.or(2) );
stmt.setFilter(Filter.range(binName, begin, end)); stmt.setPredExp( PredExp.recLastUpdate(), PredExp.integerValue(beginTime), PredExp.integerGreaterEq(), PredExp.recLastUpdate(), PredExp.integerValue(endTime), PredExp.integerLess(), PredExp.and(2) );
private PredExp[] valToPredExp(Value val) throws PredExpException { int valType = val.getType(); switch (valType) { case ParticleType.INTEGER: return new PredExp[]{ getFieldExpr(valType), PredExp.integerValue(val.toLong())}; case ParticleType.STRING: return new PredExp[]{ getFieldExpr(valType), PredExp.stringValue(val.toString())}; case ParticleType.GEOJSON: return new PredExp[]{ getFieldExpr(valType), PredExp.geoJSONValue(val.toString())}; default: throw new PredExpException("PredExp Unsupported Particle Type: " + val.getType()); } }
protected List<PredExp> buildPredExp(Qualifier[] qualifiers) throws PredExpException{ List<PredExp> pes = new ArrayList<PredExp>(); int qCount = 0; for(Qualifier q : qualifiers){ if(null != q && !q.queryAsFilter()) { List<PredExp> tpes = q.toPredExp(); if(tpes.size()>0){ pes.addAll(tpes); qCount ++; q = null; } } } if(qCount>1) pes.add(PredExp.and(qCount)); return pes; }