Changeset 4602 in josm


Ignore:
Timestamp:
20.11.2011 20:47:15 (6 months 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.