Package org.geotools.data.complex
Class AbstractMappingFeatureIterator
Object
AbstractMappingFeatureIterator
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Iterator<Feature>
,IMappingFeatureIterator
,FeatureIterator<Feature>
- Direct Known Subclasses:
DataAccessMappingFeatureIterator
public abstract class AbstractMappingFeatureIterator
extends Object
implements IMappingFeatureIterator
Base class for several MappingFeatureImplementation's.
- Author:
- Russell Petty (GeoScience Victoria)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected FeatureFactory
Factory used to create the target feature and attributesprotected final int
maximum number of features to request when running the data(base?)protected int
counter to ensure maxFeatures is not exceededprotected FilterFactory
protected FeatureTypeFactory
static final GeometryFactory
protected boolean
protected static final Logger
The logger for the filter module.protected FeatureTypeMapping
The mappings for the source and target schemasstatic final String
Key value for Attribute userData Map for indicating the presence of a multi value classifier.protected FilterFactory
protected NamespaceSupport
protected Query
protected final int
maxFeatures restriction value as provided by query.static final long
Milliseconds between polls of resolver thread.protected int
protected Integer
protected List<AttributeMapping>
Mappings after Property Selection is appliedprotected Map<AttributeMapping,
List<PropertyName>> Selected Properties for Feature Chainingprotected AppSchemaDataAccess
protected Transaction
static final String
Value for Attribute userData Map for indicating an anonymous unbounded sequence classifier.static final Name
Name representation of xlink:hrefprotected final XPath
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractMappingFeatureIterator
(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query) AbstractMappingFeatureIterator
(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery) AbstractMappingFeatureIterator
(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery, boolean hasPostFilter) AbstractMappingFeatureIterator
(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery, boolean removeQueryLimitIfDenormalised, boolean hasPostFilter) AbstractMappingFeatureIterator
(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery, boolean removeQueryLimitIfDenormalised, boolean hasPostFilter, Transaction tx) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes the underlying FeatureIteratorprotected abstract void
protected abstract Feature
protected abstract String
extractIdForAttribute
(Expression idExpression, Object sourceInstance) Based on the set of xpath expression/id extracting expression, finds the ID for the attributeidExpression
from the source complex attribute.protected Map<Name,
Expression> getClientProperties
(Property attribute) protected abstract FeatureIterator<? extends Feature>
protected Query
getUnrolledQuery
(Query query) Return a query appropriate to its underlying feature source.protected abstract Object
getValue
(Expression expression, Object sourceFeature) abstract boolean
hasNext()
Does another Feature exist in this Iteration.protected abstract void
initialiseSourceFeatures
(FeatureTypeMapping mapping, Query query, CoordinateReferenceSystem crs) protected boolean
protected abstract boolean
protected abstract boolean
next()
Return next feature.protected abstract Feature
protected static String
referenceToIdentifier
(String reference) void
remove()
Shall not be called, just throws an UnsupportedOperationExceptionprotected Attribute
setAttributeContent
(Attribute target, XPathUtil.StepList xpath, Object value, String id, AttributeType targetNodeType, boolean isXlinkRef, Expression sourceExpression, Object source, Map<Name, Expression> clientProperties, boolean ignoreXlinkHref) protected void
setClientProperties
(Attribute target, Object source, Map<Name, Expression> clientProperties) protected void
setGeometryUserData
(Attribute target, Map<Name, Object> targetAttributes) protected void
setHasNextCalled
(boolean hasNextCalled) protected abstract boolean
protected abstract boolean
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface Iterator
forEachRemaining
-
Field Details
-
LOGGER
The logger for the filter module. -
GEOMETRY_FACTORY
-
filterFac
-
ftf
-
XLINK_HREF_NAME
Name representation of xlink:href -
MULTI_VALUE_TYPE
Key value for Attribute userData Map for indicating the presence of a multi value classifier.- See Also:
-
UNBOUNDED_MULTI_VALUE
Value for Attribute userData Map for indicating an anonymous unbounded sequence classifier.- See Also:
-
RESOLVE_TIMEOUT_POLL_INTERVAL
public static final long RESOLVE_TIMEOUT_POLL_INTERVALMilliseconds between polls of resolver thread.- See Also:
-
mapping
The mappings for the source and target schemas -
selectedMapping
Mappings after Property Selection is applied -
selectedProperties
Selected Properties for Feature Chaining -
includeMandatory
protected boolean includeMandatory -
attf
Factory used to create the target feature and attributes -
store
-
xpathAttributeBuilder
-
namespaceAwareFilterFactory
-
requestMaxFeatures
protected final int requestMaxFeaturesmaxFeatures restriction value as provided by query. After the data query has run, *this* limit is also applied to the result. -
dataMaxFeatures
protected final int dataMaxFeaturesmaximum number of features to request when running the data(base?) query. For denormalised data sources, this neesd to be be Query.DEFAULT_MAX to trigger a full table scan. In all other cases it will be the same value as requestMaxFeatures -
featureCounter
protected int featureCountercounter to ensure maxFeatures is not exceeded -
namespaces
-
resolveDepth
protected int resolveDepth -
resolveTimeOut
-
transaction
-
query
-
-
Constructor Details
-
AbstractMappingFeatureIterator
public AbstractMappingFeatureIterator(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query) throws IOException - Throws:
IOException
-
AbstractMappingFeatureIterator
public AbstractMappingFeatureIterator(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery) throws IOException - Throws:
IOException
-
AbstractMappingFeatureIterator
public AbstractMappingFeatureIterator(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery, boolean hasPostFilter) throws IOException - Throws:
IOException
-
AbstractMappingFeatureIterator
public AbstractMappingFeatureIterator(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery, boolean removeQueryLimitIfDenormalised, boolean hasPostFilter) throws IOException - Throws:
IOException
-
AbstractMappingFeatureIterator
public AbstractMappingFeatureIterator(AppSchemaDataAccess store, FeatureTypeMapping mapping, Query query, Query unrolledQuery, boolean removeQueryLimitIfDenormalised, boolean hasPostFilter, Transaction tx) throws IOException - Throws:
IOException
-
-
Method Details
-
getTransaction
-
remove
public void remove()Shall not be called, just throws an UnsupportedOperationException -
close
public void close()Closes the underlying FeatureIterator- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceFeatureIterator<Feature>
-
extractIdForAttribute
Based on the set of xpath expression/id extracting expression, finds the ID for the attributeidExpression
from the source complex attribute.- Parameters:
idExpression
- the location path of the attribute to be created, for which to obtain the id by evaluating the correspondingorg.geotools.filter.Expression
fromsourceInstance
.sourceInstance
- a complex attribute which is the source of the mapping.- Returns:
- the ID to be applied to a new attribute instance addressed by
attributeXPath
, ornull
if there is no an id mapping for that attribute.
-
getUnrolledQuery
Return a query appropriate to its underlying feature source.- Parameters:
query
- the original query against the output schema- Returns:
- a query appropriate to be executed over the underlying feature source.
-
isHasNextCalled
protected boolean isHasNextCalled() -
setHasNextCalled
protected void setHasNextCalled(boolean hasNextCalled) -
next
Return next feature. -
getClientProperties
- Throws:
DataSourceException
-
referenceToIdentifier
-
setAttributeContent
protected Attribute setAttributeContent(Attribute target, XPathUtil.StepList xpath, Object value, String id, AttributeType targetNodeType, boolean isXlinkRef, Expression sourceExpression, Object source, Map<Name, Expression> clientProperties, boolean ignoreXlinkHref) -
setClientProperties
protected void setClientProperties(Attribute target, Object source, Map<Name, Expression> clientProperties) -
setGeometryUserData
-
closeSourceFeatures
protected abstract void closeSourceFeatures() -
getSourceFeatureIterator
-
initialiseSourceFeatures
protected abstract void initialiseSourceFeatures(FeatureTypeMapping mapping, Query query, CoordinateReferenceSystem crs) throws IOException - Throws:
IOException
-
unprocessedFeatureExists
protected abstract boolean unprocessedFeatureExists() -
sourceFeatureIteratorHasNext
protected abstract boolean sourceFeatureIteratorHasNext() -
isNextSourceFeatureNull
protected abstract boolean isNextSourceFeatureNull() -
populateFeatureData
- Throws:
IOException
-
getValue
-
isSourceFeatureIteratorNull
protected abstract boolean isSourceFeatureIteratorNull() -
computeNext
- Throws:
IOException
-
hasNext
public abstract boolean hasNext()Description copied from interface:FeatureIterator
Does another Feature exist in this Iteration.Iterator defin: Returns true if the iteration has more elements. (In other words, returns true if next would return an element rather than throwing an exception.)
-