org.openstreetmap.josm.data.osm
Class Relation

java.lang.Object
  extended by org.openstreetmap.josm.data.osm.AbstractPrimitive
      extended by org.openstreetmap.josm.data.osm.OsmPrimitive
          extended by org.openstreetmap.josm.data.osm.Relation
All Implemented Interfaces:
java.lang.Comparable<OsmPrimitive>, IPrimitive, IRelation, PrimitiveId, Tagged, TemplateEngineDataProvider

public final class Relation
extends OsmPrimitive
implements IRelation

An relation, having a set of tags and any number (0...n) of members.


Field Summary
private  BBox bbox
           
private  RelationMember[] members
           
 
Fields inherited from class org.openstreetmap.josm.data.osm.OsmPrimitive
allPredicate, FLAG_DIRECTION_REVERSED, FLAG_DISABLED, FLAG_DISABLED_TYPE, FLAG_HAS_DIRECTIONS, FLAG_HIDDEN_TYPE, FLAG_HIDE_IF_DISABLED, FLAG_HIGHLIGHTED, FLAG_TAGGED, isSelectablePredicate, isUsablePredicate, mappaintCacheIdx, mappaintStyle, modifiedPredicate, multipolygonPredicate, nodePredicate, nonDeletedCompletePredicate, nonDeletedPhysicalPredicate, nonDeletedPredicate, relationPredicate, wayPredicate
 
Fields inherited from class org.openstreetmap.josm.data.osm.AbstractPrimitive
changesetId, FLAG_DELETED, FLAG_INCOMPLETE, FLAG_MODIFIED, FLAG_VISIBLE, flags, id, keys, timestamp, user, version
 
Constructor Summary
  Relation()
          Create a new relation with id 0
  Relation(long id)
          Creates a new relation for the given id.
protected Relation(long id, boolean allowNegative)
           
  Relation(long id, int version)
          Creates new relation
  Relation(Relation clone)
          Create an identical clone of the argument (including the id)
  Relation(Relation clone, boolean clearId)
           
 
Method Summary
 void addMember(int index, RelationMember member)
           
 void addMember(RelationMember member)
           
private  BBox calculateBBox(java.util.Set<PrimitiveId> visitedRelations)
           
private  void checkMembers()
           
 void cloneFrom(OsmPrimitive osm)
          Get and write all attributes from the parameter.
 int compareTo(OsmPrimitive o)
           
private  void fireMembersChanged()
           
 RelationMember firstMember()
           
 BBox getBBox()
           
 java.lang.String getDisplayName(NameFormatter formatter)
          Replies the display name of a primitive formatted by formatter
 OsmPrimitiveType getDisplayType()
           
 java.util.Collection<OsmPrimitive> getIncompleteMembers()
          Replies a collection with the incomplete children this relation refers to
 RelationMember getMember(int index)
           
 long getMemberId(int idx)
           
 java.util.Set<OsmPrimitive> getMemberPrimitives()
          Replies the set of OsmPrimitives referred to by at least one member of this relation
 java.util.List<RelationMember> getMembers()
           
 int getMembersCount()
           
 OsmPrimitiveType getMemberType(int idx)
           
 java.lang.String getRole(int idx)
           
 OsmPrimitiveType getType()
          Gets the type of object represented by this object.
 boolean hasEqualSemanticAttributes(OsmPrimitive other)
          Replies true if this primitive and other are equal with respect to their semantic attributes.
 boolean hasIncompleteMembers()
          Replies true if at least one child primitive is incomplete
 boolean isMultipolygon()
           
 RelationMember lastMember()
           
 void load(PrimitiveData data)
          Loads (clone) this primitive from provided PrimitiveData
 RelationMember removeMember(int index)
          Removes member at specified position.
 void removeMembersFor(java.util.Collection<OsmPrimitive> primitives)
          removes all members with member.member == primitive
 void removeMembersFor(OsmPrimitive primitive)
          removes all members with member.member == primitive
 RelationData save()
          Save parameters of this primitive to the transport object
 void setDataset(DataSet dataSet)
          This method should never ever by called from somewhere else than Dataset.addPrimitive or removePrimitive methods
 void setDeleted(boolean deleted)
          Sets whether this primitive is deleted or not.
 RelationMember setMember(int index, RelationMember member)
          Replace member at position specified by index.
 void setMembers(java.util.List<RelationMember> members)
           
 java.lang.String toString()
           
 void updatePosition()
          Called by Dataset to update cached position information of primitive (bbox, cached EarthNorth, ...)
 void visit(PrimitiveVisitor visitor)
           
 void visit(Visitor visitor)
           
 
