Ignore:
Timestamp:
2009-09-06T23:07:33+02:00 (15 years ago)
Author:
Gubaer
Message:

new: rewrite of CombineWay action
new: conflict resolution dialog for CombineWay, including conflicts for different relation memberships
cleanup: cleanup in OsmReader, reduces memory footprint and reduces parsing time
cleanup: made most of the public fields in OsmPrimitive @deprecated, added accessors and changed the code
cleanup: replaced usages of @deprecated constructors for ExtendedDialog
fixed #3208: Combine ways brokes relation order

WARNING: this changeset touches a lot of code all over the code base. "latest" might become slightly unstable in the next days. Also experience incompatibility issues with plugins in the next few days.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/Relation.java

    r2017 r2070  
    22
    33import java.util.ArrayList;
     4import java.util.HashSet;
    45import java.util.List;
     6import java.util.Set;
    57
    68import org.openstreetmap.josm.data.osm.visitor.Visitor;
     
    1719     * All members of this relation. Note that after changing this,
    1820     * makeBackReferences and/or removeBackReferences should be called.
    19      */
     21     *
     22     * @deprecated use the improved API instead of accessing this list directly
     23     */
     24    @Deprecated
    2025    public final List<RelationMember> members = new ArrayList<RelationMember>();
    2126
     
    104109
    105110    /**
     111     * Create a new relation with id 0
     112     */
     113    public Relation() {
     114
     115    }
     116
     117    /**
    106118     * Create an identical clone of the argument (including the id)
    107119     */
    108120    public Relation(Relation clone) {
     121        super(clone.getId());
    109122        cloneFrom(clone);
    110123    }
    111124
    112125    /**
    113      * Create an incomplete Relation.
    114      */
    115     public Relation(long id) {
    116         this.id = id;
    117         incomplete = true;
    118     }
    119 
    120     /**
    121      * Create an empty Relation. Use this only if you set meaningful values
    122      * afterwards.
    123      */
    124     public Relation() {
    125     }
     126     * Creates a new relation for the given id. If the id > 0, the way is marked
     127     * as incomplete.
     128     *
     129     * @param id the id. > 0 required
     130     * @throws IllegalArgumentException thrown if id < 0
     131     */
     132    public Relation(long id) throws IllegalArgumentException {
     133        super(id);
     134    }
     135
    126136
    127137    @Override public void cloneFrom(OsmPrimitive osm) {
     
    138148        // return "{Relation id="+id+" version="+version+" members="+Arrays.toString(members.toArray())+"}";
    139149        // adding members in string increases memory usage a lot and overflows for looped relations
    140         return "{Relation id="+id+" version="+version+"}";
     150        return "{Relation id="+getId()+" version="+getVersion()+"}";
    141151    }
    142152
     
    152162
    153163    public int compareTo(OsmPrimitive o) {
    154         return o instanceof Relation ? Long.valueOf(id).compareTo(o.id) : -1;
     164        return o instanceof Relation ? Long.valueOf(getId()).compareTo(o.getId()) : -1;
    155165    }
    156166
     
    158168    public boolean isIncomplete() {
    159169        for (RelationMember m : members)
    160             if (m.member == null)
     170            if (m.getMember() == null)
    161171                return true;
    162172        return false;
     
    183193        ArrayList<RelationMember> todelete = new ArrayList<RelationMember>();
    184194        for (RelationMember member: members) {
    185             if (member.member == primitive) {
     195            if (member.getMember() == primitive) {
    186196                todelete.add(member);
    187197            }
     
    194204        return formatter.format(this);
    195205    }
     206
     207    /**
     208     * Replies the set of  {@see OsmPrimitive}s referred to by at least one
     209     * member of this relation
     210     *
     211     * @return the set of  {@see OsmPrimitive}s referred to by at least one
     212     * member of this relation
     213     */
     214    public Set<OsmPrimitive> getMemberPrimitives() {
     215        HashSet<OsmPrimitive> ret = new HashSet<OsmPrimitive>();
     216        for (RelationMember m: members) {
     217            if (m.getMember() != null) {
     218                ret.add(m.getMember());
     219            }
     220        }
     221        return ret;
     222    }
    196223}
Note: See TracChangeset for help on using the changeset viewer.