Statistics
| Branch: | Revision:

m2u-upass-core / src / my / com / upass / maybank / MaybankFacadeImpl.java @ 62:9571b0589c96

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