Package org.apache.sis.storage.aggregate
Class JoinFeatureSet
Object
AbstractResource
AbstractFeatureSet
JoinFeatureSet
- All Implemented Interfaces:
- DataSet,- FeatureSet,- Resource
Features containing association to features from two different sources, joined by a SQL-like 
JOIN condition.
 Each feature in this FeatureSet contains two or three properties:
 - An optional identifier created from the identifiers of the left and right features.
- Zero or one association to a "left" feature.
- Zero or one association to a "right" feature.
JoinFeatureSet instance when a value from
 leftProperty in the first feature is equal to a value from rightProperty in the second feature.
 Implementation note
If iterations in one feature set is cheaper than iterations in the other feature set, then the "costly" or largerFeatureSet should be on the left side and the "cheap" FeatureSet should be on the right side.
 This implementation is read-only.
- Since:
- 1.0
Defined in the sis-storage module
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic enumSpecifies whether values on both sides are required (inner join), or only one side (outer join).
- 
Field SummaryFieldsModifier and TypeFieldDescriptionfinal BinaryComparisonOperator<? super AbstractFeature>The join condition in the form property from left feature = property from right feature.final FeatureSetThe first source of features.final FeatureSetThe second source of features.Fields inherited from class AbstractResourcelisteners
- 
Constructor SummaryConstructorsConstructorDescriptionJoinFeatureSet(StoreListeners parent, FeatureSet left, String leftAlias, FeatureSet right, String rightAlias, JoinFeatureSet.Type joinType, BinaryComparisonOperator<? super AbstractFeature> condition, Map<String, ?> featureInfo) Creates a new feature set joining the two given sets.
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidClears any cache in this resource, forcing the data to be recomputed when needed again.protected MetadataInvoked in a synchronized block the first time thatgetMetadata()is invoked.features(boolean parallel) Returns a stream of all features contained in this dataset.Returns the union of the envelopes in all aggregated feature sets.Specifies whether values on both sides are required (inner join), or only one side (outer join).getType()Returns a description of properties that are common to all features in this dataset.Methods inherited from class AbstractFeatureSetgetFeatureCount, getIdentifierMethods inherited from class AbstractResourceaddListener, getMetadata, getSynchronizationLock, removeListenerMethods inherited from class Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface FeatureSetsubsetMethods inherited from interface ResourceaddListener, getMetadata, removeListener
- 
Field Details- 
leftThe first source of features.
- 
rightThe second source of features.
- 
conditionThe join condition in the form property from left feature = property from right feature. This condition specifies also if the comparison is case sensitive and how to compare multi-values.
 
- 
- 
Constructor Details- 
JoinFeatureSetpublic JoinFeatureSet(StoreListeners parent, FeatureSet left, String leftAlias, FeatureSet right, String rightAlias, JoinFeatureSet.Type joinType, BinaryComparisonOperator<? super AbstractFeature> condition, Map<String, ?> featureInfo) throws DataStoreExceptionCreates a new feature set joining the two given sets. ThefeatureInfomap defines the name, description or other information for theFeatureTypecreated by this method. It can contain all the properties described inDefaultFeatureTypeplus the following ones:- "identifierDelimiter"— string to insert between left and right identifiers in the identifiers generated by the join operation. If this property is not specified, then no identifier will be generated.
- "identifierPrefix"— string to insert at the beginning of join identifiers (optional).
- "identifierSuffix"— string to insert at the end of join identifiers (optional).
 - Parameters:
- parent- listeners of the parent resource, or- nullif none.
- left- the first source of features. This is often (but not necessarily) the largest set.
- leftAlias- name of the associations to the- leftfeatures, or- nullfor a default name.
- right- the second source of features. Should be the set in which iterations are cheapest.
- rightAlias- name of the associations to the- rightfeatures, or- nullfor a default name.
- joinType- whether values on both sides are required (inner join), or only one side (outer join).
- condition- join condition as property from left feature = property from right feature.
- featureInfo- information about the- FeatureTypeof this feature set.
- Throws:
- DataStoreException- if an error occurred while creating the feature set.
 
 
- 
- 
Method Details- 
getJoinTypeSpecifies whether values on both sides are required (inner join), or only one side (outer join).- Returns:
- whether values on both sides are required (inner join), or only one side (outer join).
 
- 
getTypeReturns a description of properties that are common to all features in this dataset. This type may contain one identifier and always contains two associations, to the left andrightset of features respectively.- Returns:
- a description of properties that are common to all features in this dataset.
 
- 
featuresReturns a stream of all features contained in this dataset.- Parameters:
- parallel-- truefor a parallel stream (if supported), or- falsefor a sequential stream.
- Returns:
- all features contained in this dataset.
- Throws:
- DataStoreException- if an error occurred while creating the stream.
 
- 
getEnvelopeReturns the union of the envelopes in all aggregated feature sets. This method tries to find a CRS common to all feature sets. If no common CRS can be found, then the envelope is absent.Implementation note: this method is final because overriding it would invalidate the unwrapping of otherAggregatedFeatureSetinstances. If we wish to allow overrides in a future version, we would need to revisitgetEnvelopes(List)first.- Specified by:
- getEnvelopein interface- DataSet
- Overrides:
- getEnvelopein class- AbstractResource
- Returns:
- union of envelopes from all dependencies.
- Throws:
- DataStoreException- if an error occurred while computing the envelope.
 
- 
createMetadataInvoked in a synchronized block the first time thatgetMetadata()is invoked. The default implementation adds the information documented in the parent class, then adds the dependencies as lineages.- Overrides:
- createMetadatain class- AbstractFeatureSet
- Returns:
- the newly created metadata, or nullif unknown.
- Throws:
- DataStoreException- if an error occurred while reading metadata from the data stores.
 
- 
clearCacheprotected void clearCache()Clears any cache in this resource, forcing the data to be recomputed when needed again. This method should be invoked if the data in underlying data store changed.- Overrides:
- clearCachein class- AbstractResource
 
 
-