Ignore:
Timestamp:
2009-10-24T21:22:49+02:00 (15 years ago)
Author:
jttt
Message:

Use PrimitiveData for Copy, Paste and Paste tags actions

File:
1 edited

Legend:

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

    r2299 r2305  
    22package org.openstreetmap.josm.data.osm;
    33
     4import java.util.ArrayList;
     5import java.util.Collection;
    46import java.util.HashMap;
     7import java.util.List;
    58import java.util.Map;
    69
     
    1215 *
    1316 */
    14 public abstract class PrimitiveData {
     17public abstract class PrimitiveData implements Tagged {
    1518
    1619    // Useful?
     
    1922    //private boolean selected;
    2023    //private boolean highlighted;
     24
     25    public PrimitiveData() {
     26        id = OsmPrimitive.generateUniqueId();
     27    }
     28
     29    public PrimitiveData(PrimitiveData data) {
     30        this.keys.putAll(data.keys);
     31        this.modified = data.modified;
     32        this.visible = data.visible;
     33        this.deleted = data.deleted;
     34        this.id = data.id;
     35        this.user = data.user;
     36        this.version = data.version;
     37        this.timestamp = data.timestamp;
     38    }
    2139
    2240    private final Map<String, String> keys = new HashMap<String, String>();
     
    7593    }
    7694
     95    public void clearOsmId() {
     96        id = OsmPrimitive.generateUniqueId();
     97    }
     98
     99    public abstract PrimitiveData makeCopy();
     100
     101    public abstract OsmPrimitive makePrimitive(DataSet dataSet);
    77102
    78103    @Override
     
    94119    }
    95120
     121    // Tagged implementation
     122
     123    public String get(String key) {
     124        return keys.get(key);
     125    }
     126
     127    public boolean hasKeys() {
     128        return !keys.isEmpty();
     129    }
     130
     131    public Collection<String> keySet() {
     132        return keys.keySet();
     133    }
     134
     135    public void put(String key, String value) {
     136        keys.put(key, value);
     137    }
     138
     139    public void remove(String key) {
     140        keys.remove(key);
     141    }
     142
     143    public void removeAll() {
     144        keys.clear();
     145    }
     146
     147    public void setKeys(Map<String, String> keys) {
     148        this.keys.clear();
     149        this.keys.putAll(keys);
     150    }
     151
     152
     153    @SuppressWarnings("unchecked")
     154    static public <T extends PrimitiveData>  List<T> getFilteredList(Collection<T> list, OsmPrimitiveType type) {
     155        List<T> ret = new ArrayList<T>();
     156        for(PrimitiveData p: list) {
     157            if (type.getDataClass().isInstance(p)) {
     158                ret.add((T)p);
     159            }
     160        }
     161        return ret;
     162    }
     163
     164    protected void setKeysAsList(String... keys) {
     165        assert keys.length % 2 == 0;
     166        for (int i=0; i<keys.length/2; i++) {
     167            this.keys.put(keys[i * 2], keys[i * 2 + 1]);
     168        }
     169    }
     170
     171
    96172
    97173}
Note: See TracChangeset for help on using the changeset viewer.