Statistics
| Branch: | Revision:

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
}