The following document contains the results of PMD's CPD 4.3.
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 148 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 151 |
private static final QName GML_OBJECT_ID_ELEMENT = new QName( OGC_NS, "GmlObjectId" );
private static final Map<Expression.Type, QName> expressionTypeToElementName = new HashMap<Expression.Type, QName>();
private static final Map<QName, Expression.Type> elementNameToExpressionType = new HashMap<QName, Expression.Type>();
private static final Map<QName, Operator.Type> elementNameToOperatorType = new HashMap<QName, Operator.Type>();
private static final Map<QName, SpatialOperator.SubType> elementNameToSpatialOperatorType = new HashMap<QName, SpatialOperator.SubType>();
private static final Map<SpatialOperator.SubType, QName> spatialOperatorTypeToElementName = new HashMap<SpatialOperator.SubType, QName>();
private static final Map<QName, ComparisonOperator.SubType> elementNameToComparisonOperatorType = new HashMap<QName, ComparisonOperator.SubType>();
private static final Map<ComparisonOperator.SubType, QName> comparisonOperatorTypeToElementName = new HashMap<ComparisonOperator.SubType, QName>();
private static final Map<QName, LogicalOperator.SubType> elementNameToLogicalOperatorType = new HashMap<QName, LogicalOperator.SubType>();
private static final Map<LogicalOperator.SubType, QName> logicalOperatorTypeToElementName = new HashMap<LogicalOperator.SubType, QName>();
static {
// element name <-> expression type
addElementToExpressionMapping( new QName( OGC_NS, "Add" ), Expression.Type.ADD );
addElementToExpressionMapping( new QName( OGC_NS, "Sub" ), Expression.Type.SUB );
addElementToExpressionMapping( new QName( OGC_NS, "Mul" ), Expression.Type.MUL );
addElementToExpressionMapping( new QName( OGC_NS, "Div" ), Expression.Type.DIV );
addElementToExpressionMapping( new QName( OGC_NS, "PropertyName" ), Expression.Type.VALUE_REFERENCE );
addElementToExpressionMapping( new QName( OGC_NS, "Function" ), Expression.Type.FUNCTION );
addElementToExpressionMapping( new QName( OGC_NS, "Literal" ), Expression.Type.LITERAL );
// element name <-> expression type (custom expressions)
for ( CustomExpression ce : CustomExpressionManager.getCustomExpressions().values() ) {
addElementToExpressionMapping( ce.getElementName(), Expression.Type.CUSTOM );
}
// element name <-> spatial operator type
addElementToSpatialOperatorMapping( new QName( OGC_NS, "BBOX" ), SpatialOperator.SubType.BBOX );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Beyond" ), SpatialOperator.SubType.BEYOND );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Contains" ), SpatialOperator.SubType.CONTAINS );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Crosses" ), SpatialOperator.SubType.CROSSES );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Equals" ), SpatialOperator.SubType.EQUALS );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Disjoint" ), SpatialOperator.SubType.DISJOINT );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "DWithin" ), SpatialOperator.SubType.DWITHIN );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Intersects" ), SpatialOperator.SubType.INTERSECTS );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Overlaps" ), SpatialOperator.SubType.OVERLAPS );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Touches" ), SpatialOperator.SubType.TOUCHES );
addElementToSpatialOperatorMapping( new QName( OGC_NS, "Within" ), SpatialOperator.SubType.WITHIN );
// element name <-> logical operator type
addElementToLogicalOperatorMapping( new QName( OGC_NS, "And" ), LogicalOperator.SubType.AND );
addElementToLogicalOperatorMapping( new QName( OGC_NS, "Or" ), LogicalOperator.SubType.OR );
addElementToLogicalOperatorMapping( new QName( OGC_NS, "Not" ), LogicalOperator.SubType.NOT );
// element name <-> comparison operator type
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsBetween" ),
ComparisonOperator.SubType.PROPERTY_IS_BETWEEN );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsEqualTo" ),
ComparisonOperator.SubType.PROPERTY_IS_EQUAL_TO );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsGreaterThan" ),
ComparisonOperator.SubType.PROPERTY_IS_GREATER_THAN );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsGreaterThanOrEqualTo" ),
ComparisonOperator.SubType.PROPERTY_IS_GREATER_THAN_OR_EQUAL_TO );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsLessThan" ),
ComparisonOperator.SubType.PROPERTY_IS_LESS_THAN );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsLessThanOrEqualTo" ),
ComparisonOperator.SubType.PROPERTY_IS_LESS_THAN_OR_EQUAL_TO );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsLike" ),
ComparisonOperator.SubType.PROPERTY_IS_LIKE );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsNotEqualTo" ),
ComparisonOperator.SubType.PROPERTY_IS_NOT_EQUAL_TO );
addElementToComparisonOperatorMapping( new QName( OGC_NS, "PropertyIsNull" ),
ComparisonOperator.SubType.PROPERTY_IS_NULL );
}
private static void addElementToExpressionMapping( QName elementName, Expression.Type type ) {
elementNameToExpressionType.put( elementName, type );
expressionTypeToElementName.put( type, elementName );
}
private static void addElementToSpatialOperatorMapping( QName elementName, SpatialOperator.SubType type ) {
elementNameToOperatorType.put( elementName, Operator.Type.SPATIAL );
elementNameToSpatialOperatorType.put( elementName, type );
spatialOperatorTypeToElementName.put( type, elementName );
}
private static void addElementToLogicalOperatorMapping( QName elementName, LogicalOperator.SubType type ) {
elementNameToOperatorType.put( elementName, Operator.Type.LOGICAL );
elementNameToLogicalOperatorType.put( elementName, type );
logicalOperatorTypeToElementName.put( type, elementName );
}
private static void addElementToComparisonOperatorMapping( QName elementName, ComparisonOperator.SubType type ) {
elementNameToOperatorType.put( elementName, Operator.Type.COMPARISON );
elementNameToComparisonOperatorType.put( elementName, type );
comparisonOperatorTypeToElementName.put( type, elementName );
}
/**
* Returns the object representation for the given <code>wfs:Filter</code> element event that the cursor of the
* associated <code>XMLStreamReader</code> points at.
* <ul>
* <li>Precondition: cursor must point at the <code>START_ELEMENT</code> event (<wfs:Filter>)</li>
* <li>Postcondition: cursor points at the corresponding <code>END_ELEMENT</code> event (</wfs:Filter>)</li>
* </ul>
*
* @param xmlStream
* cursor must point at the <code>START_ELEMENT</code> event (<wfs:Filter>), points at the
* corresponding <code>END_ELEMENT</code> event (</wfs:Filter>) afterwards
* @return corresponding {@link Filter} object
* @throws XMLParsingException
* if the element is not a valid "wfs:Filter" element
* @throws XMLStreamException
*/
public static Filter parse( XMLStreamReader xmlStream )
throws XMLParsingException, XMLStreamException {
Filter filter = null;
xmlStream.require( START_ELEMENT, OGC_NS, "Filter" );
nextElement( xmlStream );
if ( xmlStream.getEventType() != START_ELEMENT ) {
throw new XMLParsingException( xmlStream, Messages.getMessage( "FILTER_PARSER_FILTER_EMPTY",
new QName( OGC_NS, "Filter" ) ) );
}
QName elementName = xmlStream.getName();
if ( FEATURE_ID_ELEMENT.equals( elementName ) ) { | |
| File | Line |
|---|---|
| org/deegree/feature/i18n/Messages.java | 74 |
| org/deegree/filter/i18n/Messages.java | 74 |
| org/deegree/gml/i18n/Messages.java | 74 |
private static Properties defaultProps = new Properties();
private static Map<Locale, Properties> props = new HashMap<Locale, Properties>();
private static String lang;
private static Logger LOG = LoggerFactory.getLogger( Messages.class );
/**
* Initialization done at class loading time.
*/
static {
InputStream is = null;
try {
// load all messages from default file ("org/deegree/model/i18n/message_en.properties")
String fileName = "messages_en.properties";
is = Messages.class.getResourceAsStream( fileName );
if ( is == null ) {
LOG.error( "Error while initializing " + Messages.class.getName() + " : " + " default message file: '"
+ fileName + " not found." );
} else {
defaultProps.load( is );
// override messages using file "/message_en.properties"
fileName = "/messages_en.properties";
overrideMessages( fileName, defaultProps );
lang = Locale.getDefault().getLanguage();
if ( !"".equals( lang ) && !"en".equals( lang ) ) {
// override messages using file "org/deegree/i18n/message_LANG.properties"
fileName = "messages_" + lang + ".properties";
overrideMessages( fileName, defaultProps );
// override messages using file "/message_LANG.properties"
fileName = "/messages_" + lang + ".properties";
overrideMessages( fileName, defaultProps );
}
}
} catch ( IOException e ) {
LOG.error( "Error while initializing " + Messages.class.getName() + " : " + e.getMessage(), e );
} finally {
closeQuietly( is );
}
}
private static void overrideMessages( String propertiesFile, Properties props )
throws IOException {
InputStream is = null;
try {
is = Messages.class.getResourceAsStream( propertiesFile );
if ( is != null ) {
// override default messages
Properties overrideProps = new Properties();
overrideProps.load( is );
is.close();
for ( Entry<?, ?> e : overrideProps.entrySet() ) {
props.put( e.getKey(), e.getValue() );
}
}
} finally {
closeQuietly( is );
}
}
private static String get( Properties props, String key, Object... args ) {
String s = (String) props.get( key );
if ( s != null ) {
return MessageFormat.format( s, args );
}
return "$Message with key: " + key + " not found$";
}
/**
* @param loc
* the locale to be used
* @param key
* to get
* @param arguments
* to fill in the message
* @return the localized message
*/
public static synchronized String getMessage( Locale loc, String key, Object... arguments ) {
if ( loc.getLanguage().equals( lang ) ) {
return getMessage( key, arguments );
}
if ( !props.containsKey( loc ) ) {
Properties p = new Properties();
String l = loc.getLanguage();
if ( !"".equals( l ) ) {
try {
// override messages in this order:
// messages_en.properties
// /messages_en.properties
// messages_lang.properties
// /messages_lang.properties
String fileName = "messages_en.properties";
overrideMessages( fileName, p );
fileName = "/messages_en.properties";
overrideMessages( fileName, p );
fileName = "messages_" + l + ".properties";
overrideMessages( fileName, p );
fileName = "/messages_" + l + ".properties";
overrideMessages( fileName, p );
} catch ( IOException e ) {
LOG.error( "Error loading language file for language '" + l + "': ", e );
}
}
props.put( loc, p );
}
return get( props.get( loc ), key, arguments );
}
/**
* Returns the message assigned to the passed key. If no message is assigned, an error message will be returned that
* indicates the missing key.
*
* @see MessageFormat for conventions on string formatting and escape characters.
*
* @param key
* @param arguments
* @return the message assigned to the passed key
*/
public static String getMessage( String key, Object... arguments ) {
return get( defaultProps, key, arguments );
}
/**
* Short version for lazy people.
*
* @param key
* @param arguments
* @return the same as #getMessage
*/
public static String get( String key, Object... arguments ) {
return getMessage( key, arguments );
}
} | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 602 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 624 |
requireNextTag( xmlStream, END_ELEMENT );
switch ( type ) {
case PROPERTY_IS_EQUAL_TO:
comparisonOperator = new PropertyIsEqualTo( parameter1, parameter2, matchCase, null );
break;
case PROPERTY_IS_NOT_EQUAL_TO:
comparisonOperator = new PropertyIsNotEqualTo( parameter1, parameter2, matchCase, null );
break;
case PROPERTY_IS_LESS_THAN:
comparisonOperator = new PropertyIsLessThan( parameter1, parameter2, matchCase, null );
break;
case PROPERTY_IS_LESS_THAN_OR_EQUAL_TO:
comparisonOperator = new PropertyIsLessThanOrEqualTo( parameter1, parameter2, matchCase, null );
break;
case PROPERTY_IS_GREATER_THAN:
comparisonOperator = new PropertyIsGreaterThan( parameter1, parameter2, matchCase, null );
break;
case PROPERTY_IS_GREATER_THAN_OR_EQUAL_TO:
comparisonOperator = new PropertyIsGreaterThanOrEqualTo( parameter1, parameter2, matchCase, null );
break;
default:
assert false;
}
return comparisonOperator;
}
private static Literal<?> parseLiteral( XMLStreamReader xmlStream )
throws XMLStreamException {
Map<QName, PrimitiveValue> attrs = parseAttrs( xmlStream );
List<TypedObjectNode> children = new ArrayList<TypedObjectNode>();
while ( xmlStream.next() != END_ELEMENT ) {
int eventType = xmlStream.getEventType();
if ( eventType == START_ELEMENT ) {
children.add( parseElement( xmlStream ) );
} else if ( eventType == CHARACTERS || eventType == CDATA ) {
children.add( new PrimitiveValue( xmlStream.getText() ) );
}
}
TypedObjectNode value = null;
if ( attrs == null || children.size() == 1 ) {
value = children.get( 0 );
} else {
value = new GenericXMLElement( null, null, attrs, children );
}
return new Literal<TypedObjectNode>( value, null );
}
private static GenericXMLElement parseElement( XMLStreamReader xmlStream )
throws IllegalArgumentException, XMLStreamException {
Map<QName, PrimitiveValue> attrs = parseAttrs( xmlStream );
List<TypedObjectNode> children = new ArrayList<TypedObjectNode>();
while ( xmlStream.next() != END_ELEMENT ) {
int eventType = xmlStream.getEventType();
if ( eventType == START_ELEMENT ) {
children.add( parseElement( xmlStream ) );
} else if ( eventType == CHARACTERS || eventType == CDATA ) {
children.add( new PrimitiveValue( xmlStream.getText() ) );
}
}
return new GenericXMLElement( xmlStream.getName(), null, attrs, children );
}
private static Map<QName, PrimitiveValue> parseAttrs( XMLStreamReader xmlStream ) {
Map<QName, PrimitiveValue> attrs = new LinkedHashMap<QName, PrimitiveValue>();
for ( int i = 0; i < xmlStream.getAttributeCount(); i++ ) {
QName name = xmlStream.getAttributeName( i );
String value = xmlStream.getAttributeValue( i );
PrimitiveValue xmlValue = new PrimitiveValue( value );
attrs.put( name, xmlValue );
}
return attrs;
}
private static ValueReference parsePropertyName( XMLStreamReader xmlStream ) | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 425 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 425 |
function = provider.create( params );
} else {
function = new Function( name, params );
}
return function;
}
/**
* Returns the object representation for the given custom <code>ogc:expression</code> element event that the cursor
* of the associated <code>XMLStreamReader</code> points at.
* <p>
* <ul>
* <li>Precondition: cursor must point at the <code>START_ELEMENT</code> event (<ogc:expression>)</li>
* <li>Postcondition: cursor points at the corresponding <code>END_ELEMENT</code> event (</ogc:expression>)</li>
* </ul>
* </p>
*
* @param xmlStream
* cursor must point at the <code>START_ELEMENT</code> event (<ogc:expression>), points at the
* corresponding <code>END_ELEMENT</code> event (</ogc:expression>) afterwards
* @return corresponding {@link CustomExpression} object
* @throws XMLParsingException
* if the element is not a known or valid custom "ogc:expression" element
* @throws XMLStreamException
*/
public static CustomExpression parseCustomExpression( XMLStreamReader xmlStream )
throws XMLStreamException {
CustomExpression expr = CustomExpressionManager.getExpression( xmlStream.getName() );
if ( expr == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNKNOWN_CUSTOM_EXPRESSION", xmlStream.getName() );
throw new XMLParsingException( xmlStream, msg );
}
return expr.parse100( xmlStream );
}
/**
* Returns the object representation for the given <code>ogc:comparisonOps</code> element event that the cursor of
* the associated <code>XMLStreamReader</code> points at.
* <p>
* The element must be one of the following:
* <ul>
* <li>ogc:PropertyIsEqualTo</li>
* <li>ogc:PropertyIsGreaterThan</li>
* <li>ogc:PropertyIsGreaterThanOrEqualTo</li>
* <li>ogc:PropertyIsLessThan</li>
* <li>ogc:PropertyIsLessThanOrEqualTo</li>
* <li>ogc:PropertyIsNotEqualTo</li>
* <li>ogc:PropertyIsBetween</li>
* <li>ogc:PropertyIsLike</li>
* <li>ogc:PropertyIsNull</li>
* </ul>
* </p>
* <p>
* <ul>
* <li>Precondition: cursor must point at the <code>START_ELEMENT</code> event (<ogc:comparisonOps>)</li>
* <li>Postcondition: cursor points at the corresponding <code>END_ELEMENT</code> event (</ogc:comparisonOps>)
* </li>
* </ul>
* </p>
*
* @param xmlStream
* cursor must point at the <code>START_ELEMENT</code> event (<ogc:comparisonOps>), points at the
* corresponding <code>END_ELEMENT</code> event (</ogc:comparisonOps>) afterwards
* @return corresponding {@link Expression} object
* @throws XMLParsingException
* if the element is not a valid "ogc:comparisonOps" element
* @throws XMLStreamException
*/
public static ComparisonOperator parseComparisonOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
ComparisonOperator comparisonOperator = null;
// check if element name is a valid comparison operator element
ComparisonOperator.SubType type = elementNameToComparisonOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT",
xmlStream.getName(),
elemNames( ComparisonOperator.SubType.class,
comparisonOperatorTypeToElementName ) );
throw new XMLParsingException( xmlStream, msg );
}
switch ( type ) {
case PROPERTY_IS_EQUAL_TO:
case PROPERTY_IS_GREATER_THAN:
case PROPERTY_IS_GREATER_THAN_OR_EQUAL_TO:
case PROPERTY_IS_LESS_THAN:
case PROPERTY_IS_LESS_THAN_OR_EQUAL_TO:
case PROPERTY_IS_NOT_EQUAL_TO:
comparisonOperator = parseBinaryComparisonOperator( xmlStream, type );
break;
case PROPERTY_IS_BETWEEN:
comparisonOperator = parsePropertyIsBetweenOperator( xmlStream );
break;
case PROPERTY_IS_LIKE:
comparisonOperator = parsePropertyIsLikeOperator( xmlStream );
break;
case PROPERTY_IS_NULL:
comparisonOperator = parsePropertyIsNullOperator( xmlStream );
break;
}
return comparisonOperator;
}
private static Operator parseOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
Operator operator = null;
// check if element name is a valid operator element
Operator.Type type = elementNameToOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String expectedList = elemNames( Operator.Type.class, logicalOperatorTypeToElementName ) + ", "
+ elemNames( Operator.Type.class, spatialOperatorTypeToElementName ) + ", "
+ elemNames( Operator.Type.class, comparisonOperatorTypeToElementName );
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT", xmlStream.getName(), expectedList );
throw new XMLParsingException( xmlStream, msg );
}
switch ( type ) {
case COMPARISON:
LOG.debug( "Building comparison operator" );
operator = parseComparisonOperator( xmlStream );
break;
case LOGICAL:
LOG.debug( "Building logical operator" );
operator = parseLogicalOperator( xmlStream );
break;
case SPATIAL:
LOG.debug( "Building spatial operator" );
operator = parseSpatialOperator( xmlStream );
break;
}
return operator;
}
private static IdFilter parseIdFilter( XMLStreamReader xmlStream )
throws XMLStreamException {
Set<String> matchingIds = new HashSet<String>(); | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 739 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 767 |
ValueReference propName = parsePropertyName( xmlStream );
nextElement( xmlStream );
return new PropertyIsNull( propName, null );
}
private static LogicalOperator parseLogicalOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
LogicalOperator logicalOperator = null;
// check if element name is a valid logical operator element
LogicalOperator.SubType type = elementNameToLogicalOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT",
xmlStream.getName(),
elemNames( LogicalOperator.SubType.class,
logicalOperatorTypeToElementName ) );
throw new XMLParsingException( xmlStream, msg );
}
switch ( type ) {
case AND: {
List<Operator> innerOperators = new ArrayList<Operator>();
while ( nextElement( xmlStream ) == START_ELEMENT ) {
innerOperators.add( parseOperator( xmlStream ) );
}
if ( innerOperators.size() < 2 ) {
String msg = "Error while parsing And operator. Must have at least two arguments.";
throw new XMLParsingException( xmlStream, msg );
}
logicalOperator = new And( innerOperators.toArray( new Operator[innerOperators.size()] ) );
break;
}
case OR: {
List<Operator> innerOperators = new ArrayList<Operator>();
while ( nextElement( xmlStream ) == START_ELEMENT ) {
innerOperators.add( parseOperator( xmlStream ) );
}
if ( innerOperators.size() < 2 ) {
String msg = "Error while parsing Or operator. Must have at least two arguments.";
throw new XMLParsingException( xmlStream, msg );
}
logicalOperator = new Or( innerOperators.toArray( new Operator[innerOperators.size()] ) );
break;
}
case NOT: {
nextElement( xmlStream );
Operator parameter = parseOperator( xmlStream );
logicalOperator = new Not( parameter );
nextElement( xmlStream );
break;
}
}
return logicalOperator;
}
private static SpatialOperator parseSpatialOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
SpatialOperator spatialOperator = null;
require( xmlStream, START_ELEMENT );
// check if element name is a valid spatial operator element name
SpatialOperator.SubType type = elementNameToSpatialOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT",
xmlStream.getName(),
elemNames( SpatialOperator.SubType.class,
spatialOperatorTypeToElementName ) );
throw new XMLParsingException( xmlStream, msg );
}
nextElement( xmlStream ); | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 741 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 769 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 933 |
return new PropertyIsNull( propName, null );
}
private static LogicalOperator parseLogicalOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
LogicalOperator logicalOperator = null;
// check if element name is a valid logical operator element
LogicalOperator.SubType type = elementNameToLogicalOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT",
xmlStream.getName(),
elemNames( LogicalOperator.SubType.class,
logicalOperatorTypeToElementName ) );
throw new XMLParsingException( xmlStream, msg );
}
switch ( type ) {
case AND: {
List<Operator> innerOperators = new ArrayList<Operator>();
while ( nextElement( xmlStream ) == START_ELEMENT ) {
innerOperators.add( parseOperator( xmlStream ) );
}
if ( innerOperators.size() < 2 ) {
String msg = "Error while parsing And operator. Must have at least two arguments.";
throw new XMLParsingException( xmlStream, msg );
}
logicalOperator = new And( innerOperators.toArray( new Operator[innerOperators.size()] ) );
break;
}
case OR: {
List<Operator> innerOperators = new ArrayList<Operator>();
while ( nextElement( xmlStream ) == START_ELEMENT ) {
innerOperators.add( parseOperator( xmlStream ) );
}
if ( innerOperators.size() < 2 ) {
String msg = "Error while parsing Or operator. Must have at least two arguments.";
throw new XMLParsingException( xmlStream, msg );
}
logicalOperator = new Or( innerOperators.toArray( new Operator[innerOperators.size()] ) );
break;
}
case NOT: {
nextElement( xmlStream );
Operator parameter = parseOperator( xmlStream );
logicalOperator = new Not( parameter );
nextElement( xmlStream );
break;
}
}
return logicalOperator;
}
private static SpatialOperator parseSpatialOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
SpatialOperator spatialOperator = null;
require( xmlStream, START_ELEMENT );
// check if element name is a valid spatial operator element name
SpatialOperator.SubType type = elementNameToSpatialOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT",
xmlStream.getName(),
elemNames( SpatialOperator.SubType.class,
spatialOperatorTypeToElementName ) );
throw new XMLParsingException( xmlStream, msg );
}
nextElement( xmlStream ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3SurfacePatchReader.java | 174 |
| org/deegree/gml/geometry/GML3SurfacePatchReader.java | 236 |
private Cone parseCone( XMLStreamReaderWrapper xmlStream, ICRS defaultCRS )
throws XMLStreamException, XMLParsingException, UnknownCRSException {
validateAttribute( xmlStream, "horizontalCurveType", "circularArc3Points" );
validateAttribute( xmlStream, "verticalCurveType", "linear" );
xmlStream.nextTag();
xmlStream.require( START_ELEMENT, gmlNs, "row" );
List<Points> grid = new ArrayList<Points>();
while ( xmlStream.getLocalName().equals( "row" ) ) {
xmlStream.nextTag();
List<Point> currentRow = new LinkedList<Point>();
if ( xmlStream.getLocalName().equals( "posList" ) ) {
currentRow = geometryParser.parsePosList( xmlStream, defaultCRS );
xmlStream.nextTag();
} else {
while ( xmlStream.getLocalName().equals( "pos" ) || xmlStream.getLocalName().equals( "pointProperty" ) ) {
if ( xmlStream.getLocalName().equals( "pos" ) ) {
Point point = geometryParser.parsePoint( xmlStream, defaultCRS );
currentRow.add( point );
} else {
Point point = geometryParser.parsePointProperty( xmlStream, defaultCRS );
currentRow.add( point );
}
xmlStream.nextTag();
}
}
grid.add( geomFac.createPoints( currentRow ) );
xmlStream.require( END_ELEMENT, gmlNs, "row" );
xmlStream.nextTag();
}
xmlStream.require( START_ELEMENT, gmlNs, "rows" );
xmlStream.getElementTextAsPositiveInteger(); // redundant; one can determine it from the grid
xmlStream.require( END_ELEMENT, gmlNs, "rows" );
xmlStream.nextTag();
xmlStream.require( START_ELEMENT, gmlNs, "columns" );
xmlStream.getElementTextAsPositiveInteger(); // redundant; one can determine it from the grid
xmlStream.require( END_ELEMENT, gmlNs, "columns" );
xmlStream.nextTag();
xmlStream.require( END_ELEMENT, gmlNs, "Cone" ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3SurfacePatchReader.java | 177 |
| org/deegree/gml/geometry/GML3SurfacePatchReader.java | 239 |
| org/deegree/gml/geometry/GML3SurfacePatchReader.java | 301 |
validateAttribute( xmlStream, "verticalCurveType", "linear" );
xmlStream.nextTag();
xmlStream.require( START_ELEMENT, gmlNs, "row" );
List<Points> grid = new ArrayList<Points>();
while ( xmlStream.getLocalName().equals( "row" ) ) {
xmlStream.nextTag();
List<Point> currentRow = new LinkedList<Point>();
if ( xmlStream.getLocalName().equals( "posList" ) ) {
currentRow = geometryParser.parsePosList( xmlStream, defaultCRS );
xmlStream.nextTag();
} else {
while ( xmlStream.getLocalName().equals( "pos" ) || xmlStream.getLocalName().equals( "pointProperty" ) ) {
if ( xmlStream.getLocalName().equals( "pos" ) ) {
Point point = geometryParser.parsePoint( xmlStream, defaultCRS );
currentRow.add( point );
} else {
Point point = geometryParser.parsePointProperty( xmlStream, defaultCRS );
currentRow.add( point );
}
xmlStream.nextTag();
}
}
grid.add( geomFac.createPoints( currentRow ) );
xmlStream.require( END_ELEMENT, gmlNs, "row" );
xmlStream.nextTag();
}
xmlStream.require( START_ELEMENT, gmlNs, "rows" );
xmlStream.getElementTextAsPositiveInteger(); // redundant; one can determine it from the grid
xmlStream.require( END_ELEMENT, gmlNs, "rows" );
xmlStream.nextTag();
xmlStream.require( START_ELEMENT, gmlNs, "columns" );
xmlStream.getElementTextAsPositiveInteger(); // redundant; one can determine it from the grid
xmlStream.require( END_ELEMENT, gmlNs, "columns" );
xmlStream.nextTag();
xmlStream.require( END_ELEMENT, gmlNs, "Cone" ); | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 285 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 286 |
xmlStream.require( XMLStreamConstants.END_ELEMENT, OGC_NS, "Filter" );
return filter;
}
/**
* Returns the object representation for the given <code>ogc:expression</code> element event that the cursor of the
* associated <code>XMLStreamReader</code> points at.
* <p>
* The element must be one of the following:
* <ul>
* <li>ogc:Add</li>
* <li>ogc:Sub</li>
* <li>ogc:Div</li>
* <li>ogc:Mul</li>
* <li>ogc:PropertyName</li>
* <li>ogc:Literal</li>
* <li>ogc:Function</li>
* <li>substitution for ogc:expression (handled by {@link CustomExpression} instance)</li>
* </ul>
* </p>
* <p>
* <ul>
* <li>Precondition: cursor must point at the <code>START_ELEMENT</code> event (<ogc:expression>)</li>
* <li>Postcondition: cursor points at the corresponding <code>END_ELEMENT</code> event (</ogc:expression>)</li>
* </ul>
* </p>
*
* @param xmlStream
* cursor must point at the <code>START_ELEMENT</code> event (<ogc:expression>), points at the
* corresponding <code>END_ELEMENT</code> event (</ogc:expression>) afterwards
* @return corresponding {@link Expression} object
* @throws XMLParsingException
* if the element is not a valid "ogc:expression" element
* @throws XMLStreamException
*/
public static Expression parseExpression( XMLStreamReader xmlStream )
throws XMLStreamException {
Expression expression = null;
// check if element name is a valid expression element
require( xmlStream, START_ELEMENT );
Expression.Type type = elementNameToExpressionType.get( xmlStream.getName() );
if ( type == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT", xmlStream.getName(),
elemNames( Expression.Type.class, expressionTypeToElementName ) );
throw new XMLParsingException( xmlStream, msg );
}
switch ( type ) {
case ADD: {
nextElement( xmlStream );
Expression param1 = parseExpression( xmlStream );
nextElement( xmlStream );
Expression param2 = parseExpression( xmlStream );
expression = new Add( param1, param2 );
nextElement( xmlStream );
break;
}
case SUB: {
nextElement( xmlStream );
Expression param1 = parseExpression( xmlStream );
nextElement( xmlStream );
Expression param2 = parseExpression( xmlStream );
expression = new Sub( param1, param2 );
nextElement( xmlStream );
break;
}
case MUL: {
nextElement( xmlStream );
Expression param1 = parseExpression( xmlStream );
nextElement( xmlStream );
Expression param2 = parseExpression( xmlStream );
expression = new Mul( param1, param2 );
nextElement( xmlStream );
break;
}
case DIV: {
nextElement( xmlStream );
Expression param1 = parseExpression( xmlStream );
nextElement( xmlStream );
Expression param2 = parseExpression( xmlStream );
expression = new Div( param1, param2 );
nextElement( xmlStream );
break;
}
case VALUE_REFERENCE: {
expression = parsePropertyName( xmlStream ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML2GeometryReader.java | 858 |
| org/deegree/gml/geometry/GML3GeometryBaseReader.java | 209 |
}
/**
* @param xmlStream
* @return
* @throws XMLStreamException
*/
protected double[] parseCoordType( XMLStreamReaderWrapper xmlStream )
throws XMLStreamException {
int event = xmlStream.nextTag();
// must be a 'gml:X' element
if ( event != XMLStreamConstants.START_ELEMENT || !GML_X.equals( xmlStream.getName() ) ) {
String msg = "Invalid 'gml:coords' element. Must contain an 'gml:X' element.";
throw new XMLParsingException( xmlStream, msg );
}
double x = xmlStream.getElementTextAsDouble();
event = xmlStream.nextTag();
if ( event == XMLStreamConstants.END_ELEMENT ) {
return new double[] { x };
}
// must be a 'gml:Y' element
if ( event != XMLStreamConstants.START_ELEMENT || !GML_Y.equals( xmlStream.getName() ) ) {
String msg = "Invalid 'gml:coords' element. Second child element must be a 'gml:Y' element.";
throw new XMLParsingException( xmlStream, msg );
}
double y = xmlStream.getElementTextAsDouble();
event = xmlStream.nextTag();
if ( event == XMLStreamConstants.END_ELEMENT ) {
return new double[] { x, y };
}
// must be a 'gml:Z' element
if ( event != XMLStreamConstants.START_ELEMENT || !GML_Z.equals( xmlStream.getName() ) ) {
String msg = "Invalid 'gml:coords' element. Third child element must be a 'gml:Z' element.";
throw new XMLParsingException( xmlStream, msg );
}
double z = xmlStream.getElementTextAsDouble();
event = xmlStream.nextTag();
if ( event != XMLStreamConstants.END_ELEMENT ) {
xmlStream.skipElement();
}
return new double[] { x, y, z };
} | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 148 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 151 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 158 |
private static final QName GML_OBJECT_ID_ELEMENT = new QName( OGC_NS, "GmlObjectId" );
private static final Map<Expression.Type, QName> expressionTypeToElementName = new HashMap<Expression.Type, QName>();
private static final Map<QName, Expression.Type> elementNameToExpressionType = new HashMap<QName, Expression.Type>();
private static final Map<QName, Operator.Type> elementNameToOperatorType = new HashMap<QName, Operator.Type>();
private static final Map<QName, SpatialOperator.SubType> elementNameToSpatialOperatorType = new HashMap<QName, SpatialOperator.SubType>();
private static final Map<SpatialOperator.SubType, QName> spatialOperatorTypeToElementName = new HashMap<SpatialOperator.SubType, QName>();
private static final Map<QName, ComparisonOperator.SubType> elementNameToComparisonOperatorType = new HashMap<QName, ComparisonOperator.SubType>();
private static final Map<ComparisonOperator.SubType, QName> comparisonOperatorTypeToElementName = new HashMap<ComparisonOperator.SubType, QName>();
private static final Map<QName, LogicalOperator.SubType> elementNameToLogicalOperatorType = new HashMap<QName, LogicalOperator.SubType>();
private static final Map<LogicalOperator.SubType, QName> logicalOperatorTypeToElementName = new HashMap<LogicalOperator.SubType, QName>(); | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 648 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 670 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 800 |
return new Literal<TypedObjectNode>( value, null );
}
private static GenericXMLElement parseElement( XMLStreamReader xmlStream )
throws IllegalArgumentException, XMLStreamException {
Map<QName, PrimitiveValue> attrs = parseAttrs( xmlStream );
List<TypedObjectNode> children = new ArrayList<TypedObjectNode>();
while ( xmlStream.next() != END_ELEMENT ) {
int eventType = xmlStream.getEventType();
if ( eventType == START_ELEMENT ) {
children.add( parseElement( xmlStream ) );
} else if ( eventType == CHARACTERS || eventType == CDATA ) {
children.add( new PrimitiveValue( xmlStream.getText() ) );
}
}
return new GenericXMLElement( xmlStream.getName(), null, attrs, children );
}
private static Map<QName, PrimitiveValue> parseAttrs( XMLStreamReader xmlStream ) {
Map<QName, PrimitiveValue> attrs = new LinkedHashMap<QName, PrimitiveValue>();
for ( int i = 0; i < xmlStream.getAttributeCount(); i++ ) {
QName name = xmlStream.getAttributeName( i );
String value = xmlStream.getAttributeValue( i );
PrimitiveValue xmlValue = new PrimitiveValue( value );
attrs.put( name, xmlValue );
}
return attrs;
}
private static ValueReference parsePropertyName( XMLStreamReader xmlStream ) | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3CurveSegmentReader.java | 439 |
| org/deegree/gml/geometry/GML3CurveSegmentReader.java | 507 |
xmlStream.nextTag();
Points points = parseControlPoints( xmlStream, defaultCRS );
// TODO are the any more semantic constraints to be considered?
int degree = xmlStream.getElementTextAsPositiveInteger( gmlNs, "degree" );
List<Knot> knots = new LinkedList<Knot>();
while ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
if ( !"knot".equals( xmlStream.getLocalName() ) ) {
break;
}
xmlStream.nextTag();
xmlStream.require( XMLStreamConstants.START_ELEMENT, gmlNs, "Knot" );
xmlStream.nextTag();
double value = xmlStream.getElementTextAsDouble( gmlNs, "value" );
xmlStream.nextTag();
int multiplicity = xmlStream.getElementTextAsPositiveInteger( gmlNs, "multiplicity" );
xmlStream.nextTag();
double weight = xmlStream.getElementTextAsDouble( gmlNs, "weight" );
xmlStream.nextTag();
xmlStream.require( XMLStreamConstants.END_ELEMENT, gmlNs, "Knot" );
xmlStream.nextTag();
xmlStream.require( XMLStreamConstants.END_ELEMENT, gmlNs, "knot" );
knots.add( new Knot( value, multiplicity, weight ) );
}
if ( knots.size() != 2 ) { | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML2GeometryReader.java | 927 |
| org/deegree/gml/geometry/GML3GeometryBaseReader.java | 188 |
}
List<Point> points = new ArrayList<Point>( tuples.size() );
for ( int i = 0; i < tuples.size(); i++ ) {
StringTokenizer coordinateTokenizer = new StringTokenizer( tuples.get( i ), coordinateSeparator );
List<String> tokens = new ArrayList<String>();
while ( coordinateTokenizer.hasMoreTokens() ) {
tokens.add( coordinateTokenizer.nextToken() );
}
double[] tuple = new double[tokens.size()];
for ( int j = 0; j < tuple.length; j++ ) {
try {
tuple[j] = Double.parseDouble( tokens.get( j ) );
} catch ( NumberFormatException e ) {
String msg = "Value '" + tokens.get( j ) + "' cannot be parsed as a double.";
throw new XMLParsingException( xmlStream, msg );
}
}
points.add( geomFac.createPoint( null, tuple, crs ) );
}
return points;
} | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 688 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 713 |
return new ValueReference( propName, new NamespaceBindings( xmlStream.getNamespaceContext(), prefixes ) );
}
private static PropertyIsBetween parsePropertyIsBetweenOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
// this is a deegree extension over Filter 1.0.0 spec.
boolean matchCase = getAttributeValueAsBoolean( xmlStream, null, "matchCase", true );
nextElement( xmlStream );
Expression expression = parseExpression( xmlStream );
nextElement( xmlStream );
xmlStream.require( START_ELEMENT, OGC_NS, "LowerBoundary" );
nextElement( xmlStream );
Expression lowerBoundary = parseExpression( xmlStream );
nextElement( xmlStream ); // </ expression >
nextElement( xmlStream ); // </LowerBoundary>
xmlStream.require( START_ELEMENT, OGC_NS, "UpperBoundary" );
nextElement( xmlStream );
Expression upperBoundary = parseExpression( xmlStream );
nextElement( xmlStream ); // </ expression >
nextElement( xmlStream ); // </UowerBoundary>
return new PropertyIsBetween( expression, lowerBoundary, upperBoundary, matchCase, null );
}
private static PropertyIsLike parsePropertyIsLikeOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
// this is a deegree extension over Filter 1.0.0
boolean matchCase = getAttributeValueAsBoolean( xmlStream, null, "matchCase", true );
String wildCard = getRequiredAttributeValue( xmlStream, "wildCard" );
String singleChar = getRequiredAttributeValue( xmlStream, "singleChar" );
String escapeChar = getRequiredAttributeValue( xmlStream, "escape" ); | |
| File | Line |
|---|---|
| org/deegree/gml/props/GMLStdPropsReader.java | 113 |
| org/deegree/gml/props/GMLStdPropsReader.java | 142 |
private GMLStdProps readGML2( XMLStreamReader xmlStream )
throws XMLStreamException {
int event = xmlStream.nextTag();
// 'gml:metaDataProperty' (0...unbounded)
TypedObjectNode[] metadata = null;
while ( event == START_ELEMENT && new QName( GMLNS, "metaDataProperty" ).equals( xmlStream.getName() ) ) {
readMetadataProperty( xmlStream );
xmlStream.nextTag();
}
// 'gml:description' (0...1)
StringOrRef description = null;
if ( event == START_ELEMENT && new QName( GMLNS, "description" ).equals( xmlStream.getName() ) ) {
description = readDescription( xmlStream );
xmlStream.nextTag();
}
// 'gml:name' (0...1)
List<CodeType> names = new LinkedList<CodeType>();
while ( event == START_ELEMENT && new QName( GMLNS, "name" ).equals( xmlStream.getName() ) ) {
names.add( readName( xmlStream ) );
xmlStream.nextTag();
}
return new GMLStdPropsImpl( metadata, description, null, names.toArray( new CodeType[names.size()] ) );
}
private GMLStdProps readGML31( XMLStreamReader xmlStream ) | |
| File | Line |
|---|---|
| org/deegree/gml/schema/GMLAppSchemaReader.java | 152 |
| org/deegree/gml/schema/GMLAppSchemaReader.java | 218 |
analyzer = new GMLSchemaInfoSet( gmlVersion, schemaUrls );
this.gmlVersion = analyzer.getVersion();
for ( Entry<String, String> nsToPrefix : analyzer.getNamespacePrefixes().entrySet() ) {
this.nsToPrefix.put( nsToPrefix.getKey(), nsToPrefix.getValue() );
this.prefixToNs.put( nsToPrefix.getValue(), nsToPrefix.getKey() );
}
if ( namespaceHints != null ) {
for ( Entry<String, String> prefixToNs : namespaceHints.entrySet() ) {
nsToPrefix.put( prefixToNs.getValue(), prefixToNs.getKey() );
this.prefixToNs.put( prefixToNs.getKey(), prefixToNs.getValue() );
}
}
List<XSElementDeclaration> featureElementDecls = analyzer.getFeatureElementDeclarations( null, false );
// feature element declarations
for ( XSElementDeclaration elementDecl : featureElementDecls ) {
QName ftName = createQName( elementDecl.getNamespace(), elementDecl.getName() );
ftNameToFtElement.put( ftName, elementDecl ); | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 529 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 529 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 639 |
}
private static Operator parseOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
Operator operator = null;
// check if element name is a valid operator element
Operator.Type type = elementNameToOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String expectedList = elemNames( Operator.Type.class, logicalOperatorTypeToElementName ) + ", "
+ elemNames( Operator.Type.class, spatialOperatorTypeToElementName ) + ", "
+ elemNames( Operator.Type.class, comparisonOperatorTypeToElementName );
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT", xmlStream.getName(), expectedList );
throw new XMLParsingException( xmlStream, msg );
}
switch ( type ) {
case COMPARISON:
LOG.debug( "Building comparison operator" );
operator = parseComparisonOperator( xmlStream );
break;
case LOGICAL:
LOG.debug( "Building logical operator" );
operator = parseLogicalOperator( xmlStream );
break;
case SPATIAL:
LOG.debug( "Building spatial operator" );
operator = parseSpatialOperator( xmlStream );
break;
}
return operator;
}
private static IdFilter parseIdFilter( XMLStreamReader xmlStream )
throws XMLStreamException { | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3CurveSegmentReader.java | 791 |
| org/deegree/gml/geometry/GML3CurveSegmentReader.java | 844 |
private Geodesic parseGeodesic( XMLStreamReaderWrapper xmlStream, ICRS defaultCRS )
throws XMLParsingException, XMLStreamException, UnknownCRSException {
validateInterpolationAttribute( xmlStream, "geodesic" );
// the #parseControlPoints(String) method is not used here, because the GML 3.1.1 schema defines a slightly
// different model here (no 'gml:coordinates' and no 'gml:coordinates' element)
List<Point> points = null;
if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
String name = xmlStream.getLocalName();
if ( "posList".equals( name ) ) {
points = parsePosList( xmlStream, defaultCRS );
xmlStream.nextTag();
} else {
points = new LinkedList<Point>();
do {
name = xmlStream.getLocalName();
if ( "pos".equals( name ) ) {
points.add( parseDirectPositionType( xmlStream, defaultCRS ) );
} else if ( "pointProperty".equals( name ) ) {
points.add( geometryParser.parsePointProperty( xmlStream, defaultCRS ) );
} else {
break;
}
} while ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT );
}
}
if ( points.size() != 2 ) { | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 220 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 223 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 248 |
ComparisonOperator.SubType.PROPERTY_IS_NULL );
}
private static void addElementToExpressionMapping( QName elementName, Expression.Type type ) {
elementNameToExpressionType.put( elementName, type );
expressionTypeToElementName.put( type, elementName );
}
private static void addElementToSpatialOperatorMapping( QName elementName, SpatialOperator.SubType type ) {
elementNameToOperatorType.put( elementName, Operator.Type.SPATIAL );
elementNameToSpatialOperatorType.put( elementName, type );
spatialOperatorTypeToElementName.put( type, elementName );
}
private static void addElementToLogicalOperatorMapping( QName elementName, LogicalOperator.SubType type ) {
elementNameToOperatorType.put( elementName, Operator.Type.LOGICAL );
elementNameToLogicalOperatorType.put( elementName, type );
logicalOperatorTypeToElementName.put( type, elementName );
}
private static void addElementToComparisonOperatorMapping( QName elementName, ComparisonOperator.SubType type ) {
elementNameToOperatorType.put( elementName, Operator.Type.COMPARISON );
elementNameToComparisonOperatorType.put( elementName, type );
comparisonOperatorTypeToElementName.put( type, elementName );
} | |
| File | Line |
|---|---|
| org/deegree/gml/props/GMLStdPropsWriter.java | 132 |
| org/deegree/gml/props/GMLStdPropsWriter.java | 159 |
private void writeGML3( GMLStdProps props )
throws XMLStreamException {
StringOrRef description = props.getDescription();
if ( description != null ) {
writer.writeStartElement( "gml", "description", gmlNs );
if ( description.getRef() != null ) {
writer.writeAttribute( XLNNS, "xlink", description.getRef() );
}
if ( description.getString() != null ) {
writer.writeCharacters( description.getString() );
}
writer.writeEndElement();
}
for ( CodeType name : props.getNames() ) {
writer.writeStartElement( "gml", "name", gmlNs );
if ( name.getCodeSpace() != null ) {
writer.writeAttribute( "codeSpace", name.getCodeSpace() );
}
if ( name.getCode() != null ) {
writer.writeCharacters( name.getCode() );
}
writer.writeEndElement();
}
} | |
| File | Line |
|---|---|
| org/deegree/gml/props/GMLStdPropsWriter.java | 103 |
| org/deegree/gml/props/GMLStdPropsWriter.java | 132 |
| org/deegree/gml/props/GMLStdPropsWriter.java | 159 |
private void writeGML2( GMLStdProps props )
throws XMLStreamException {
StringOrRef description = props.getDescription();
if ( description != null ) {
writer.writeStartElement( "gml", "description", gmlNs );
if ( description.getRef() != null ) {
writer.writeAttribute( XLNNS, "xlink", description.getRef() );
}
if ( description.getString() != null ) {
writer.writeCharacters( description.getString() );
}
writer.writeEndElement();
}
for ( CodeType name : props.getNames() ) {
writer.writeStartElement( "gml", "name", gmlNs );
if ( name.getCodeSpace() != null ) {
writer.writeAttribute( "codeSpace", name.getCodeSpace() );
}
if ( name.getCode() != null ) {
writer.writeCharacters( name.getCode() );
}
writer.writeEndElement(); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML2GeometryReader.java | 488 |
| org/deegree/gml/geometry/GML3GeometryReader.java | 2519 |
throws XMLStreamException {
Point point = null;
String href = xmlStream.getAttributeValue( CommonNamespaces.XLNNS, "href" );
if ( href != null && href.length() > 0 ) {
LOG.debug( "Found geometry reference (xlink): '" + href + "'" );
point = new PointReference( idContext, href, xmlStream.getSystemId() );
idContext.addReference( (GeometryReference<?>) point );
if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
String msg = "Unexpected element '" + xmlStream.getName()
+ "'. Point value has already been specified using xlink.";
throw new XMLParsingException( xmlStream, msg );
}
} else if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
// must be a 'gml:Point' element
if ( !xmlStream.getLocalName().equals( "Point" ) ) {
String msg = "Error in point property element. Expected a 'gml:Point' element.";
throw new XMLParsingException( xmlStream, msg );
}
point = parsePoint( xmlStream, crs ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML2GeometryReader.java | 417 |
| org/deegree/gml/geometry/GML3GeometryReader.java | 2568 |
throws XMLStreamException {
LineString lineString = null;
String href = xmlStream.getAttributeValue( CommonNamespaces.XLNNS, "href" );
if ( href != null && href.length() > 0 ) {
LOG.debug( "Found geometry reference (xlink): '" + href + "'" );
lineString = new LineStringReference( idContext, href, xmlStream.getSystemId() );
idContext.addReference( (GeometryReference<?>) lineString );
if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
String msg = "Unexpected element '" + xmlStream.getName()
+ "'. LineString value has already been specified using xlink.";
throw new XMLParsingException( xmlStream, msg );
}
} else if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
// must be a 'gml:LineString' element
if ( !xmlStream.getLocalName().equals( "LineString" ) ) {
String msg = "Error in LineString property element. Expected a 'gml:LineString' element.";
throw new XMLParsingException( xmlStream, msg );
}
lineString = parseLineString( xmlStream, crs ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML2GeometryReader.java | 345 |
| org/deegree/gml/geometry/GML3GeometryReader.java | 2661 |
throws XMLStreamException {
Polygon polygon = null;
String href = xmlStream.getAttributeValue( CommonNamespaces.XLNNS, "href" );
if ( href != null && href.length() > 0 ) {
LOG.debug( "Found geometry reference (xlink): '" + href + "'" );
polygon = new PolygonReference( idContext, href, xmlStream.getSystemId() );
idContext.addReference( (GeometryReference<?>) polygon );
if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
String msg = "Unexpected element '" + xmlStream.getName()
+ "'. Polygon value has already been specified using xlink.";
throw new XMLParsingException( xmlStream, msg );
}
} else if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
// must be a 'gml:Polygon' element
if ( !xmlStream.getLocalName().equals( "Polygon" ) ) {
String msg = "Error in polygon property element. Expected a 'gml:Polygon' element.";
throw new XMLParsingException( xmlStream, msg );
}
polygon = parsePolygon( xmlStream, crs ); | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 632 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 654 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 781 |
Map<QName, PrimitiveValue> attrs = parseAttrs( xmlStream );
List<TypedObjectNode> children = new ArrayList<TypedObjectNode>();
while ( xmlStream.next() != END_ELEMENT ) {
int eventType = xmlStream.getEventType();
if ( eventType == START_ELEMENT ) {
children.add( parseElement( xmlStream ) );
} else if ( eventType == CHARACTERS || eventType == CDATA ) {
children.add( new PrimitiveValue( xmlStream.getText() ) );
}
}
TypedObjectNode value = null;
if ( attrs == null || children.size() == 1 ) {
value = children.get( 0 );
} else {
value = new GenericXMLElement( null, null, attrs, children );
}
return new Literal<TypedObjectNode>( value, null ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3CurveSegmentReader.java | 308 |
| org/deegree/gml/geometry/GML3CurveSegmentReader.java | 599 |
+ points.size() + ".";
throw new XMLParsingException( xmlStream, msg );
}
xmlStream.require( XMLStreamConstants.START_ELEMENT, gmlNs, "radius" );
Length radius = parseLengthType( xmlStream );
xmlStream.nextTag();
Angle startAngle = null;
if ( xmlStream.getEventType() == START_ELEMENT ) {
String localName = xmlStream.getName().getLocalPart();
if ( "startAngle".equals( localName ) ) {
startAngle = parseAngleType( xmlStream );
xmlStream.nextTag();
}
}
Angle endAngle = null;
if ( xmlStream.getEventType() == START_ELEMENT ) {
String localName = xmlStream.getName().getLocalPart();
if ( "endAngle".equals( localName ) ) {
endAngle = parseAngleType( xmlStream );
xmlStream.nextTag();
}
} | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 571 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 594 |
String id = xmlStream.getAttributeValue( null, "fid" );
if ( id == null || id.length() == 0 ) {
String msg = Messages.getMessage( "FILTER_PARSER_ID_FILTER_NO_ID", FEATURE_ID_ELEMENT,
FID_ATTR_NAME );
throw new XMLParsingException( xmlStream, msg );
}
matchingIds.add( id );
nextElement( xmlStream );
xmlStream.require( XMLStreamConstants.END_ELEMENT, OGC_NS, "FeatureId" );
} else {
String msg = Messages.getMessage( "FILTER_PARSER_ID_FILTER_UNEXPECTED_ELEMENT", childElementName,
GML_OBJECT_ID_ELEMENT, FEATURE_ID_ELEMENT );
throw new XMLParsingException( xmlStream, msg );
}
nextElement( xmlStream );
}
return new IdFilter( matchingIds );
}
private static ComparisonOperator parseBinaryComparisonOperator( XMLStreamReader xmlStream, SubType type )
throws XMLStreamException {
BinaryComparisonOperator comparisonOperator = null;
// this is a deegree extension over Filter 1.0.0 spec.
boolean matchCase = getAttributeValueAsBoolean( xmlStream, null, "matchCase", true ); | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 458 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 458 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 451 |
return expr.parse100( xmlStream );
}
/**
* Returns the object representation for the given <code>ogc:comparisonOps</code> element event that the cursor of
* the associated <code>XMLStreamReader</code> points at.
* <p>
* The element must be one of the following:
* <ul>
* <li>ogc:PropertyIsEqualTo</li>
* <li>ogc:PropertyIsGreaterThan</li>
* <li>ogc:PropertyIsGreaterThanOrEqualTo</li>
* <li>ogc:PropertyIsLessThan</li>
* <li>ogc:PropertyIsLessThanOrEqualTo</li>
* <li>ogc:PropertyIsNotEqualTo</li>
* <li>ogc:PropertyIsBetween</li>
* <li>ogc:PropertyIsLike</li>
* <li>ogc:PropertyIsNull</li>
* </ul>
* </p>
* <p>
* <ul>
* <li>Precondition: cursor must point at the <code>START_ELEMENT</code> event (<ogc:comparisonOps>)</li>
* <li>Postcondition: cursor points at the corresponding <code>END_ELEMENT</code> event (</ogc:comparisonOps>)
* </li>
* </ul>
* </p>
*
* @param xmlStream
* cursor must point at the <code>START_ELEMENT</code> event (<ogc:comparisonOps>), points at the
* corresponding <code>END_ELEMENT</code> event (</ogc:comparisonOps>) afterwards
* @return corresponding {@link Expression} object
* @throws XMLParsingException
* if the element is not a valid "ogc:comparisonOps" element
* @throws XMLStreamException
*/
public static ComparisonOperator parseComparisonOperator( XMLStreamReader xmlStream )
throws XMLStreamException {
ComparisonOperator comparisonOperator = null;
// check if element name is a valid comparison operator element
ComparisonOperator.SubType type = elementNameToComparisonOperatorType.get( xmlStream.getName() );
if ( type == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNEXPECTED_ELEMENT",
xmlStream.getName(),
elemNames( ComparisonOperator.SubType.class,
comparisonOperatorTypeToElementName ) );
throw new XMLParsingException( xmlStream, msg );
}
switch ( type ) {
case PROPERTY_IS_EQUAL_TO:
case PROPERTY_IS_GREATER_THAN:
case PROPERTY_IS_GREATER_THAN_OR_EQUAL_TO:
case PROPERTY_IS_LESS_THAN:
case PROPERTY_IS_LESS_THAN_OR_EQUAL_TO:
case PROPERTY_IS_NOT_EQUAL_TO:
comparisonOperator = parseBinaryComparisonOperator( xmlStream, type );
break;
case PROPERTY_IS_BETWEEN:
comparisonOperator = parsePropertyIsBetweenOperator( xmlStream );
break;
case PROPERTY_IS_LIKE:
comparisonOperator = parsePropertyIsLikeOperator( xmlStream );
break;
case PROPERTY_IS_NULL:
comparisonOperator = parsePropertyIsNullOperator( xmlStream );
break; | |
| File | Line |
|---|---|
| org/deegree/filter/expression/Add.java | 78 |
| org/deegree/filter/expression/Div.java | 80 |
| org/deegree/filter/expression/Mul.java | 78 |
| org/deegree/filter/expression/Sub.java | 78 |
}
@Override
public <T> TypedObjectNode[] evaluate( T obj, XPathEvaluator<T> xpathEvaluator )
throws FilterEvaluationException {
TypedObjectNode[] values1 = param1.evaluate( obj, xpathEvaluator );
TypedObjectNode[] values2 = param2.evaluate( obj, xpathEvaluator );
List<TypedObjectNode> resultValues = new ArrayList<TypedObjectNode>( values1.length * values2.length );
for ( TypedObjectNode value1 : values1 ) {
if ( value1 != null ) {
try {
BigDecimal bd1 = new BigDecimal( value1.toString() );
for ( TypedObjectNode value2 : values2 ) {
if ( value2 != null ) {
BigDecimal bd2 = new BigDecimal( value2.toString() );
resultValues.add( new PrimitiveValue( bd1.add( bd2 ) ) ); | |
| File | Line |
|---|---|
| org/deegree/feature/xpath/TypedObjectNodeXPathEvaluator.java | 154 |
| org/deegree/feature/xpath/TypedObjectNodeXPathEvaluator.java | 182 |
selectedNodes = xpath.selectNodes( new XMLElementNode( null, element ) );
resultValues = new TypedObjectNode[selectedNodes.size()];
int i = 0;
for ( Object node : selectedNodes ) {
if ( node instanceof XPathNode<?> ) {
resultValues[i++] = ( (XPathNode<?>) node ).getValue();
} else if ( node instanceof String || node instanceof Double || node instanceof Boolean ) {
resultValues[i++] = new PrimitiveValue( node );
} else {
throw new RuntimeException( "Internal error. Encountered unexpected value of type '"
+ node.getClass().getName() + "' (=" + node
+ ") during XPath-evaluation." );
}
}
} catch ( JaxenException e ) {
throw new FilterEvaluationException( e.getMessage() );
}
return resultValues;
} | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 372 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 372 |
expression = parsePropertyName( xmlStream );
break;
}
case LITERAL: {
expression = parseLiteral( xmlStream );
break;
}
case FUNCTION: {
expression = parseFunction( xmlStream );
break;
}
case CUSTOM: {
expression = parseCustomExpression( xmlStream );
break;
}
}
return expression;
}
/**
* Returns the object representation for the given <code>ogc:Function</code> element event that the cursor of the
* associated <code>XMLStreamReader</code> points at.
* <p>
* <ul>
* <li>Precondition: cursor must point at the <code>START_ELEMENT</code> event (<ogc:Function>)</li>
* <li>Postcondition: cursor points at the corresponding <code>END_ELEMENT</code> event (</ogc:Function>)</li>
* </ul>
* </p>
*
* @param xmlStream
* cursor must point at the <code>START_ELEMENT</code> event (<ogc:Function>), points at the
* corresponding <code>END_ELEMENT</code> event (</ogc:Function>) afterwards
* @return corresponding {@link Function} object
* @throws XMLParsingException
* if the element is not a valid "ogc:Function" element
* @throws XMLStreamException
*/
public static Function parseFunction( XMLStreamReader xmlStream )
throws XMLStreamException {
xmlStream.require( START_ELEMENT, OGC_NS, "Function" );
String name = getRequiredAttributeValue( xmlStream, "name" );
nextElement( xmlStream );
List<Expression> params = new ArrayList<Expression>();
while ( xmlStream.getEventType() == START_ELEMENT ) {
params.add( parseExpression( xmlStream ) );
nextElement( xmlStream );
}
xmlStream.require( END_ELEMENT, OGC_NS, "Function" );
Function function = null;
FunctionProvider provider = FunctionManager.getFunctionProvider( name ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML2GeometryReader.java | 559 |
| org/deegree/gml/geometry/GML3GeometryReader.java | 2847 |
throws XMLStreamException {
Geometry geometry = null;
String href = xmlStream.getAttributeValue( CommonNamespaces.XLNNS, "href" );
if ( href != null && href.length() > 0 ) {
LOG.debug( "Found geometry reference (xlink): '" + href + "'" );
geometry = new GeometryReference<Geometry>( idContext, href, xmlStream.getSystemId() );
idContext.addReference( (GeometryReference<?>) geometry );
if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
String msg = "Unexpected element '" + xmlStream.getName()
+ "'. Geometry value has already been specified using xlink.";
throw new XMLParsingException( xmlStream, msg );
}
} else if ( xmlStream.nextTag() == XMLStreamConstants.START_ELEMENT ) {
geometry = parse( xmlStream, crs ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3GeometryBaseReader.java | 99 |
| org/deegree/gml/geometry/GML3GeometryBaseReader.java | 331 |
String s = xmlStream.getElementText();
// don't use String.split(regex) here (speed)
StringTokenizer st = new StringTokenizer( s );
List<String> tokens = new ArrayList<String>();
while ( st.hasMoreTokens() ) {
tokens.add( st.nextToken() );
}
double[] doubles = new double[tokens.size()];
for ( int i = 0; i < doubles.length; i++ ) {
try {
doubles[i] = Double.parseDouble( tokens.get( i ) );
} catch ( NumberFormatException e ) {
String msg = "Value '" + tokens.get( i ) + "' cannot be parsed as a double.";
throw new XMLParsingException( xmlStream, msg );
}
}
return geomFac.createPoint( null, doubles, crs ); | |
| File | Line |
|---|---|
| org/deegree/gml/schema/GMLAppSchemaReader.java | 359 |
| org/deegree/gml/schema/GMLAppSchemaReader.java | 430 |
XSComplexTypeDefinition typeDef = (XSComplexTypeDefinition) featureElementDecl.getTypeDefinition();
// element contents
switch ( typeDef.getContentType() ) {
case XSComplexTypeDefinition.CONTENTTYPE_ELEMENT: {
XSParticle particle = typeDef.getParticle();
int minOccurs = particle.getMinOccurs();
int maxOccurs = particle.getMaxOccursUnbounded() ? -1 : particle.getMaxOccurs();
XSTerm term = particle.getTerm();
switch ( term.getType() ) {
case XSConstants.MODEL_GROUP: {
addPropertyTypes( pts, (XSModelGroup) term, minOccurs, maxOccurs );
break;
}
case XSConstants.ELEMENT_DECLARATION: {
pts.add( buildPropertyType( (XSElementDeclaration) term, minOccurs, maxOccurs ) );
break;
}
case XSConstants.WILDCARD: {
String msg = "Broken GML application schema: Feature element '" + ftName | |
| File | Line |
|---|---|
| org/deegree/gml/schema/GMLSchemaInfoSet.java | 705 |
| org/deegree/gml/schema/GMLSchemaInfoSet.java | 1178 |
case XSComplexTypeDefinition.CONTENTTYPE_ELEMENT: {
LOG.trace( "CONTENTTYPE_ELEMENT" );
XSParticle particle = typeDef.getParticle();
XSTerm term = particle.getTerm();
switch ( term.getType() ) {
case XSConstants.MODEL_GROUP: {
XSModelGroup modelGroup = (XSModelGroup) term;
switch ( modelGroup.getCompositor() ) {
case XSModelGroup.COMPOSITOR_ALL: {
LOG.debug( "Unhandled model group: COMPOSITOR_ALL" );
break;
}
case XSModelGroup.COMPOSITOR_CHOICE:
case XSModelGroup.COMPOSITOR_SEQUENCE: {
LOG.trace( "Found sequence / choice." );
XSObjectList sequence = modelGroup.getParticles();
if ( sequence.getLength() != 1 ) {
LOG.trace( "Length = '" + sequence.getLength() + "' -> cannot be a feature property." ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML2GeometryReader.java | 600 |
| org/deegree/gml/geometry/GML2GeometryReader.java | 653 |
ICRS crs = determineActiveCRS( xmlStream, defaultCRS );
xmlStream.nextTag();
List<Point> points = null;
if ( xmlStream.getEventType() == XMLStreamConstants.START_ELEMENT ) {
String name = xmlStream.getLocalName();
if ( "coordinates".equals( name ) ) {
points = parseCoordinates( xmlStream, crs );
xmlStream.nextTag();
} else {
points = new LinkedList<Point>();
do {
if ( "coord".equals( name ) ) {
double[] coords = parseCoordType( xmlStream );
// anonymous point (no registering necessary)
points.add( geomFac.createPoint( null, coords, crs ) );
} else {
String msg = "Error in 'gml:Envelope' element."; | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3GeometryWriter.java | 244 |
| org/deegree/gml/geometry/GML3GeometryWriter.java | 262 |
case MULTI_CURVE: {
MultiCurve<Curve> multiCurve = (MultiCurve<Curve>) geometry;
startGeometry( "MultiCurve", geometry );
for ( Curve curve : multiCurve ) {
writer.writeStartElement( "gml", "curveMember", gmlNs );
if ( !exportSf && curve.getId() != null && referenceExportStrategy.isObjectExported( curve.getId() ) ) {
writer.writeAttribute( XLNNS, "href", "#" + curve.getId() );
} else if ( curve instanceof CompositeCurve ) {
exportCompositeCurve( (CompositeCurve) curve );
} else {
exportCurve( curve );
}
writer.writeEndElement();
}
writer.writeEndElement(); // MultiCurve | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter100XMLDecoder.java | 898 |
| org/deegree/filter/xml/Filter110XMLDecoder.java | 960 |
Geometry param2 = geomParser.parseGeometryOrBox( wrapper );
spatialOperator = new Within( param1, param2 );
}
}
} catch ( UnknownCRSException e ) {
throw new XMLParsingException( xmlStream, e.getMessage() );
}
nextElement( xmlStream );
return spatialOperator;
}
/**
* Return a String with all element names of the given enum class.
*
* @param enumClass
* @param map
* the operator type -> element name map
* @return a coma separated list of element names
*/
private static String elemNames( Class<? extends Enum<?>> enumClass, Map<? extends Enum<?>, QName> map ) {
List<String> names = new LinkedList<String>();
for ( Enum<?> e : enumClass.getEnumConstants() ) {
QName qname = map.get( e );
if ( qname == null ) { | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3GeometryWriter.java | 311 |
| org/deegree/gml/geometry/GML3GeometryWriter.java | 360 |
MultiSurface<Surface> multiSurface = (MultiSurface<Surface>) geometry;
startGeometry( "MultiSurface", geometry );
for ( Surface surface : multiSurface ) {
writer.writeStartElement( gmlNs, "surfaceMember" );
if ( !exportSf && surface.getId() != null
&& referenceExportStrategy.isObjectExported( surface.getId() ) ) {
writer.writeAttribute( XLNNS, "href", "#" + surface.getId() );
} else if ( surface instanceof CompositeSurface ) {
exportCompositeSurface( (CompositeSurface) surface );
} else {
exportSurface( surface );
}
writer.writeEndElement(); // surfaceMember
}
writer.writeEndElement(); | |
| File | Line |
|---|---|
| org/deegree/feature/xpath/TypedObjectNodeXPathEvaluator.java | 124 |
| org/deegree/feature/xpath/TypedObjectNodeXPathEvaluator.java | 154 |
| org/deegree/feature/xpath/TypedObjectNodeXPathEvaluator.java | 182 |
selectedNodes = xpath.selectNodes( new GMLObjectNode<GMLObject, GMLObject>( null, context ) );
resultValues = new TypedObjectNode[selectedNodes.size()];
int i = 0;
for ( Object node : selectedNodes ) {
if ( node instanceof XPathNode<?> ) {
resultValues[i++] = ( (XPathNode<?>) node ).getValue();
} else if ( node instanceof String || node instanceof Double || node instanceof Boolean ) {
resultValues[i++] = new PrimitiveValue( node );
} else {
throw new RuntimeException( "Internal error. Encountered unexpected value of type '"
+ node.getClass().getName() + "' (=" + node
+ ") during XPath-evaluation." );
}
}
} | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter110XMLDecoder.java | 969 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 1169 |
}
/**
* Return a String with all element names of the given enum class.
*
* @param enumClass
* @param map
* the operator type -> element name map
* @return a coma separated list of element names
*/
private static String elemNames( Class<? extends Enum<?>> enumClass, Map<? extends Enum<?>, QName> map ) {
List<String> names = new LinkedList<String>();
for ( Enum<?> e : enumClass.getEnumConstants() ) {
QName qname = map.get( e );
if ( qname != null ) {
LOG.debug( qname.toString() );
names.add( qname.toString() );
}
}
return ArrayUtils.join( ", ", names );
}
} | |
| File | Line |
|---|---|
| org/deegree/gml/feature/GMLFeatureReader.java | 343 |
| org/deegree/gml/feature/StreamFeatureCollection.java | 178 |
while ( declIter.hasNext() && findConcretePropertyType( propName, activeDecl ) == null ) {
if ( propOccurences < activeDecl.getMinOccurs() ) {
String msg = null;
if ( activeDecl.getMinOccurs() == 1 ) {
msg = Messages.getMessage( "ERROR_PROPERTY_MANDATORY", activeDecl.getName(), ft.getName() );
} else {
msg = Messages.getMessage( "ERROR_PROPERTY_TOO_FEW_OCCURENCES", activeDecl.getName(),
activeDecl.getMinOccurs(), ft.getName() );
}
throw new XMLParsingException( xmlStream, msg );
}
activeDecl = declIter.next();
propOccurences = 0;
}
if ( findConcretePropertyType( propName, activeDecl ) == null ) { | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3GeometryReader.java | 1586 |
| org/deegree/gml/geometry/GML3GeometryReader.java | 1634 |
throws XMLStreamException, UnknownCRSException {
QName elName = xmlStream.getName();
GMLObjectType type = getType( xmlStream );
String gid = parseGeometryId( xmlStream );
ICRS crs = determineActiveCRS( xmlStream, defaultCRS );
List<Property> props = readStandardProperties( xmlStream, type, crs );
List<Triangle> memberPatches = new LinkedList<Triangle>();
xmlStream.require( START_ELEMENT, gmlNs, "trianglePatches" );
while ( xmlStream.nextTag() == START_ELEMENT ) {
memberPatches.add( surfacePatchParser.parseTriangle( xmlStream, crs ) );
}
xmlStream.require( END_ELEMENT, gmlNs, "trianglePatches" ); | |
| File | Line |
|---|---|
| org/deegree/gml/schema/GMLAppSchemaReader.java | 183 |
| org/deegree/gml/schema/GMLAppSchemaReader.java | 244 |
}
}
// geometry element declarations
List<XSElementDeclaration> geometryElementDecls = analyzer.getGeometryElementDeclarations( null, false );
for ( XSElementDeclaration elementDecl : geometryElementDecls ) {
QName elName = createQName( elementDecl.getNamespace(), elementDecl.getName() );
geometryNameToGeometryElement.put( elName, elementDecl );
XSElementDeclaration substitutionElement = elementDecl.getSubstitutionGroupAffiliation();
if ( substitutionElement != null ) {
QName substitutionElementName = createQName( substitutionElement.getNamespace(),
substitutionElement.getName() );
geometryNameToSubstitutionGroupName.put( elName, substitutionElementName );
}
}
}
/**
* Creates a new {@link GMLAppSchemaReader} from the given <code>LSInput</code>s.
*
* @param gmlVersion
* gml version of the schema files, can be null (auto-detect GML version)
* @param namespaceHints
* optional hints (key: prefix, value: namespaces) for generating 'nice' qualified feature type and
* property type names, may be null
* @param inputs
* @throws ClassCastException
* @throws ClassNotFoundException
* @throws InstantiationException
* @throws IllegalAccessException
*/
public GMLAppSchemaReader( GMLVersion gmlVersion, Map<String, String> namespaceHints, LSInput... inputs ) | |
| File | Line |
|---|---|
| org/deegree/filter/xml/Filter110XMLDecoder.java | 420 |
| org/deegree/filter/xml/Filter200XMLDecoder.java | 413 |
xmlStream.require( END_ELEMENT, OGC_NS, "Function" );
Function function = null;
FunctionProvider cf = FunctionManager.getFunctionProvider( name );
if ( cf != null ) {
function = cf.create( params );
} else {
function = new Function( name, params );
}
return function;
}
/**
* Returns the object representation for the given custom <code>ogc:expression</code> element event that the cursor
* of the associated <code>XMLStreamReader</code> points at.
* <p>
* <ul>
* <li>Precondition: cursor must point at the <code>START_ELEMENT</code> event (<ogc:expression>)</li>
* <li>Postcondition: cursor points at the corresponding <code>END_ELEMENT</code> event (</ogc:expression>)</li>
* </ul>
* </p>
*
* @param xmlStream
* cursor must point at the <code>START_ELEMENT</code> event (<ogc:expression>), points at the
* corresponding <code>END_ELEMENT</code> event (</ogc:expression>) afterwards
* @return corresponding {@link CustomExpression} object
* @throws XMLParsingException
* if the element is not a known or valid custom "ogc:expression" element
* @throws XMLStreamException
*/
public static CustomExpression parseCustomExpression( XMLStreamReader xmlStream )
throws XMLStreamException {
CustomExpression expr = CustomExpressionManager.getExpression( xmlStream.getName() );
if ( expr == null ) {
String msg = Messages.getMessage( "FILTER_PARSER_UNKNOWN_CUSTOM_EXPRESSION", xmlStream.getName() );
throw new XMLParsingException( xmlStream, msg );
}
return expr.parse100( xmlStream ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3GeometryBaseReader.java | 252 |
| org/deegree/gml/geometry/GML3GeometryBaseReader.java | 271 |
| org/deegree/gml/geometry/GML3GeometryBaseReader.java | 290 |
protected Length parseLengthType( XMLStreamReaderWrapper xmlStream )
throws XMLStreamException {
String uom = xmlStream.getAttributeValue( null, "uom" );
if ( uom == null ) {
String msg = "Required attribute 'uom' missing in element '" + xmlStream.getName() + "'.";
throw new XMLParsingException( xmlStream, msg );
}
String s = xmlStream.getElementText();
BigDecimal value = new BigDecimal( 0.0 );
try {
value = new BigDecimal( s );
} catch ( NumberFormatException e ) {
String msg = "Error in element '" + xmlStream.getName() + "': expected a double value, but found '" + s
+ "'.";
throw new XMLParsingException( xmlStream, msg );
}
return new Length( value, uom ); | |
| File | Line |
|---|---|
| org/deegree/gml/geometry/GML3GeometryReader.java | 387 |
| org/deegree/gml/geometry/GML3GeometryReader.java | 410 |
if ( geomHierarchy.getPrimitiveElementNames().contains( elName ) ) {
geometry = parseGeometricPrimitive( xmlStream, defaultCRS );
} else if ( ringElements.contains( name ) ) {
geometry = parseAbstractRing( xmlStream, defaultCRS );
} else if ( aggregateElements.contains( name ) ) {
geometry = parseGeometricAggregate( xmlStream, defaultCRS );
} else if ( "GeometricComplex".equals( name ) ) {
geometry = parseGeometricComplex( xmlStream, defaultCRS );
} else if ( implictGeometryElements.contains( name ) ) {
geometry = parseImplicitGeometry( xmlStream, defaultCRS );
} else {
String msg = "Invalid GML geometry: '" + xmlStream.getName()
+ "' does not denote a well-known/application-schema defined GML geometry element."; | |
| File | Line |
|---|---|
| org/deegree/gml/commons/AbstractGMLObjectReader.java | 505 |
| org/deegree/gml/commons/AbstractGMLObjectReader.java | 542 |
case CONTENTTYPE_ELEMENT: {
// TODO respect order + multiplicity of child elements
int eventType = 0;
while ( ( eventType = xmlStream.next() ) != END_ELEMENT ) {
if ( eventType == START_ELEMENT ) {
QName childElName = xmlStream.getName();
if ( !childElementDecls.containsKey( new QName( "*" ) )
&& !childElementDecls.containsKey( childElName ) ) {
String msg = "Element '" + childElName + "' is not allowed at this position.";
throw new XMLParsingException( xmlStream, msg );
}
TypedObjectNode child = parseGenericXMLElement( xmlStream,
(XSElementDeclaration) childElementDecls.get( childElName ),
crs );
// LOG.debug( "adding: " + childElName + ", " + child.getClass().getName() );
children.add( child );
} | |
| File | Line |
|---|---|
| org/deegree/gml/commons/AbstractGMLObjectReader.java | 635 |
| org/deegree/gml/commons/AbstractGMLObjectReader.java | 708 |
for ( int i = 0; i < xsdValueType.getAttributeUses().getLength(); i++ ) {
XSAttributeUse attrUse = (XSAttributeUse) xsdValueType.getAttributeUses().item( i );
if ( attrUse.getRequired() ) {
XSAttributeDeclaration attrDecl = attrUse.getAttrDeclaration();
QName name = new QName( attrDecl.getNamespace(), attrDecl.getName() );
if ( !attrs.containsKey( name ) ) {
String msg = "Required attribute '" + name + "' is missing.";
throw new XMLParsingException( xmlStream, msg );
}
}
} | |