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