User.java
上传用户:weisa_1
上传日期:2007-10-14
资源大小:287k
文件大小:4k
源码类别:

手机WAP编程

开发平台:

Java

  1. package push;
  2. import members.Members;
  3. import java.io.*;
  4. import java.util.Hashtable;
  5. import java.util.Vector;
  6. import java.util.Enumeration;
  7. import javax.servlet.http.*;
  8. /**
  9.  * Class User is a used to store push information for users logged in, i.e having an active session
  10.  *
  11.  * @version 1.0
  12.  * @since 1.0
  13.  * @see HttpSessionBindingListener
  14.  */
  15. public final class User implements HttpSessionBindingListener {
  16.     /* vector of users who have currently a valid session (with push enabled WAP device). 
  17.        Whenever the session becomes invalidated, the user object is removed from the vector. */
  18.     private static final Vector usersOnline = new Vector();
  19.     private HttpSession session = null;
  20.     private final String name;
  21.     private final String address;
  22.     private final Hashtable properties; 
  23.     /**
  24.      * Creates a new <code>User</code> instance.
  25.      *
  26.      * @param name a <code>String</code> value
  27.      * @param address a <code>String</code> value
  28.      */
  29.     public User(String name, String address) {
  30. this.name = name;
  31. this.address = address;
  32. properties = new Hashtable();
  33.     }
  34.     /**
  35.      * Returns user name
  36.      *
  37.      * @return a <code>String</code> value
  38.      */
  39.     public String getName() {
  40. return (String)session.getAttribute("name");
  41.     }
  42.     /**
  43.      * Returns date of birth 
  44.      *
  45.      * @return a <code>String</code> value
  46.      */
  47.     public String getDob() {
  48. return (String)session.getAttribute("dob");
  49.     }
  50.     /**
  51.      * Returns user selected push services
  52.      *
  53.      * @return a <code>String</code> value
  54.      */
  55.     public String getPushServices() {
  56. return (String)session.getAttribute("pushservices");
  57.     }
  58.     /**
  59.      * Returns the user's (client) address
  60.      *
  61.      * @return a <code>String</code> value
  62.      */
  63.     public String getAddress() {
  64. return address;
  65.     }
  66.     /**
  67.      * Returns the user's (client) address. The address is of given type.
  68.      *
  69.      * @param addressType a <code>String</code> value (IPv4 or PLMN)
  70.      * @return a <code>String</code> value
  71.      */
  72.     public String getAddress(String addressType) {
  73. if(addressType.equals("IPv4"))
  74.     return address;
  75. else if(addressType.equals("PLMN")) 
  76.     return Members.getPhoneNumber(getName());
  77. return null;
  78.     }
  79.     /**
  80.      * Set a property with the user object
  81.      *
  82.      * @param name a <code>String</code> value
  83.      * @param value a <code>String</code> value
  84.      */
  85.     public void setProperty(String name, Object value) {
  86. properties.put(name, value);
  87.     }
  88.     /**
  89.      * Finds property object by given property name
  90.      *
  91.      * @param name a <code>String</code> value
  92.      * @return an <code>Object</code> value
  93.      */
  94.     public Object getProperty(String name) {
  95. return properties.get(name);
  96.     }
  97.     /**
  98.      * Returns users currently logged in
  99.      *
  100.      * @return a <code>Vector</code> value
  101.      */
  102.     public static Vector getUsersOnline() {
  103. return usersOnline;
  104.     }
  105.     /**
  106.      * Finds user on the basis of given name
  107.      *
  108.      * @param name a <code>String</code> value
  109.      * @return an <code>User</code> value
  110.      * @exception Exception if an error occurs
  111.      */
  112.     public static User findUser(String name) throws Exception {
  113. synchronized(usersOnline) {
  114.     for(Enumeration e = usersOnline.elements(); e.hasMoreElements();) {
  115. User user = (User)e.nextElement();
  116. if(user.getName().equals(name)) return user;
  117.     }
  118. }
  119. return null;
  120.     }
  121.     /**
  122.      * Notifies the User object that it is being bound to a session and 
  123.      * identifies the session.
  124.      *
  125.      * @param event a <code>HttpSessionBindingEvent</code> value
  126.      * @see HttpSessionBindingListener
  127.      */
  128.     public void valueBound(HttpSessionBindingEvent event) {
  129. session = event.getSession();
  130. synchronized(usersOnline) {
  131.     usersOnline.add(this);
  132. }
  133.     }
  134.     /**
  135.      * Notifies the User object that it is being unbound from a session and 
  136.      * identifies the session.
  137.      *
  138.      * @param event a <code>HttpSessionBindingEvent</code> value
  139.      * @see HttpSessionBindingListener
  140.      */
  141.     public void valueUnbound(HttpSessionBindingEvent event) {
  142. synchronized(usersOnline) {
  143.     usersOnline.remove(this);
  144.     System.out.println("Session invalidated (max inactive time): user = " + name);
  145. }
  146.     }
  147. }