Statistics
| Branch: | Revision:

m2u-upass-core / src / my / com / upass / maybank / MaybankFacadeImpl.java @ 70:be137fe903ee

History | View | Annotate | Download (12.9 KB)

1 30:aec0089bb43e hadi
package my.com.upass.maybank;
2
3 50:4121579eae5e hadi
import java.text.ParseException;
4 40:29d3fc38fdee hadi
import java.util.ArrayList;
5
import java.util.Arrays;
6 55:275e8875e7c0 hadi
import java.util.Date;
7 63:50aad4cae519 hadi
import java.util.HashMap;
8 40:29d3fc38fdee hadi
import java.util.LinkedList;
9
import java.util.List;
10 63:50aad4cae519 hadi
import java.util.Map;
11 40:29d3fc38fdee hadi
12 30:aec0089bb43e hadi
import javax.jws.WebService;
13
14 40:29d3fc38fdee hadi
import my.com.upass.MinimalConstants;
15 33:9d5b4aece71c hadi
import my.com.upass.UPassControllerV2;
16 40:29d3fc38fdee hadi
import my.com.upass.UPassException;
17 46:8f67d8567943 hadi
import my.com.upass.generic.hibernate.GenericDAOHibernate;
18
import my.com.upass.generic.hibernate.HibernateUtils;
19 37:848f67a9b39c hadi
import my.com.upass.maybank.entities.IbccUser;
20 40:29d3fc38fdee hadi
import my.com.upass.maybank.entities.Im2uUser;
21
import my.com.upass.maybank.entities.M2uUser;
22
import my.com.upass.maybank.entities.StockUser;
23
import my.com.upass.maybank.entities.TicketingUser;
24
import my.com.upass.maybank.entities.UserProfile;
25 42:d32be3a379fb hadi
import my.com.upass.pojo.ClientApp;
26 37:848f67a9b39c hadi
import my.com.upass.pojo.MinimalUserBean;
27 40:29d3fc38fdee hadi
import my.com.upass.pojo.UserAppAccess;
28 52:7d9b71dd008a hadi
import my.com.upass.util.MapWrapper;
29 30:aec0089bb43e hadi
30 40:29d3fc38fdee hadi
import org.apache.log4j.Logger;
31
import org.hibernate.Session;
32 30:aec0089bb43e hadi
33 43:78b1d801d083 hadi
/**
34
 * @author Hadi
35
 *
36
 */
37 32:d43f37e77545 hadi
@WebService(
38
                serviceName = "MaybankFacade",
39
                endpointInterface = "my.com.upass.maybank.MaybankFacade")
40
//
41
public class MaybankFacadeImpl
42
                extends MinimalMaybankFacadeImpl
