m2u-upass-core / src / my / com / upass / maybank / MaybankFacadeImpl.java @ 60:1cff9a56093f
History | View | Annotate | Download (10.7 KB)
1 |
package my.com.upass.maybank; |
---|---|
2 |
|
3 |
import java.text.ParseException; |
4 |
import java.util.ArrayList; |
5 |
import java.util.Arrays; |
6 |
import java.util.Date; |
7 |
import java.util.HashMap; |
8 |
import java.util.LinkedList; |
9 |
import java.util.List; |
10 |
import java.util.Map; |
11 |
|
12 |
import javax.jws.WebParam; |
13 |
import javax.jws.WebResult; |
14 |
import javax.jws.WebService; |
15 |
|
16 |
import my.com.upass.MinimalConstants; |
17 |
import my.com.upass.UPassControllerV2; |
18 |
import my.com.upass.UPassException; |
19 |
import my.com.upass.generic.hibernate.GenericDAOHibernate; |
20 |
import my.com.upass.generic.hibernate.HibernateUtils; |
21 |
import my.com.upass.maybank.entities.IbccUser; |
22 |
import my.com.upass.maybank.entities.Im2uUser; |
23 |
import my.com.upass.maybank.entities.M2uUser; |
24 |
import my.com.upass.maybank.entities.StockUser; |
25 |
import my.com.upass.maybank.entities.TicketingUser; |
26 |
import my.com.upass.maybank.entities.UserProfile; |
27 |
import my.com.upass.pojo.ClientApp; |
28 |
import my.com.upass.pojo.MinimalUserBean; |
29 |
import my.com.upass.pojo.UserAppAccess; |
30 |
import my.com.upass.util.MapElement; |
31 |
import my.com.upass.util.MapWrapper; |
32 |
|
33 |
import org.apache.log4j.Logger; |
34 |
import org.hibernate.Session; |
35 |
|
36 |
/**
|
37 |
* @author Hadi
|
38 |
*
|
39 |
*/
|
40 |
@WebService(
|
41 |
serviceName = "MaybankFacade",
|
42 |
endpointInterface = "my.com.upass.maybank.MaybankFacade")
|
43 |
//
|
44 |
public class MaybankFacadeImpl |
45 |
extends MinimalMaybankFacadeImpl
|
46 |
implements MaybankFacade {
|
47 |
|
48 |
private static final Logger LOGGER = Logger.getLogger(MaybankFacadeImpl.class); |
49 |
|
50 |
private final UPassControllerV2 upcV2; |
51 |
|
52 |
//
|
53 |
|
54 |
public MaybankFacadeImpl() {
|
55 |
upcV2 = new UPassControllerV2();
|
56 |
} |
57 |
|
58 |
@Override
|
59 |
public int newIbccAdminUser( |
60 |
String appAccessId, String hashedSecretKey, |
61 |
String username, String hashedPassword) { |
62 |
|
63 |
final MinimalUserBean minUser = new MinimalUserBean(); |
64 |
minUser.setUsername(username); |
65 |
minUser.setHashedPassword(hashedPassword); |
66 |
|
67 |
return newAdminUser(appAccessId, hashedSecretKey, minUser, ClientApp.APP_ID_CCPP);
|
68 |
} |
69 |
|
70 |
@Override
|
71 |
public int newIbccPublicUser( |
72 |
String appAccessId, String hashedSecretKey, |
73 |
String username, String hashedPassword, String panCc) { |
74 |
|
75 |
final IbccUser ibccUser = new IbccUser(); |
76 |
ibccUser.setPanCc(panCc); |
77 |
|
78 |
final MinimalUserBean minUser = new MinimalUserBean(); |
79 |
minUser.setUsername(username); |
80 |
minUser.setHashedPassword(hashedPassword); |
81 |
ibccUser.setMinUser(minUser); |
82 |
|
83 |
return newUser(appAccessId, hashedSecretKey, ibccUser);
|
84 |
} |
85 |
|
86 |
@Override
|
87 |
public int newOnlineStockUser( |
88 |
String appAccessId, String hashedSecretKey, |
89 |
String username, String idNo) { |
90 |
|
91 |
StockUser stockUser = new StockUser();
|
92 |
stockUser.setIdNo(idNo); |
93 |
|
94 |
MinimalUserBean minUser = new MinimalUserBean();
|
95 |
minUser.setUsername(username); |
96 |
stockUser.setMinUser(minUser); |
97 |
|
98 |
return newUser(appAccessId, hashedSecretKey, stockUser);
|
99 |
} |
100 |
|
101 |
@Override
|
102 |
public int newIm2uUser( |
103 |
String appAccessId, String hashedSecretKey, String username, |
104 |
String wsFlag, String wsIdentCode, String wsMySgId, Date wsRegTimeStamp) { |
105 |
|
106 |
Im2uUser im2uUser = new Im2uUser();
|
107 |
im2uUser.setWsFlag(wsFlag); |
108 |
im2uUser.setWsIdentCode(wsIdentCode); |
109 |
im2uUser.setWsMySgId(wsMySgId); |
110 |
im2uUser.setWsRegTimeStamp(wsRegTimeStamp); |
111 |
|
112 |
MinimalUserBean minUser = new MinimalUserBean();
|
113 |
minUser.setUsername(username); |
114 |
im2uUser.setMinUser(minUser); |
115 |
|
116 |
return newUser(appAccessId, hashedSecretKey, im2uUser);
|
117 |
} |
118 |
|
119 |
@Override
|
120 |
public int newTicketingUser( |
121 |
String appAccessId, String hashedSecretKey, |
122 |
String username, String hashedPassword, |
123 |
String fullName, String firstName, String lastName, String payeeCode) { |
124 |
|
125 |
final TicketingUser ticketingUser = new TicketingUser(); |
126 |
ticketingUser.setFullName(fullName); |
127 |
ticketingUser.setFirstName(firstName); |
128 |
ticketingUser.setLastName(lastName); |
129 |
ticketingUser.setPayeeCode(payeeCode); |
130 |
|
131 |
final MinimalUserBean minUser = new MinimalUserBean(); |
132 |
minUser.setUsername(username); |
133 |
minUser.setHashedPassword(hashedPassword); |
134 |
ticketingUser.setMinUser(minUser); |
135 |
|
136 |
return newUser(appAccessId, hashedSecretKey, ticketingUser);
|
137 |
} |
138 |
|
139 |
/**
|
140 |
* @deprecated
|
141 |
* @see #lookupUsername(String, String, String)
|
142 |
*/
|
143 |
@Override
|
144 |
public Response lookupUsername_internal(
|
145 |
String appAccessId, String hashedSecretKey, String username) { |
146 |
|
147 |
throw new java.lang.UnsupportedOperationException(); |
148 |
} |
149 |
|
150 |
@Override
|
151 |
public ResponseElement lookupUsername(
|
152 |
String appAccessId, String hashedSecretKey, |
153 |
String username, Integer appId) { |
154 |
|
155 |
final Response response = super.lookupUsername_internal( |
156 |
appAccessId, hashedSecretKey, username, appId); |
157 |
|
158 |
return new ResponseElement(response); |
159 |
} |
160 |
|
161 |
/**
|
162 |
* @deprecated
|
163 |
* @see #lookupPublicUsername(String, String, String)
|
164 |
*/
|
165 |
@Override
|
166 |
public Response lookupPublicUsername_internal(
|
167 |
String appAccessId, String hashedSecretKey, String username) { |
168 |
|
169 |
throw new java.lang.UnsupportedOperationException(); |
170 |
} |
171 |
|
172 |
@Override
|
173 |
public ResponseElement lookupPublicUsername(
|
174 |
String appAccessId, String hashedSecretKey, String username) { |
175 |
|
176 |
final Response response = super.lookupPublicUsername_internal(appAccessId, hashedSecretKey, username); |
177 |
return new ResponseElement(response); |
178 |
} |
179 |
|
180 |
/**
|
181 |
* @deprecated
|
182 |
* @see #lookupPan1(String, String, String)
|
183 |
*/
|
184 |
@Override
|
185 |
public Response lookupPan1_internal(
|
186 |
String appAccessId, String hashedSecretKey, String pan1) { |
187 |
|
188 |
throw new java.lang.UnsupportedOperationException(); |
189 |
} |
190 |
|
191 |
@Override
|
192 |
public ResponseElement lookupPan1(
|
193 |
String appAccessId, String hashedSecretKey, String pan1) { |
194 |
|
195 |
final Response response = super.lookupPan1_internal(appAccessId, hashedSecretKey, pan1); |
196 |
return new ResponseElement(response); |
197 |
} |
198 |
|
199 |
/**
|
200 |
* @deprecated
|
201 |
* @see #lookupPan2(String, String, String)
|
202 |
*/
|
203 |
@Override
|
204 |
public Response lookupPan2_internal(
|
205 |
String appAccessId, String hashedSecretKey, String pan1) { |
206 |
|
207 |
throw new java.lang.UnsupportedOperationException(); |
208 |
} |
209 |
|
210 |
@Override
|
211 |
public ResponseElement lookupPan2(
|
212 |
String appAccessId, String hashedSecretKey, String pan2) { |
213 |
|
214 |
final Response response = super.lookupPan2_internal(appAccessId, hashedSecretKey, pan2); |
215 |
return new ResponseElement(response); |
216 |
} |
217 |
|
218 |
/**
|
219 |
* @deprecated
|
220 |
* @see #lookupPanCc(String, String, String)
|
221 |
*/
|
222 |
@Override
|
223 |
public Response lookupPanCc_internal(
|
224 |
String appAccessId, String hashedSecretKey, String panCc) { |
225 |
|
226 |
throw new java.lang.UnsupportedOperationException(); |
227 |
} |
228 |
|
229 |
@Override
|
230 |
public ResponseElement lookupPanCc(
|
231 |
String appAccessId, String hashedSecretKey, String panCc) { |
232 |
|
233 |
final Response response = super.lookupPanCc_internal(appAccessId, hashedSecretKey, panCc); |
234 |
return new ResponseElement(response); |
235 |
} |
236 |
|
237 |
@Override
|
238 |
public int deleteUser( |
239 |
String appAccessId, String hashedSecretKey, |
240 |
String username) {
|
241 |
|
242 |
int rc = MinimalConstants.ERR_UNKNOWN;
|
243 |
Session session = null;
|
244 |
try {
|
245 |
session = HibernateUtils.currentSession(); |
246 |
session.beginTransaction(); |
247 |
|
248 |
rc = upcV2.deleteUserWithTheProfile(appAccessId, hashedSecretKey, username, session); |
249 |
|
250 |
if (rc == MinimalConstants.ERR_SUCCESS)
|
251 |
session.getTransaction().commit(); |
252 |
else
|
253 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
254 |
|
255 |
} catch (UPassException e) {
|
256 |
rc = e.getErrorCode(); |
257 |
e.printStackTrace(); |
258 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
259 |
|
260 |
} catch (Exception e) { |
261 |
LOGGER.error(e, e); |
262 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
263 |
|
264 |
} finally {
|
265 |
GenericDAOHibernate.closeSessionIfAny(session); |
266 |
} |
267 |
return rc;
|
268 |
} |
269 |
|
270 |
@Override
|
271 |
public ResponseListElement searchUserByFilter(
|
272 |
String appAccessId, String hashedSecretKey, MapWrapper searchFilter) { |
273 |
|
274 |
ResponseListElement res = new ResponseListElement();
|
275 |
final List<MapWrapper> items = new LinkedList<MapWrapper>(); |
276 |
|
277 |
Session session = null;
|
278 |
try {
|
279 |
session = HibernateUtils.currentSession(); |
280 |
|
281 |
List<UserProfile> examples = new ArrayList<UserProfile>(5); |
282 |
for (Class<? extends UserProfile> clazz : Arrays.asList( |
283 |
IbccUser.class, Im2uUser.class, M2uUser.class, StockUser.class, TicketingUser.class)) { |
284 |
|
285 |
final UserProfile example = clazz.newInstance();
|
286 |
example.mapToProperties(searchFilter.getMap()); |
287 |
examples.add(example); |
288 |
} |
289 |
List<UserProfile> profiles = upcV2.listProfilesByExamples(
|
290 |
appAccessId, hashedSecretKey, examples, session); |
291 |
|
292 |
for (UserProfile profile : profiles)
|
293 |
items.add(new MapWrapper(profile.propertiesToMap()));
|
294 |
|
295 |
res.setItems(items); |
296 |
res.setCode(MinimalConstants.ERR_SUCCESS); |
297 |
|
298 |
} catch (UPassException e) {
|
299 |
LOGGER.info(e, e); |
300 |
res.setCode(e.getErrorCode()); |
301 |
|
302 |
} catch (ParseException e) { |
303 |
LOGGER.error(e, e); |
304 |
res.setCode(MinimalConstants.ERR_INVALID_INPUT); |
305 |
|
306 |
} catch (Exception e) { |
307 |
LOGGER.error(e, e); |
308 |
res.setCode(MinimalConstants.ERR_UNKNOWN); |
309 |
|
310 |
} finally {
|
311 |
GenericDAOHibernate.closeSessionIfAny(session); |
312 |
} |
313 |
return res;
|
314 |
} |
315 |
|
316 |
@Override
|
317 |
public int changeIdNo( |
318 |
String appAccessId, String hashedSecretKey, |
319 |
String username, String idNo) { |
320 |
|
321 |
Session session = null;
|
322 |
try {
|
323 |
session = HibernateUtils.currentSession(); |
324 |
session.beginTransaction(); |
325 |
|
326 |
UserProfile profile = upcV2.findProfile( |
327 |
appAccessId, hashedSecretKey, username, ClientApp.APP_ID_ONLINE_STOCK, session); |
328 |
|
329 |
if (profile instanceof StockUser) { |
330 |
StockUser stockUser = (StockUser) profile; |
331 |
stockUser.setIdNo(idNo); |
332 |
|
333 |
int rc = upcV2.updateProfileShallowly(
|
334 |
appAccessId, hashedSecretKey, stockUser, session); |
335 |
|
336 |
if (rc == MinimalConstants.ERR_SUCCESS)
|
337 |
session.getTransaction().commit(); |
338 |
else
|
339 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
340 |
|
341 |
return rc;
|
342 |
|
343 |
} else {
|
344 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
345 |
return MinimalConstants.ERR_INVALID_INPUT;
|
346 |
} |
347 |
} catch (UPassException e) {
|
348 |
LOGGER.info(e, e); |
349 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
350 |
return e.getErrorCode();
|
351 |
|
352 |
} catch (Exception e) { |
353 |
LOGGER.error(e, e); |
354 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
355 |
return MinimalConstants.ERR_UNKNOWN;
|
356 |
|
357 |
} finally {
|
358 |
GenericDAOHibernate.closeSessionIfAny(session); |
359 |
} |
360 |
} |
361 |
|
362 |
@Override
|
363 |
public CountResponseElement getFailedLoginsCount(
|
364 |
String appAccessId, String hashedSecretKey, String username) { |
365 |
|
366 |
CountResponse response = super.getFailedLoginsCount(appAccessId, hashedSecretKey, username);
|
367 |
return new CountResponseElement(response); |
368 |
} |
369 |
|
370 |
// Helper methods
|
371 |
|
372 |
protected int newAdminUser( |
373 |
String appAccessId, String hashedSecretKey, MinimalUserBean adminUser, Integer targetAppId) { |
374 |
|
375 |
int rc = MinimalConstants.ERR_UNKNOWN;
|
376 |
Session session = null;
|
377 |
try {
|
378 |
session = HibernateUtils.currentSession(); |
379 |
session.beginTransaction(); |
380 |
|
381 |
rc = upcV2.addUser( |
382 |
appAccessId, hashedSecretKey, |
383 |
adminUser, UserAppAccess.TYPE_ADMIN, targetAppId, session, true);
|
384 |
|
385 |
if (rc == MinimalConstants.ERR_SUCCESS)
|
386 |
session.getTransaction().commit(); |
387 |
else
|
388 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
389 |
|
390 |
} catch (Exception e) { |
391 |
GenericDAOHibernate.rollbackTransactionIfAny(session); |
392 |
LOGGER.error(e, e); |
393 |
|
394 |
} finally {
|
395 |
GenericDAOHibernate.closeSessionIfAny(session); |
396 |
} |
397 |
return rc;
|
398 |
} |
399 |
} |