void visitDistanceSpatialOperator( DistanceBufferOperator filter, PropertyName property, Literal geometry, boolean swapped, Object extraData) throws IOException { if ((filter instanceof DWithin && !swapped) || (filter instanceof Beyond && swapped)) { out.write("ST_DWithin("); property.accept(delegate, extraData); out.write(","); geometry.accept(delegate, extraData); out.write(","); out.write(toNativeUnits(filter)); out.write(")"); } if ((filter instanceof DWithin && swapped) || (filter instanceof Beyond && !swapped)) { out.write("ST_Distance("); property.accept(delegate, extraData); out.write(","); geometry.accept(delegate, extraData); out.write(") > "); out.write(toNativeUnits(filter)); } }
public static Object buildBinaryTemporalOperator( final String temporalOperator, BinaryTemporalOperator filter, Object extraData) { LOGGER.finer("exporting " + temporalOperator); StringBuilder output = asStringBuilder(extraData); PropertyName propertyName = (PropertyName) filter.getExpression1(); ExpressionToText visitor = new ExpressionToText(); propertyName.accept(visitor, output); output.append(" ").append(temporalOperator).append(" "); Literal expr2 = (Literal) filter.getExpression2(); expr2.accept(visitor, output); return output; }
void visitDistanceSpatialOperator( DistanceBufferOperator filter, PropertyName property, Literal geometry, boolean swapped, Object extraData) throws IOException { if ((filter instanceof DWithin && !swapped) || (filter instanceof Beyond && swapped)) { encodeIndexPredicate(property, geometry); property.accept(this, extraData); out.write(".ST_DWithin(new ST_Geometry("); geometry.accept(this, extraData); out.write("),"); out.write(Double.toString(filter.getDistance())); out.write(")"); } if ((filter instanceof DWithin && swapped) || (filter instanceof Beyond && !swapped)) { encodeIndexPredicate(property, geometry); property.accept(this, extraData); out.write(".ST_Distance(SYSSPATIAL.ST_Geometry("); geometry.accept(this, extraData); out.write(")) > "); out.write(Double.toString(filter.getDistance())); } }
property.accept(this, extraData); out.write(".");
public static Object buildDuring(During during, Object extraData) { LOGGER.finer("exporting DURING"); StringBuilder output = asStringBuilder(extraData); PropertyName propertyName = (PropertyName) during.getExpression1(); ExpressionToText visitor = new ExpressionToText(); propertyName.accept(visitor, output); output.append(" DURING "); Literal expr2 = (Literal) during.getExpression2(); expr2.accept(visitor, output); return output; } }
public Object visit(final BBOX filter, Object data) { // We will just use a simple wrapper until we add a getExpression method PropertyName property = new PropertyName() { public String getPropertyName() { return filter.getPropertyName(); } public Object accept(ExpressionVisitor visitor, Object data) { return visitor.visit(this, data); } public Object evaluate(Object object) { return null; } public Object evaluate(Object object, Class context) { return null; } public NamespaceSupport getNamespaceContext() { return null; } }; property.accept(this, data); if (found) return found; filter.getExpression2().accept(this, data); return found; }
public static Object buildBetween(PropertyIsBetween filter, Object extraData) { LOGGER.finer("exporting PropertyIsBetween"); ExpressionVisitor exprVisitor = new ExpressionToText(); StringBuilder output = asStringBuilder(extraData); PropertyName propertyName = (PropertyName) filter.getExpression(); propertyName.accept(exprVisitor, output); output.append(" BETWEEN "); filter.getLowerBoundary().accept(exprVisitor, output); output.append(" AND "); filter.getUpperBoundary().accept(exprVisitor, output); return output; }
property.accept(this, extraData); out.write(swapped ? inv : op); visitBegin(period, extraData); property.accept(this, extraData); out.write(swapped ? inv : op); visitEnd(period, extraData); temporal.accept(this, typeContext); } else { property.accept(this, extraData); property.accept(this, extraData); } else { temporal.accept(this, typeContext); || filter instanceof BegunBy || filter instanceof EndedBy) { property.accept(this, extraData); out.write(" = "); property.accept(this, extraData); out.write(" BETWEEN "); visitEnd(period, extraData); } else if (filter instanceof TEquals) { property.accept(this, extraData); out.write(" = "); temporal.accept(this, typeContext);
Object visitDistanceSpatialOperator( DistanceBufferOperator filter, PropertyName property, Literal geometry, boolean swapped, Object extraData) { try { String comparisonOperator = ") < "; if ((filter instanceof DWithin && swapped) || (filter instanceof Beyond && !swapped)) { comparisonOperator = ") > "; } out.write("db2gse.ST_Distance("); property.accept(this, extraData); out.write(","); geometry.accept(this, extraData); String distanceUnits = filter.getDistanceUnits(); if (isValidUnit(distanceUnits)) { out.write(",'METER'"); } out.write(comparisonOperator); out.write(toMeters(filter.getDistance(), filter.getDistanceUnits())); if (!isValidUnit(distanceUnits)) { addSelectivity(); // Selectivity clause can not be used with distance units } return extraData; } catch (IOException ex) { throw new RuntimeException(ex); } }
filterFactory.property(pkName).accept(this, null);
@Test public void testProperty() { PropertyName pn = ff.property("s"); assertEquals(Short.class, pn.accept(visitor, null)); } }
PropertyName propNameExpression = ff.property(xpathExpression); List /* <Expression> */ unrolled = (List) propNameExpression.accept(visitor, null); assertNotNull(unrolled); assertEquals(1, unrolled.size()); propNameExpression = ff.property(xpathExpression); unrolled = (List) propNameExpression.accept(visitor, null); assertNotNull(unrolled); assertEquals(1, unrolled.size()); propNameExpression = ff.property(xpathExpression); unrolled = (List) propNameExpression.accept(visitor, null); assertNotNull(unrolled); assertEquals(1, unrolled.size());
Object transform(BinaryComparisonOperator filter, Object extraData) { // binary filters may use two random expressions, check if we have // enough information for a reprojection PropertyName name; Expression other; if ((filter.getExpression1() instanceof PropertyName)) { name = (PropertyName) filter.getExpression1(); other = filter.getExpression2(); } else if (filter.getExpression2() instanceof PropertyName) { name = (PropertyName) filter.getExpression2(); other = filter.getExpression1(); } else { return cloneFilter(filter, extraData); } CoordinateReferenceSystem propertyCrs = findPropertyCRS(name); // we have to reproject only if the property is geometric if (propertyCrs == null) return cloneFilter(filter, extraData); // "transformed" expressions Expression ex1 = (Expression) name.accept(ReprojectingFilterVisitor.this, extraData); Expression ex2 = reproject(other, propertyCrs, false); if (ex2 == null) ex2 = (Expression) other.accept(ReprojectingFilterVisitor.this, extraData); return cloneFilter(filter, extraData, ex1, ex2); }
/** * An xpath expression may target a "client property" mapping (in xml land, an xml attribute * rather than a xml element). * * @throws Exception */ @Test public void testPropertyNameWithXlinkAttribute() throws Exception { final String XMMLNS = "http://www.opengis.net/xmml"; final Name typeName = new NameImpl(XMMLNS, "Borehole"); AppSchemaDataAccess complexDs = (AppSchemaDataAccess) mappingDataStore; mapping = complexDs.getMappingByNameOrElement(typeName); NamespaceSupport namespaces = new NamespaceSupport(); namespaces.declarePrefix("gml", GML.NAMESPACE); namespaces.declarePrefix("xmml", XMMLNS); namespaces.declarePrefix("xlink", XLINK.NAMESPACE); FilterFactory2 ff = new FilterFactoryImplNamespaceAware(namespaces); String xpathExpression = "sa:shape/geo:LineByVector/geo:origin/@xlink:href"; PropertyName propNameExpression = ff.property(xpathExpression); visitor = new UnmappingFilterVisitor(mapping); List /* <Expression> */ unrolled = (List) propNameExpression.accept(visitor, null); assertNotNull(unrolled); assertEquals(1, unrolled.size()); assertTrue(unrolled.get(0) instanceof Expression); }
public static Object buildBinaryTemporalOperator(final String temporalOperator, BinaryTemporalOperator filter, Object extraData) { LOGGER.finer("exporting " + temporalOperator); StringBuilder output = asStringBuilder(extraData); PropertyName propertyName = (PropertyName) filter.getExpression1(); ExpressionToText visitor = new ExpressionToText(); propertyName.accept(visitor, output); output.append(" ").append(temporalOperator).append(" "); Literal expr2 = (Literal) filter.getExpression2(); expr2.accept(visitor, output); return output; }
@Override public Object visit(PropertyIsNull filter, Object extraData) { checkExpressionIsProperty(filter.getExpression()); StringWriter output = asStringWriter(extraData); ExpressionToSolr visitor = new ExpressionToSolr(); PropertyName propertyName = (PropertyName) filter.getExpression(); output.append("-"); propertyName.accept(visitor, output); output.append(":[* TO *]"); return output; }
public static Object buildDuring(During during, Object extraData) { LOGGER.finer("exporting DURING" ); StringBuilder output = asStringBuilder(extraData); PropertyName propertyName = (PropertyName) during.getExpression1(); ExpressionToText visitor = new ExpressionToText(); propertyName.accept(visitor, output); output.append(" DURING "); Literal expr2 = (Literal) during.getExpression2(); expr2.accept(visitor, output); return output; }
public static Object buildBetween(PropertyIsBetween filter, Object extraData) { LOGGER.finer("exporting PropertyIsBetween"); ExpressionVisitor exprVisitor = new ExpressionToText(); StringBuilder output = asStringBuilder(extraData); PropertyName propertyName = (PropertyName) filter.getExpression(); propertyName.accept(exprVisitor, output); output.append(" BETWEEN "); filter.getLowerBoundary().accept(exprVisitor, output); output.append(" AND "); filter.getUpperBoundary().accept(exprVisitor, output); return output; }