Statistics
| Branch: | Revision:

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

History | View | Annotate | Download (11.1 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.LinkedList;
8
import java.util.List;
9

    
10
import javax.jws.WebService;
11

    
12
import my.com.upass.MinimalConstants;
13
import my.com.upass.UPassControllerV2;
14
import my.com.upass.UPassException;
15
import my.com.upass.generic.hibernate.GenericDAOHibernate;
16
import my.com.upass.generic.hibernate.HibernateUtils;
17
import my.com.upass.maybank.entities.IbccUser;
18
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
import my.com.upass.pojo.ClientApp;
24
import my.com.upass.pojo.MinimalUserBean;
25
import my.com.upass.pojo.UserAppAccess;
26
import my.com.upass.util.MapWrapper;
27

    
28
import org.apache.log4j.Logger;
29
import org.hibernate.Session;
30

    
31
/**
32
 * @author Hadi
33
 * 
34
 */
35
@WebService(
36
                serviceName = "MaybankFacade",
37
                endpointInterface = "my.com.upass.maybank.MaybankFacade")
38
//
39
public class MaybankFacadeImpl
40
                extends MinimalMaybankFacadeImpl
41
                implements MaybankFacade {
42

    
43
        private static final Logger LOGGER = Logger.getLogger(MaybankFacadeImpl.class);
44

    
45
        private final UPassControllerV2 upcV2;
46

    
47
        //
48

    
49
        public MaybankFacadeImpl() {
50
                upcV2 = new UPassControllerV2();
51
        }
52

    
53
        @Override
54
        public int newIbccAdminUser(
55
                        String appAccessId, String hashedSecretKey,
56
                        String username, String hashedPassword) {
57

    
58
                final MinimalUserBean minUser = new MinimalUserBean();
59
                minUser.setUsername(username);
60
                minUser.setHashedPassword(hashedPassword);
61

    
62
                return newAdminUser(appAccessId, hashedSecretKey, minUser, ClientApp.APP_ID_CCPP);
63
        }
64

    
65
        @Override
66
        public int newIbccPublicUser(
67
                        String appAccessId, String hashedSecretKey,
68
                        String username, String hashedPassword, String panCc) {
69

    
70
                final IbccUser ibccUser = new IbccUser();
71
                ibccUser.setPanCc(panCc);
72

    
73
                final MinimalUserBean minUser = new MinimalUserBean();
74
                minUser.setUsername(username);
75
                minUser.setHashedPassword(hashedPassword);
76
                ibccUser.setMinUser(minUser);
77

    
78
                return newUser(appAccessId, hashedSecretKey, ibccUser);
79
        }
80

    
81
        @Override
82
        public int newOnlineStockUser(
83
                        String appAccessId, String hashedSecretKey,
84
                        String username, String idNo) {
85

    
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
                        String appAccessId, String hashedSecretKey, String username,
99
                        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
        public int newTicketingUser(
116
                        String appAccessId, String hashedSecretKey,
117
                        String username, String hashedPassword,
118
                        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

    
126
                final MinimalUserBean minUser = new MinimalUserBean();
127
                minUser.setUsername(username);
128
                minUser.setHashedPassword(hashedPassword);
129
                ticketingUser.setMinUser(minUser);
130

    
131
                return newUser(appAccessId, hashedSecretKey, ticketingUser);
132
        }
133

    
134
        /**
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
        @Override
146
        public ResponseElement lookupUsername(
147
                        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
                        String appAccessId, String hashedSecretKey,
162
                        String username, Integer appId) {
163

    
164
                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
                                appAccessId, hashedSecretKey, username, appId);
174

    
175
                return new ResponseElement(response);
176
        }
177

    
178
        /**
179
         * @deprecated
180
         * @see #lookupPublicUsername(String, String, String)
181
         */
182
        @Override
183
        public Response lookupPublicUsername_internal(
184
                        String appAccessId, String hashedSecretKey, String username) {
185

    
186
                throw new java.lang.UnsupportedOperationException();
187
        }
188

    
189
        @Override
190
        public ResponseElement lookupPublicUsername(
191
                        String appAccessId, String hashedSecretKey, String username) {
192

    
193
                final Response response = super.lookupPublicUsername_internal(appAccessId, hashedSecretKey, username);
194
                return new ResponseElement(response);
195
        }
196

    
197
        /**
198
         * @deprecated
199
         * @see #lookupPan1(String, String, String)
200
         */
201
        @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
        /**
217
         * @deprecated
218
         * @see #lookupPan2(String, String, String)
219
         */
220
        @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
        /**
236
         * @deprecated
237
         * @see #lookupPanCc(String, String, String)
238
         */
239
        @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
        }
253

    
254
        @Override
255
        public int deleteUser(
256
                        String appAccessId, String hashedSecretKey,
257
                        String username) {
258

    
259
                int rc = MinimalConstants.ERR_UNKNOWN;
260
                Session session = null;
261
                try {
262
                        session = HibernateUtils.currentSession();
263
                        session.beginTransaction();
264

    
265
                        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

    
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
        }
286

    
287
        @Override
288
        public ResponseListElement searchUserByFilter(
289
                        String appAccessId, String hashedSecretKey, MapWrapper searchFilter) {
290

    
291
                ResponseListElement res = new ResponseListElement();
292
                final List<MapWrapper> items = new LinkedList<MapWrapper>();
293

    
294
                Session session = null;
295
                try {
296
                        session = HibernateUtils.currentSession();
297

    
298
                        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
                                example.mapToProperties(searchFilter.getMap());
304
                                examples.add(example);
305
                        }
306
                        List<UserProfile> profiles = upcV2.listProfilesByExamples(
307
                                        appAccessId, hashedSecretKey, examples, session);
308

    
309
                        for (UserProfile profile : profiles)
310
                                items.add(new MapWrapper(profile.propertiesToMap()));
311

    
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
                } catch (ParseException e) {
320
                        LOGGER.error(e, e);
321
                        res.setCode(MinimalConstants.ERR_INVALID_INPUT);
322

    
323
                } 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
        }
332

    
333
        @Override
334
        public int changeIdNo(
335
                        String appAccessId, String hashedSecretKey,
336
                        String username, String idNo) {
337

    
338
                Session session = null;
339
                try {
340
                        session = HibernateUtils.currentSession();
341
                        session.beginTransaction();
342

    
343
                        UserProfile profile = upcV2.findProfile(
344
                                        appAccessId, hashedSecretKey, username, ClientApp.APP_ID_ONLINE_STOCK, session);
345

    
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
                                if (rc == MinimalConstants.ERR_SUCCESS)
354
                                        session.getTransaction().commit();
355
                                else
356
                                        GenericDAOHibernate.rollbackTransactionIfAny(session);
357

    
358
                                return rc;
359

    
360
                        } else {
361
                                GenericDAOHibernate.rollbackTransactionIfAny(session);
362
                                return MinimalConstants.ERR_INVALID_INPUT;
363
                        }
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
        @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
        // Helper methods
388

    
389
        protected int newAdminUser(
390
                        String appAccessId, String hashedSecretKey, MinimalUserBean adminUser, Integer targetAppId) {
391

    
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
                                        appAccessId, hashedSecretKey,
400
                                        adminUser, UserAppAccess.TYPE_ADMIN, targetAppId, session, true);
401

    
402
                        if (rc == MinimalConstants.ERR_SUCCESS)
403
                                session.getTransaction().commit();
404
                        else
405
                                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
        }
416
}