1 package org.apache.turbine.services.security.torque;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.ByteArrayOutputStream;
23 import java.io.PrintWriter;
24 import java.sql.Connection;
25 import java.util.Date;
26 import java.util.Hashtable;
27
28 import javax.servlet.http.HttpSessionBindingEvent;
29
30 import org.apache.torque.om.Persistent;
31 import org.apache.turbine.om.security.User;
32 import org.apache.turbine.services.security.TurbineSecurity;
33 import org.apache.turbine.util.ObjectUtils;
34 import org.apache.turbine.util.security.TurbineSecurityException;
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public class TorqueUser
52 extends TorqueObject
53 implements User
54 {
55
56 private static final long serialVersionUID = 6623129207135917717L;
57
58
59 private Date lastAccessDate = null;
60
61
62 private Hashtable permStorage = null;
63
64
65 private Hashtable tempStorage = null;
66
67
68
69
70
71 public TorqueUser()
72 {
73 super();
74 setCreateDate(new Date());
75 tempStorage = new Hashtable(10);
76 setHasLoggedIn(Boolean.FALSE);
77 }
78
79
80
81
82
83
84
85
86 public TorqueUser(Persistent obj)
87 {
88 super(obj);
89
90
91
92
93 tempStorage = new Hashtable(10);
94 setHasLoggedIn(Boolean.FALSE);
95 }
96
97
98
99
100
101
102
103
104
105
106 public Persistent getPersistentObj()
107 {
108 if (obj == null)
109 {
110 obj = UserPeerManager.newPersistentInstance();
111 }
112 return obj;
113 }
114
115
116
117
118
119
120
121
122
123 public void save(String torqueName)
124 throws Exception
125 {
126 setObjectdata(ObjectUtils.serializeHashtable(getPermStorage()));
127 super.save(torqueName);
128 }
129
130
131
132
133
134
135
136
137
138
139
140
141 public void save(Connection con)
142 throws Exception
143 {
144 setObjectdata(ObjectUtils.serializeHashtable(getPermStorage()));
145 super.save(con);
146 }
147
148
149
150
151
152
153
154 public void save()
155 throws TurbineSecurityException
156 {
157
158
159
160
161
162
163
164
165
166
167 try
168 {
169 setObjectdata(ObjectUtils.serializeHashtable(getPermStorage()));
170 getPersistentObj().save();
171 }
172 catch (Exception e)
173 {
174 throw new TurbineSecurityException("User object said "
175 + e.getMessage(), e);
176 }
177 }
178
179
180
181
182
183
184 public String getName()
185 {
186 return UserPeerManager.getName(getPersistentObj());
187 }
188
189
190
191
192
193
194 public void setName(String name)
195 {
196 setUserName(name);
197 }
198
199
200
201
202
203
204 public int getId()
205 {
206 return UserPeerManager.getIdAsObj(getPersistentObj()).intValue();
207 }
208
209
210
211
212
213
214 public Integer getIdAsObj()
215 {
216 return UserPeerManager.getIdAsObj(getPersistentObj());
217 }
218
219
220
221
222
223
224 public void setId(int id)
225 {
226 UserPeerManager.setId(getPersistentObj(), id);
227 }
228
229
230
231
232
233
234
235 public String getUserName()
236 {
237 return getName();
238 }
239
240
241
242
243
244
245 public void setUserName(String name)
246 {
247 UserPeerManager.setUserName(getPersistentObj(), name);
248 }
249
250
251
252
253
254
255 public String getPassword()
256 {
257 return UserPeerManager.getUserPassword(getPersistentObj());
258 }
259
260
261
262
263
264
265 public void setPassword(String password)
266 {
267 UserPeerManager.setUserPassword(getPersistentObj(), password);
268 }
269
270
271
272
273
274
275 public String getFirstName()
276 {
277 return UserPeerManager.getUserFirstName(getPersistentObj());
278 }
279
280
281
282
283
284
285 public void setFirstName(String firstName)
286 {
287 UserPeerManager.setUserFirstName(getPersistentObj(), firstName);
288 }
289
290
291
292
293
294
295 public String getLastName()
296 {
297 return UserPeerManager.getUserLastName(getPersistentObj());
298 }
299
300
301
302
303
304
305 public void setLastName(String lastName)
306 {
307 UserPeerManager.setUserLastName(getPersistentObj(), lastName);
308 }
309
310
311
312
313
314
315 public String getEmail()
316 {
317 return UserPeerManager.getUserEmail(getPersistentObj());
318 }
319
320
321
322
323
324
325 public void setEmail(String email)
326 {
327 UserPeerManager.setUserEmail(getPersistentObj(), email);
328 }
329
330
331
332
333
334
335 public String getConfirmed()
336 {
337 return UserPeerManager.getUserConfirmed(getPersistentObj());
338 }
339
340
341
342
343
344
345 public void setConfirmed(String confirm)
346 {
347 UserPeerManager.setUserConfirmed(getPersistentObj(), confirm);
348 }
349
350
351
352
353
354
355 public java.util.Date getCreateDate()
356 {
357 return UserPeerManager.getUserCreateDate(getPersistentObj());
358 }
359
360
361
362
363
364
365 public void setCreateDate(java.util.Date createDate)
366 {
367 UserPeerManager.setUserCreateDate(getPersistentObj(), createDate);
368 }
369
370
371
372
373
374
375 public java.util.Date getLastLogin()
376 {
377 return UserPeerManager.getUserLastLogin(getPersistentObj());
378 }
379
380
381
382
383
384
385 public void setLastLogin(java.util.Date lastLogin)
386 {
387 UserPeerManager.setUserLastLogin(getPersistentObj(), lastLogin);
388 }
389
390
391
392
393
394
395
396
397
398 public byte [] getObjectdata()
399 {
400 return UserPeerManager.getUserObjectdata(getPersistentObj());
401 }
402
403
404
405
406
407
408 public void setObjectdata(byte [] objectdata)
409 {
410 UserPeerManager.setUserObjectdata(getPersistentObj(), objectdata);
411 }
412
413
414
415
416
417
418
419 public int getAccessCounter()
420 {
421 try
422 {
423 return ((Integer) getPerm(User.ACCESS_COUNTER)).intValue();
424 }
425 catch (Exception e)
426 {
427 return 0;
428 }
429 }
430
431
432
433
434
435
436 public int getAccessCounterForSession()
437 {
438 try
439 {
440 return ((Integer) getTemp(User.SESSION_ACCESS_COUNTER)).intValue();
441 }
442 catch (Exception e)
443 {
444 return 0;
445 }
446 }
447
448
449
450
451 public void incrementAccessCounter()
452 {
453
454 setAccessCounter(getAccessCounter() + 1);
455 }
456
457
458
459
460 public void incrementAccessCounterForSession()
461 {
462 setAccessCounterForSession(getAccessCounterForSession() + 1);
463 }
464
465
466
467
468
469
470 public void setAccessCounter(int cnt)
471 {
472 setPerm(User.ACCESS_COUNTER, new Integer(cnt));
473 }
474
475
476
477
478
479
480
481 public void setAccessCounterForSession(int cnt)
482 {
483 setTemp(User.SESSION_ACCESS_COUNTER, new Integer(cnt));
484 }
485
486
487
488
489
490
491
492
493
494 public boolean isConfirmed()
495 {
496 String value = getConfirmed();
497 return (value != null && value.equals(User.CONFIRM_DATA));
498 }
499
500
501
502
503
504
505 public boolean hasLoggedIn()
506 {
507 Boolean loggedIn = getHasLoggedIn();
508 return (loggedIn != null && loggedIn.booleanValue());
509 }
510
511
512
513
514
515
516
517 public void setHasLoggedIn(Boolean value)
518 {
519 setTemp(User.HAS_LOGGED_IN, value);
520 }
521
522
523
524
525
526
527
528 public java.util.Date getLastAccessDate()
529 {
530 if (lastAccessDate == null)
531 {
532 setLastAccessDate();
533 }
534 return lastAccessDate;
535 }
536
537
538
539
540
541 public void setLastAccessDate()
542 {
543 lastAccessDate = new java.util.Date();
544 }
545
546
547
548
549
550
551
552
553 public Hashtable getPermStorage()
554 {
555 if (permStorage == null)
556 {
557 byte [] objectdata = getObjectdata();
558
559 if (objectdata != null)
560 {
561 permStorage = (Hashtable) ObjectUtils.deserialize(objectdata);
562 }
563
564 if (permStorage == null)
565 {
566 permStorage = new Hashtable();
567 }
568 }
569
570 return permStorage;
571 }
572
573
574
575
576
577
578
579 public void setPermStorage(Hashtable permStorage)
580 {
581 if (permStorage != null)
582 {
583 this.permStorage = permStorage;
584 }
585 }
586
587
588
589
590
591
592
593 public Hashtable getTempStorage()
594 {
595 if (tempStorage == null)
596 {
597 tempStorage = new Hashtable();
598 }
599 return tempStorage;
600 }
601
602
603
604
605
606
607
608 public void setTempStorage(Hashtable tempStorage)
609 {
610 if (tempStorage != null)
611 {
612 this.tempStorage = tempStorage;
613 }
614 }
615
616
617
618
619
620
621
622 public Object getPerm(String name)
623 {
624 return getPermStorage().get(name);
625 }
626
627
628
629
630
631
632
633
634
635 public Object getPerm(String name, Object def)
636 {
637 try
638 {
639 Object val = getPermStorage().get(name);
640 return (val == null ? def : val);
641 }
642 catch (Exception e)
643 {
644 return def;
645 }
646 }
647
648
649
650
651
652
653
654
655
656
657 public void setPerm(String name, Object value)
658 {
659 getPermStorage().put(name, (value == null) ? "" : value);
660 }
661
662
663
664
665
666
667
668 public Object getTemp(String name)
669 {
670 return getTempStorage().get(name);
671 }
672
673
674
675
676
677
678
679
680
681 public Object getTemp(String name, Object def)
682 {
683 Object val;
684 try
685 {
686 val = getTempStorage().get(name);
687 if (val == null)
688 {
689 val = def;
690 }
691 }
692 catch (Exception e)
693 {
694 val = def;
695 }
696 return val;
697 }
698
699
700
701
702
703
704
705
706
707
708 public void setTemp(String name, Object value)
709 {
710 getTempStorage().put(name, (value == null) ? "" : value);
711 }
712
713
714
715
716
717
718
719 public Object removeTemp(String name)
720 {
721 return getTempStorage().remove(name);
722 }
723
724
725
726
727
728
729 public void updateLastLogin()
730 throws Exception
731 {
732 setLastLogin(new java.util.Date());
733 }
734
735
736
737
738
739
740
741 public void valueBound(HttpSessionBindingEvent hsbe)
742 {
743
744 }
745
746
747
748
749
750
751
752 public void valueUnbound(HttpSessionBindingEvent hsbe)
753 {
754 try
755 {
756 if (hasLoggedIn())
757 {
758 TurbineSecurity.saveOnSessionUnbind(this);
759 }
760 }
761 catch (Exception e)
762 {
763
764
765
766
767
768 ByteArrayOutputStream ostr = new ByteArrayOutputStream();
769 e.printStackTrace(new PrintWriter(ostr, true));
770 String stackTrace = ostr.toString();
771 System.out.println(stackTrace);
772 }
773 }
774
775
776
777
778
779
780
781
782 private Boolean getHasLoggedIn()
783 {
784 return (Boolean) getTemp(User.HAS_LOGGED_IN);
785 }
786
787 }