43
                implements MaybankFacade {
44 30:aec0089bb43e hadi
45 40:29d3fc38fdee hadi
        private static final Logger LOGGER = Logger.getLogger(MaybankFacadeImpl.class);
46
47 33:9d5b4aece71c hadi
        private final UPassControllerV2 upcV2;
48
49 40:29d3fc38fdee hadi
        //
50
51 33:9d5b4aece71c hadi
        public MaybankFacadeImpl() {
52
                upcV2 = new UPassControllerV2();
53
        }
54
55
        @Override
56 55:275e8875e7c0 hadi
        public int newIbccAdminUser(
57 39:e450611bea1f hadi
                        String appAccessId, String hashedSecretKey,
58 34:420c5039e742 hadi
                        String username, String hashedPassword) {
59 39:e450611bea1f hadi
60 51:74be74b4d46a hadi
                final MinimalUserBean minUser = new MinimalUserBean();
61 40:29d3fc38fdee hadi
                minUser.setUsername(username);
62 57:a253181a620a hadi
                minUser.setHashedPassword(hashedPassword);
63 51:74be74b4d46a hadi
64 57:a253181a620a hadi
                return newAdminUser(appAccessId, hashedSecretKey, minUser, ClientApp.APP_ID_CCPP);
65 30:aec0089bb43e hadi
        }
66
67 51:74be74b4d46a hadi
        @Override
68 55:275e8875e7c0 hadi
        public int newIbccPublicUser(
69 37:848f67a9b39c hadi
                        String appAccessId, String hashedSecretKey,
70
                        String username, String hashedPassword, String panCc) {
71
72 51:74be74b4d46a hadi
                final IbccUser ibccUser = new IbccUser();
73 37:848f67a9b39c hadi
                ibccUser.setPanCc(panCc);
74
75 51:74be74b4d46a hadi
                final MinimalUserBean minUser = new MinimalUserBean();
76 37:848f67a9b39c hadi
                minUser.setUsername(username);
77
                minUser.setHashedPassword(hashedPassword);
78
                ibccUser.setMinUser(minUser);
79
80
                return newUser(appAccessId, hashedSecretKey, ibccUser);
81
        }
82
83 51:74be74b4d46a hadi
        @Override
84 65:4f1fc40dc837 hadi
        public int newStockUser(
85 55:275e8875e7c0 hadi
                        String appAccessId, String hashedSecretKey,
86 58:dd2bc242b7f4 hadi
                        String username, String idNo) {
87 55:275e8875e7c0 hadi
88
                StockUser stockUser = new StockUser();
89
                stockUser.setIdNo(idNo);
90
91
                MinimalUserBean minUser = new MinimalUserBean();
92
                minUser.setUsername(username);
93
                stockUser.setMinUser(minUser);
94
95
                return newUser(appAccessId, hashedSecretKey, stockUser);
96
        }
97
98
        @Override
99
        public int newIm2uUser(
100 58:dd2bc242b7f4 hadi
                        String appAccessId, String hashedSecretKey, String username,
101 55:275e8875e7c0 hadi
                        String wsFlag, String wsIdentCode, String wsMySgId, Date wsRegTimeStamp) {
102
103
                Im2uUser im2uUser = new Im2uUser();
104
                im2uUser.setWsFlag(wsFlag);
105
                im2uUser.setWsIdentCode(wsIdentCode);
106
                im2uUser.setWsMySgId(wsMySgId);
107
                im2uUser.setWsRegTimeStamp(wsRegTimeStamp);
108
109
                MinimalUserBean minUser = new MinimalUserBean();
110
                minUser.setUsername(username);
111
                im2uUser.setMinUser(minUser);
112
113
                return newUser(appAccessId, hashedSecretKey, im2uUser);
114
        }
115
116
        @Override
117 51:74be74b4d46a hadi
        public int newTicketingUser(
118 52:7d9b71dd008a hadi
                        String appAccessId, String hashedSecretKey,
119
                        String username, String hashedPassword,
120 51:74be74b4d46a hadi
                        String fullName, String firstName, String lastName, String payeeCode) {
121
122
                final TicketingUser ticketingUser = new TicketingUser();
123
                ticketingUser.setFullName(fullName);
124
                ticketingUser.setFirstName(firstName);
125
                ticketingUser.setLastName(lastName);
126
                ticketingUser.setPayeeCode(payeeCode);
127 52:7d9b71dd008a hadi
128 51:74be74b4d46a hadi
                final MinimalUserBean minUser = new MinimalUserBean();
129
                minUser.setUsername(username);
130
                minUser.setHashedPassword(hashedPassword);
131
                ticketingUser.setMinUser(minUser);
132 52:7d9b71dd008a hadi
133 51:74be74b4d46a hadi
                return newUser(appAccessId, hashedSecretKey, ticketingUser);
134
        }
135 52:7d9b71dd008a hadi
136 43:78b1d801d083 hadi
        /**
137
         * @deprecated
138
         * @see #lookupUsername(String, String, String)
139
         */
140
        @Override
141
        public Response lookupUsername_internal(
142
                        String appAccessId, String hashedSecretKey, String username) {
143
144
                throw new java.lang.UnsupportedOperationException();
145
        }
146
147 33:9d5b4aece71c hadi
        @Override
148 39:e450611bea1f hadi
        public ResponseElement lookupUsername(
149 61:a55a184028a1 hadi
                        String appAccessId, String hashedSecretKey, String username) {
150
151
                final Response response = super.lookupUsername_internal(
152
                                appAccessId, hashedSecretKey, username);
153
154
                return new ResponseElement(response);
155
        }
156
157
        /**
158
         * @deprecated
159
         * @see #lookupUsername(String, String, String)
160
         */
161
        @Override
162
        public Response lookupUsernameForApp_internal(
163 60:1cff9a56093f hadi
                        String appAccessId, String hashedSecretKey,
164
                        String username, Integer appId) {
165 39:e450611bea1f hadi
166 65:4f1fc40dc837 hadi
                final String thisClassName = getClass().getName();
167
168
                StackTraceElement traceElement = Thread.currentThread().getStackTrace()[1];
169
                final String invokerClassName = traceElement.getClassName();
170
171
                if (invokerClassName.equals(thisClassName))
172
                        return super.lookupUsernameForApp_internal(
173
                                        appAccessId, hashedSecretKey, username, appId);
174
                else
175
                        throw new java.lang.UnsupportedOperationException();
176 61:a55a184028a1 hadi
        }
177
178
        @Override
179
        public ResponseElement lookupUsernameForApp(
180
                        String appAccessId, String hashedSecretKey,
181
                        String username, Integer appId) {
182
183
                final Response response = super.lookupUsernameForApp_internal(
184 60:1cff9a56093f hadi
                                appAccessId, hashedSecretKey, username, appId);
185 61:a55a184028a1 hadi
186 39:e450611bea1f hadi
                return new ResponseElement(response);
187
        }
188
189 43:78b1d801d083 hadi
        /**
190
         * @deprecated
191
         * @see #lookupPublicUsername(String, String, String)
192
         */
193 40:29d3fc38fdee hadi
        @Override
194 43:78b1d801d083 hadi
        public Response lookupPublicUsername_internal(
195 40:29d3fc38fdee hadi
                        String appAccessId, String hashedSecretKey, String username) {
196
197 42:d32be3a379fb hadi
                throw new java.lang.UnsupportedOperationException();
198 40:29d3fc38fdee hadi
        }
199
200 39:e450611bea1f hadi
        @Override
201 42:d32be3a379fb hadi
        public ResponseElement lookupPublicUsername(
202 40:29d3fc38fdee hadi
                        String appAccessId, String hashedSecretKey, String username) {
203 39:e450611bea1f hadi
204 42:d32be3a379fb hadi
                final Response response = super.lookupPublicUsername_internal(appAccessId, hashedSecretKey, username);
205
                return new ResponseElement(response);
206
        }
207
208 43:78b1d801d083 hadi
        /**
209
         * @deprecated
210
         * @see #lookupPan1(String, String, String)
211
         */
212 42:d32be3a379fb hadi
        @Override
213
        public Response lookupPan1_internal(
214
                        String appAccessId, String hashedSecretKey, String pan1) {
215
216
                throw new java.lang.UnsupportedOperationException();
217
        }
218
219
        @Override
220
        public ResponseElement lookupPan1(
221
                        String appAccessId, String hashedSecretKey, String pan1) {
222
223
                final Response response = super.lookupPan1_internal(appAccessId, hashedSecretKey, pan1);
224
                return new ResponseElement(response);
225
        }
226
227 43:78b1d801d083 hadi
        /**
228
         * @deprecated
229
         * @see #lookupPan2(String, String, String)
230
         */
231 42:d32be3a379fb hadi
        @Override
232
        public Response lookupPan2_internal(
233
                        String appAccessId, String hashedSecretKey, String pan1) {
234
235
                throw new java.lang.UnsupportedOperationException();
236
        }
237
238
        @Override
239
        public ResponseElement lookupPan2(
240
                        String appAccessId, String hashedSecretKey, String pan2) {
241
242
                final Response response = super.lookupPan2_internal(appAccessId, hashedSecretKey, pan2);
243
                return new ResponseElement(response);
244
        }
245
246 43:78b1d801d083 hadi
        /**
247
         * @deprecated
248
         * @see #lookupPanCc(String, String, String)
249
         */
250 42:d32be3a379fb hadi
        @Override
251
        public Response lookupPanCc_internal(
252
                        String appAccessId, String hashedSecretKey, String panCc) {
253
254
                throw new java.lang.UnsupportedOperationException();
255
        }
256
257
        @Override
258
        public ResponseElement lookupPanCc(
259
                        String appAccessId, String hashedSecretKey, String panCc) {
260
261
                final Response response = super.lookupPanCc_internal(appAccessId, hashedSecretKey, panCc);
262
                return new ResponseElement(response);
263 30:aec0089bb43e hadi
        }
264
265 33:9d5b4aece71c hadi
        @Override
266 34:420c5039e742 hadi
        public int deleteUser(
267 39:e450611bea1f hadi
                        String appAccessId, String hashedSecretKey,
268 34:420c5039e742 hadi
                        String username) {
269 39:e450611bea1f hadi
270 43:78b1d801d083 hadi
                int rc = MinimalConstants.ERR_UNKNOWN;
271
                Session session = null;
272
                try {
273
                        session = HibernateUtils.currentSession();
274
                        session.beginTransaction();
275
276 44:7a7fb8fcfd6e hadi
                        rc = upcV2.deleteUserWithTheProfile(appAccessId, hashedSecretKey, username, session);
277
278
                        if (rc == MinimalConstants.ERR_SUCCESS)
279
                                session.getTransaction().commit();
280
                        else
281
                                GenericDAOHibernate.rollbackTransactionIfAny(session);
282
283
                } catch (UPassException e) {
284
                        rc = e.getErrorCode();
285
                        e.printStackTrace();
286
                        GenericDAOHibernate.rollbackTransactionIfAny(session);
287 43:78b1d801d083 hadi
288
                } catch (Exception e) {
289
                        LOGGER.error(e, e);
290
                        GenericDAOHibernate.rollbackTransactionIfAny(session);
291
292
                } finally {
293
                        GenericDAOHibernate.closeSessionIfAny(session);
294
                }
295
                return rc;
296 30:aec0089bb43e hadi
        }
297
298 33:9d5b4aece71c hadi
        @Override
299 40:29d3fc38fdee hadi
        public ResponseListElement searchUserByFilter(
300 52:7d9b71dd008a hadi
                        String appAccessId, String hashedSecretKey, MapWrapper searchFilter) {
301 39:e450611bea1f hadi
302 40:29d3fc38fdee hadi
                ResponseListElement res = new ResponseListElement();
303 52:7d9b71dd008a hadi
                final List<MapWrapper> items = new LinkedList<MapWrapper>();
304 40:29d3fc38fdee hadi
305
                Session session = null;
306
                try {
307
                        session = HibernateUtils.currentSession();
308 42:d32be3a379fb hadi
309 40:29d3fc38fdee hadi
                        List<UserProfile> examples = new ArrayList<UserProfile>(5);
310
                        for (Class<? extends UserProfile> clazz : Arrays.asList(
311
                                        IbccUser.class, Im2uUser.class, M2uUser.class, StockUser.class, TicketingUser.class)) {
312
313
                                final UserProfile example = clazz.newInstance();
314 52:7d9b71dd008a hadi
                                example.mapToProperties(searchFilter.getMap());
315 40:29d3fc38fdee hadi
                                examples.add(example);
316
                        }
317 42:d32be3a379fb hadi
                        List<UserProfile> profiles = upcV2.listProfilesByExamples(
318
                                        appAccessId, hashedSecretKey, examples, session);
319
320 40:29d3fc38fdee hadi
                        for (UserProfile profile : profiles)
321 52:7d9b71dd008a hadi
                                items.add(new MapWrapper(profile.propertiesToMap()));
322 40:29d3fc38fdee hadi
323
                        res.setItems(items);
324
                        res.setCode(MinimalConstants.ERR_SUCCESS);
325
326
                } catch (UPassException e) {
327
                        LOGGER.info(e, e);
328
                        res.setCode(e.getErrorCode());
329
330 50:4121579eae5e hadi
                } catch (ParseException e) {
331
                        LOGGER.error(e, e);
332
                        res.setCode(MinimalConstants.ERR_INVALID_INPUT);
333
334 40:29d3fc38fdee hadi
                } catch (Exception e) {
335
                        LOGGER.error(e, e);
336
                        res.setCode(MinimalConstants.ERR_UNKNOWN);
337
338
                } finally {
339
                        GenericDAOHibernate.closeSessionIfAny(session);
340
                }
341
                return res;
342 39:e450611bea1f hadi
        }
343
344
        @Override
345
        public int changeIdNo(
346
                        String appAccessId, String hashedSecretKey,
347
                        String username, String idNo) {
348
349 40:29d3fc38fdee hadi
                Session session = null;
350
                try {
351
                        session = HibernateUtils.currentSession();
352
                        session.beginTransaction();
353
354
                        UserProfile profile = upcV2.findProfile(
355 42:d32be3a379fb hadi
                                        appAccessId, hashedSecretKey, username, ClientApp.APP_ID_ONLINE_STOCK, session);
356 40:29d3fc38fdee hadi
357
                        if (profile instanceof StockUser) {
358
                                StockUser stockUser = (StockUser) profile;
359
                                stockUser.setIdNo(idNo);
360
361
                                int rc = upcV2.updateProfileShallowly(
362
                                                appAccessId, hashedSecretKey, stockUser, session);
363
364 44:7a7fb8fcfd6e hadi
                                if (rc == MinimalConstants.ERR_SUCCESS)
365
                                        session.getTransaction().commit();
366
                                else
367
                                        GenericDAOHibernate.rollbackTransactionIfAny(session);
368
369 40:29d3fc38fdee hadi
                                return rc;
370
371
                        } else {
372
                                GenericDAOHibernate.rollbackTransactionIfAny(session);
373 42:d32be3a379fb hadi
                                return MinimalConstants.ERR_INVALID_INPUT;
374 40:29d3fc38fdee hadi
                        }
375
                } catch (UPassException e) {
376
                        LOGGER.info(e, e);
377
                        GenericDAOHibernate.rollbackTransactionIfAny(session);
378
                        return e.getErrorCode();
379
380
                } catch (Exception e) {
381
                        LOGGER.error(e, e);
382
                        GenericDAOHibernate.rollbackTransactionIfAny(session);
383
                        return MinimalConstants.ERR_UNKNOWN;
384
385
                } finally {
386
                        GenericDAOHibernate.closeSessionIfAny(session);
387
                }
388
        }
389
390 51:74be74b4d46a hadi
        @Override
391
        public CountResponseElement getFailedLoginsCount(
392
                        String appAccessId, String hashedSecretKey, String username) {
393
394
                CountResponse response = super.getFailedLoginsCount(appAccessId, hashedSecretKey, username);
395
                return new CountResponseElement(response);
396
        }
397
398 63:50aad4cae519 hadi
        public int updateIm2uUser(
399
                        String appAccessId, String hashedSecretKey,
400
                        String username, MapWrapper attributes) {
401
402
                Session session = null;
403
                try {
404
                        session = HibernateUtils.currentSession();
405
                        session.beginTransaction();
406
407
                        UserProfile profile = upcV2.findProfile(
408
                                        appAccessId, hashedSecretKey, username, ClientApp.APP_ID_IM2U, session);
409
410
                        if (profile != null) {
411
                                final Map<String, String> tempMap = new HashMap<String, String>();
412
                                tempMap.putAll(profile.propertiesToMap());
413
414
                                final Map<String, String> attributesMap = attributes.getMap();
415
                                attributesMap.remove("username");
416
                                tempMap.putAll(attributesMap);
417
418 68:805ffcfa8c6f hadi
                                profile.mapToProperties(tempMap, false);
419 63:50aad4cae519 hadi
420
                                int rc = upcV2.updateProfileShallowly(
421
                                                appAccessId, hashedSecretKey, profile, session);
422
423
                                if (rc == MinimalConstants.ERR_SUCCESS) {
424
                                        session.getTransaction().commit();
425
426
                                } else {
427
                                        LOGGER.warn("Unable to update user profile.");
428
                                        GenericDAOHibernate.rollbackTransactionIfAny(session);
429
                                }
430
                                return rc;
431
432
                        } else {
433
                                GenericDAOHibernate.rollbackTransactionIfAny(session);
434
                                return MinimalConstants.ERR_INVALID_INPUT;
435
                        }
436
                } catch (UPassException e) {
437
                        LOGGER.info(e, e);
438
                        GenericDAOHibernate.rollbackTransactionIfAny(session);
439
                        return e.getErrorCode();
440
441
                } catch (Exception e) {
442
                        LOGGER.error(e, e);
443
                        GenericDAOHibernate.rollbackTransactionIfAny(session);
444
                        return MinimalConstants.ERR_UNKNOWN;
445
446
                } finally {
447
                        GenericDAOHibernate.closeSessionIfAny(session);
448
                }
449
        }
450
451 40:29d3fc38fdee hadi
        // Helper methods
452
453
        protected int newAdminUser(
454 57:a253181a620a hadi
                        String appAccessId, String hashedSecretKey, MinimalUserBean adminUser, Integer targetAppId) {
455 40:29d3fc38fdee hadi
456
                int rc = MinimalConstants.ERR_UNKNOWN;
457
                Session session = null;
458
                try {
459
                        session = HibernateUtils.currentSession();
460
                        session.beginTransaction();
461
462
                        rc = upcV2.addUser(
463 57:a253181a620a hadi
                                        appAccessId, hashedSecretKey,
464 64:6b2e89c815b3 hadi
                                        adminUser, UserAppAccess.TYPE_ADMIN, session, true);
465 40:29d3fc38fdee hadi
466 57:a253181a620a hadi
                        if (rc == MinimalConstants.ERR_SUCCESS)
467
                                session.getTransaction().commit();
468
                        else
469 40:29d3fc38fdee hadi
                                GenericDAOHibernate.rollbackTransactionIfAny(session);
470
471
                } catch (Exception e) {
472
                        GenericDAOHibernate.rollbackTransactionIfAny(session);
473
                        LOGGER.error(e, e);
474
475
                } finally {
476
                        GenericDAOHibernate.closeSessionIfAny(session);
477
                }
478
                return rc;
479 30:aec0089bb43e hadi
        }
480
}