/** * Serializes the given {@link Operator} object to XML. * * @param operator * <code>BooleanOperator</code> object to be serialized * @param writer * target of the xml stream * @throws XMLStreamException * @throws TransformationException * @throws UnknownCRSException */ private static void export( Operator operator, XMLStreamWriter writer ) throws XMLStreamException, UnknownCRSException, TransformationException { switch ( operator.getType() ) { case COMPARISON: export( (ComparisonOperator) operator, writer ); break; case LOGICAL: export( (LogicalOperator) operator, writer ); break; case SPATIAL: export( (SpatialOperator) operator, writer ); break; } }
private static void writeFilterFilter( GetRecords getRecords, XMLStreamWriter writer ) throws XMLStreamException, UnknownCRSException, TransformationException { if ( getRecords.getConstraint() != null ) { writer.writeStartElement( CSW_202_PREFIX, "Constraint", CSW_202_NS ); writer.writeAttribute( "version", "1.1.0" ); Filter110XMLEncoder.export( getRecords.getConstraint(), writer ); writer.writeEndElement(); } }
export( ( (OperatorFilter) filter ).getOperator(), writer ); break;
case PROPERTY_IS_BETWEEN: PropertyIsBetween isBetween = (PropertyIsBetween) operator; export( isBetween.getExpression(), writer ); writer.writeStartElement( CommonNamespaces.OGCNS, "LowerBoundary" ); export( isBetween.getLowerBoundary(), writer ); writer.writeEndElement(); writer.writeStartElement( CommonNamespaces.OGCNS, "UpperBoundary" ); export( isBetween.getUpperBoundary(), writer ); writer.writeEndElement(); break; case PROPERTY_IS_EQUAL_TO: export( ( (PropertyIsEqualTo) operator ).getParameter1(), writer ); export( ( (PropertyIsEqualTo) operator ).getParameter2(), writer ); break; case PROPERTY_IS_GREATER_THAN: export( ( (PropertyIsGreaterThan) operator ).getParameter1(), writer ); export( ( (PropertyIsGreaterThan) operator ).getParameter2(), writer ); break; case PROPERTY_IS_GREATER_THAN_OR_EQUAL_TO: export( ( (PropertyIsGreaterThanOrEqualTo) operator ).getParameter1(), writer ); export( ( (PropertyIsGreaterThanOrEqualTo) operator ).getParameter2(), writer ); break; case PROPERTY_IS_LESS_THAN: export( ( (PropertyIsLessThan) operator ).getParameter1(), writer ); export( ( (PropertyIsLessThan) operator ).getParameter2(), writer ); break; case PROPERTY_IS_LESS_THAN_OR_EQUAL_TO: export( ( (PropertyIsLessThanOrEqualTo) operator ).getParameter1(), writer ); export( ( (PropertyIsLessThanOrEqualTo) operator ).getParameter2(), writer );
writer.writeAttribute( "name", function.getName() ); for ( Expression param : function.getParameters() ) { export( param, writer ); throw new UnsupportedOperationException( "Exporting of custom expressions is not implemented yet." ); case ADD: export( ( (Add) expression ).getParameter1(), writer ); export( ( (Add) expression ).getParameter2(), writer ); break; case SUB: export( ( (Sub) expression ).getParameter1(), writer ); export( ( (Sub) expression ).getParameter2(), writer ); break; case MUL: export( ( (Mul) expression ).getParameter1(), writer ); export( ( (Mul) expression ).getParameter2(), writer ); break; case DIV: export( ( (Div) expression ).getParameter1(), writer ); export( ( (Div) expression ).getParameter2(), writer ); break;
switch ( version ) { case WFS_110: Filter110XMLEncoder.export( filter, xmlWriter ); break; case WFS_100:
StringWriter sw = new StringWriter(); XMLStreamWriter out = XMLOutputFactory.newInstance().createXMLStreamWriter( sw ); Filter110XMLEncoder.export( expr, out ); xmlText.append( sw.toString() );
Filter110XMLEncoder.export( query.getFilter(), writer ); if ( nextSortProperty.getSortProperty() != null ) { writer.writeStartElement( CommonNamespaces.OGC_PREFIX, "SortProperty", CommonNamespaces.OGCNS ); Filter110XMLEncoder.export( nextSortProperty.getSortProperty(), writer ); writer.writeStartElement( CommonNamespaces.OGC_PREFIX, "SortOrder", CommonNamespaces.OGCNS ); writer.writeCharacters( ( nextSortProperty.getSortOrder() ? "ASC" : "DESC" ) );
export( propertyName, writer );