1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
/*
* Oreka -- A media capture and retrieval platform
*
* Copyright (C) 2005, orecx LLC
*
* http://www.orecx.com
*
* This program is free software, distributed under the terms of
* the GNU General Public License.
* Please refer to http://www.gnu.org/copyleft/gpl.html
*
*/
package net.sf.oreka.orktrack.messages;
import net.sf.oreka.OrkException;
import net.sf.oreka.HibernateManager;
import net.sf.oreka.messages.AsyncMessage;
import net.sf.oreka.messages.SimpleResponseMessage;
import net.sf.oreka.messages.SyncMessage;
import net.sf.oreka.orktrack.LogManager;
import net.sf.oreka.orktrack.Port;
import net.sf.oreka.orktrack.PortManager;
import net.sf.oreka.orktrack.UserManager;
import net.sf.oreka.persistent.User;
import net.sf.oreka.serializers.OrkSerializer;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class UserStateMessage extends SyncMessage {
public enum UserState {login, logout, unkn};
private Logger log = null;
private UserState userState = UserState.unkn;
private String loginString = "";
private String recPort = "";
public UserStateMessage() {
log = LogManager.getInstance().getPortLogger();
}
@Override
public AsyncMessage process() {
SimpleResponseMessage response = new SimpleResponseMessage();
Session hbnSession = null;
Transaction tx = null;
try {
String comment = "";
boolean success = false;
hbnSession = HibernateManager.getSession();
tx = hbnSession.beginTransaction();
// find out user
User user = UserManager.instance().getByLoginString(loginString, hbnSession);
if (user == null) {
comment = "Could not find user for login string:" + loginString;
log.warn(comment);
}
else {
// find out port
Port port = PortManager.instance().getPort(recPort);
if (port == null) {
comment = "Could not find port for face:" + recPort;
log.warn(comment);
}
else {
if(userState == UserState.login) {
port.setUser(user);
UserManager.instance().setUserLocation(user, port);
log.info("user:" + loginString + " logging onto:" + recPort);
}
else if (userState == UserState.logout) {
port.setUser(null);
UserManager.instance().setUserLocation(user, null);
log.info("user:" + loginString + " logging out of:" + recPort);
}
success = true;
}
}
response.setComment(comment);
response.setSuccess(success);
tx.commit();
}
catch (Exception e) {
if (tx != null) {tx.rollback();}
log.error("TapeMessage.process: ", e);
response.setSuccess(false);
response.setComment(e.getMessage());
}
finally {
if(hbnSession != null) {hbnSession.close();}
}
return response;
}
public void define(OrkSerializer serializer) throws OrkException {
userState = (UserState)serializer.enumValue("userstate", userState, true);
loginString = serializer.stringValue("loginstring", loginString, true);
recPort = serializer.stringValue("recport", recPort, true);
}
public String getOrkClassName() {
return "userstate";
}
public void validate() {
// TODO Auto-generated method stub
}
}
|