Methods inherited from class org.openstreetmap.josm.data.osm.OsmPrimitive
addReferrer, checkDataset, clearCachedStyle, clearOsmId, equals, evaluateCondition, getDataSet, getDisabledType, getFilteredList, getFilteredSet, getFlagsAsString, getHiddenType, getParentRelations, getReferrer, getReferrers, getReferrers, getTemplateKeys, getTemplateValue, getUninterestingKeys, hasDirectionKeys, hasEqualTechnicalAttributes, hashCode, isDisabled, isDisabledAndHidden, isDrawable, isHighlighted, isMemberOfSelected, isReferredByWays, isSelectable, isSelected, isTagged, isUninterestingKey, keysChangedImpl, mergeFrom, put, remove, removeAll, removeReferrer, reversedDirection, saveCommonAttributes, setChangesetId, setDisabledState, setDisabledType, setHiddenType, setHighlighted, setIncomplete, setKeys, setOsmId, setTimestamp, setUser, setVisible, unsetDisabledState, updateFlags, visitReferrers, writeLock, writeUnlock
 
Methods inherited from class org.openstreetmap.josm.data.osm.AbstractPrimitive
cloneFrom, generateUniqueId, get, getChangesetId, getId, getIgnoreCase, getKeys, getLocalName, getName, getPrimitiveId, getTimestamp, getUniqueId, getUser, getVersion, hasKey, hasKeys, hasSameTags, hasTag, hasTag, isDeleted, isIncomplete, isModified, isNew, isNewOrUndeleted, isTimestampEmpty, isUndeleted, isUsable, isVisible, keySet, setModified
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.openstreetmap.josm.data.osm.IPrimitive
getChangesetId, getId, getLocalName, getName, getPrimitiveId, getTimestamp, getUser, getVersion, isDeleted, isIncomplete, isModified, isNewOrUndeleted, isTimestampEmpty, isVisible, setChangesetId, setModified, setOsmId, setTimestamp, setUser, setVisible
 
Methods inherited from interface org.openstreetmap.josm.data.osm.Tagged
get, getKeys, hasKeys, keySet, put, remove, removeAll, setKeys
 
Methods inherited from interface org.openstreetmap.josm.data.osm.PrimitiveId
getUniqueId, isNew
 

Field Detail

members

private RelationMember[] members

bbox

private BBox bbox
Constructor Detail

Relation

protected Relation(long id,
                   boolean allowNegative)

Relation

public Relation()
Create a new relation with id 0


Relation

public Relation(Relation clone,
                boolean clearId)

Relation

public Relation(Relation clone)
Create an identical clone of the argument (including the id)


Relation

public Relation(long id)
         throws java.lang.IllegalArgumentException
Creates a new relation for the given id. If the id > 0, the way is marked as incomplete.

Parameters:
id - the id. > 0 required
Throws:
java.lang.IllegalArgumentException - thrown if id < 0

Relation

public Relation(long id,
                int version)
Creates new relation

Parameters:
id -
version -
Method Detail

getMembers

public java.util.List<RelationMember> getMembers()
Returns:
Members of the relation. Changes made in returned list are not mapped back to the primitive, use setMembers() to modify the members
Since:
1925

setMembers

public void setMembers(java.util.List<RelationMember> members)
Parameters:
members - Can be null, in that case all members are removed
Since:
1925

getMembersCount

public int getMembersCount()
Specified by:
getMembersCount in interface IRelation
Returns:
number of members

getMember

public RelationMember getMember(int index)

addMember

public void addMember(RelationMember member)

addMember

public void addMember(int index,
                      RelationMember member)

setMember

public RelationMember setMember(int index,
                                RelationMember member)
Replace member at position specified by index.

Parameters:
index -
member -
Returns:
Member that was at the position

removeMember

public RelationMember removeMember(int index)
Removes member at specified position.

Parameters:
index -
Returns:
Member that was at the position

getMemberId

public long getMemberId(int idx)
Specified by:
getMemberId in interface IRelation

getRole

public java.lang.String getRole(int idx)
Specified by:
getRole in interface IRelation

getMemberType

public OsmPrimitiveType getMemberType(int idx)
Specified by:
getMemberType in interface IRelation

visit

