org.geotools.data.complex
Class AbstractMappingFeatureIterator

Object
  extended by AbstractMappingFeatureIterator
All Implemented Interfaces:
Closeable, 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
protected  FeatureFactory attf
          Factory used to create the target feature and attributes
protected  int dataMaxFeatures
          maximum number of features to request when running the data(base?)
protected  int featureCounter
          counter to ensure maxFeatures is not exceeded
protected  FeatureTypeFactory ftf
           
protected  boolean includeMandatory
           
protected static Logger LOGGER
          The logger for the filter module.
protected  FeatureTypeMapping mapping
          The mappings for the source and target schemas
protected  FilterFactory namespaceAwareFilterFactory
           
protected  NamespaceSupport namespaces
           
protected  int requestMaxFeatures
          maxFeatures restriction value as provided by query.
static long RESOLVE_TIMEOUT_POLL_INTERVAL
          Milliseconds between polls of resolver thread.
protected  int resolveDepth
           
protected  Integer resolveTimeOut
           
protected  List<AttributeMapping> selectedMapping
          Mappings after Property Selection is applied
protected  Map<AttributeMapping,List<PropertyName>> selectedProperties
          Selected Properties for Feature Chaining
protected  AppSchemaDataAccess store
           
static Name XLINK_HREF_NAME
          Name representation of xlink:href
protected  XPath xpathAttributeBuilder
           
 
Constructor Summary
AbstractMappingFeatureIterator(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 removeQueryLimitIfDenormalised)
           
 
Method Summary
 void close()
          Closes the underlying FeatureIterator
protected abstract  void closeSourceFeatures()
           
protected abstract  Feature computeNext()
           
protected abstract  String extractIdForAttribute(Expression idExpression, Object sourceInstance)
          Based on the set of xpath expression/id extracting expression, finds the ID for the attribute idExpression from the source complex attribute.
protected  Map getClientProperties(Property attribute)
           
 int getDataMaxFeatures()
           
 int getRequestMaxFeatures()
           
protected abstract  FeatureIterator<? extends Feature> getSourceFeatureIterator()
           
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 isHasNextCalled()
           
protected abstract  boolean isNextSourceFeatureNull()
           
protected abstract  boolean isSourceFeatureIteratorNull()
           
 Feature next()
          Return next feature.
protected abstract  Feature populateFeatureData(String id)
           
protected static String referenceToIdentifier(String reference)
           
 void remove()
          Shall not be called, just throws an UnsupportedOperationException
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)
           
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 sourceFeatureIteratorHasNext()
           
protected abstract  boolean unprocessedFeatureExists()
           
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOGGER

protected static final Logger LOGGER
The logger for the filter module.


ftf

protected FeatureTypeFactory ftf

XLINK_HREF_NAME

public static final Name XLINK_HREF_NAME
Name representation of xlink:href


RESOLVE_TIMEOUT_POLL_INTERVAL

public static final long RESOLVE_TIMEOUT_POLL_INTERVAL
Milliseconds between polls of resolver thread.

See Also:
Constant Field Values

mapping

protected FeatureTypeMapping mapping
The mappings for the source and target schemas


selectedMapping

protected List<AttributeMapping> selectedMapping
Mappings after Property Selection is applied


selectedProperties

protected Map<AttributeMapping,List<PropertyName>> selectedProperties
Selected Properties for Feature Chaining


includeMandatory

protected boolean includeMandatory

attf

protected FeatureFactory attf
Factory used to create the target feature and attributes


store

protected AppSchemaDataAccess store

xpathAttributeBuilder

protected final XPath xpathAttributeBuilder

namespaceAwareFilterFactory

protected FilterFactory namespaceAwareFilterFactory

requestMaxFeatures

protected final int requestMaxFeatures
maxFeatures restriction value as provided by query. After the data query has run, *this* limit is also applied to the result.


dataMaxFeatures

protected final int dataMaxFeatures
maximum 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 featureCounter
counter to ensure maxFeatures is not exceeded


namespaces

protected NamespaceSupport namespaces

resolveDepth

protected int resolveDepth

resolveTimeOut

protected Integer resolveTimeOut
Constructor Detail

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 removeQueryLimitIfDenormalised)
                               throws IOException
Throws:
IOException
Method Detail

remove

public void remove()
Shall not be called, just throws an UnsupportedOperationException

Specified by:
remove in interface Iterator<Feature>

close

public void close()
Closes the underlying FeatureIterator

Specified by:
close in interface Closeable
Specified by:
close in interface FeatureIterator<Feature>

extractIdForAttribute

protected abstract String extractIdForAttribute(Expression idExpression,
                                                Object sourceInstance)
Based on the set of xpath expression/id extracting expression, finds the ID for the attribute idExpression 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 corresponding org.geotools.filter.Expression from sourceInstance.
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, or null if there is no an id mapping for that attribute.

getUnrolledQuery

protected Query getUnrolledQuery(Query query)
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

public Feature next()
Return next feature.

Specified by:
next in interface Iterator<Feature>
Specified by:
next in interface FeatureIterator<Feature>
Returns:
The next Feature
See Also:
Iterator.next()

getClientProperties

protected Map getClientProperties(Property attribute)
                           throws DataSourceException
Throws:
DataSourceException

referenceToIdentifier

protected static String referenceToIdentifier(String reference)

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

protected void setGeometryUserData(Attribute target,
                                   Map<Name,Object> targetAttributes)

closeSourceFeatures

protected abstract void closeSourceFeatures()

getSourceFeatureIterator

protected abstract FeatureIterator<? extends Feature> 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

protected abstract Feature populateFeatureData(String id)
                                        throws IOException
Throws:
IOException

getValue

protected abstract Object getValue(Expression expression,
                                   Object sourceFeature)

isSourceFeatureIteratorNull

protected abstract boolean isSourceFeatureIteratorNull()

computeNext

protected abstract Feature computeNext()
                                throws IOException
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.)

Specified by:
hasNext in interface Iterator<Feature>
Specified by:
hasNext in interface FeatureIterator<Feature>
Returns:
true if more Features exist, false otherwise.

getRequestMaxFeatures

public int getRequestMaxFeatures()

getDataMaxFeatures

public int getDataMaxFeatures()


Copyright © 1996-2014 Geotools. All Rights Reserved.