org.openstreetmap.josm.gui
Class JosmUserIdentityManager

java.lang.Object
  extended by org.openstreetmap.josm.gui.JosmUserIdentityManager
All Implemented Interfaces:
org.openstreetmap.josm.data.Preferences.PreferenceChangedListener

public class JosmUserIdentityManager
extends java.lang.Object
implements org.openstreetmap.josm.data.Preferences.PreferenceChangedListener

JosmUserStateManager is a global object which keeps track of what JOSM knows about the identity of the current user. JOSM can be operated anonymously provided the current user never invokes an operation on the OSM server which required authentication. In this case JOSM neither knows the user name of the OSM account of the current user nor its unique id. Perhaps the user doesn't have one. If the current user supplies a user name and a password in the JOSM preferences JOSM can partially identify the user. The current user is fully identified if JOSM knows both the user name and the unique id of the users OSM account. The later is retrieved from the OSM server with a GET /api/0.6/user/details request, submitted with the user name and password of the current user. The global JosmUserStateManager listens to Preferences.PreferenceChangeEvents and keeps track of what the current JOSM instance knows about the current user. Other subsystems can let the global JosmUserStateManager know in case they fully identify the current user, see #setFullyIdentified(String, long). The information kept by the JosmUserStateManager can be used to


Method Summary
static JosmUserIdentityManager getInstance()
          Replies the unique instance of the JOSM user identity manager
 int getUserId()
          Replies the user id of the current JOSM user.
 org.openstreetmap.josm.data.osm.UserInfo getUserInfo()
          Replies verified additional information about the current user if the user is isFullyIdentified().
 java.lang.String getUserName()
          Replies the user name of the current JOSM user.
 void initFromPreferences()
          Initializes the user identity manager from values in the Preferences
 boolean isAnonymous()
          Replies true if the current JOSM user is anonymous.
 boolean isCurrentUser(java.lang.String username)
          Replies true if the user with name username is the current user
 boolean isFullyIdentified()
          Replies true if the current JOSM user is fully identified.
 boolean isPartiallyIdentified()
          Replies true if the current JOSM user is partially identified.
 void preferenceChanged(org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent evt)
           
 void setAnonymous()
          Remembers the fact that the current JOSM user is anonymous.
 void setFullyIdentified(java.lang.String username, org.openstreetmap.josm.data.osm.UserInfo userinfo)
          Remembers the fact that the current JOSM user is fully identified with a verified pair of user name and user id.
 void setPartiallyIdentified(java.lang.String userName)
          Remebers the fact that the current JOSM user is partially identified by the user name of its OSM account.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static JosmUserIdentityManager getInstance()
Replies the unique instance of the JOSM user identity manager

Returns:
the unique instance of the JOSM user identity manager

setAnonymous

public void setAnonymous()
Remembers the fact that the current JOSM user is anonymous.


setPartiallyIdentified

public void setPartiallyIdentified(java.lang.String userName)
                            throws java.lang.IllegalArgumentException
Remebers the fact that the current JOSM user is partially identified by the user name of its OSM account.

Parameters:
userName - the user name. Must not be null. Must not be empty (whitespace only).
Throws:
java.lang.IllegalArgumentException - thrown if userName is null
java.lang.IllegalArgumentException - thrown if userName is empty

setFullyIdentified

public void setFullyIdentified(java.lang.String username,
                               org.openstreetmap.josm.data.osm.UserInfo userinfo)
                        throws java.lang.IllegalArgumentException
Remembers the fact that the current JOSM user is fully identified with a verified pair of user name and user id.

Parameters:
userName - the user name. Must not be null. Must not be empty.
userinfo - additional information about the user, retrieved from the OSM server and including the user id
Throws:
java.lang.IllegalArgumentException - thrown if userName is null
java.lang.IllegalArgumentException - thrown if userName is empty
java.lang.IllegalArgumentException - thrown if userinfo is null

isAnonymous

public boolean isAnonymous()
Replies true if the current JOSM user is anonymous.

Returns:
true if the current user is anonymous.

isPartiallyIdentified

public boolean isPartiallyIdentified()
Replies true if the current JOSM user is partially identified.

Returns:
true if the current JOSM user is partially identified.

isFullyIdentified

public boolean isFullyIdentified()
Replies true if the current JOSM user is fully identified.

Returns:
true if the current JOSM user is fully identified.

getUserName

public java.lang.String getUserName()
Replies the user name of the current JOSM user. null, if isAnonymous() is true.

Returns:
the user name of the current JOSM user

getUserId

public int getUserId()
Replies the user id of the current JOSM user. 0, if isAnonymous() or isPartiallyIdentified() is true.

Returns:
the user id of the current JOSM user

getUserInfo

public org.openstreetmap.josm.data.osm.UserInfo getUserInfo()
Replies verified additional information about the current user if the user is isFullyIdentified().

Returns:
verified additional information about the current user

initFromPreferences

public void initFromPreferences()
Initializes the user identity manager from values in the Preferences


isCurrentUser

public boolean isCurrentUser(java.lang.String username)
Replies true if the user with name username is the current user

Parameters:
username - the user name
Returns:
true if the user with name username is the current user

preferenceChanged

public void preferenceChanged(org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent evt)
Specified by:
preferenceChanged in interface org.openstreetmap.josm.data.Preferences.PreferenceChangedListener