Changeset 4602 in josm


Ignore:
Timestamp:
2011-11-20T20:47:15+01:00 (8 years ago)
Author:
bastiK
Message:

upgrade historic users to real users, so their CT status can be shown in the history panel

Location:
trunk/src/org/openstreetmap/josm
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java

    r3995 r4602  
    5454     * replies the base URL for browsing information about a user
    5555     *
    56      * @return the base URL, i.e. http://ww.openstreetmap.org/user
     56     * @return the base URL, i.e. http://www.openstreetmap.org/user
    5757     */
    5858    static public String getBaseUserUrl() {
  • trunk/src/org/openstreetmap/josm/data/osm/User.java

    r4601 r4602  
    11// License: GPL. Copyright 2007 by Immanuel Scholz and others
    22package org.openstreetmap.josm.data.osm;
     3
     4import static org.openstreetmap.josm.tools.I18n.tr;
    35
    46import java.io.BufferedReader;
     
    3537    private static HashSet<Long> relicensingUsers = null;
    3638    private static HashSet<Long> nonRelicensingUsers = null;
     39    private final static User anonymous = createLocalUser(tr("<anonymous>"));
    3740
    3841    private static long getNextLocalUid() {
     
    110113        }
    111114        return ret;
     115    }
     116
     117    public static User getAnonymous() {
     118        return anonymous;
    112119    }
    113120
     
    185192    public static final int STATUS_ANONYMOUS = 4;
    186193
    187     /** 
     194    /**
    188195    * Finds out this user's relicensing status and saves it for quicker
    189196    * access.
  • trunk/src/org/openstreetmap/josm/data/osm/history/History.java

    r3083 r4602  
    156156                new FilterPredicate() {
    157157                    public boolean matches(HistoryOsmPrimitive primitive) {
    158                         return primitive.getUid() == uid;
     158                        return primitive.getUser() != null && primitive.getUser().getId() == uid;
    159159                    }
    160160                }
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryNode.java

    r4339 r4602  
    77import org.openstreetmap.josm.data.osm.Node;
    88import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     9import org.openstreetmap.josm.data.osm.User;
    910
    1011/**
     
    1819    private LatLon coords;
    1920
    20     public HistoryNode(long id, long version, boolean visible, String user, long uid, long changesetId, Date timestamp, LatLon coords) {
    21         super(id, version, visible, user, uid, changesetId, timestamp);
     21    public HistoryNode(long id, long version, boolean visible, User user, long changesetId, Date timestamp, LatLon coords) {
     22        super(id, version, visible, user, changesetId, timestamp);
    2223        setCoords(coords);
    2324    }
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java

    r4339 r4602  
    1717import org.openstreetmap.josm.data.osm.Relation;
    1818import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
     19import org.openstreetmap.josm.data.osm.User;
    1920import org.openstreetmap.josm.data.osm.Way;
    2021import org.openstreetmap.josm.tools.CheckParameterUtil;
     
    2930    private long id;
    3031    private boolean visible;
    31     private String user;
    32     private long uid;
     32    private User user;
    3333    private long changesetId;
    3434    private Date timestamp;
     
    5454     * @throws IllegalArgumentException thrown if preconditions are violated
    5555     */
    56     public HistoryOsmPrimitive(long id, long version, boolean visible, String user, long uid, long changesetId, Date timestamp) throws IllegalArgumentException {
     56    public HistoryOsmPrimitive(long id, long version, boolean visible, User user, long changesetId, Date timestamp) throws IllegalArgumentException {
    5757        ensurePositiveLong(id, "id");
    5858        ensurePositiveLong(version, "version");
    59         if(uid != -1) {
    60             ensurePositiveLong(uid, "uid");
    61         }
    6259        CheckParameterUtil.ensureParameterNotNull(user, "user");
    6360        CheckParameterUtil.ensureParameterNotNull(timestamp, "timestamp");
     
    6663        this.visible = visible;
    6764        this.user = user;
    68         this.uid = uid;
    6965        // FIXME: restrict to IDs > 0 as soon as OsmPrimitive holds the
    7066        // changeset id too
     
    7672    public HistoryOsmPrimitive(OsmPrimitive p) {
    7773        this(p.getId(), p.getVersion(), p.isVisible(),
    78                 p.getUser() == null ? null : p.getUser().getName(),
    79                 p.getUser() == null ? 0 : p.getUser().getId(),
     74                p.getUser(),
    8075                p.getChangesetId(), p.getTimestamp());
    8176    }
     
    10499        return visible;
    105100    }
    106     public String getUser() {
     101    public User getUser() {
    107102        return user;
    108     }
    109     public long getUid() {
    110         return uid;
    111103    }
    112104    public long getChangesetId() {
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java

    r4339 r4602  
    1010import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1111import org.openstreetmap.josm.data.osm.Relation;
     12import org.openstreetmap.josm.data.osm.User;
    1213import org.openstreetmap.josm.tools.CheckParameterUtil;
    1314
     
    3435     * @throws IllegalArgumentException thrown if preconditions are violated
    3536     */
    36     public HistoryRelation(long id, long version, boolean visible, String user, long uid, long changesetId,
     37    public HistoryRelation(long id, long version, boolean visible, User user, long changesetId,
    3738            Date timestamp) throws IllegalArgumentException {
    38         super(id, version, visible, user, uid, changesetId, timestamp);
     39        super(id, version, visible, user, changesetId, timestamp);
    3940    }
    4041    /**
     
    5253     * @throws IllegalArgumentException thrown if preconditions are violated
    5354     */
    54     public HistoryRelation(long id, long version, boolean visible, String user, long uid, long changesetId,
     55    public HistoryRelation(long id, long version, boolean visible, User user, long changesetId,
    5556            Date timestamp, ArrayList<RelationMember> members) {
    56         this(id, version, visible, user, uid, changesetId, timestamp);
     57        this(id, version, visible, user, changesetId, timestamp);
    5758        if (members != null) {
    5859            this.members.addAll(members);
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java

    r4339 r4602  
    1010
    1111import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     12import org.openstreetmap.josm.data.osm.User;
    1213import org.openstreetmap.josm.data.osm.Way;
     14
    1315/**
    1416 * Represents an immutable OSM way in the context of a historical view on
     
    2022    private ArrayList<Long> nodeIds = new ArrayList<Long>();
    2123
    22     public HistoryWay(long id, long version, boolean visible, String user, long uid, long changesetId, Date timestamp) {
    23         super(id, version, visible, user, uid, changesetId, timestamp);
     24    public HistoryWay(long id, long version, boolean visible, User user, long changesetId, Date timestamp) {
     25        super(id, version, visible, user, changesetId, timestamp);
    2426    }
    2527
    26     public HistoryWay(long id, long version, boolean visible, String user, long uid, long changesetId, Date timestamp, ArrayList<Long> nodeIdList) {
    27         this(id, version, visible, user, uid, changesetId, timestamp);
     28    public HistoryWay(long id, long version, boolean visible, User user, long changesetId, Date timestamp, ArrayList<Long> nodeIdList) {
     29        this(id, version, visible, user, changesetId, timestamp);
    2830        this.nodeIds.addAll(nodeIdList);
    2931    }
  • trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java

    r4601 r4602  
    4141import org.openstreetmap.josm.gui.layer.Layer;
    4242import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     43import org.openstreetmap.josm.io.XmlWriter;
    4344import org.openstreetmap.josm.tools.CheckParameterUtil;
    4445import org.openstreetmap.josm.tools.Diff;
     
    420421            case 2:
    421422                return isCurrentPointInTime(row);
    422             case 3:
    423                 long uId = getPrimitive(row).getUid();
    424                 User user = User.getById(uId);
    425                 int status;
    426                 if (user == null) {
    427                     status = User.STATUS_UNKNOWN;
    428                 } else {
    429                     status = user.getRelicensingStatus();
     423            case 3: {
     424                    User user = getPrimitive(row).getUser();
     425                    int status;
     426                    if (user == null) {
     427                        status = User.STATUS_UNKNOWN;
     428                    } else {
     429                        status = user.getRelicensingStatus();
     430                    }
     431                    return UserListDialog.getRelicensingStatusIcon(status);
    430432                }
    431                 return UserListDialog.getRelicensingStatusIcon(status);
    432433            case 4: {
    433434                    HistoryOsmPrimitive p = getPrimitive(row);
     
    438439            case 5: {
    439440                    HistoryOsmPrimitive p = getPrimitive(row);
    440                     if (p != null)
    441                         return "<html>"+p.getUser() + " <font color=gray>(" + p.getUid() + ")</font></html>";
     441                    if (p != null) {
     442                        User user = p.getUser();
     443                        if (user != null)
     444                            return "<html>" + XmlWriter.encode(user.getName()) + " <font color=gray>(" + user.getId() + ")</font></html>";
     445                    }
    442446                    return null;
    443447                }
     
    868872        private HistoryOsmPrimitive clone;
    869873
    870         private String getUserName(OsmPrimitive primitive) {
    871             return primitive.getUser() == null?null:primitive.getUser().getName();
    872         }
    873 
    874         private long getUserId(OsmPrimitive primitive) {
    875             return primitive.getUser() == null?0:primitive.getUser().getId();
    876         }
    877 
    878874        public void visit(Node n) {
    879             clone = new HistoryNode(n.getId(), n.getVersion(), n.isVisible(), getUserName(n), getUserId(n), 0, n.getTimestamp(), n.getCoor());
     875            clone = new HistoryNode(n.getId(), n.getVersion(), n.isVisible(), n.getUser(), 0, n.getTimestamp(), n.getCoor());
    880876            clone.setTags(n.getKeys());
    881877        }
    882878
    883879        public void visit(Relation r) {
    884             clone = new HistoryRelation(r.getId(), r.getVersion(), r.isVisible(), getUserName(r), getUserId(r), 0, r.getTimestamp());
     880            clone = new HistoryRelation(r.getId(), r.getVersion(), r.isVisible(), r.getUser(), 0, r.getTimestamp());
    885881            clone.setTags(r.getKeys());
    886882            HistoryRelation hr = (HistoryRelation)clone;
     
    891887
    892888        public void visit(Way w) {
    893             clone = new HistoryWay(w.getId(), w.getVersion(), w.isVisible(), getUserName(w), getUserId(w), 0, w.getTimestamp());
     889            clone = new HistoryWay(w.getId(), w.getVersion(), w.isVisible(), w.getUser(), 0, w.getTimestamp());
    894890            clone.setTags(w.getKeys());
    895891            for (Node n: w.getNodes()) {
  • trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java

    r4299 r4602  
    1919import org.openstreetmap.josm.Main;
    2020import org.openstreetmap.josm.actions.AbstractInfoAction;
     21import org.openstreetmap.josm.data.osm.User;
    2122import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
    2223import org.openstreetmap.josm.gui.JMultilineLabel;
     
    135136
    136137            try {
    137                 if (getPrimitive().getUid() != -1) {
    138                     url = AbstractInfoAction.getBaseUserUrl() + "/" +  URLEncoder.encode(getPrimitive().getUser(), "UTF-8").replaceAll("\\+", "%20");
     138                if (getPrimitive().getUser() != null && getPrimitive().getUser() != User.getAnonymous()) {
     139                    url = AbstractInfoAction.getBaseUserUrl() + "/" +  URLEncoder.encode(getPrimitive().getUser().getName(), "UTF-8").replaceAll("\\+", "%20");
    139140                    lblUser.setUrl(url);
    140141                } else {
     
    145146                lblUser.setUrl(null);
    146147            }
    147             String username = getPrimitive().getUser();
     148            String username = "";
     149            if (getPrimitive().getUser() != null) {
     150                username = getPrimitive().getUser().getName();
     151            }
    148152            lblUser.setDescription(username);
    149153        } else {
  • trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java

    r3083 r4602  
    1717import org.openstreetmap.josm.data.osm.ChangesetDataSet;
    1818import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     19import org.openstreetmap.josm.data.osm.User;
    1920import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType;
    2021import org.openstreetmap.josm.data.osm.history.HistoryNode;
     
    8586        }
    8687
    87         protected long getAttributeLong(Attributes attr, String name, long defaultValue) throws SAXException{
     88        protected Long getAttributeLong(Attributes attr, String name) throws SAXException{
    8889            String v = attr.getValue(name);
    8990            if (v == null)
    90                 return defaultValue;
    91             Long l = 0l;
     91                return null;
     92            Long l = null;
    9293            try {
    9394                l = Long.parseLong(v);
     
    123124        }
    124125
    125         protected String getAttributeString(Attributes attr, String name, String defaultValue) {
    126             String v = attr.getValue(name);
    127             if (v == null)
    128                 return defaultValue;
    129             return v;
    130         }
    131 
    132126        protected boolean getMandatoryAttributeBoolean(Attributes attr, String name) throws SAXException{
    133127            String v = attr.getValue(name);
     
    147141            long changesetId = getMandatoryAttributeLong(atts,"changeset");
    148142            boolean visible= getMandatoryAttributeBoolean(atts, "visible");
    149             long uid = getAttributeLong(atts, "uid",-1);
    150             String user = getAttributeString(atts, "user", tr("<anonymous>"));
     143           
     144            Long uid = getAttributeLong(atts, "uid");
     145            String userStr = atts.getValue("user");
     146            User user;
     147            if (userStr != null) {
     148                if (uid != null) {
     149                    user = User.createOsmUser(uid, userStr);
     150                } else {
     151                    user = User.createLocalUser(userStr);
     152                }
     153            } else {
     154                user = User.getAnonymous();
     155            }
     156
    151157            String v = getMandatoryAttributeString(atts, "timestamp");
    152158            Date timestamp = DateUtils.fromString(v);
     
    156162                double lon = getMandatoryAttributeDouble(atts, "lon");
    157163                primitive = new HistoryNode(
    158                         id,version,visible,user,uid,changesetId,timestamp, new LatLon(lat,lon)
     164                        id,version,visible,user,changesetId,timestamp, new LatLon(lat,lon)
    159165                );
    160166
    161167            } else if (type.equals(OsmPrimitiveType.WAY)) {
    162168                primitive = new HistoryWay(
    163                         id,version,visible,user,uid,changesetId,timestamp
     169                        id,version,visible,user,changesetId,timestamp
    164170                );
    165171            }if (type.equals(OsmPrimitiveType.RELATION)) {
    166172                primitive = new HistoryRelation(
    167                         id,version,visible,user,uid,changesetId,timestamp
     173                        id,version,visible,user,changesetId,timestamp
    168174                );
    169175            }
  • trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java

    r3083 r4602  
    1414import org.openstreetmap.josm.data.coor.LatLon;
    1515import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     16import org.openstreetmap.josm.data.osm.User;
    1617import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
    1718import org.openstreetmap.josm.data.osm.history.HistoryNode;
     
    8182        }
    8283
    83         protected long getAttributeLong(Attributes attr, String name, long defaultValue) throws SAXException{
     84        protected Long getAttributeLong(Attributes attr, String name) throws SAXException {
    8485            String v = attr.getValue(name);
    8586            if (v == null)
    86                 return defaultValue;
    87             Long l = 0l;
     87                return null;
     88            Long l = null;
    8889            try {
    8990                l = Long.parseLong(v);
     
    116117                throwException(tr("Missing mandatory attribute ''{0}''.", name));
    117118            }
    118             return v;
    119         }
    120 
    121         protected String getAttributeString(Attributes attr, String name, String defaultValue) {
    122             String v = attr.getValue(name);
    123             if (v == null)
    124                 return defaultValue;
    125119            return v;
    126120        }
     
    143137            long changesetId = getMandatoryAttributeLong(atts,"changeset");
    144138            boolean visible= getMandatoryAttributeBoolean(atts, "visible");
    145             long uid = getAttributeLong(atts, "uid",-1);
    146             String user = getAttributeString(atts, "user", tr("<anonymous>"));
     139            Long uid = getAttributeLong(atts, "uid");
     140            String userStr = atts.getValue("user");
     141            User user;
     142            if (userStr != null) {
     143                if (uid != null) {
     144                    user = User.createOsmUser(uid, userStr);
     145                } else {
     146                    user = User.createLocalUser(userStr);
     147                }
     148            } else {
     149                user = User.getAnonymous();
     150            }
    147151            String v = getMandatoryAttributeString(atts, "timestamp");
    148152            Date timestamp = DateUtils.fromString(v);
     
    152156                double lon = getMandatoryAttributeDouble(atts, "lon");
    153157                primitive = new HistoryNode(
    154                         id,version,visible,user,uid,changesetId,timestamp, new LatLon(lat,lon)
     158                        id,version,visible,user,changesetId,timestamp, new LatLon(lat,lon)
    155159                );
    156160
    157161            } else if (type.equals(OsmPrimitiveType.WAY)) {
    158162                primitive = new HistoryWay(
    159                         id,version,visible,user,uid,changesetId,timestamp
     163                        id,version,visible,user,changesetId,timestamp
    160164                );
    161165            }if (type.equals(OsmPrimitiveType.RELATION)) {
    162166                primitive = new HistoryRelation(
    163                         id,version,visible,user,uid,changesetId,timestamp
     167                        id,version,visible,user,changesetId,timestamp
    164168                );
    165169            }
Note: See TracChangeset for help on using the changeset viewer.