Class AbstractLocationDecorator
- java.lang.Object
-
- org.biojava.bio.symbol.AbstractLocationDecorator
-
- All Implemented Interfaces:
Location
- Direct Known Subclasses:
BetweenLocation
,CircularLocation
public abstract class AbstractLocationDecorator extends Object implements Location
AbstractLocation
decorator (wrapper).These wrap up a normal
When implementing a new Location decorator.Location
object, and act as markers to indicate that the location has some kind of special semantics.- Author:
- Matthew Pocock
-
-
Field Summary
-
Fields inherited from interface org.biojava.bio.symbol.Location
empty, full, naturalOrder
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractLocationDecorator(Location wrapped)
Construct a new decorator wrapping the specified Location.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Iterator
blockIterator()
Return an Iterator over the set of maximal contiguous sub-locations.boolean
contains(int p)
Checks if this location contains a point.boolean
contains(Location l)
Checks if this location contains the other.protected abstract Location
decorate(Location loc)
boolean
equals(Object o)
Checks if this location is equivalent to the other.Location
getDecorator(Class decoratorClass)
Checks the decorator chain for an instance ofdecoratorClass and return it if found.int
getMax()
The maximum position contained.int
getMin()
The minimum position contained.protected Location
getWrapped()
Location
intersection(Location l)
Returns a Location that contains all points common to both ranges.boolean
isContiguous()
Determine if a Location is contiguous.Location
newInstance(Location loc)
Create a new instance of Location with all of the same decorators as this instance but with the data stored inloc
.boolean
overlaps(Location l)
Checks if these two locations overlap, using this location's concept of overlapping.SymbolList
symbols(SymbolList seq)
Return the symbols in a sequence that fall within this range.Location
translate(int dist)
Create a location that is a translation of this location.Location
union(Location l)
Return a Location containing all points in either ranges.
-
-
-
Constructor Detail
-
AbstractLocationDecorator
protected AbstractLocationDecorator(Location wrapped)
Construct a new decorator wrapping the specified Location.
-
-
Method Detail
-
getWrapped
protected final Location getWrapped()
-
newInstance
public Location newInstance(Location loc)
Description copied from interface:Location
Create a new instance of Location with all of the same decorators as this instance but with the data stored inloc
.The default behavior is to return
loc unchanged. If the class is a location decorator then it should instantiate an instance of the same type that decoratesloc
.- Specified by:
newInstance
in interfaceLocation
- Parameters:
loc
- the Location to use as template- Returns:
- a Location instance based on loc with the same decorators as the current instance
-
getDecorator
public Location getDecorator(Class decoratorClass)
Description copied from interface:Location
Checks the decorator chain for an instance ofdecoratorClass and return it if found.The default behavior is to return null. If the current object is a decorator and is an instance of
decoratorClass it should return itself. Otherwise, the decorator should chain this method onto the instance it wraps.- Specified by:
getDecorator
in interfaceLocation
- Parameters:
decoratorClass
- the Class to check- Returns:
- a Location if an instance of this class is present in the decorator chain and null otherwise.
-
getMin
public int getMin()
Description copied from interface:Location
The minimum position contained.WARNING: The location will not contain every point between
getMin()
andgetMax()
ifisContiguous()
is false. IfisContiguous()
does return false you should use theIterator
returned byblockIterator()
to iterate over the minimum set of contiguous blocks that make up thisLocation
-
getMax
public int getMax()
Description copied from interface:Location
The maximum position contained.WARNING: The location will not contain every point between
getMin()
andgetMax()
ifisContiguous()
is false. IfisContiguous()
does return false you should use theIterator
returned byblockIterator()
to iterate over the minimum set of contiguous blocks that make up thisLocation
-
overlaps
public boolean overlaps(Location l)
Description copied from interface:Location
Checks if these two locations overlap, using this location's concept of overlapping.Abstractly, two locations overlap if they both contain any point.
-
contains
public boolean contains(Location l)
Description copied from interface:Location
Checks if this location contains the other.Abstractly, a location contains another if every point in the other location is contained within this one.
-
contains
public boolean contains(int p)
Description copied from interface:Location
Checks if this location contains a point.
-
equals
public boolean equals(Object o)
Description copied from interface:Location
Checks if this location is equivalent to the other.Abstractly, a location is equal to another if for every point in one it is also in the other. This is equivalent to a.contains(b) && b.contains(a). You should call LocationTools.areEqual after casting l to Location.
-
intersection
public Location intersection(Location l)
Description copied from interface:Location
Returns a Location that contains all points common to both ranges.- Specified by:
intersection
in interfaceLocation
- Parameters:
l
- the Location to intersect with- Returns:
- a Location containing all points common to both, or the empty range if there are no such points
-
union
public Location union(Location l)
Description copied from interface:Location
Return a Location containing all points in either ranges.
-
symbols
public SymbolList symbols(SymbolList seq)
Description copied from interface:Location
Return the symbols in a sequence that fall within this range.
-
translate
public Location translate(int dist)
Description copied from interface:Location
Create a location that is a translation of this location.
-
isContiguous
public boolean isContiguous()
Description copied from interface:Location
Determine if a Location is contiguous.- Specified by:
isContiguous
in interfaceLocation
- Returns:
true
if and only if this Location contains every point frommin
tomax
inclusive.
-
blockIterator
public Iterator blockIterator()
Description copied from interface:Location
Return an Iterator over the set of maximal contiguous sub-locations.Given any location, it can be considered to contain zero or more maximal contiguous blocks of width 1 or greater. The empty location is composed from nothing. A contiguous location is composed from itself. A non-contiguous location is composed from contiguous blocks seperated by gaps.
This method should return an Iterator over these maximally contiguous blocks starting with the left-most block, and finishing at the right-most block.
- Specified by:
blockIterator
in interfaceLocation
- Returns:
- an Iterator over Location objects that are the maximally contiguous set of locations contained within this location
-
-