public abstract class LazyFeatureHolder extends AbstractChangeable implements FeatureHolder
RichFeatureRelationshipHolderFeatureHolder.EmptyFeatureHolderEMPTY_FEATURE_HOLDER, FEATURES, SCHEMA| Modifier | Constructor and Description |
|---|---|
protected |
LazyFeatureHolder()
Construct a LazyFeatureHolder with the schema of its contained featureholder
|
protected |
LazyFeatureHolder(FeatureFilter schema)
Construct a LazyFeatureHolder with the specified schema
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
containsFeature(Feature f)
Check if the feature is present in this holder.
|
int |
countFeatures()
Count how many features are contained.
|
Feature |
createFeature(Feature.Template template)
Create a new Feature, and add it to this FeatureHolder.
|
protected abstract FeatureHolder |
createFeatureHolder() |
Iterator |
features()
Iterate over the features in no well defined order.
|
FeatureHolder |
filter(FeatureFilter ff)
Query this set of features using a supplied
FeatureFilter. |
FeatureHolder |
filter(FeatureFilter ff,
boolean recurse)
Return a new FeatureHolder that contains all of the children of this one
that passed the filter fc.
|
protected void |
flushFeatures() |
protected ChangeSupport |
getChangeSupport(ChangeType ct)
Called to retrieve the ChangeSupport for this object.
|
FeatureFilter |
getSchema()
Return a schema-filter for this
FeatureHolder. |
void |
removeFeature(Feature f)
Remove a feature from this FeatureHolder.
|
addChangeListener, addChangeListener, generateChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListenerclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListenerprotected LazyFeatureHolder()
protected LazyFeatureHolder(FeatureFilter schema)
public FeatureFilter getSchema()
FeatureHolderFeatureHolder. This is a filter
which all Features immediately contained by this FeatureHolder
will match. It need not directly match their child features, but it can (and should!) provide
information about them using FeatureFilter.OnlyChildren filters. In cases where there
is no feature hierarchy, this can be indicated by including FeatureFilter.leaf in
the schema filter.
For the truly non-informative case, it is possible to return FeatureFilter.all. However,
it is almost always possible to provide slightly more information that this. For example, Sequence
objects should, at a minimum, return FeatureFilter.top_level. Feature objects
should, as a minimum, return FeatureFilter.ByParent(new FeatureFilter.ByFeature(this)).
getSchema in interface FeatureHolderprotected abstract FeatureHolder createFeatureHolder()
protected void flushFeatures()
public Iterator features()
FeatureHolderfeatures in interface FeatureHolderpublic int countFeatures()
FeatureHoldercountFeatures in interface FeatureHolderpublic FeatureHolder filter(FeatureFilter ff)
FeatureHolderFeatureFilter.filter in interface FeatureHolderff - the FeatureFilter to apply.filter.public FeatureHolder filter(FeatureFilter ff, boolean recurse)
FeatureHolderfilter in interface FeatureHolderff - the FeatureFilter to applyrecurse - true if all features-of-features should be scanned, and a
single flat collection of features returned, or false if
just immediate children should be filtered.public Feature createFeature(Feature.Template template) throws BioException, ChangeVetoException
FeatureHoldercreateFeature in interface FeatureHolderBioException - if something went wrong during creating the featureChangeVetoException - if this FeatureHolder does not support
creation of new features, or if the change was vetoedpublic void removeFeature(Feature f) throws ChangeVetoException, BioException
FeatureHolderremoveFeature in interface FeatureHolderChangeVetoException - if this FeatureHolder does not support
feature removal or if the change was vetoedBioException - if there was an error removing the featurepublic boolean containsFeature(Feature f)
FeatureHoldercontainsFeature in interface FeatureHolderf - the Feature to checkprotected ChangeSupport getChangeSupport(ChangeType ct)
AbstractChangeable
Your implementation of this method should have the following structure:
It is usual for the forwarding listeners (someForwarder in this example) to
be transient and lazily instantiated. Be sure to register & unregister the
forwarder in the code that does the ChangeEvent handling in setter methods.
ChangeSupport cs = super.getChangeSupport(ct);
if(someForwarder == null && ct.isMatching(SomeInterface.SomeChangeType)) {
someForwarder = new ChangeForwarder(...
this.stateVariable.addChangeListener(someForwarder, VariableInterface.AChange);
}
return cs;
getChangeSupport in class AbstractChangeableCopyright © 2020 BioJava. All rights reserved.