001 package com.croftsoft.apps.chat.user.seri;
002
003 import java.io.*;
004 import java.util.*;
005
006 import com.croftsoft.core.animation.model.ModelId;
007 import com.croftsoft.core.lang.NullArgumentException;
008 import com.croftsoft.core.util.queue.ListQueue;
009 import com.croftsoft.core.util.queue.Queue;
010
011 import com.croftsoft.apps.chat.user.User;
012 import com.croftsoft.apps.chat.user.UserId;
013
014 /*********************************************************************
015 * Serializable User implementation.
016 *
017 * @version
018 * 2003-06-18
019 * @since
020 * 2003-06-05
021 * @author
022 * <a href="https://www.croftsoft.com/">David Wallace Croft</a>
023 *********************************************************************/
024
025 public final class SeriUser
026 implements Serializable, User
027 //////////////////////////////////////////////////////////////////////
028 //////////////////////////////////////////////////////////////////////
029 {
030
031 private static final long serialVersionUID = 0L;
032
033 //
034
035 private static final int MAX_QUEUE_SIZE = 10;
036
037 //
038
039 private final UserId userId;
040
041 private final String username;
042
043 private final Queue messageQueue;
044
045 private final Queue requestQueue;
046
047 //
048
049 private long eventIndex;
050
051 private long lastRequestTime;
052
053 private ModelId modelId;
054
055 private String password;
056
057 //////////////////////////////////////////////////////////////////////
058 //////////////////////////////////////////////////////////////////////
059
060 public SeriUser (
061 UserId userId,
062 String username,
063 String password )
064 //////////////////////////////////////////////////////////////////////
065 {
066 NullArgumentException.check ( this.userId = userId );
067
068 NullArgumentException.check ( this.username = username );
069
070 setPassword ( password );
071
072 messageQueue = new ListQueue ( new LinkedList ( ), MAX_QUEUE_SIZE );
073
074 requestQueue = new ListQueue ( new LinkedList ( ), MAX_QUEUE_SIZE );
075
076 eventIndex = new Random ( ).nextLong ( );
077
078 updateLastRequestTime ( );
079 }
080
081 //////////////////////////////////////////////////////////////////////
082 //////////////////////////////////////////////////////////////////////
083
084 public synchronized long getEventIndex ( ) { return eventIndex; }
085
086 public synchronized long getLastRequestTime ( )
087 //////////////////////////////////////////////////////////////////////
088 {
089 return lastRequestTime;
090 }
091
092 //
093
094 public Queue getMessageQueue ( ) { return messageQueue; }
095
096 public Queue getRequestQueue ( ) { return requestQueue; }
097
098 public ModelId getModelId ( ) { return modelId; }
099
100 public String getPassword ( ) { return password; }
101
102 public UserId getUserId ( ) { return userId; }
103
104 public String getUsername ( ) { return username; }
105
106 //////////////////////////////////////////////////////////////////////
107 //////////////////////////////////////////////////////////////////////
108
109 public synchronized long nextEventIndex ( )
110 //////////////////////////////////////////////////////////////////////
111 {
112 return ++eventIndex;
113 }
114
115 public void setModelId ( ModelId modelId )
116 //////////////////////////////////////////////////////////////////////
117 {
118 this.modelId = modelId;
119 }
120
121 public void setPassword ( String password )
122 //////////////////////////////////////////////////////////////////////
123 {
124 NullArgumentException.check ( this.password = password );
125 }
126
127 public void updateLastRequestTime ( )
128 //////////////////////////////////////////////////////////////////////
129 {
130 lastRequestTime = System.currentTimeMillis ( );
131 }
132
133 //////////////////////////////////////////////////////////////////////
134 //////////////////////////////////////////////////////////////////////
135 }