public void visit(Visitor visitor)
Specified by:
visit in class OsmPrimitive

visit

public void visit(PrimitiveVisitor visitor)
Specified by:
visit in interface IPrimitive

cloneFrom

public void cloneFrom(OsmPrimitive osm)
Description copied from class: OsmPrimitive
Get and write all attributes from the parameter. Does not fire any listener, so use this only in the data initializing phase

Overrides:
cloneFrom in class OsmPrimitive

load

public void load(PrimitiveData data)
Description copied from class: OsmPrimitive
Loads (clone) this primitive from provided PrimitiveData

Overrides:
load in class OsmPrimitive

save

public RelationData save()
Description copied from class: OsmPrimitive
Save parameters of this primitive to the transport object

Specified by:
save in class OsmPrimitive
Returns:

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

hasEqualSemanticAttributes

public boolean hasEqualSemanticAttributes(OsmPrimitive other)
Description copied from class: OsmPrimitive
Replies true if this primitive and other are equal with respect to their semantic attributes.
  1. equal id
  • both are complete or both are incomplete
  • both have the same tags
  • Overrides:
    hasEqualSemanticAttributes in class OsmPrimitive
    Returns:
    true if this primitive and other are equal with respect to their semantic attributes.

    compareTo

    public int compareTo(OsmPrimitive o)
    Specified by:
    compareTo in interface java.lang.Comparable<OsmPrimitive>

    firstMember

    public RelationMember firstMember()

    lastMember

    public RelationMember lastMember()

    removeMembersFor

    public void removeMembersFor(OsmPrimitive primitive)
    removes all members with member.member == primitive

    Parameters:
    primitive - the primitive to check for

    setDeleted

    public void setDeleted(boolean deleted)
    Description copied from class: AbstractPrimitive
    Sets whether this primitive is deleted or not. Also marks this primitive as modified if deleted is true.

    Specified by:
    setDeleted in interface IPrimitive
    Overrides:
    setDeleted in class OsmPrimitive
    Parameters:
    deleted - true, if this primitive is deleted; false, otherwise

    removeMembersFor

    public void removeMembersFor(java.util.Collection<OsmPrimitive> primitives)
    removes all members with member.member == primitive

    Parameters:
    primitives - the primitives to check for

    getDisplayName

    public java.lang.String getDisplayName(NameFormatter formatter)
    Description copied from class: OsmPrimitive
    Replies the display name of a primitive formatted by formatter

    Specified by:
    getDisplayName in class OsmPrimitive
    Returns:
    the display name

    getMemberPrimitives

    public java.util.Set<OsmPrimitive> getMemberPrimitives()
    Replies the set of OsmPrimitives referred to by at least one member of this relation

    Returns:
    the set of OsmPrimitives referred to by at least one member of this relation

    getType

    public OsmPrimitiveType getType()
    Description copied from interface: PrimitiveId
    Gets the type of object represented by this object.

    Specified by:
    getType in interface PrimitiveId
    Returns:
    the object type
    See Also:
    Node, Way, Relation

    getDisplayType

    public OsmPrimitiveType getDisplayType()
    Overrides:
    getDisplayType in class AbstractPrimitive

    isMultipolygon

    public boolean isMultipolygon()

    getBBox

    public BBox getBBox()
    Specified by:
    getBBox in class OsmPrimitive

    calculateBBox

    private BBox calculateBBox(java.util.Set<PrimitiveId> visitedRelations)

    updatePosition

    public void updatePosition()
    Description copied from class: OsmPrimitive
    Called by Dataset to update cached position information of primitive (bbox, cached EarthNorth, ...)

    Specified by:
    updatePosition in class OsmPrimitive

    setDataset

    public void setDataset(DataSet dataSet)
    Description copied from class: OsmPrimitive
    This method should never ever by called from somewhere else than Dataset.addPrimitive or removePrimitive methods

    Overrides:
    setDataset in class OsmPrimitive

    checkMembers

    private void checkMembers()

    fireMembersChanged

    private void fireMembersChanged()

    hasIncompleteMembers

    public boolean hasIncompleteMembers()
    Replies true if at least one child primitive is incomplete

    Returns:
    true if at least one child primitive is incomplete

    getIncompleteMembers

    public java.util.Collection<OsmPrimitive> getIncompleteMembers()
    Replies a collection with the incomplete children this relation refers to

    Returns:
    the incomplete children. Empty collection if no children are incomplete.


    JOSM