Statistics
| Branch: | Revision:

m2u-upass-core / src / my / com / upass / maybank / MaybankFacadeImpl.java @ 60:1cff9a56093f

History | View | Annotate | Download (10.7 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 51:74be74b4d46a hadi
import java.util.HashMap;
8 40:29d3fc38fdee hadi
import java.util.LinkedList;
9
import java.util.List;
10
import java.util.Map;
11
12 51:74be74b4d46a hadi
import javax.jws.WebParam;
13
import javax.jws.WebResult;
14 30:aec0089bb43e hadi
import javax.jws.WebService;
15
16 40:29d3fc38fdee hadi
import my.com.upass.MinimalConstants;
17 33:9d5b4aece71c hadi
import my.com.upass.UPassControllerV2;
18 40:29d3fc38fdee hadi
import my.com.upass.UPassException;
19 46:8f67d8567943 hadi
import my.com.upass.generic.hibernate.GenericDAOHibernate;
20
import my.com.upass.generic.hibernate.HibernateUtils;
21 37:848f67a9b39c hadi
import my.com.upass.maybank.entities.IbccUser;
22 40:29d3fc38fdee hadi
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 42:d32be3a379fb hadi
import my.com.upass.pojo.ClientApp;
28 37:848f67a9b39c hadi
import my.com.upass.pojo.MinimalUserBean;
29 40:29d3fc38fdee hadi
import my.com.upass.pojo.UserAppAccess;
30 52:7d9b71dd008a hadi
import my.com.upass.util.MapElement;
31
import my.com.upass.util.MapWrapper;
32 30:aec0089bb43e hadi
33 40:29d3fc38fdee hadi
import org.apache.log4j.Logger;
34
import org.hibernate.Session;
35 30:aec0089bb43e hadi
36 43:78b1d801d083 hadi
/**
37
 * @author Hadi
38
 *
39
 */
40 32:d43f37e77545 hadi
@WebService(
41
                serviceName = "MaybankFacade",
42
                endpointInterface = "my.com.upass.maybank.MaybankFacade")
43
//
44
public class MaybankFacadeImpl
45
                extends MinimalMaybankFacadeImpl
46
                implements MaybankFacade {
47 30:aec0089bb43e hadi
48 40:29d3fc38fdee hadi
        private static final Logger LOGGER = Logger.getLogger(MaybankFacadeImpl.class);
49
50 33:9d5b4aece71c hadi
        private final UPassControllerV2 upcV2;
51
52 40:29d3fc38fdee hadi
        //
53
54 33:9d5b4aece71c hadi
        public MaybankFacadeImpl() {
55
                upcV2 = new UPassControllerV2();
56
        }
57
58
        @Override
59 55:275e8875e7c0 hadi
        public int newIbccAdminUser(
60 39:e450611bea1f hadi
                        String appAccessId, String hashedSecretKey,
61 34:420c5039e742 hadi
                        String username, String hashedPassword) {
62 39:e450611bea1f hadi
63 51:74be74b4d46a hadi
                final MinimalUserBean minUser = new MinimalUserBean();
64 40:29d3fc38fdee hadi
                minUser.setUsername(username);
65 57:a253181a620a hadi
                minUser.setHashedPassword(hashedPassword);
66 51:74be74b4d46a hadi
67 57:a253181a620a hadi
                return newAdminUser(appAccessId, hashedSecretKey, minUser, ClientApp.APP_ID_CCPP);
68 30:aec0089bb43e hadi
        }
69
70 51:74be74b4d46a hadi
        @Override
71 55:275e8875e7c0 hadi
        public int newIbccPublicUser(
72 37:848f67a9b39c hadi
                        String appAccessId, String hashedSecretKey,
73
                        String username, String hashedPassword, String panCc) {
74
75 51:74be74b4d46a hadi
                final IbccUser ibccUser = new IbccUser();
76 37:848f67a9b39c hadi
                ibccUser.setPanCc(panCc);
77
78 51:74be74b4d46a hadi
                final MinimalUserBean minUser = new MinimalUserBean();
79 37:848f67a9b39c hadi
                minUser.setUsername(username);
80
                minUser.setHashedPassword(hashedPassword);
81
                ibccUser.setMinUser(minUser);
82
83
                return newUser(appAccessId, hashedSecretKey, ibccUser);
84
        }
85
86 51:74be74b4d46a hadi
        @Override
87 55:275e8875e7c0 hadi
        public int newOnlineStockUser(
88
                        String appAccessId, String hashedSecretKey,
89 58:dd2bc242b7f4 hadi
                        String username, String idNo) {
90 55:275e8875e7c0 hadi
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 58:dd2bc242b7f4 hadi
                        String appAccessId, String hashedSecretKey, String username,
104 55:275e8875e7c0 hadi
                        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 51:74be74b4d46a hadi
        public int newTicketingUser(
121 52:7d9b71dd008a hadi
                        String appAccessId, String hashedSecretKey,
122
                        String username, String hashedPassword,
123 51:74be74b4d46a hadi
                        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 52:7d9b71dd008a hadi
131 51:74be74b4d46a hadi
                final MinimalUserBean minUser = new MinimalUserBean();
132
                minUser.setUsername(username);
133
                minUser.setHashedPassword(hashedPassword);
134
                ticketingUser.setMinUser(minUser);
135 52:7d9b71dd008a hadi
136 51:74be74b4d46a hadi
                return newUser(appAccessId, hashedSecretKey, ticketingUser);
137
        }
138 52:7d9b71dd008a hadi
139 43:78b1d801d083 hadi
        /**
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 33:9d5b4aece71c hadi
        @Override
151 39:e450611bea1f hadi
        public ResponseElement lookupUsername(
152 60:1cff9a56093f hadi
                        String appAccessId, String hashedSecretKey,
153
                        String username, Integer appId) {
154 39:e450611bea1f hadi
155 60:1cff9a56093f hadi
                final Response response = super.lookupUsername_internal(
156
                                appAccessId, hashedSecretKey, username, appId);
157
158 39:e450611bea1f hadi
                return new ResponseElement(response);
159
        }
160
161 43:78b1d801d083 hadi
        /**
162
         * @deprecated
163
         * @see #lookupPublicUsername(String, String, String)
164
         */
165 40:29d3fc38fdee hadi
        @Override
166 43:78b1d801d083 hadi
        public Response lookupPublicUsername_internal(
167 40:29d3fc38fdee hadi
                        String appAccessId, String hashedSecretKey, String username) {
168
169 42:d32be3a379fb hadi
                throw new java.lang.UnsupportedOperationException();
170 40:29d3fc38fdee hadi
        }
171
172 39:e450611bea1f hadi
        @Override
173 42:d32be3a379fb hadi
        public ResponseElement lookupPublicUsername(
174 40:29d3fc38fdee hadi
                        String appAccessId, String hashedSecretKey, String username) {
175 39:e450611bea1f hadi
176 42:d32be3a379fb hadi
                final Response response = super.lookupPublicUsername_internal(appAccessId, hashedSecretKey, username);
177
                return new ResponseElement(response);
178
        }
179
180 43:78b1d801d083 hadi
        /**
181
         * @deprecated
182
         * @see #lookupPan1(String, String, String)
183
         */
184 42:d32be3a379fb hadi
        @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 43:78b1d801d083 hadi
        /**
200
         * @deprecated
201
         * @see #lookupPan2(String, String, String)
202
         */
203 42:d32be3a379fb hadi
        @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 43:78b1d801d083 hadi
        /**
219
         * @deprecated
220
         * @see #lookupPanCc(String, String, String)
221
         */
222 42:d32be3a379fb hadi
        @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 30:aec0089bb43e hadi
        }
236
237 33:9d5b4aece71c hadi
        @Override
238 34:420c5039e742 hadi
        public int deleteUser(
239 39:e450611bea1f hadi
                        String appAccessId, String hashedSecretKey,
240 34:420c5039e742 hadi
                        String username) {
241 39:e450611bea1f hadi
242 43:78b1d801d083 hadi
                int rc = MinimalConstants.ERR_UNKNOWN;
243
                Session session = null;
244
                try {
245
                        session = HibernateUtils.currentSession();
246
                        session.beginTransaction();
247
248 44:7a7fb8fcfd6e hadi
                        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 43:78b1d801d083 hadi
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 30:aec0089bb43e hadi
        }
269
270 33:9d5b4aece71c hadi
        @Override
271 40:29d3fc38fdee hadi
        public ResponseListElement searchUserByFilter(
272 52:7d9b71dd008a hadi
                        String appAccessId, String hashedSecretKey, MapWrapper searchFilter) {
273 39:e450611bea1f hadi
274 40:29d3fc38fdee hadi
                ResponseListElement res = new ResponseListElement();
275 52:7d9b71dd008a hadi
                final List<MapWrapper> items = new LinkedList<MapWrapper>();
276 40:29d3fc38fdee hadi
277
                Session session = null;
278
                try {
279
                        session = HibernateUtils.currentSession();
280 42:d32be3a379fb hadi
281 40:29d3fc38fdee hadi
                        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 52:7d9b71dd008a hadi
                                example.mapToProperties(searchFilter.getMap());
287 40:29d3fc38fdee hadi
                                examples.add(example);
288
                        }
289 42:d32be3a379fb hadi
                        List<UserProfile> profiles = upcV2.listProfilesByExamples(
290
                                        appAccessId, hashedSecretKey, examples, session);
291
292 40:29d3fc38fdee hadi
                        for (UserProfile profile : profiles)
293 52:7d9b71dd008a hadi
                                items.add(new MapWrapper(profile.propertiesToMap()));
294 40:29d3fc38fdee hadi
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 50:4121579eae5e hadi
                } catch (ParseException e) {
303
                        LOGGER.error(e, e);
304
                        res.setCode(MinimalConstants.ERR_INVALID_INPUT);
305
306 40:29d3fc38fdee hadi
                } 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 39:e450611bea1f hadi
        }
315
316
        @Override
317
        public int changeIdNo(
318
                        String appAccessId, String hashedSecretKey,
319
                        String username, String idNo) {
320
321 40:29d3fc38fdee hadi
                Session session = null;
322
                try {
323
                        session = HibernateUtils.currentSession();
324
                        session.beginTransaction();
325
326
                        UserProfile profile = upcV2.findProfile(
327 42:d32be3a379fb hadi
                                        appAccessId, hashedSecretKey, username, ClientApp.APP_ID_ONLINE_STOCK, session);
328 40:29d3fc38fdee hadi
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 44:7a7fb8fcfd6e hadi
                                if (rc == MinimalConstants.ERR_SUCCESS)
337
                                        session.getTransaction().commit();
338
                                else
339
                                        GenericDAOHibernate.rollbackTransactionIfAny(session);
340
341 40:29d3fc38fdee hadi
                                return rc;
342
343
                        } else {
344
                                GenericDAOHibernate.rollbackTransactionIfAny(session);
345 42:d32be3a379fb hadi
                                return MinimalConstants.ERR_INVALID_INPUT;
346 40:29d3fc38fdee hadi
                        }
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 51:74be74b4d46a hadi
        @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 40:29d3fc38fdee hadi
        // Helper methods
371
372
        protected int newAdminUser(
373 57:a253181a620a hadi
                        String appAccessId, String hashedSecretKey, MinimalUserBean adminUser, Integer targetAppId) {
374 40:29d3fc38fdee hadi
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 57:a253181a620a hadi
                                        appAccessId, hashedSecretKey,
383
                                        adminUser, UserAppAccess.TYPE_ADMIN, targetAppId, session, true);
384 40:29d3fc38fdee hadi
385 57:a253181a620a hadi
                        if (rc == MinimalConstants.ERR_SUCCESS)
386
                                session.getTransaction().commit();
387
                        else
388 40:29d3fc38fdee hadi
                                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 30:aec0089bb43e hadi
        }
399
}