1
2
3
4
5 package com.hack23.cia.service.impl.user;
6
7 import java.util.ArrayList;
8 import java.util.Date;
9 import java.util.List;
10
11 import net.sf.ehcache.Cache;
12 import net.sf.ehcache.CacheManager;
13 import net.sf.ehcache.Element;
14
15 import com.hack23.cia.model.application.dto.common.UserSessionDTO;
16 import com.hack23.cia.model.application.impl.common.ActionEvent;
17 import com.hack23.cia.model.application.impl.common.UserSession;
18 import com.hack23.cia.model.application.impl.user.ParliamentMemberActionEvent;
19 import com.hack23.cia.model.sweden.impl.ParliamentMember;
20 import com.hack23.cia.model.sweden.impl.ParliamentMemberVoteCompareResult;
21 import com.hack23.cia.model.sweden.impl.RegisterInformation;
22 import com.hack23.cia.model.sweden.impl.Vote;
23 import com.hack23.cia.service.api.common.ServiceResponse;
24 import com.hack23.cia.service.api.user.ParliamentMemberRequest;
25 import com.hack23.cia.service.api.user.ParliamentMemberResponse;
26 import com.hack23.cia.service.impl.common.ParliamentService;
27 import com.hack23.cia.service.impl.common.UserSessionService;
28
29 /***
30 * The Class ParliamentMemberRequestService.
31 */
32 public class ParliamentMemberRequestService extends
33 AbstractParliamentRequestService<ParliamentMemberRequest> {
34
35 /*** The cache manager. */
36 private final CacheManager cacheManager;
37
38 /*** The cache. */
39 private Cache cache;
40
41 /***
42 * Instantiates a new parliament member request service.
43 *
44 * @param userSessionService the user session service
45 * @param parliamentService the parliament service
46 * @param cacheManager the cache manager
47 */
48 public ParliamentMemberRequestService(
49 final UserSessionService userSessionService,
50 final ParliamentService parliamentService,final CacheManager cacheManager) {
51 super(userSessionService, parliamentService);
52 this.cacheManager = cacheManager;
53 }
54
55
56
57
58
59
60
61
62
63 @Override
64 public final ActionEvent createActionEvent(
65 final ParliamentMemberRequest request, final UserSession userSession) {
66 return new ParliamentMemberActionEvent(new Date(), userSession, request
67 .getParliamentMemberId());
68 }
69
70
71
72
73
74
75 @SuppressWarnings("unchecked")
76 @Override
77 public final Class getSupportedService() {
78 return ParliamentMemberRequest.class;
79 }
80
81
82
83
84
85
86
87 @Override
88 public final ServiceResponse handleServiceRequest(
89 final ParliamentMemberRequest request, final UserSessionDTO userSession) {
90
91 if (cache == null) {
92 cache = this.cacheManager.getCache("parliamentMemberRequestCache");
93 }
94 final Element element = cache.get(request.getParliamentMemberId());
95
96 if (element == null) {
97 final ParliamentMember parliamentMember = getParliamentService()
98 .getParliamentMember(request.getParliamentMemberId());
99 final List<ParliamentMemberVoteCompareResult> friendList = getParliamentService()
100 .getParliamentMemberFriends(parliamentMember);
101 final List<ParliamentMemberVoteCompareResult> enemyList = getParliamentService()
102 .getParliamentMemberEnemies(parliamentMember);
103 final List<ParliamentMemberVoteCompareResult> friendPartyList = getParliamentService()
104 .getParliamentMemberPartyFriends(parliamentMember);
105 final List<ParliamentMemberVoteCompareResult> enemyPartyList = getParliamentService()
106 .getParliamentMemberPartyEnemies(parliamentMember);
107
108 final List<Vote> votes = getParliamentService().findLastVotes(
109 parliamentMember.getId());
110
111 final RegisterInformation registerInformation = getParliamentService()
112 .lookupRegisterInformation(parliamentMember);
113
114 final List<Object> cacheObjects = new ArrayList<Object>();
115 cacheObjects.add(parliamentMember);
116 cacheObjects.add(friendList);
117 cacheObjects.add(enemyList);
118 cacheObjects.add(friendPartyList);
119 cacheObjects.add(enemyPartyList);
120 cacheObjects.add(votes);
121 cacheObjects.add(registerInformation);
122
123 final Element cacheElement = new Element(request.getParliamentMemberId(), cacheObjects);
124 cache.put(cacheElement);
125
126 final ParliamentMemberResponse parliamentMemberResponse = new ParliamentMemberResponse(
127 userSession, parliamentMember, friendList, enemyList,
128 friendPartyList, enemyPartyList, votes, registerInformation);
129
130 return parliamentMemberResponse;
131 } else {
132 final List<Object> cacheObjects = (List<Object>) element.getValue();
133
134 final ParliamentMemberResponse parliamentMemberResponse = new ParliamentMemberResponse(
135 userSession,(ParliamentMember) cacheObjects.get(0),(List<ParliamentMemberVoteCompareResult> ) cacheObjects.get(1),(List<ParliamentMemberVoteCompareResult> ) cacheObjects.get(2),
136 (List<ParliamentMemberVoteCompareResult>) cacheObjects.get(3),(List<ParliamentMemberVoteCompareResult> ) cacheObjects.get(4),(List<Vote>) cacheObjects.get(5), (RegisterInformation)cacheObjects.get(6));
137
138 return parliamentMemberResponse;
139 }
140 }
141 }