· 6 years ago · Feb 14, 2019, 03:18 PM
1package com.path.bo.common.swift.swiftinward;
2
3import java.io.BufferedReader;
4import java.io.File;
5import java.io.FileInputStream;
6import java.io.FileOutputStream;
7import java.io.IOException;
8import java.io.InputStreamReader;
9import java.io.UnsupportedEncodingException;
10import java.math.BigDecimal;
11import java.math.BigInteger;
12import java.nio.charset.StandardCharsets;
13import java.nio.file.Files;
14import java.nio.file.StandardCopyOption;
15import java.security.InvalidKeyException;
16import java.security.KeyStore;
17import java.security.NoSuchAlgorithmException;
18import java.security.Signature;
19import java.util.ArrayList;
20import java.util.Date;
21import java.util.HashMap;
22import java.util.List;
23import java.util.Map;
24import java.util.Scanner;
25import java.util.Timer;
26import java.util.TimerTask;
27import java.util.concurrent.Executors;
28import java.util.concurrent.ScheduledExecutorService;
29import java.util.concurrent.TimeUnit;
30import java.util.regex.Matcher;
31import java.util.regex.Pattern;
32
33import javax.crypto.Mac;
34import javax.crypto.spec.SecretKeySpec;
35import javax.xml.bind.DatatypeConverter;
36
37import org.apache.commons.lang.StringUtils;
38import org.springframework.beans.BeansException;
39import org.springframework.security.crypto.codec.Base64;
40import org.springframework.security.crypto.codec.Hex;
41
42import com.path.bo.common.CommonLibBO;
43import com.path.bo.common.ConstantsCommon;
44import com.path.bo.common.swift.MQConnectorBO;
45import com.path.bo.common.swift.swiftreconciliation.SwiftReconBO;
46import com.path.dao.common.swift.SwiftInwardDAO;
47import com.path.dbmaps.vo.DF_FILE_PRC_INP_PARMVO;
48import com.path.dbmaps.vo.EAS_SERVICESVO;
49import com.path.dbmaps.vo.SWFT_SCHED_MANAGER_INVO;
50import com.path.dbmaps.vo.SWIFT_CONTROLVO;
51import com.path.dbmaps.vo.SWIFT_HISTORYVOWithBLOBs;
52import com.path.dbmaps.vo.SWIFT_LOG_INVO;
53import com.path.dbmaps.vo.SWIFT_MANUAL_PROCESSVOKey;
54import com.path.dbmaps.vo.SWIFT_MSGDET_INVO;
55import com.path.dbmaps.vo.SWIFT_MSGHDR_INVO;
56import com.path.dbmaps.vo.SWIFT_MSG_REFVO;
57import com.path.lib.common.base.BaseBO;
58import com.path.lib.common.exception.BOException;
59import com.path.lib.common.exception.BaseException;
60import com.path.lib.common.exception.DAOException;
61import com.path.lib.common.util.ApplicationContextProvider;
62import com.path.lib.common.util.DateUtil;
63import com.path.lib.common.util.FileUtil;
64import com.path.lib.common.util.NumberUtil;
65import com.path.lib.common.util.PathPropertyUtil;
66import com.path.lib.common.util.SecurityUtils;
67import com.path.lib.common.util.StringUtil;
68import com.path.lib.log.Log;
69import com.path.lib.remote.RmiServiceCaller;
70import com.path.vo.common.DBSequenceSC;
71import com.path.vo.common.swift.swiftinward.SwiftInwardCO;
72import com.path.vo.common.swift.swiftinward.SwiftInwardIndexCO;
73import com.path.vo.common.swift.swiftinward.SwiftInwardProcessCO;
74import com.path.vo.common.swift.swiftinward.SwiftInwardSC;
75import com.path.vo.common.swift.swiftinward.SwiftSignatureSC;
76import com.path.vo.common.swift.swiftoutward.SwiftCO;
77
78public class SwiftInwardBOImpl extends BaseBO implements SwiftInwardBO
79{
80 private static final String PRINTED = "N";
81 private static final String STATUS = "U";
82 private static final String SWFT = "SWFT";
83 private SwiftInwardDAO swiftInwardDAO;
84 private SwiftCO swiftCO;
85 private SwiftReconBO swiftReconBO;
86 private static Object lock = new Object();//efarah 07/04/2017 EWBI170270
87
88 ScheduledExecutorService lockClusterdThread = null;
89
90
91
92 public ScheduledExecutorService getLockClusterdThread() {
93 return lockClusterdThread;
94 }
95
96 public void setLockClusterdThread(ScheduledExecutorService lockClusterdThread) {
97 this.lockClusterdThread = lockClusterdThread;
98 }
99
100 public void setSwiftReconBO(SwiftReconBO swiftReconBO)
101 {
102 this.swiftReconBO = swiftReconBO;
103 }
104
105 public SwiftCO getSwiftCO()
106 {
107 return swiftCO;
108 }
109
110 public void setSwiftCO(SwiftCO swiftCO)
111 {
112 this.swiftCO = swiftCO;
113 }
114
115 public void setSwiftInwardDAO(SwiftInwardDAO swiftInwardDAO)
116 {
117 this.swiftInwardDAO = swiftInwardDAO;
118 }
119
120 /**
121 * used to write inside the swift inward log file Use FileWriter class with
122 * argument 'true' to append the data inside the log file since the FileUtil
123 * class doesn't have the append option
124 *
125 * @param compCode
126 * @param repId
127 * @param repTitle
128 * @param indicator
129 * @param genMode
130 * @param errorMsg
131 * @throws BaseException
132 */
133 public Integer writeLogFile(BigDecimal bdCompCode, int iIndicator, String theSErrorMsg, String sLanguage,
134 SwiftInwardCO swiftInwardCO) throws BaseException
135 {
136 try
137 {
138 StringBuffer sbsSwiftLogFile = new StringBuffer();
139 String sRepoSwift;
140 String[] saTransMsgArr;
141
142 sRepoSwift = FileUtil.getFileURLByName("repository");
143 sbsSwiftLogFile.append(commonLibBO.returnSwiftCtrlRecValues().getLOG_IN_PATH_JAVA());
144
145 if(commonLibBO.returnSwiftCtrlRecValues().getLOG_IN_PATH_JAVA() == null)
146 {
147 saTransMsgArr = commonLibBO.returnTranslMessage(66757, sLanguage);
148 throw new BOException(saTransMsgArr[0]);
149 }
150 if(sRepoSwift.endsWith("/"))
151 {
152 sbsSwiftLogFile.insert(0, sRepoSwift);
153 }
154 else
155 {
156 sbsSwiftLogFile.insert(0, "/");
157 sbsSwiftLogFile.insert(0, sRepoSwift);
158 }
159
160 swiftInwardCO.setLogFileLocation(sbsSwiftLogFile.toString());
161 Date dtLogDateTime;
162 dtLogDateTime = commonLibBO.returnSystemDateWithTime();
163
164 String sLogDateTime;
165 sLogDateTime = DateUtil.format(dtLogDateTime, "dd/MM/yyyy HH:mm:ss");
166 String sSeverity;
167 switch (iIndicator)
168 {
169 case 0:
170 saTransMsgArr = commonLibBO.returnTranslMessage(2, sLanguage);
171 sSeverity = saTransMsgArr[1]; // Error
172 break;
173 case 1:
174 saTransMsgArr = commonLibBO.returnTranslMessage(8, sLanguage);
175 sSeverity = saTransMsgArr[1]; // Information
176 break;
177 default:
178 sSeverity = "";
179 break;
180 }
181 String sLogMsg, sErrorMsg = theSErrorMsg;
182 FileOutputStream fw = new FileOutputStream(sbsSwiftLogFile.toString(), true);
183 sLogMsg = bdCompCode.toString() + "\t" + sSeverity + "\t" + sLogDateTime + "\t" + sErrorMsg + "\r\n";
184 fw.write(sLogMsg.getBytes("UTF-8"));
185 fw.flush();
186 fw.close();
187
188 if(!StringUtil.isNotEmpty(sErrorMsg))
189 {
190 return 1;
191 }
192 // insert the logging into DB with DAOException handling
193 try
194 {
195 // Create new instance of SWIFT_LOGVO
196 SWIFT_LOG_INVO swiftLogInVO = new SWIFT_LOG_INVO();
197
198 // set the values to be inserted into DB
199 swiftLogInVO.setCOMP_CODE(bdCompCode);
200 swiftLogInVO.setSEVERITY(sSeverity);
201 swiftLogInVO.setLOG_DATE(dtLogDateTime);
202 swiftLogInVO.setMSG(sErrorMsg);
203
204 // Insert into DB
205 genericDAO.insert(swiftLogInVO);
206 }
207 catch(DAOException e)
208 {
209 saTransMsgArr = commonLibBO.returnTranslMessage(2, sLanguage);
210 sSeverity = saTransMsgArr[1];
211 sErrorMsg = e.getMessage().substring(0, e.getMessage().length());
212 fw = new FileOutputStream(sbsSwiftLogFile.toString(), true);
213 sLogMsg = bdCompCode.toString() + "\t" + sSeverity + "\t" + sLogDateTime + "\t" + sErrorMsg + "\r\n";
214 fw.write(sLogMsg.getBytes("UTF-8"));
215 fw.flush();
216 fw.close();
217 log.error(e, "Exception in inserting logs");
218 }
219 }
220 catch(Exception e)
221 {
222 log.error(e, "Exception in inserting logs");
223 throw new BOException(e);
224 }
225
226 return 1;
227 }
228
229 public ArrayList<SwiftInwardCO> readTextFile(String sFileLocation, String sLanguage, BigDecimal bdCompCode,
230 String ackNackSource) throws BaseException
231 {
232
233 String sSwiftInwardPath = null;
234 File inwardFileMaker;
235 boolean bRetun = false;
236 String[] saTransMsgArr;
237
238 if("0".equals(ackNackSource))
239 {
240 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_PATH_JAVA();
241 }
242 else if("1".equals(ackNackSource))
243 {
244 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_ACK_PATH_JAVA();
245 }
246 else if("2".equals(ackNackSource))
247 {
248 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_NACK_PATH_JAVA();
249 }
250
251 sSwiftInwardPath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(sSwiftInwardPath);
252 inwardFileMaker = new File(sSwiftInwardPath);
253 if(!inwardFileMaker.exists())
254 {
255 bRetun = inwardFileMaker.mkdir();
256 if(!bRetun)
257 {
258 saTransMsgArr = commonLibBO.returnTranslMessage(66760, sLanguage);
259 throw new BOException(saTransMsgArr[0]);
260 }
261 }
262
263 ArrayList<SwiftInwardCO> swiftInwardCOList = new ArrayList<SwiftInwardCO>();
264 SwiftInwardCO swiftInwardCO = new SwiftInwardCO();
265// FileReader msgFile = null;
266 BufferedReader reader = null;
267 String msgLine = "", cfTag = null;
268 Long rowNumber = 0L;
269 Long grpNumber = 0L;
270 Long nbRowPerGrp = 0L;
271 Long nbCompute4 = 0L;
272 Long firstLine = 0L;
273 int firstOccurence =-1;
274 boolean firstTime =false;
275 boolean achFlag = false;
276 String lsDate = "";
277 String lsSign = "";
278 String lsSignature ="";
279 boolean lauFlag = false;
280 String lsLau= "";
281 int badAlloc = 0;
282 int applyLAU = 0;
283 String swiftmsg = null;
284 try
285 {
286 sSwiftInwardPath = sSwiftInwardPath.concat("/");
287// msgFile = new FileReader(sSwiftInwardPath.concat(sFileLocation));
288 FileInputStream fis = new FileInputStream(sSwiftInwardPath.concat(sFileLocation));
289 reader = new BufferedReader(new InputStreamReader(fis,FileUtil.DEFAULT_FILE_ENCODING));
290// reader = new BufferedReader(msgFile);
291 msgLine = reader.readLine();
292 while( msgLine != null)
293 {
294 /*if(badAlloc==1 && msgLine == null)
295 {
296 break;
297 }*/
298 //badAlloc = 0;
299 swiftInwardCO = new SwiftInwardCO();
300 /*Mohamad Hojeij BMO180377 - 22/11/2018 start */
301 if(msgLine.trim().indexOf("{S:{MDG:") > 0){
302 lauFlag = true;
303 lsLau = msgLine.substring(msgLine.indexOf("{S:{MDG:") + 8, msgLine.indexOf("}}"));
304 msgLine = msgLine.substring(0, msgLine.indexOf("{S:{MDG:"));
305 }
306
307 /*Mohamad Hojeij BMO180377 - 22/11/2018 end */
308 if (msgLine.trim().indexOf("<") ==0 && msgLine.indexOf("[CDATA[") < 0)
309 {
310 if(msgLine.indexOf("<date>")>=0)
311 {
312 lsDate = msgLine.substring(msgLine.indexOf("<date>") + 6, msgLine.indexOf("</date>"));
313 }
314 if(msgLine.indexOf("<signature>")>=0)
315 {
316 lsSignature = msgLine.substring(msgLine.indexOf("<signature>") + 11, msgLine.indexOf("</signature>"));
317 }
318 achFlag = true;
319 msgLine = reader.readLine();
320 continue;
321 }
322 else
323 {
324 if(msgLine.indexOf("[CDATA[") > 0)
325 {
326 msgLine = msgLine.substring(msgLine.indexOf("[CDATA[") + 7);
327 }
328 }
329 rowNumber++;
330 nbRowPerGrp++;
331 swiftInwardCO.setMessage_line(msgLine);
332 swiftInwardCO.setCompute_1(rowNumber);// line_nbr
333
334 if (StringUtil.nullToEmpty(swiftmsg).isEmpty())
335 {
336 swiftmsg = StringUtil.nullToEmpty(swiftmsg) + msgLine;
337 }
338 else
339 {
340 swiftmsg = swiftmsg +"\r\n" + msgLine;
341 }
342
343 if (StringUtil.nullToEmpty(lsSign).isEmpty())
344 {
345 lsSign = StringUtil.nullToEmpty(lsSign) + msgLine;
346 }
347 else
348 {
349 lsSign = lsSign +"\r\n" + msgLine;
350 }
351 if("$".equals(msgLine))// olivia 31/07/2014 jenkin issues
352 {
353 swiftInwardCO.setCf_tag("N");
354 lsSign = null;
355 }
356 else
357 {
358 if(msgLine.indexOf("{1:F01") < 0 & (rowNumber==1 & StringUtil.nullToEmpty(swiftInwardCO.getCf_tag()).equals("")))
359 {
360 writeLogFile(bdCompCode, 0, "The header line should contain: {1:F01 " , sLanguage, swiftInwardCO);
361 throw new BOException("The header line should contain: {1:F01 ");
362 }
363 if(msgLine.indexOf("{1:F01") >= 0)
364 {
365 swiftInwardCO.setCf_tag("H");
366 }
367 else
368 {
369 if(StringUtils.left(msgLine, 2).equals("-}"))
370 {
371 swiftInwardCO.setCf_tag("T");
372
373
374
375 if (achFlag)
376 {
377 lsSign = lsSign.substring(0, lsSign.indexOf("-}") + 2);
378
379 SWIFT_CONTROLVO swiftControlVO = swiftInwardDAO.returnKeyStore();
380
381 lsSign = lsSign + StringUtil.nullToEmpty(swiftControlVO.getSECRET_MESSAGE()) + lsDate;
382
383 SwiftSignatureSC swiftSignatureSC = new SwiftSignatureSC();
384 swiftSignatureSC.setKeyAlias(swiftControlVO.getKEYSTORE_IN_ALIAS());
385 swiftSignatureSC.setKeyStoreFileName(FileUtil.getFileURLByName("repository").concat(File.separator).concat(swiftControlVO.getKEYSTORE_IN_PATH()) );
386 swiftSignatureSC.setKeyStorePassword(SecurityUtils.decryptAES("DIGITALSIGNATURE", swiftControlVO.getKEYSTORE_IN_PASS()));
387 swiftSignatureSC.setContent(lsSign);
388 swiftSignatureSC.setDigitalSignature(lsSignature);
389 // swiftSignatureSC = processSignatureMessage(swiftSignatureSC);
390
391 //if (swiftSignatureSC.getOlErrorCode() != 0)
392 //{
393 //saTransMsgArr = commonLibBO.returnTranslMessage(66795, sLanguage);
394 //writeLogFile(bdCompCode, 0, saTransMsgArr[0] + swiftSignatureSC.getOsErrorDesc() , sLanguage, swiftInwardCO);
395 //throw new BOException(saTransMsgArr[0] + swiftSignatureSC.getOsErrorDesc());
396 // }
397
398 swiftSignatureSC = verifySignatureMessage(swiftSignatureSC);
399
400 if (swiftSignatureSC.getSigned() == "false")
401 {
402 saTransMsgArr = commonLibBO.returnTranslMessage(66796, sLanguage);
403 writeLogFile(bdCompCode, 0, saTransMsgArr[0] , sLanguage, swiftInwardCO);
404 throw new BOException(saTransMsgArr[0]);
405 }
406
407 if (swiftSignatureSC.getOlErrorCode() != 0)
408 {
409 saTransMsgArr = commonLibBO.returnTranslMessage(66797, sLanguage);
410 writeLogFile(bdCompCode, 0, saTransMsgArr[0] + swiftSignatureSC.getOsErrorDesc(), sLanguage, swiftInwardCO);
411 throw new BOException(saTransMsgArr[0] + swiftSignatureSC.getOsErrorDesc());
412 }
413 }
414
415 }
416 else
417 {
418 if("".equals(msgLine))
419 {
420 msgLine = reader.readLine();
421 continue;
422 }
423 else if(!"".equals(msgLine) && msgLine.substring(0, 1).equals(":"))
424 {
425 swiftInwardCO.setCf_tag(msgLine.substring(0, msgLine.indexOf(":", 2) + 1));
426 }
427 else
428 {
429 swiftInwardCO.setCf_tag("");// Tag
430 }
431 }
432 }
433 }
434 if("H".equals(swiftInwardCO.getCf_tag()))
435 {
436 firstLine = rowNumber;
437 grpNumber++;
438 nbRowPerGrp = 0L;
439 }
440 swiftInwardCO.setCf_msg_grp(grpNumber);// Msg_nbr
441 swiftInwardCO.setCf_msg_line_count(nbRowPerGrp);// NbrLines/Msg
442 if("H".equals(swiftInwardCO.getCf_tag()))
443 {
444 swiftInwardCO.setCf_mt("MT " + msgLine.substring(msgLine.indexOf("{2", 2) + 4, msgLine.indexOf("{2", 2) + 7));// Msg Code
445 SWIFT_MSGHDR_INVO swiftMsghdrIn = new SWIFT_MSGHDR_INVO();
446 swiftMsghdrIn.setACK(new BigDecimal(ackNackSource));
447 swiftMsghdrIn.setMSG_CODE( swiftInwardCO.getCf_mt());
448 BigDecimal nbMaxSeq;
449 nbMaxSeq = swiftInwardDAO.returnMaxSeq(swiftMsghdrIn);
450
451 if(nbMaxSeq == null)
452 {
453 writeLogFile(bdCompCode, 0, "No Allocation is Made For Message " + swiftInwardCO.getCf_mt(), sLanguage, swiftInwardCO);
454 //throw new BOException("No Allocation is Made For Message " + swiftInwardCO.getCf_mt());
455 while((msgLine = reader.readLine()) != null)
456 {
457 if(StringUtils.left(msgLine, 2).equals("-}"))
458 {
459 //System.out.println("Before break: " + msgLine);
460 break;
461 }
462 }
463 //System.out.println("Before continue: " + msgLine);
464 //badAlloc = 1;
465 msgLine = reader.readLine();
466 continue;
467 }
468 applyLAU = swiftInwardDAO.returnLAUFlag(swiftInwardCO);//Mohamad Hojeij - BMO180337 - 23/11/2018
469 int generateAchFlag = swiftInwardDAO.returnGenerateAchFlag(swiftInwardCO);
470 //int generateAchFlag = 0;
471 if(achFlag && generateAchFlag==0)
472 {
473 writeLogFile(bdCompCode, 0, "the file has digital signature functionality but the message is not flagged for digital signature" , sLanguage, swiftInwardCO);
474 throw new BOException("the file has digital signature functionality but the message is not flagged for digital signature");
475 }
476 if(!achFlag && generateAchFlag==1)
477 {
478 writeLogFile(bdCompCode, 0, "the message is flagged for digital signature functionality but the file doesn't contain it." , sLanguage, swiftInwardCO);
479 throw new BOException("the message is flagged for digital signature functionality but the file doesn't contain it.");
480 }
481
482 }
483 else
484 {
485 swiftInwardCO.setCf_mt("");
486 }
487 if("H".equals(swiftInwardCO.getCf_tag()))// olivia 31/07/2014
488 // jenkin issues
489 {
490 swiftInwardCO.setCompute_3(msgLine.substring(msgLine.indexOf("{1:F01") + 3, msgLine.length()));// Message
491 // Line
492 }
493 else
494 {
495 if("T".equals(swiftInwardCO.getCf_tag()))// olivia
496 // 31/07/2014
497 // jenkin issues
498 {
499 swiftInwardCO.setCompute_3(StringUtils.left(msgLine, 3));
500 }
501 else
502 {
503 if("".equals(swiftInwardCO.getCf_tag()))// olivia
504 // 31/07/2014
505 // jenkin issues
506 {
507 swiftInwardCO.setCompute_3(msgLine);
508 }
509 else
510 {
511 swiftInwardCO.setCompute_3(msgLine.substring(msgLine.indexOf(swiftInwardCO.getCf_tag(), 1)
512 + swiftInwardCO.getCf_tag().length() + 1, msgLine.length()));
513 }
514 }
515 }
516
517 swiftInwardCO.setCf_line_value("");
518 swiftInwardCO.setCf_nbr_msgs(grpNumber);
519 // swiftInwardCO.setCfFirstLine(new Long(1));//mhmd
520 swiftInwardCO.setCf_first_line(firstLine);
521 // setting last line for each line in the message
522 if("T".equals(swiftInwardCO.getCf_tag()))// olivia 31/07/2014
523 // jenkin issues
524 {
525 int sizeOfswiftInward = swiftInwardCOList.size();
526 for(int i = firstLine.intValue() - 1; i < Math.min(sizeOfswiftInward, rowNumber - 1); i++)
527 {
528 swiftInwardCO.setCf_last_line(rowNumber);
529 swiftInwardCOList.get(i).setCf_last_line(rowNumber);
530 }
531 }
532 else
533 {
534 if(msgLine.indexOf("-}") >= 0 & "H".equals(swiftInwardCO.getCf_tag()))//efarah 06-03-2017 If files contains more than 1 message and there is no enter between 2 messages like BBS
535 {
536 int sizeOfswiftInward = swiftInwardCOList.size();
537 if (firstTime==false)
538 {
539 for(int i = firstLine.intValue(); i == Math.min(sizeOfswiftInward+1, rowNumber); i++)
540 {
541 firstTime=true;
542 swiftInwardCOList.get(firstLine.intValue()-(sizeOfswiftInward-firstOccurence)).setCf_last_line(rowNumber-1);
543 firstOccurence=firstLine.intValue()-1;
544 }
545 }
546 else
547 {
548 for(int i = firstLine.intValue(); i == Math.min(sizeOfswiftInward+1, rowNumber); i++)
549 {
550 swiftInwardCOList.get(firstOccurence).setCf_last_line(rowNumber-1);
551 firstOccurence=firstLine.intValue()-1;
552 }
553 }
554 }
555 }
556 swiftInwardCO.setCf_value("");
557 swiftInwardCO.setCompute_5(grpNumber);
558 swiftInwardCO.setCf_nbr_repetition(0L);
559 swiftInwardCO.setCf_header_det("");
560
561 if("$".equals(msgLine))// olivia 31/07/2014 jenkin issues
562 {
563 nbCompute4++;
564 }
565 else
566 {
567 if(msgLine.indexOf("{1:F01") >= 0)
568 {
569 nbCompute4 = 1L;
570 if(msgLine.indexOf("$") >= 0){
571 nbCompute4 = 2L; //#619070 Mohamad Hojeij - 12/05/2018
572 }
573 }
574 else
575 {
576 if(StringUtils.left(msgLine, 2).equals("-}"))
577 {
578 nbCompute4 = 2L;
579 }
580 else
581 {
582 if(!"".equals(msgLine) && msgLine.substring(1, 1).equals(":"))
583 {
584 nbCompute4++;
585 }
586 }
587 }
588 }
589
590 swiftInwardCO.setCompute_4(nbCompute4);
591 if(!StringUtil.nullToEmpty(swiftInwardCO.getCf_tag()).equals(""))
592 {
593 cfTag = swiftInwardCO.getCf_tag();
594 }
595 swiftInwardCO.setCfd_tag(cfTag);
596 if(swiftInwardCO.getCf_line_value().length() > 5)
597 {
598 swiftInwardCO.setCompute_2(swiftInwardCO.getCf_line_value().substring(1, 6));
599 }
600 else
601 {
602 swiftInwardCO.setCompute_2(swiftInwardCO.getCf_line_value());
603 }
604
605 swiftInwardCOList.add(swiftInwardCO);
606 msgLine = reader.readLine();
607 }
608 /*Mohamad Hojeij BMO180377 - 23/11/2018 start*/
609
610 if(applyLAU ==1 && !lauFlag){
611 writeLogFile(bdCompCode, 0, "the message is flagged for lau signature functionality but the file doesn't contain it." , sLanguage, swiftInwardCO);
612 throw new BOException("the message is flagged for lau signature functionality but the file doesn't contain it.");
613 }
614
615 if(applyLAU ==0 && lauFlag){
616 writeLogFile(bdCompCode, 0, "the file has lau signature functionality but the message is not flagged for lau signature" , sLanguage, swiftInwardCO);
617 throw new BOException("the file has lau signature functionality but the message is not flagged for lau signature");
618 }
619
620 /*Mohamad Hojeij BMO180337 - 22/11/2018 start*/
621 if(lauFlag){
622 SWIFT_CONTROLVO swiftControlVO1 = swiftInwardDAO.returnKeyLAU();
623 /*int applyLAU = swiftInwardDAO.returnLAUFlag(swiftInwardCO);
624 if(applyLAU ==1){*/
625 byte[] hexvalue = null;
626 swiftmsg = useCrLf(swiftmsg);
627 try {
628 hexvalue = stringToHexByte(swiftmsg);
629 } catch (UnsupportedEncodingException e) {
630 // TODO Auto-generated catch block
631 e.printStackTrace();
632 // ERROR: error converting swift message to hex TO ADD NEW ERROR CODE
633 writeLogFile(bdCompCode, 0, "Error on converting the message to hex:" + e.toString() , sLanguage, swiftInwardCO);
634 throw new BOException("Error on converting the message to hex:" + e.toString());
635
636 }
637 byte[] asciiKeyBytes = null;
638 try {
639 asciiKeyBytes = stringToHexByte((SecurityUtils.decryptAES("LAUALGORITHMLAU1", swiftControlVO1.getLAU_LEFT_KEY()) + SecurityUtils.decryptAES("LAUALGORITHMLAU1", swiftControlVO1.getLAU_RIGHT_KEY())));
640 } catch (UnsupportedEncodingException e) {
641 // TODO Auto-generated catch block
642 e.printStackTrace();
643 // ERROR: error converting swift message to hex TO ADD NEW ERROR CODE
644 writeLogFile(bdCompCode, 0, "Error on converting the keys to hex:" + e.toString() , sLanguage, swiftInwardCO);
645 throw new BOException("Error on converting the keys to hex:" + e.toString());
646
647 }
648 byte[] byHMAC = null;
649 try {
650 byHMAC = encode(asciiKeyBytes, hexvalue);
651 } catch (InvalidKeyException | NoSuchAlgorithmException e) {
652 // TODO Auto-generated catch block
653 e.printStackTrace();
654 writeLogFile(bdCompCode, 0, "Error while generating signature:" + e.toString() , sLanguage, swiftInwardCO);
655 throw new BOException("Error while generating signature:" + e.toString());
656
657 }
658 String sign = new String(Hex.encode(byHMAC)).toUpperCase();
659 if(! sign.equals(lsLau)){
660 writeLogFile(bdCompCode, 0, "lau not verified" , sLanguage, swiftInwardCO);
661 reader.close();
662 moveFile(sFileLocation, "0", sLanguage,swiftControlVO1.getINVALID_LAU_PATH());
663 throw new BOException("lau not verified" );
664 }
665 /*}
666 else{
667 writeLogFile(bdCompCode, 0, "the file has not lau signature functionality but the message is flagged for lau signature" , sLanguage, swiftInwardCO);
668 throw new BOException("the file has not lau signature functionality but the message is flagged for lau signature");
669 }*/
670 }
671 /*Mohamad Hojeij BMO180337 - 22/11/2018 end*/
672
673 /*Mohamad Hojeij BMO180377 - 23/11/2018 end*/
674// msgFile.close();
675 reader.close();
676
677 }
678 catch(Exception e)
679 {
680 swiftInwardCO.setReturnVar(-1L);
681 log.error(e, "Exception in read text file");
682 if(e.getMessage() != null && "-1".equals(e.getMessage()))
683 {
684 writeLogFile(bdCompCode, 0, e.toString(), sLanguage, swiftInwardCO);
685 throw new BOException(e.toString(), e);// olivia
686 // 31/07/2014jenkin
687 // issues
688 }
689 else
690 {
691 writeLogFile(bdCompCode, 0, e.getMessage(), sLanguage, swiftInwardCO);
692 throw new BOException(e.getMessage(), e);// olivia 31/07/2014
693 // jenkin issues
694
695 }
696 }
697 finally
698 {
699 try
700 {
701// msgFile.close();
702 reader.close();
703 }
704 catch(IOException e1)
705 {
706 log.error(e1, "Exception in closing reader");
707 throw new BOException(e1.getMessage(), e1);// olivia 31/07/2014
708 // jenkin issues
709 }
710 }
711 // swiftInwardCOList.clear();
712 // swiftInwardCOList.add(swiftInwardCO);
713 // return swiftInwardCOList;
714
715 return swiftInwardCOList;
716 }
717
718 //LBedrane - BMO180040 - TP#690676 - 12/07/2018 <Start>
719 public ArrayList<SwiftInwardCO> readMqFile(String Smessage, String sLanguage, BigDecimal bdCompCode) throws BaseException
720 {
721
722 ArrayList<SwiftInwardCO> swiftInwardCOList = new ArrayList<SwiftInwardCO>();
723 SwiftInwardCO swiftInwardCO = new SwiftInwardCO();
724// FileReader msgFile = null;
725 BufferedReader reader = null;
726 String msgLine = "", cfTag = null;
727 Long rowNumber = 0L;
728 Long grpNumber = 0L;
729 Long nbRowPerGrp = 0L;
730 Long nbCompute4 = 0L;
731 Long firstLine = 0L;
732 int firstOccurence =-1;
733 boolean firstTime =false;
734 boolean achFlag = false;
735 String lsDate = "";
736 String lsSign = "";
737 String lsSignature ="";
738 int badAlloc = 0;
739 String[] saTransMsgArr;
740 boolean lauFlag = false;
741 String lsLau= "";
742 int applyLAU = 0;
743 String swiftmsg = null;
744
745 try
746 {
747//
748 Scanner scanner = new Scanner(Smessage);
749 while ( (badAlloc ==1 ) || scanner.hasNextLine() ) {
750
751 badAlloc = 0;
752 swiftInwardCO = new SwiftInwardCO();
753 msgLine = scanner.nextLine();
754 /*Mohamad Hojeij BMO180377 - 22/11/2018 start */
755 if(msgLine.trim().indexOf("{S:{MDG:") > 0){
756 lauFlag = true;
757 lsLau = msgLine.substring(msgLine.indexOf("{S:{MDG:") + 8, msgLine.indexOf("}}"));
758 msgLine = msgLine.substring(0, msgLine.indexOf("{S:{MDG:"));
759 }
760
761 /*Mohamad Hojeij BMO180377 - 22/11/2018 end */
762 // process the line
763 if (msgLine.trim().indexOf("<") ==0 && msgLine.indexOf("[CDATA[") < 0)
764 {
765 if(msgLine.indexOf("<date>")>=0)
766 {
767 lsDate = msgLine.substring(msgLine.indexOf("<date>") + 6, msgLine.indexOf("</date>"));
768 }
769 if(msgLine.indexOf("<signature>")>=0)
770 {
771 lsSignature = msgLine.substring(msgLine.indexOf("<signature>") + 11, msgLine.indexOf("</signature>"));
772 }
773 achFlag = true;
774 continue;
775 }
776 else
777 {
778 if(msgLine.indexOf("[CDATA[") > 0)
779 {
780 msgLine = msgLine.substring(msgLine.indexOf("[CDATA[") + 7);
781 }
782 }
783
784 if (StringUtil.nullToEmpty(swiftmsg).isEmpty())
785 {
786 swiftmsg = StringUtil.nullToEmpty(swiftmsg) + msgLine;
787 }
788 else
789 {
790 swiftmsg = swiftmsg +"\r\n" + msgLine;
791 }
792 rowNumber++;
793 nbRowPerGrp++;
794 swiftInwardCO.setMessage_line(msgLine);
795 swiftInwardCO.setCompute_1(rowNumber);// line_nbr
796
797 if (lsSign.equals(""))
798 {
799 lsSign = lsSign + msgLine;
800 }
801 else
802 {
803 lsSign = lsSign +"\r\n" + msgLine;
804 }
805
806 /******************************/
807 if("$".equals(msgLine))// olivia 31/07/2014 jenkin issues
808 {
809 swiftInwardCO.setCf_tag("N");
810 lsSign = null;
811 }
812 else
813 {
814 if(msgLine.indexOf("{1:F01") < 0 & (rowNumber==1 & StringUtil.nullToEmpty(swiftInwardCO.getCf_tag()).equals("")))
815 {
816 writeLogFile(bdCompCode, 0, "The header line should contain: {1:F01 " , sLanguage, swiftInwardCO);
817 throw new BOException("The header line should contain: {1:F01 ");
818 }
819 if(msgLine.indexOf("{1:F01") >= 0)
820 {
821 swiftInwardCO.setCf_tag("H");
822 }
823 else
824 {
825 if(StringUtils.left(msgLine, 2).equals("-}"))
826 {
827 swiftInwardCO.setCf_tag("T");
828
829 if (achFlag)
830 {
831 lsSign = lsSign.substring(0, lsSign.indexOf("-}") + 2);
832
833 SWIFT_CONTROLVO swiftControlVO = swiftInwardDAO.returnKeyStore();
834
835 lsSign = lsSign + StringUtil.nullToEmpty(swiftControlVO.getSECRET_MESSAGE()) + lsDate;
836
837 SwiftSignatureSC swiftSignatureSC = new SwiftSignatureSC();
838 swiftSignatureSC.setKeyAlias(swiftControlVO.getKEYSTORE_IN_ALIAS());
839 swiftSignatureSC.setKeyStoreFileName(FileUtil.getFileURLByName("repository").concat(File.separator).concat(swiftControlVO.getKEYSTORE_IN_PATH()) );
840 swiftSignatureSC.setKeyStorePassword(SecurityUtils.decryptAES("DIGITALSIGNATURE", swiftControlVO.getKEYSTORE_IN_PASS()));
841 swiftSignatureSC.setContent(lsSign);
842 swiftSignatureSC.setDigitalSignature(lsSignature);
843
844 try {
845 swiftSignatureSC = verifySignatureMessage(swiftSignatureSC);
846 } catch (Exception e) {
847 log.error(e, "Exception in verifySignatureMessage");
848 e.printStackTrace();
849 }
850
851 if (swiftSignatureSC.getSigned() == "false")
852 {
853 saTransMsgArr = commonLibBO.returnTranslMessage(66796, sLanguage);
854 writeLogFile(bdCompCode, 0, saTransMsgArr[0] , sLanguage, swiftInwardCO);
855 throw new BOException(saTransMsgArr[0]);
856 }
857
858 if (swiftSignatureSC.getOlErrorCode() != 0)
859 {
860 saTransMsgArr = commonLibBO.returnTranslMessage(66797, sLanguage);
861 writeLogFile(bdCompCode, 0, saTransMsgArr[0] + swiftSignatureSC.getOsErrorDesc(), sLanguage, swiftInwardCO);
862 throw new BOException(saTransMsgArr[0] + swiftSignatureSC.getOsErrorDesc());
863 }
864 }
865
866 }
867 else
868 {
869 if("".equals(msgLine))
870 {
871 continue;
872 }
873 else if(!"".equals(msgLine) && msgLine.substring(0, 1).equals(":"))
874 {
875 swiftInwardCO.setCf_tag(msgLine.substring(0, msgLine.indexOf(":", 2) + 1));
876 }
877 else
878 {
879 swiftInwardCO.setCf_tag("");// Tag
880 }
881 }
882 }
883 /***************/
884 if("H".equals(swiftInwardCO.getCf_tag()))
885 {
886 firstLine = rowNumber;
887 grpNumber++;
888 nbRowPerGrp = 0L;
889 }
890 /***************/
891
892 swiftInwardCO.setCf_msg_grp(grpNumber);// Msg_nbr
893 swiftInwardCO.setCf_msg_line_count(nbRowPerGrp);// NbrLines/Msg
894 if("H".equals(swiftInwardCO.getCf_tag()))
895 {
896 swiftInwardCO.setCf_mt("MT " + msgLine.substring(msgLine.indexOf("{2", 2) + 4, msgLine.indexOf("{2", 2) + 7));// Msg Code
897 SWIFT_MSGHDR_INVO swiftMsghdrIn = new SWIFT_MSGHDR_INVO();
898 swiftMsghdrIn.setACK(new BigDecimal(0));//lb
899 swiftMsghdrIn.setMSG_CODE( swiftInwardCO.getCf_mt());
900 BigDecimal nbMaxSeq;
901 nbMaxSeq = swiftInwardDAO.returnMaxSeq(swiftMsghdrIn);
902
903 if(nbMaxSeq == null)
904 {
905 writeLogFile(bdCompCode, 0, "No Allocation is Made For Message " + swiftInwardCO.getCf_mt(), sLanguage, swiftInwardCO);
906 //throw new BOException("No Allocation is Made For Message " + swiftInwardCO.getCf_mt());
907 while((msgLine = scanner.nextLine()) != null)
908 {
909 if(StringUtils.left(msgLine, 2).equals("-}"))
910 {
911 //System.out.println("Before break: " + msgLine);
912 break;
913 }
914 }
915 //System.out.println("Before continue: " + msgLine);
916 badAlloc = 1;
917 continue;
918 }
919 applyLAU = swiftInwardDAO.returnLAUFlag(swiftInwardCO);//Mohamad Hojeij - BMO180337 - 23/11/2018
920 int generateAchFlag = swiftInwardDAO.returnGenerateAchFlag(swiftInwardCO);
921 //int generateAchFlag = 0;
922 if(achFlag && generateAchFlag==0)
923 {
924 writeLogFile(bdCompCode, 0, "the file has digital signature functionality but the message is not flagged for digital signature" , sLanguage, swiftInwardCO);
925 throw new BOException("the file has digital signature functionality but the message is not flagged for digital signature");
926 }
927 if(!achFlag && generateAchFlag==1)
928 {
929 writeLogFile(bdCompCode, 0, "the message is flagged for digital signature functionality but the file doesn't contain it." , sLanguage, swiftInwardCO);
930 throw new BOException("the message is flagged for digital signature functionality but the file doesn't contain it.");
931 }
932
933 }
934 else
935 {
936 swiftInwardCO.setCf_mt("");
937 }
938
939 }
940 /****************case H ******************/
941 if("H".equals(swiftInwardCO.getCf_tag()))// olivia 31/07/2014
942 // jenkin issues
943 {
944 swiftInwardCO.setCompute_3(msgLine.substring(msgLine.indexOf("{1:F01") + 3, msgLine.length()));// Message
945 // Line
946 }
947 else
948 {
949 if("T".equals(swiftInwardCO.getCf_tag()))// olivia
950 // 31/07/2014
951 // jenkin issues
952 {
953 swiftInwardCO.setCompute_3(StringUtils.left(msgLine, 3));
954 }
955 else
956 {
957 if("".equals(swiftInwardCO.getCf_tag()))// olivia
958 // 31/07/2014
959 // jenkin issues
960 {
961 swiftInwardCO.setCompute_3(msgLine);
962 }
963 else
964 {
965 swiftInwardCO.setCompute_3(msgLine.substring(msgLine.indexOf(swiftInwardCO.getCf_tag(), 1)
966 + swiftInwardCO.getCf_tag().length() + 1, msgLine.length()));
967 }
968 }
969 }
970
971
972 /************cf = t***********************/
973 swiftInwardCO.setCf_line_value("");
974 swiftInwardCO.setCf_nbr_msgs(grpNumber);
975 // swiftInwardCO.setCfFirstLine(new Long(1));//mhmd
976 swiftInwardCO.setCf_first_line(firstLine);
977 // setting last line for each line in the message
978 if("T".equals(swiftInwardCO.getCf_tag()))// olivia 31/07/2014
979 // jenkin issues
980 {
981 int sizeOfswiftInward = swiftInwardCOList.size();
982 for(int i = firstLine.intValue() - 1; i < Math.min(sizeOfswiftInward, rowNumber - 1); i++)
983 {
984 swiftInwardCO.setCf_last_line(rowNumber);
985 swiftInwardCOList.get(i).setCf_last_line(rowNumber);
986 }
987 }
988 else
989 {
990 if(msgLine.indexOf("-}") >= 0 & "H".equals(swiftInwardCO.getCf_tag()))//efarah 06-03-2017 If files contains more than 1 message and there is no enter between 2 messages like BBS
991 {
992 int sizeOfswiftInward = swiftInwardCOList.size();
993 if (firstTime==false)
994 {
995 for(int i = firstLine.intValue(); i == Math.min(sizeOfswiftInward+1, rowNumber); i++)
996 {
997 firstTime=true;
998 swiftInwardCOList.get(firstLine.intValue()-(sizeOfswiftInward-firstOccurence)).setCf_last_line(rowNumber-1);
999 firstOccurence=firstLine.intValue()-1;
1000 }
1001 }
1002 else
1003 {
1004 for(int i = firstLine.intValue(); i == Math.min(sizeOfswiftInward+1, rowNumber); i++)
1005 {
1006 swiftInwardCOList.get(firstOccurence).setCf_last_line(rowNumber-1);
1007 firstOccurence=firstLine.intValue()-1;
1008 }
1009 }
1010 }
1011 }
1012 /*********************/
1013 swiftInwardCO.setCf_value("");
1014 swiftInwardCO.setCompute_5(grpNumber);
1015 swiftInwardCO.setCf_nbr_repetition(0L);
1016 swiftInwardCO.setCf_header_det("");
1017
1018 if("$".equals(msgLine))// olivia 31/07/2014 jenkin issues
1019 {
1020 nbCompute4++;
1021 }
1022 else
1023 {
1024 if(msgLine.indexOf("{1:F01") >= 0)
1025 {
1026 nbCompute4 = 1L;
1027 if(msgLine.indexOf("$") >= 0){
1028 nbCompute4 = 2L; //#619070 Mohamad Hojeij - 12/05/2018
1029 }
1030 }
1031 else
1032 {
1033 if(StringUtils.left(msgLine, 2).equals("-}"))
1034 {
1035 nbCompute4 = 2L;
1036 }
1037 else
1038 {
1039 if(!"".equals(msgLine) && msgLine.substring(1, 1).equals(":"))
1040 {
1041 nbCompute4++;
1042 }
1043 }
1044 }
1045 }
1046 /****************************************/
1047 swiftInwardCO.setCompute_4(nbCompute4);
1048 if(!StringUtil.nullToEmpty(swiftInwardCO.getCf_tag()).equals(""))
1049 {
1050 cfTag = swiftInwardCO.getCf_tag();
1051 }
1052 swiftInwardCO.setCfd_tag(cfTag);
1053 if(swiftInwardCO.getCf_line_value().length() > 5)
1054 {
1055 swiftInwardCO.setCompute_2(swiftInwardCO.getCf_line_value().substring(1, 6));
1056 }
1057 else
1058 {
1059 swiftInwardCO.setCompute_2(swiftInwardCO.getCf_line_value());
1060 }
1061
1062
1063 swiftInwardCOList.add(swiftInwardCO);
1064
1065
1066 /**********************************/
1067
1068 }//while
1069 /*Mohamad Hojeij BMO180377 - 23/11/2018 start*/
1070
1071 if(applyLAU ==1 && !lauFlag){
1072 writeLogFile(bdCompCode, 0, "the message is flagged for lau signature functionality but the file doesn't contain it." , sLanguage, swiftInwardCO);
1073 throw new BOException("the message is flagged for lau signature functionality but the file doesn't contain it.");
1074 }
1075
1076 if(applyLAU ==0 && lauFlag){
1077 writeLogFile(bdCompCode, 0, "the file has lau signature functionality but the message is not flagged for lau signature" , sLanguage, swiftInwardCO);
1078 throw new BOException("the file has lau signature functionality but the message is not flagged for lau signature");
1079 }
1080
1081 /*Mohamad Hojeij BMO180337 - 22/11/2018 start*/
1082 if(lauFlag){
1083 SWIFT_CONTROLVO swiftControlVO1 = swiftInwardDAO.returnKeyLAU();
1084 /*int applyLAU = swiftInwardDAO.returnLAUFlag(swiftInwardCO);
1085 if(applyLAU ==1){*/
1086 byte[] hexvalue = null;
1087 swiftmsg = useCrLf(swiftmsg);
1088 try {
1089 hexvalue = stringToHexByte(swiftmsg);
1090 } catch (UnsupportedEncodingException e) {
1091 // TODO Auto-generated catch block
1092 e.printStackTrace();
1093 // ERROR: error converting swift message to hex TO ADD NEW ERROR CODE
1094 writeLogFile(bdCompCode, 0, "Error on converting the message to hex:" + e.toString() , sLanguage, swiftInwardCO);
1095 throw new BOException("Error on converting the message to hex:" + e.toString());
1096
1097 }
1098 byte[] asciiKeyBytes = null;
1099 try {
1100 asciiKeyBytes = stringToHexByte((SecurityUtils.decryptAES("LAUALGORITHMLAU1", swiftControlVO1.getLAU_LEFT_KEY()) + SecurityUtils.decryptAES("LAUALGORITHMLAU1", swiftControlVO1.getLAU_RIGHT_KEY())));
1101 } catch (UnsupportedEncodingException e) {
1102 // TODO Auto-generated catch block
1103 e.printStackTrace();
1104 // ERROR: error converting swift message to hex TO ADD NEW ERROR CODE
1105 writeLogFile(bdCompCode, 0, "Error on converting the keys to hex:" + e.toString() , sLanguage, swiftInwardCO);
1106 throw new BOException("Error on converting the keys to hex:" + e.toString());
1107
1108 }
1109 byte[] byHMAC = null;
1110 try {
1111 byHMAC = encode(asciiKeyBytes, hexvalue);
1112 } catch (InvalidKeyException | NoSuchAlgorithmException e) {
1113 // TODO Auto-generated catch block
1114 e.printStackTrace();
1115 writeLogFile(bdCompCode, 0, "Error while generating signature:" + e.toString() , sLanguage, swiftInwardCO);
1116 throw new BOException("Error while generating signature:" + e.toString());
1117
1118 }
1119 String sign = new String(Hex.encode(byHMAC)).toUpperCase();
1120 if(! sign.equals(lsLau)){
1121 writeLogFile(bdCompCode, 0, "lau not verified" , sLanguage, swiftInwardCO);
1122 //reader.close();
1123 createErrorFile("0",Smessage ,swiftControlVO1.getINVALID_LAU_PATH());
1124 throw new BOException("lau not verified" );
1125 }
1126 /*}
1127 else{
1128 writeLogFile(bdCompCode, 0, "the file has not lau signature functionality but the message is flagged for lau signature" , sLanguage, swiftInwardCO);
1129 throw new BOException("the file has not lau signature functionality but the message is flagged for lau signature");
1130 }*/
1131 }
1132 /*Mohamad Hojeij BMO180337 - 22/11/2018 end*/
1133
1134 /*Mohamad Hojeij BMO180377 - 23/11/2018 end*/
1135 scanner.close();
1136 }//try
1137 catch(Exception e)
1138 {
1139 swiftInwardCO.setReturnVar(-1L);
1140 log.error(e, "Exception in readMqfile");
1141 if(e.getMessage() != null && "-1".equals(e.getMessage()))
1142 {
1143 writeLogFile(bdCompCode, 0, e.toString(), sLanguage, swiftInwardCO);
1144 throw new BOException(e.toString(), e);// olivia
1145 // 31/07/2014jenkin
1146 // issues
1147 }
1148 else
1149 {
1150 writeLogFile(bdCompCode, 0, e.getMessage(), sLanguage, swiftInwardCO);
1151 throw new BOException(e.getMessage(), e);// olivia 31/07/2014
1152 // jenkin issues
1153
1154 }
1155 }
1156 return swiftInwardCOList;
1157 }
1158 //LBedrane - BMO180040 - TP#690676 - 12/07/2018 <End>
1159
1160
1161 public ArrayList<SwiftInwardCO> saveAndReadTextFile(String SwiftMsgBlob, String sLanguage, BigDecimal bdCompCode)
1162 throws BaseException
1163 {
1164 String[] saTransMsgArr;
1165
1166 String sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_PATH_JAVA();
1167 if(sSwiftInwardPath == null)
1168 {
1169 saTransMsgArr = commonLibBO.returnTranslMessage(66752, sLanguage);
1170 throw new BOException(saTransMsgArr[0]);
1171 }
1172 sSwiftInwardPath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(sSwiftInwardPath);
1173 File inwardFileMaker;
1174 boolean bRetun = false;
1175 inwardFileMaker = new File(sSwiftInwardPath);
1176 if(!inwardFileMaker.exists())
1177 {
1178 bRetun = inwardFileMaker.mkdir();
1179 if(!bRetun)
1180 {
1181 saTransMsgArr = commonLibBO.returnTranslMessage(66760, sLanguage);
1182 throw new BOException(saTransMsgArr[0]);
1183 }
1184 }
1185
1186 String sFileName = "RMH".concat(DateUtil.format(commonLibBO.returnSystemDateWithTime(), "ddMMyyyy hhmmss"))
1187 .concat(".txt");
1188 sFileName = sFileName.replaceAll(" ", "");
1189 File inwardLocation = new File(sSwiftInwardPath);
1190 if(!inwardLocation.exists())
1191 {// olivia 31/07/2014 jenkin issues
1192 bRetun = inwardLocation.mkdir();
1193 if(!bRetun)
1194 {
1195 saTransMsgArr = commonLibBO.returnTranslMessage(66760, sLanguage);
1196 throw new BOException(saTransMsgArr[0]);
1197 }
1198 }
1199
1200 String sFileNameLoc;
1201 ArrayList<SwiftInwardCO> swiftInwardCOList;// olivia 31/07/2014 jenkin issues
1202
1203 try
1204 {
1205 sFileNameLoc = sSwiftInwardPath + File.separator + sFileName;
1206 FileOutputStream fos = new FileOutputStream(sFileNameLoc, true);
1207
1208 fos.write(SwiftMsgBlob.toString().getBytes(FileUtil.DEFAULT_FILE_ENCODING));
1209 fos.flush();
1210 fos.close();
1211
1212 swiftInwardCOList = readTextFile(sFileName, sLanguage, bdCompCode, "0");
1213 inwardLocation = new File(sFileNameLoc);
1214 Files.delete(inwardLocation.toPath());
1215 }
1216 catch(Exception e)
1217 {
1218 log.error(e, "Exception in saveAndReadTextFile");
1219 throw new BOException(e.getMessage(), e);// olivia 31/07/2014
1220 // jenkin issues
1221 }
1222
1223 return swiftInwardCOList;
1224 }
1225
1226 private int processAllInward(String sSwiftMsgIn, String sMsgCode, BigDecimal bdCompCode, BigDecimal bdBranchCode,
1227 String sModule, String sTrxType, BigDecimal bdTrsNo, String sPrinted, String sProcessMessageStatus,
1228 String sTagRefValue, String sProcessed, String sLanguage) throws BaseException
1229 {
1230 if("U".equals(sProcessed))
1231 {
1232 SwiftInwardCO swiftInwardCO = new SwiftInwardCO();
1233 SWIFT_HISTORYVOWithBLOBs swiftHstVOWithBLOBs = new SWIFT_HISTORYVOWithBLOBs();
1234 swiftHstVOWithBLOBs.setCOMP_CODE(bdCompCode);
1235 swiftHstVOWithBLOBs.setBRANCH_CODE(bdBranchCode);
1236 swiftHstVOWithBLOBs.setMSG_CODE(sMsgCode);
1237 swiftHstVOWithBLOBs.setMODULE(sModule);
1238 swiftHstVOWithBLOBs.setTRX_TYPE(sTrxType);
1239 swiftHstVOWithBLOBs.setTRS_NO(bdTrsNo);
1240 swiftHstVOWithBLOBs.setMSG_ORDER(BigDecimal.ONE);
1241 swiftHstVOWithBLOBs.setMSG_IN_OUT("I");
1242 swiftHstVOWithBLOBs.setHISTORY_DATE(commonLibBO.returnSystemDateWithTime());
1243 swiftHstVOWithBLOBs.setPRINTED(sPrinted);
1244 swiftHstVOWithBLOBs.setMSG_STATUS(sProcessMessageStatus);
1245 swiftHstVOWithBLOBs.setREFERENCE_TAG_DATA(sTagRefValue);
1246
1247 try
1248 {
1249 swiftHstVOWithBLOBs.setSWIFT_MSG_BLOB(sSwiftMsgIn.getBytes(FileUtil.DEFAULT_FILE_ENCODING));
1250 }
1251 catch(UnsupportedEncodingException e)
1252 {
1253 log.error(e, "Exception in setting blob message swift history");
1254 writeLogFile(bdCompCode, 1, e.getMessage(), sLanguage, swiftInwardCO);
1255 return -1;
1256 }
1257 try
1258 {
1259 genericDAO.insert(swiftHstVOWithBLOBs);
1260 }
1261 catch(DAOException e)
1262 {
1263 log.error(e, "Exception in inserting in swift history");
1264 writeLogFile(bdCompCode, 1, e.getMessage(), sLanguage, swiftInwardCO);
1265 return -1;
1266 }
1267 }
1268 return 1;
1269 }
1270
1271 private int processAllInward(String sSwiftMsgIn, String sMsgCode, BigDecimal bdCompCode, BigDecimal bdBranchCode,
1272 String sModule, String sTrxType, BigDecimal bdTrsNo, String sPrinted, String sProcessMessageStatus,
1273 String sTagRefValue, String sProcessed, String sLanguage, BigDecimal ldSwiftTrxNo ) throws BaseException
1274 {
1275 if("U".equals(sProcessed))
1276 {
1277 SwiftInwardCO swiftInwardCO = new SwiftInwardCO();
1278 SWIFT_HISTORYVOWithBLOBs swiftHstVOWithBLOBs = new SWIFT_HISTORYVOWithBLOBs();
1279 swiftHstVOWithBLOBs.setCOMP_CODE(bdCompCode);
1280 swiftHstVOWithBLOBs.setBRANCH_CODE(bdBranchCode);
1281 swiftHstVOWithBLOBs.setMSG_CODE(sMsgCode);
1282 swiftHstVOWithBLOBs.setMODULE(sModule);
1283 swiftHstVOWithBLOBs.setTRX_TYPE(sTrxType);
1284 swiftHstVOWithBLOBs.setTRS_NO(bdTrsNo);
1285 swiftHstVOWithBLOBs.setMSG_ORDER(BigDecimal.ONE);
1286 swiftHstVOWithBLOBs.setMSG_IN_OUT("I");
1287 swiftHstVOWithBLOBs.setHISTORY_DATE(commonLibBO.returnSystemDateWithTime());
1288 swiftHstVOWithBLOBs.setPRINTED(sPrinted);
1289 swiftHstVOWithBLOBs.setMSG_STATUS(sProcessMessageStatus);
1290 swiftHstVOWithBLOBs.setREFERENCE_TAG_DATA(sTagRefValue);
1291 //TODO add set swift trx no
1292 swiftHstVOWithBLOBs.setSWIFT_TRX_NO(ldSwiftTrxNo); //HGhazal - EWBI160216 - 07/09/2016
1293
1294 try
1295 {
1296 swiftHstVOWithBLOBs.setSWIFT_MSG_BLOB(sSwiftMsgIn.getBytes(FileUtil.DEFAULT_FILE_ENCODING));
1297 }
1298 catch(UnsupportedEncodingException e)
1299 {
1300 log.error(e, "Exception in setting blob in history");
1301 writeLogFile(bdCompCode, 1, e.getMessage(), sLanguage, swiftInwardCO);
1302 return -1;
1303 }
1304 try
1305 {
1306 genericDAO.insert(swiftHstVOWithBLOBs);
1307 }
1308 catch(DAOException e)
1309 {
1310 log.error(e, "Exception in inserting history");
1311 writeLogFile(bdCompCode, 1, e.getMessage(), sLanguage, swiftInwardCO);
1312 return -1;
1313 }
1314 }
1315 return 1;
1316 }
1317
1318 public SwiftCO parseMessage(ArrayList<SwiftInwardCO> swiftInwardCOList, String sMsgCode, Long lCtrMsg,
1319 BigDecimal bdCompCode, BigDecimal bdBranchCode, String sUserId, Date dSysDate, BigDecimal bdAckMode,
1320 String sSwiftMsgIn, String sMode, String sProcessed, Long lTrsNo, String sModule, String sMsgStatus,
1321 String sLanguage, ArrayList<Map<String, Object>> aListMapSqlRep) throws BaseException
1322 {
1323 StringBuilder sbsSwiftLogFile = new StringBuilder();
1324 sbsSwiftLogFile.append(commonLibBO.returnSwiftCtrlRecValues().getLOG_IN_PATH_JAVA());
1325 String[] saTransMsgArr;
1326
1327 if(commonLibBO.returnSwiftCtrlRecValues().getLOG_IN_PATH_JAVA() == null)
1328 {
1329 saTransMsgArr = commonLibBO.returnTranslMessage(66757, sLanguage);
1330 throw new BOException(saTransMsgArr[0]);
1331 }
1332
1333 String sRepoSwift = FileUtil.getFileURLByName("repository");
1334 if(sRepoSwift.endsWith("/"))
1335 {
1336 sbsSwiftLogFile.insert(0, sRepoSwift);
1337 }
1338 else
1339 {
1340 sbsSwiftLogFile.insert(0, "/");
1341 sbsSwiftLogFile.insert(0, sRepoSwift);
1342 }
1343 String sSwiftLog;
1344 sSwiftLog = sbsSwiftLogFile.toString();
1345 SWIFT_MANUAL_PROCESSVOKey swiftManualProcess = new SWIFT_MANUAL_PROCESSVOKey();
1346 swiftManualProcess.setCOMP_CODE(bdCompCode);
1347 swiftManualProcess.setMSG_CODE(sMsgCode);
1348 BigDecimal nbCount;
1349 nbCount = swiftInwardDAO.returnCountManualMsg(swiftManualProcess);
1350
1351 SwiftInwardCO swftInwardCO = new SwiftInwardCO();
1352 SwiftCO swiftCO = new SwiftCO();
1353 String sErrMsg = "";
1354 if("S".equals(sMode) && NumberUtil.nullToZero(nbCount).compareTo(BigDecimal.ZERO) == 1)// olivia
1355 // 31/07/2014
1356 // jenkin
1357 // issues
1358 {
1359 sErrMsg = commonLibBO.returnTranslErrorMessage(66741, new String[] { sMsgCode }, sLanguage);
1360 swiftCO.setErrorMsg(sErrMsg);
1361 writeLogFile(bdCompCode, 1, sErrMsg, sLanguage, swftInwardCO);
1362 processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT, SWFT, swiftInwardDAO
1363 .returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed, sLanguage);
1364 swiftCO.setReturnVar(-1L);
1365 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1366 return swiftCO;
1367 }
1368
1369 SWIFT_MSGHDR_INVO swiftMsghdrIn = new SWIFT_MSGHDR_INVO();
1370 swiftMsghdrIn.setACK(bdAckMode);
1371 swiftMsghdrIn.setMSG_CODE(sMsgCode);
1372 BigDecimal nbMaxSeq;
1373 nbMaxSeq = swiftInwardDAO.returnMaxSeq(swiftMsghdrIn);
1374
1375 if(nbMaxSeq == null)
1376 {
1377 sErrMsg = commonLibBO.returnTranslErrorMessage(66750, new String[] { sMsgCode }, sLanguage);
1378 swiftCO.setErrorMsg(sErrMsg);
1379 writeLogFile(bdCompCode, 1, sErrMsg, sLanguage, swftInwardCO);
1380 swiftCO.setReturnVar(-1L);
1381 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1382 return swiftCO;
1383 }
1384 int iRetValue;
1385 String sReportTitle;
1386 if(NumberUtil.nullToZero(nbMaxSeq).compareTo(BigDecimal.ZERO) == 0
1387 && (commonLibBO.returnSwiftCtrlRecValues().getPROCESS_ALL_INWARD().equals(0) || NumberUtil.nullToZero(
1388 bdAckMode).compareTo(BigDecimal.ONE) == 0))
1389 {
1390 iRetValue = processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT, SWFT, swiftInwardDAO
1391 .returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed, sLanguage);
1392 if(iRetValue == -1)
1393 {
1394 saTransMsgArr = commonLibBO.returnTranslMessage(66742, sLanguage);
1395 sReportTitle = saTransMsgArr[1];
1396 swiftCO.setErrorMsg(sReportTitle);
1397 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1398 swiftCO.setReturnVar(-1L);
1399 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1400 return swiftCO;
1401 }
1402 }
1403
1404 if(NumberUtil.nullToZero(nbMaxSeq).compareTo(BigDecimal.ZERO) == 0
1405 && (commonLibBO.returnSwiftCtrlRecValues().getPROCESS_ALL_INWARD().equals(1) || NumberUtil.nullToZero(
1406 bdAckMode).compareTo(BigDecimal.ZERO) == 0))
1407 {
1408 sErrMsg = commonLibBO.returnTranslErrorMessage(66750, new String[] { sMsgCode }, sLanguage);
1409 swiftCO.setErrorMsg(sErrMsg);
1410 writeLogFile(bdCompCode, 1, sErrMsg, sLanguage, swftInwardCO);
1411 swiftCO.setReturnVar(-1L);
1412 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1413 return swiftCO;
1414 }
1415
1416 if(NumberUtil.nullToZero(nbMaxSeq).compareTo(BigDecimal.ZERO) == 1)
1417 {
1418 if(bdAckMode.compareTo(BigDecimal.ZERO) == 0)
1419 {
1420 swiftMsghdrIn.setACK(BigDecimal.ZERO);
1421 }
1422 else if(bdAckMode.compareTo(BigDecimal.ZERO) == 1)
1423 {
1424 swiftMsghdrIn.setACK(BigDecimal.ONE);
1425 }
1426 }
1427 String sProcName, sTagRef = null;
1428 int counter;
1429
1430 for(counter = 1; counter <= NumberUtil.nullToZero(nbMaxSeq).intValueExact(); counter++) // pb
1431 // line
1432 // 113
1433 {
1434 SWIFT_MSGHDR_INVO swiftMsghdrInward = new SWIFT_MSGHDR_INVO();
1435 swiftMsghdrInward.setMSG_CODE(sMsgCode);
1436 swiftMsghdrInward.setSEQ(new BigDecimal(counter));
1437 if(bdAckMode.compareTo(BigDecimal.ZERO) > 0)
1438 {
1439 swiftMsghdrInward.setACK(BigDecimal.ONE);
1440 }
1441 else
1442 {
1443 swiftMsghdrInward.setACK(BigDecimal.ZERO);
1444 }
1445 try
1446 {
1447 // sProcName = swiftInwardDAO.returnProcName(swiftMsghdrInward);
1448 sProcName = ((SWIFT_MSGHDR_INVO) genericDAO.selectByPK(swiftMsghdrInward)).getPROC_NAME();
1449 }
1450 catch(Exception e) //Chady.A BUG #323574
1451 {
1452 log.error(e, "Exception in getting proc name");
1453 sErrMsg = commonLibBO.returnTranslErrorMessage(66743, new String[] { sMsgCode,
1454 Integer.toString(counter) }, sLanguage);
1455 swiftCO.setErrorMsg(sErrMsg);
1456 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1457 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1458 swiftCO.setReturnVar(-1L);
1459 return swiftCO;
1460 }
1461
1462 swiftMsghdrIn.setSEQ(new BigDecimal(counter));
1463 SwiftInwardSC swiftInwardSC = new SwiftInwardSC();
1464 ArrayList<SwiftInwardProcessCO> swiftMsgAllocDet;
1465 int swiftMsgAllocDetCount = 0;
1466
1467 try
1468 {
1469 swiftInwardSC.setMSG_CODE(swiftMsghdrIn.getMSG_CODE());
1470 swiftInwardSC.setACK(swiftMsghdrIn.getACK());
1471 swiftInwardSC.setSEQ(swiftMsghdrIn.getSEQ());
1472 swiftMsgAllocDet = swiftInwardDAO.returnSwiftMsghdrIn(swiftInwardSC);// dw_msg_alloc_det
1473 swiftMsgAllocDetCount = swiftInwardDAO.returnSwiftMsghdrInCount(swiftInwardSC);
1474 }
1475 catch(DAOException e)
1476 {
1477 log.error(e, "Exception in getting allocation inward");
1478 sErrMsg = commonLibBO.returnTranslErrorMessage(66744, new String[] { sMsgCode,
1479 Integer.toString(counter) }, sLanguage);
1480 swiftCO.setErrorMsg(sErrMsg);
1481 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1482 swiftCO.setReturnVar(-1L);
1483 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1484 return swiftCO;
1485 }
1486
1487 SWIFT_MSG_REFVO swiftMsgRef = new SWIFT_MSG_REFVO();
1488 if(bdAckMode.compareTo(BigDecimal.ZERO) == 0)
1489 {
1490 swiftMsgRef.setCOMP_CODE(bdCompCode);
1491 swiftMsgRef.setMSG_CODE(sMsgCode);
1492
1493 try
1494 {
1495 sTagRef = swiftInwardDAO.returnTag(swiftMsgRef);
1496 }
1497 catch(DAOException e)
1498 {
1499 log.error(e, "Exception in getting tag ref");
1500 sTagRef = "";
1501 }
1502 }
1503 // pb line 193
1504 Object oRepSkipCond;
1505 oRepSkipCond = commonLibBO.executeExpression(swiftMsgAllocDet.get(counter).getSwiftMsghdrInVO()
1506 .getREPTAG_COND(), counter, aListMapSqlRep);
1507 String sRepSkipCond;
1508 sRepSkipCond = StringUtil.nullToEmpty(oRepSkipCond).toString();
1509
1510 if(StringUtil.nullToEmpty(sRepSkipCond).equals(""))
1511 {
1512 sErrMsg = commonLibBO.returnTranslErrorMessage(66745, new String[] { sMsgCode,
1513 Integer.toString(counter) }, sLanguage);
1514 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1515 processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT, SWFT, swiftInwardDAO
1516 .returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed, sLanguage);
1517 swiftCO.setReturnVar(-1L);
1518 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1519 return swiftCO;
1520 }
1521
1522 Long llNbrOccur = Long.valueOf(sRepSkipCond);
1523
1524 if(llNbrOccur.compareTo(0L) == 0)
1525 {
1526 saTransMsgArr = commonLibBO.returnTranslMessage(66751, sLanguage);
1527 sReportTitle = saTransMsgArr[1];
1528 swiftCO.setErrorMsg(sReportTitle);
1529 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1530 iRetValue = processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT, SWFT,
1531 swiftInwardDAO.returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed, sLanguage);
1532 if(iRetValue == -1)
1533 {
1534 saTransMsgArr = commonLibBO.returnTranslMessage(66742, sLanguage);
1535 sReportTitle = saTransMsgArr[1];
1536 swiftCO.setErrorMsg(sReportTitle);
1537 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1538 swiftCO.setReturnVar(-1L);
1539 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1540 return swiftCO;
1541 }
1542 }
1543 String sTagDw = null;
1544 List<SwiftInwardIndexCO> fieldList = new ArrayList<SwiftInwardIndexCO>();
1545 SwiftInwardIndexCO swiftInwardIndexCO = new SwiftInwardIndexCO();
1546 int iCtr;
1547 BigDecimal bdTagLine = BigDecimal.ZERO, bdRowCount, bdPreviousTagindex, bdCurrentTagindex = BigDecimal.ZERO, bdPreviousIndex = BigDecimal.ZERO, bdCurrentIndex = BigDecimal.ZERO;
1548 String sPreviousTag;
1549
1550 for(iCtr = 0; iCtr < swiftInwardCOList.size(); iCtr++)// pb line 229
1551 // uf_fill_dwidx
1552 {
1553 //bdTagLine = BigDecimal.ZERO;
1554 //bdCurrentTagindex = BigDecimal.ZERO;
1555 //bdPreviousIndex = BigDecimal.ZERO;
1556 //bdCurrentIndex = BigDecimal.ONE;
1557 swiftInwardIndexCO = new SwiftInwardIndexCO();
1558
1559
1560 sPreviousTag = sTagDw;
1561 sTagDw = swiftInwardCOList.get(iCtr).getCf_tag();
1562
1563 if("".equals(StringUtil.nullToEmpty(sTagDw)))// olivia
1564 // 31/07/2014
1565 // jenkin issues
1566 {
1567 sTagDw = sPreviousTag;
1568 bdTagLine = bdTagLine.add(BigDecimal.ONE);// olivia
1569 // 31/07/2014
1570 // jenkin issues
1571 }
1572 else
1573 {
1574 bdTagLine = BigDecimal.ZERO;
1575 }
1576
1577 bdPreviousTagindex = bdCurrentTagindex;
1578 SWIFT_MSGDET_INVO swiftMsgdetInVO = new SWIFT_MSGDET_INVO();
1579 swiftMsgdetInVO.setMSG_CODE(sMsgCode);
1580 swiftMsgdetInVO.setSEQ(new BigDecimal(counter));
1581 swiftMsgdetInVO.setTAG(sTagDw);
1582 swiftMsgdetInVO.setTAG_LINE(bdTagLine);
1583
1584 bdRowCount = swiftInwardDAO.returnMaxSeq(swiftMsghdrInward);
1585 swiftMsgdetInVO = swiftInwardDAO.returnMsgdetIn(swiftMsgdetInVO);
1586
1587 if(swiftMsgdetInVO == null)
1588 {
1589 swiftInwardIndexCO.setLineNbr(new BigDecimal(iCtr));
1590 swiftInwardIndexCO.setTag(sTagDw);
1591 swiftInwardIndexCO.setTagLine(bdTagLine);
1592 swiftInwardIndexCO.setIndex(BigDecimal.ZERO);
1593 fieldList.add(swiftInwardIndexCO);
1594 continue;
1595 }
1596 else
1597 {
1598 bdCurrentTagindex = swiftMsgdetInVO.getALLOC_LINE_NBR();//olivia 30/12/2014
1599
1600 if(NumberUtil.nullToZero(bdRowCount).compareTo(BigDecimal.ZERO) == 0)// olivia
1601 // 31/07/2014
1602 // jenkin
1603 // issues
1604 {
1605 swiftInwardIndexCO.setLineNbr(new BigDecimal(iCtr));
1606 swiftInwardIndexCO.setTag(sTagDw);
1607 swiftInwardIndexCO.setTagLine(bdTagLine);
1608 swiftInwardIndexCO.setIndex(BigDecimal.ZERO);
1609 }
1610 else
1611 {
1612 swiftInwardIndexCO.setLineNbr(new BigDecimal(iCtr));
1613 swiftInwardIndexCO.setTag(sTagDw);
1614 swiftInwardIndexCO.setTagLine(bdTagLine);
1615 if(swiftMsgdetInVO.getGROUP_NBR() == null
1616 || swiftMsgdetInVO.getGROUP_NBR().compareTo(BigDecimal.ZERO) == 0)
1617 {
1618 swiftInwardIndexCO.setIndex(BigDecimal.ZERO);
1619 bdPreviousIndex = BigDecimal.ZERO;
1620 }
1621 else
1622 {
1623 if("Y".equals(StringUtil.nullToEmpty(swiftMsgdetInVO.getHDR_DET())))// olivia
1624 // 31/07/2014
1625 // jenkin
1626 // issues
1627 {
1628 swiftInwardIndexCO.setIndex(bdPreviousTagindex);
1629 if(bdPreviousIndex.compareTo(BigDecimal.ZERO) == 0)
1630 {
1631 bdCurrentIndex = BigDecimal.ZERO;
1632 }
1633 }
1634 else
1635 {
1636 if(bdCurrentTagindex.compareTo(bdPreviousTagindex) == 1)
1637 {
1638 swiftInwardIndexCO.setIndex(bdCurrentIndex);
1639 }
1640 else
1641 {
1642 bdCurrentIndex = bdCurrentIndex.add(BigDecimal.ONE);
1643 swiftInwardIndexCO.setIndex(bdCurrentIndex);
1644 }
1645 bdPreviousIndex = bdCurrentIndex;
1646 }
1647 }
1648 }
1649 }
1650 fieldList.add(swiftInwardIndexCO);
1651 }
1652 BigDecimal bdArgVar;
1653 DF_FILE_PRC_INP_PARMVO dfFilePrcInpParm;
1654 List<DF_FILE_PRC_INP_PARMVO> paramList = new ArrayList<DF_FILE_PRC_INP_PARMVO>();
1655 int iIdx;
1656 String sDefaultValue, sTagRefValue = null;
1657
1658 for(iIdx = 1; iIdx <= llNbrOccur; iIdx++) // pb line 240
1659 {
1660 //HGhazal - get swift trx no - EWBI160216 - 07/09/2016
1661 BigDecimal ldSwiftTrxNo = returnSwiftTrxNo();
1662 String lsSwiftTrxNo = ldSwiftTrxNo.toString();
1663 for(iCtr = 0; iCtr < swiftMsgAllocDetCount; iCtr++)
1664 {
1665 dfFilePrcInpParm = new DF_FILE_PRC_INP_PARMVO();
1666 bdArgVar = swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getARG_VAR();
1667
1668 if("".equals(StringUtil.nullToEmpty(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getARG_VAR())))// olivia
1669 // 31/07/2014
1670 // jenkin
1671 // issues
1672 {
1673 bdArgVar = BigDecimal.ZERO;
1674 }
1675 sDefaultValue = StringUtil.nullToEmpty(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO()
1676 .getDEFAULT_VALUE());
1677 if("G"
1678 .equals(StringUtil.nullToEmpty(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO()
1679 .getARG_TYPE())))// olivia
1680 // 31/07/2014
1681 // jenkin
1682 // issues
1683 {
1684 sDefaultValue = StringUtil.nullToEmpty(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO()
1685 .getDEFAULT_VALUE());
1686 sDefaultValue = returnGlobalValue(sDefaultValue, bdCompCode, bdBranchCode, sUserId, dSysDate,
1687 iIdx, llNbrOccur, commonLibBO.returnSystemDateNoTime(), bdAckMode,lsSwiftTrxNo);
1688
1689 if("-1".equals(sDefaultValue))
1690 {
1691 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1692 }
1693 }
1694 String sTag = null;
1695 sTag = swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG();
1696 // PB Code line 270:If (IsNull(ls_default_value) Or
1697 // Trim(ls_default_value) = '') and Not IsNull(ls_Tag) Then
1698 if("".equals(sDefaultValue)
1699 && !"".equals(StringUtil.nullToEmpty(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO()
1700 .getTAG())))
1701 {
1702 if(NumberUtil.nullToZero(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG_LINE())
1703 .compareTo(BigDecimal.ZERO) == 0)
1704 {
1705 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().setTAG_LINE(BigDecimal.ZERO);
1706 }
1707
1708 if(NumberUtil.nullToZero(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getGROUP_NBR())
1709 .compareTo(BigDecimal.ZERO) == 0)
1710 {
1711 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().setGROUP_NBR(BigDecimal.ZERO);
1712 }
1713 int iOccur, iRow = 0;
1714 String sSuffix = null;
1715 if(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getGROUP_NBR().compareTo(BigDecimal.ZERO) == 0)
1716 {
1717 // mhmd set instead of 1
1718 int foundTag = 0, iLine;
1719 for(iOccur = 0; iOccur < swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getOCCURENCE()
1720 .intValue(); iOccur++)
1721 {
1722 for(iLine = swiftInwardCOList.get(lCtrMsg.intValue()-1).getCf_first_line().intValue(); iLine < swiftInwardCOList
1723 .get(lCtrMsg.intValue()-1).getCf_last_line().intValue(); iLine++)//efarah 06-03-2017 If files contains more than 1 message and there is no enter between 2 messages like BBS
1724 {
1725 if(swiftInwardCOList.get(iLine - 1).getCf_tag().equals(
1726 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG()))
1727 {
1728 iRow = iLine;
1729 foundTag = 1;
1730 break;
1731 }
1732 else
1733 {
1734 if(swiftInwardCOList.get(iLine - 1).getCf_tag().equals("H") && iCtr == 0)
1735 {
1736 oRepSkipCond = null;//EFARAH
1737 }
1738 }
1739 }
1740 }
1741 // added mhmd to check if the tag existed or not
1742 if(foundTag == 0)
1743 {
1744 iRow = 0;
1745 }
1746 }
1747 else
1748 {
1749 for(iOccur = 1; iOccur <= fieldList.size(); iOccur++)
1750 {
1751 if(fieldList.get(iOccur-1).getTag().equals(
1752 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG())
1753 && fieldList.get(iOccur-1).getTagLine().equals(
1754 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG_LINE())
1755 && fieldList.get(iOccur-1).getIndex().equals(BigDecimal.ZERO))
1756 {
1757 iRow = iOccur;
1758 bdArgVar = BigDecimal.ZERO;
1759 break;
1760 }
1761 }
1762
1763 if(iRow > 0)
1764 {
1765 sSuffix = "H";
1766 }
1767 else
1768 {
1769 for(iOccur = 1; iOccur <= fieldList.size(); iOccur++)
1770 {
1771 if(fieldList.get(iOccur-1).getTag().equals(
1772 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG())
1773 && fieldList.get(iOccur-1).getTagLine().equals(
1774 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG_LINE())
1775 && fieldList.get(iOccur-1).getIndex().equals(new BigDecimal(iIdx)))
1776 {
1777 iRow = iOccur;
1778 sSuffix = "D";
1779 bdArgVar = BigDecimal.ONE;
1780 break;
1781 }
1782 }
1783 }
1784 }
1785 if(iRow < 0)
1786 {
1787 sErrMsg = commonLibBO.returnTranslErrorMessage(66746, new String[] {
1788 fieldList.get(iOccur-1).getTag(), sMsgCode, Integer.toString(counter),
1789 Integer.toString(iCtr) }, sLanguage);
1790 swiftCO.setErrorMsg(sErrMsg);
1791 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1792 processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT, SWFT,
1793 swiftInwardDAO.returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed, sLanguage);
1794 swiftCO.setReturnVar(-1L);
1795 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1796 return swiftCO;
1797 }
1798
1799 if(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getSTATUS().equals("M") && iRow == 0)
1800 {
1801 sErrMsg = commonLibBO.returnTranslErrorMessage(66769, new String[] {
1802 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG() }, sLanguage);//EFARAH
1803 swiftCO.setErrorMsg(sErrMsg);
1804 writeLogFile(bdCompCode, 1, sErrMsg, sLanguage, swftInwardCO);
1805 processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT, SWFT,
1806 swiftInwardDAO.returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed, sLanguage);
1807 //if(iRetValue == -1)
1808 //{
1809 //saTransMsgArr = commonLibBO.returnTranslMessage(66751, sLanguage);
1810 //sReportTitle = saTransMsgArr[1];
1811 //swiftCO.setErrorMsg(sReportTitle);
1812 //writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1813 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1814 swiftCO.setReturnVar(-1L);
1815 return swiftCO;
1816 //}
1817 }
1818 else
1819 {
1820 if(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getSTATUS().equals("O") && iRow == 0)
1821 {
1822 dfFilePrcInpParm.setINP_PARM_VALUE("");
1823 dfFilePrcInpParm.setINP_PARM_TYPE("string");
1824 paramList.add(dfFilePrcInpParm);
1825 continue;
1826 }
1827 }
1828 int iRowNbr;
1829 if(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getGROUP_NBR().compareTo(BigDecimal.ZERO) == 0)
1830 {
1831 iRowNbr = iRow + swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG_LINE().intValue();
1832 }
1833 else
1834 {
1835 iRowNbr = iRow;
1836 }
1837 // line 349
1838 if(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getVALUE_EXP() != null
1839 && swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getVALUE_EXP().length() > 0)
1840 {
1841 oRepSkipCond = swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getVALUE_EXP();
1842 // mhmd
1843 // oRepSkipCond = commonLibBO.executeExpression(
1844 // swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getVALUE_EXP()
1845 // ,
1846 // counter - 1, aListMapSqlRep);
1847 sRepSkipCond = StringUtil.nullToEmpty(oRepSkipCond).toString();
1848 if(StringUtil.nullToEmpty(sRepSkipCond).equals(""))
1849 {
1850 sErrMsg = commonLibBO.returnTranslErrorMessage(66746, new String[] {
1851 fieldList.get(iOccur).getTag(), sMsgCode, Integer.toString(counter),
1852 Integer.toString(iCtr) }, sLanguage);
1853 swiftCO.setErrorMsg(sErrMsg);
1854 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1855 iRetValue = processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT,
1856 SWFT, swiftInwardDAO.returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed,
1857 sLanguage);
1858 if(iRetValue == -1)
1859 {
1860 saTransMsgArr = commonLibBO.returnTranslMessage(66751, sLanguage);
1861 sReportTitle = saTransMsgArr[1];
1862 swiftCO.setErrorMsg(sReportTitle);
1863 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1864 swiftCO.setReturnVar(-1L);
1865 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1866 return swiftCO;
1867 }
1868 }
1869 }
1870 // pb line 371
1871 if(iRowNbr > swiftInwardCOList.size())//efarah 29-01-2016 ABARSU160018
1872 {
1873 dfFilePrcInpParm.setINP_PARM_VALUE("");
1874 paramList.add(dfFilePrcInpParm);
1875 continue;//efarah 29-01-2016 ABARSU160018
1876 }
1877
1878 // mhmd adjusting condition to
1879 String sCfTag = null;
1880 if(!swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG_LINE().equals(BigDecimal.ZERO))
1881 {
1882 sCfTag = swiftInwardCOList.get(iRowNbr - 1).getCfd_tag().toString();
1883 }
1884 // pb line 381 mhmd adjusting condition
1885 if(iRow == 0
1886 || (swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getTAG_LINE().compareTo(
1887 BigDecimal.ZERO) != 0 && !swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO()
1888 .getTAG().equals(sCfTag)))
1889 {
1890 dfFilePrcInpParm.setINP_PARM_VALUE("");
1891 dfFilePrcInpParm.setINP_PARM_TYPE("string");
1892 }
1893 else
1894 {
1895 if(oRepSkipCond != null && !"".equals(oRepSkipCond.toString()))
1896 {
1897 oRepSkipCond = commonLibBO.executeExpression(oRepSkipCond.toString(), iRowNbr - 1,
1898 aListMapSqlRep);
1899 }
1900 // mhmd
1901 // oRepSkipCond =
1902 // commonLibBO.executeExpression("~\""
1903 // + swiftInwardCOList.get(counter).getCfValue() +
1904 // "~\"," + iRowNbr + ")",
1905 // counter, aListMapSqlRep);
1906 sRepSkipCond = StringUtil.nullToEmpty(oRepSkipCond).toString();
1907 // pb line 388 mhmd
1908 if("".equals(StringUtil.nullToEmpty(sRepSkipCond)))
1909 {
1910 // mhmd adjust while loop pb line 399
1911 String sNextTag = null;
1912 do
1913 {
1914 if(bdArgVar.compareTo(BigDecimal.ONE) == 0)
1915 {
1916 //sTag = swiftInwardCOList.get(iRowNbr - 1).getCfd_tag().toString();
1917 //iRowNbr=iRowNbr+1;
1918 bdArgVar = BigDecimal.ZERO;
1919 }
1920
1921 // mhmd
1922 String sMessageLine;
1923 sMessageLine = swiftInwardCOList.get(iRowNbr - 1).getMessage_line();
1924 // if(sMessageLine.length() > sTag.length()
1925 // &&
1926 // sMessageLine.substring(1,sTag.length())==
1927 // sTag)
1928 // {
1929 // sLineValue =
1930 // sMessageLine.substring(sMessageLine.indexOf(sTag)
1931 // + sTag.length(), sMessageLine.length());
1932 // }
1933 // else
1934 // {
1935 // sLineValue = sMessageLine;
1936 // }
1937
1938 if(sTag != null && sMessageLine.length() >= sTag.length()
1939 && sTag.equals(sMessageLine.substring(0, sTag.length()))) // olivia
1940 // 31/07/2014
1941 // jenkin issues
1942 {
1943 swiftInwardCOList.get(iRowNbr - 1).setCf_line_value(
1944 swiftInwardCOList.get(iRowNbr - 1).getMessage_line().substring(
1945 swiftInwardCOList.get(iRowNbr - 1).getMessage_line().indexOf(
1946 sTag, 0)
1947 + sTag.length(),
1948 swiftInwardCOList.get(iRowNbr - 1).getMessage_line().length()));
1949 }
1950 else
1951 {
1952 swiftInwardCOList.get(iRowNbr - 1).setCf_line_value(
1953 swiftInwardCOList.get(iRowNbr - 1).getMessage_line());
1954 }
1955 // replace the Single quote (') and
1956 // double quote (") by ~~~' or ~~~"
1957 // mhmd
1958 // swiftInwardCOList.get(counter).setCfLineValue(
1959 // swiftInwardCOList.get(counter).getCfLineValue().replace("'",
1960 // "~~~~~'"));
1961 // swiftInwardCOList.get(counter).setCfLineValue(
1962 // swiftInwardCOList.get(counter).getCfLineValue()
1963 // .replace("\"", "~~~~~\""));
1964
1965 // mhmd
1966 // oRepSkipCond =
1967 // commonLibBO.executeExpression(
1968 // swiftInwardCOList.get(counter).getCfLineValue()
1969 // , iRowNbr,
1970 // aListMapSqlRep);
1971 sRepSkipCond = StringUtil.nullToEmpty(
1972 swiftInwardCOList.get(iRowNbr - 1).getCf_line_value()).toString();
1973 if(StringUtil.nullToEmpty(sRepSkipCond).equals(""))
1974 {
1975 sErrMsg = commonLibBO.returnTranslErrorMessage(66746, new String[] {
1976 fieldList.get(iOccur).getTag(), sMsgCode, Integer.toString(counter),
1977 Integer.toString(iCtr) }, sLanguage);
1978 swiftCO.setErrorMsg(sErrMsg);
1979 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1980 iRetValue = processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode,
1981 SWFT, SWFT, swiftInwardDAO.returnAccMaxTrsNo(), PRINTED, STATUS, null,
1982 sProcessed, sLanguage);
1983 if(iRetValue == -1)
1984 {
1985 saTransMsgArr = commonLibBO.returnTranslMessage(66751, sLanguage);
1986 sReportTitle = saTransMsgArr[1];
1987 swiftCO.setErrorMsg(sReportTitle);
1988 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
1989 swiftCO.setReturnVar(-1L);
1990 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
1991 return swiftCO;
1992 }
1993 }
1994 // mhmd
1995 if(NumberUtil.nullToZero(
1996 swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getGROUP_NBR()).compareTo(
1997 BigDecimal.ZERO) == 0
1998 && swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO().getGROUP_NBR().equals(
1999 BigDecimal.ZERO))
2000 {
2001 if(bdArgVar.compareTo(BigDecimal.ZERO) == 0)
2002 {
2003 if(dfFilePrcInpParm.getINP_PARM_VALUE() == null)// olivia
2004 // 31/07/2014
2005 // jenkin
2006 // issues
2007 // switch
2008 // if
2009 // not
2010 // else
2011 {
2012 dfFilePrcInpParm.setINP_PARM_VALUE(swiftInwardCOList.get(iRowNbr - 1)
2013 .getCf_line_value());
2014 }
2015 else
2016 {
2017 dfFilePrcInpParm.setINP_PARM_VALUE(dfFilePrcInpParm.getINP_PARM_VALUE()
2018 + swiftInwardCOList.get(iRowNbr - 1).getCf_line_value());
2019 }
2020
2021 }
2022 else
2023 {
2024 if(dfFilePrcInpParm.getINP_PARM_VALUE() == null)// olivia
2025 // 31/07/2014
2026 // jenkin
2027 // issues
2028 // switch
2029 // if
2030 // not
2031 // else
2032 {
2033 dfFilePrcInpParm.setINP_PARM_VALUE(" "
2034 + swiftInwardCOList.get(iRowNbr - 1).getCf_line_value());
2035 }
2036 else
2037 {
2038 dfFilePrcInpParm.setINP_PARM_VALUE(dfFilePrcInpParm.getINP_PARM_VALUE()
2039 + " " + swiftInwardCOList.get(iRowNbr - 1).getCf_line_value());
2040 }
2041
2042 }
2043 }
2044 else
2045 {
2046 if(dfFilePrcInpParm.getINP_PARM_VALUE() == null)// olivia
2047 // 31/07/2014
2048 // jenkin
2049 // issues
2050 // switch
2051 // if
2052 // not
2053 // else
2054 {
2055 // dfFilePrcInpParm.setINP_PARM_VALUE(sMessageLine
2056 // + sSuffix);
2057 dfFilePrcInpParm.setINP_PARM_VALUE(swiftInwardCOList.get(iRowNbr - 1)
2058 .getCf_line_value()
2059 + sSuffix);
2060 }
2061 else
2062 {
2063 // dfFilePrcInpParm.setINP_PARM_VALUE(dfFilePrcInpParm.getINP_PARM_VALUE()
2064 // + sMessageLine + sSuffix);
2065 dfFilePrcInpParm.setINP_PARM_VALUE(dfFilePrcInpParm.getINP_PARM_VALUE()
2066 + swiftInwardCOList.get(iRowNbr - 1).getCf_line_value() + sSuffix);
2067 }
2068 }
2069
2070 dfFilePrcInpParm.setINP_PARM_TYPE("string");
2071
2072 if(iRowNbr <= swiftInwardCOList.size())
2073 {
2074 sNextTag = swiftInwardCOList.get(iRowNbr).getCfd_tag();
2075 }
2076 iRowNbr += 1;
2077 }while(bdArgVar.compareTo(BigDecimal.ONE) == 0 && sTag.equals(sNextTag)
2078 && iRowNbr <= swiftInwardCOList.size());
2079 }
2080 else
2081 // olivia 31/07/2014 jenkin issues switch if not
2082 // else
2083 {
2084 if("".equals(StringUtil.nullToEmpty(swiftMsgAllocDet.get(iCtr).getSwiftMsgdetInVO()
2085 .getGROUP_NBR())))// olivia 31/07/2014
2086 // jenkin issues
2087 {
2088 dfFilePrcInpParm.setINP_PARM_VALUE(sRepSkipCond);
2089 }
2090 else
2091 {
2092 dfFilePrcInpParm.setINP_PARM_VALUE(sRepSkipCond + StringUtil.nullToEmpty(sSuffix));
2093 }
2094 dfFilePrcInpParm.setINP_PARM_TYPE("string");
2095 // set this to skip execute expression above for
2096 // oRepSkipCond
2097 oRepSkipCond = null;
2098 }
2099 }
2100 }
2101
2102 else
2103 {
2104 dfFilePrcInpParm.setINP_PARM_VALUE(sDefaultValue);
2105 dfFilePrcInpParm.setINP_PARM_TYPE("string");
2106 }
2107
2108 // check tag reference to add it in swift_history
2109
2110 if(!StringUtil.nullToEmpty(sTag).isEmpty() && !StringUtil.nullToEmpty(sTagRef).isEmpty()
2111 && StringUtil.nullToEmpty(sTag).equals(StringUtil.nullToEmpty(sTagRef)))// olivia
2112 // 31/07/2014
2113 // jenkin
2114 // issues
2115 {
2116 // if(sTag.equals(sTagRef))//olivia 31/07/2014 jenkin
2117 // issues
2118 // {
2119 StringUtil.nullToEmpty(sTagRefValue);
2120 sTagRefValue = sTagRefValue.concat(dfFilePrcInpParm.getINP_PARM_VALUE());// olivia
2121 // 31/07/2014
2122 // jenkin
2123 // issues
2124 // }
2125 }
2126 paramList.add(dfFilePrcInpParm);
2127 }
2128 // pb line 474 mhmd
2129 SwiftInwardCO swiftInwardCO = new SwiftInwardCO();
2130 swiftInwardCO.setCf_nbr_msgs(swiftInwardCOList.get(0).getCf_nbr_msgs());
2131 swiftInwardCO.setCf_mt(swiftInwardCOList.get(0).getCf_mt());
2132 for(int i = 0 ; i < paramList.size() - 1 ; i++){
2133 log.info("Mohamad indice " + String.valueOf(i) + ": ParamName = "+ StringUtil.nullToEmpty(paramList.get(i).getINP_PARM_NAME()) + " , PramValue = "+ StringUtil.nullToEmpty(paramList.get(i).getINP_PARM_VALUE()) + "\n");
2134 }
2135 swiftInwardCO = swiftInwardDAO.executeDynProcedure(paramList, sProcName, swiftInwardCO);
2136
2137 String[] apiOutPutParams = swiftInwardCO.getOutputParams();
2138 // switch (new
2139 // BigDecimal(apiOutPutParams[0]).intValue())//olivia 31/07/2014
2140 // jenkin issues
2141 // {
2142 // insert inward message into swift history
2143 // inserting the message status as processed
2144 if("0".equals(apiOutPutParams[0]))// olivia 31/07/2014 jenkin
2145 // issues
2146 {
2147 sErrMsg = commonLibBO.returnTranslErrorMessage(66748, new String[] { apiOutPutParams[2] },
2148 sLanguage);
2149 swiftCO.setErrorMsg(sErrMsg);
2150 writeLogFile(bdCompCode, 1, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
2151 if (apiOutPutParams[2].indexOf(",") > 0)
2152 {
2153 String sTrsNo1[] = new String[99999],sTrsNo[] =apiOutPutParams[2].split(",");
2154 int j=0;
2155 boolean bFound=false;
2156 for (int i=0;i<sTrsNo.length;i++)
2157 {
2158 bFound=false;
2159 if (i==0)
2160 {
2161 sTrsNo1[j] = sTrsNo[i];
2162 j++;
2163 }
2164 else
2165 {
2166 for(int t=0;t<j;t++)
2167 {
2168 if (sTrsNo1[t].equals(sTrsNo[i]))
2169 {
2170 bFound=true;
2171 }
2172 }
2173 if(!bFound)
2174 {
2175 sTrsNo1[j] = sTrsNo[i];
2176 j++;
2177 }
2178 }
2179 }
2180 for (int i=0;i<sTrsNo1.length;i++)
2181 {
2182 if (!(sTrsNo1[i] == null))
2183 {
2184 processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, apiOutPutParams[1],
2185 apiOutPutParams[3], new BigDecimal(sTrsNo1[i]), null, "P", sTagRefValue,
2186 sProcessed, sLanguage);
2187 }
2188 else
2189 {
2190 break;
2191 }
2192 }
2193 }
2194 else
2195 {
2196 processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, apiOutPutParams[1],
2197 apiOutPutParams[3], new BigDecimal(apiOutPutParams[2]), null, "P", sTagRefValue,
2198 sProcessed, sLanguage);
2199 }
2200
2201 swiftCO.setLogFileLocation(sSwiftLog);
2202 SWIFT_HISTORYVOWithBLOBs swiftHstVOWithBLOBs = new SWIFT_HISTORYVOWithBLOBs();
2203 // if the caller of this window is swift history
2204 // for an unprocessed message
2205 if(StringUtil.nullToEmpty(sMsgStatus).equals("U"))
2206 {
2207 try
2208 {
2209 swiftHstVOWithBLOBs.setSWIFT_MSG_BLOB(sSwiftMsgIn.getBytes(FileUtil.DEFAULT_FILE_ENCODING));
2210 }
2211 catch(UnsupportedEncodingException e)
2212 {
2213 log.error(e, "Exception in setting blob in history");
2214 writeLogFile(bdCompCode, 1, e.getMessage(), sLanguage, swiftInwardCO);
2215 swiftCO.setReturnVar(-1L);
2216 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
2217 return swiftCO;
2218 }
2219 swiftHstVOWithBLOBs.setCOMP_CODE(bdCompCode);
2220 swiftHstVOWithBLOBs.setBRANCH_CODE(bdBranchCode);
2221 swiftHstVOWithBLOBs.setMODULE(apiOutPutParams[1]);
2222 swiftHstVOWithBLOBs.setMSG_CODE(swiftInwardCO.getCf_mt());
2223 swiftHstVOWithBLOBs.setMSG_ORDER(new BigDecimal(swiftInwardCO.getCf_nbr_msgs()));
2224 swiftHstVOWithBLOBs.setACK(BigDecimal.ZERO);
2225 swiftHstVOWithBLOBs.setHISTORY_DATE(commonLibBO.returnSystemDateNoTime());
2226 swiftHstVOWithBLOBs.setTRS_NO(new BigDecimal(apiOutPutParams[2]));
2227 swiftHstVOWithBLOBs.setTRX_TYPE(apiOutPutParams[3]);
2228 swiftHstVOWithBLOBs.setMSG_STATUS("R");
2229 swiftHstVOWithBLOBs.setMODULE(apiOutPutParams[1]);
2230
2231 try
2232 {
2233 genericDAO.update(swiftHstVOWithBLOBs);
2234 }
2235 catch(DAOException e)
2236 {
2237 log.error(e, "Exception in updating swift history");
2238 saTransMsgArr = commonLibBO.returnTranslMessage(66751, sLanguage);
2239 sReportTitle = saTransMsgArr[1];
2240 swiftCO.setErrorMsg(sReportTitle);
2241 writeLogFile(bdCompCode, 1, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
2242 swiftCO.setReturnVar(-1L);
2243 swiftCO.setLogFileLocation(swftInwardCO.getLogFileLocation());
2244 return swiftCO;
2245 }
2246 }
2247
2248 // break;//olivia 31/07/2014 jenkin issues
2249 }
2250 // inserting the message into swift history even if
2251 // procedure failed
2252 // default://olivia 31/07/2014 jenkin issues
2253 else
2254 // olivia 31/07/2014 jenkin issues
2255 {
2256 //EFarah - Add case to handle ack/nack - 20/07/2015
2257 if(NumberUtil.isNumberPositive(new BigDecimal(apiOutPutParams[0])))// olivia 31/07/2014 jenkin
2258 // issues
2259 {
2260 sErrMsg = commonLibBO.returnTranslErrorMessage(66748, new String[] { apiOutPutParams[1] },
2261 sLanguage);
2262 swiftCO.setErrorMsg(sErrMsg);
2263 writeLogFile(bdCompCode, 1, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
2264 /*processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT,
2265 SWFT, swiftInwardDAO
2266 .returnAccMaxTrsNo(), null, "P", sTagRefValue,
2267 sProcessed, sLanguage); in case only the beneficiary is inserted in tmp and the transaction not created do not insert in history*/
2268
2269 swiftCO.setLogFileLocation(sSwiftLog);
2270 }
2271 else
2272 {
2273 sErrMsg = commonLibBO.returnTranslErrorMessage(66749, new String[] { apiOutPutParams[0],
2274 apiOutPutParams[1] }, sLanguage);
2275 swiftCO.setErrorMsg(sErrMsg);
2276 writeLogFile(bdCompCode, 0, swiftCO.getErrorMsg(), sLanguage, swftInwardCO);
2277 processAllInward(sSwiftMsgIn, sMsgCode, bdCompCode, bdBranchCode, SWFT, SWFT, swiftInwardDAO
2278 .returnAccMaxTrsNo(), PRINTED, STATUS, null, sProcessed, sLanguage);
2279 swiftCO.setLogFileLocation(sSwiftLog);
2280 swiftCO.setReturnVar(-1L);
2281 return swiftCO;
2282 }
2283 }
2284 // }
2285 paramList = new ArrayList<DF_FILE_PRC_INP_PARMVO>();
2286
2287 }
2288
2289 }
2290
2291 return swiftCO;
2292 }
2293
2294 private String returnGlobalValue(String sDefaultValueIn, BigDecimal bdCompCode, BigDecimal bdBranchCode,
2295 String sUserId, Date dSysDate, Integer iIdx, Long llNbrOccur, Date dToday, BigDecimal bdAckMode, String lsSwiftTrxNo)
2296 throws DAOException
2297 {
2298 String sDefaultValue = sDefaultValueIn;
2299
2300 if(sDefaultValue.compareTo("gv_company_code") == 0 || "c_c".equals(sDefaultValue))
2301 {
2302 sDefaultValue = bdCompCode.toString();
2303 }
2304 else if(sDefaultValue.compareTo("gv_branch_code") == 0 || "b_c".equals(sDefaultValue))
2305 {
2306 sDefaultValue = bdBranchCode.toString();
2307 }
2308 else if(sDefaultValue.compareTo("gv_userid") == 0 || "u_i".equals(sDefaultValue))
2309 {
2310 sDefaultValue = sUserId;
2311 }
2312 else if(sDefaultValue.compareTo("gv_system_date") == 0 || "r_d".equals(sDefaultValue))
2313 {
2314 sDefaultValue = DateUtil.format(dSysDate, "dd/MM/yyyy");
2315 }
2316 else if(sDefaultValue.compareTo("gv_count") == 0)
2317 {
2318 sDefaultValue = new BigDecimal(iIdx).toString();
2319 }
2320 else if(sDefaultValue.compareTo("gv_nbr_occur") == 0)
2321 {
2322 sDefaultValue = llNbrOccur.toString();
2323 }
2324 else if(sDefaultValue.compareTo("gv_today") == 0)
2325 {
2326 sDefaultValue = DateUtil.format(dToday, "dd/MM/yyyy");
2327 }
2328 else if(sDefaultValue.compareTo("gv_ack") == 0)
2329 {
2330 sDefaultValue = bdAckMode.toString();
2331 }
2332 else if(sDefaultValue.compareTo("gv_hdr_det") == 0)
2333 {
2334 sDefaultValue = BigDecimal.ZERO.toString() ;
2335 }
2336 //HGhazal - add SWIFT TRX NO - EWBI160216 - 07/09/2016
2337 else if(sDefaultValue.compareTo("swift_trx_no") == 0)
2338 {
2339 sDefaultValue = lsSwiftTrxNo;
2340 }
2341 else
2342 {
2343 sDefaultValue = "-1";
2344 }
2345
2346 return sDefaultValue;
2347 }
2348
2349 public ArrayList<Map<String, String>> loadInwardFiles(String ackNackFilesFlag, String sLanguage)
2350 throws BaseException
2351 {
2352
2353 String sSwiftInwardPath = null;
2354 String[] saTransMsgArr;
2355
2356 if("0".equals(ackNackFilesFlag))
2357 {
2358 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_PATH_JAVA();
2359 if(sSwiftInwardPath == null || sSwiftInwardPath.isEmpty())
2360 {
2361 saTransMsgArr = commonLibBO.returnTranslMessage(66752, sLanguage);
2362 throw new BOException(saTransMsgArr[0]);
2363 }
2364 }
2365 else if("1".equals(ackNackFilesFlag))
2366 {
2367 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_ACK_PATH_JAVA();
2368 if(sSwiftInwardPath == null || sSwiftInwardPath.isEmpty())
2369 {
2370 saTransMsgArr = commonLibBO.returnTranslMessage(66758, sLanguage);
2371 throw new BOException(saTransMsgArr[0]);
2372 }
2373 }
2374 else if("2".equals(ackNackFilesFlag))
2375 {
2376 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_NACK_PATH_JAVA();
2377 if(sSwiftInwardPath == null || sSwiftInwardPath.isEmpty())
2378 {
2379 saTransMsgArr = commonLibBO.returnTranslMessage(66759, sLanguage);
2380 throw new BOException(saTransMsgArr[0]);
2381 }
2382 }
2383
2384 sSwiftInwardPath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(sSwiftInwardPath);
2385 File inwardFileMaker;
2386 boolean bRetun = false;
2387 inwardFileMaker = new File(sSwiftInwardPath);
2388 if(!inwardFileMaker.exists())
2389 {
2390 bRetun = inwardFileMaker.mkdir();
2391 if(!bRetun)
2392 {
2393 saTransMsgArr = commonLibBO.returnTranslMessage(66760, sLanguage);
2394 throw new BOException(saTransMsgArr[0]);
2395 }
2396 }
2397
2398 File inwardFolder = new File(sSwiftInwardPath);
2399 File[] fileList = FileUtil.returnFilesOnly(inwardFolder);
2400
2401 Map<String, String> mp;// olivia 31/07/2014 jenkin issues
2402 mp = new HashMap<String, String>();
2403 ArrayList<Map<String, String>> swiftInwardMessages = new ArrayList<Map<String, String>>();
2404 for(final File fileEntry : fileList)
2405 {
2406 mp.put("fileKey", fileEntry.getName());
2407 swiftInwardMessages.add(mp);
2408 mp = new HashMap<String, String>();
2409 }
2410
2411 return swiftInwardMessages;
2412
2413 }
2414
2415 public void createErrorFile(String code,String message,String destination){
2416 String archivePath;
2417 File archiveFileMaker;
2418 try{
2419
2420 archivePath = commonLibBO.returnSwiftCtrlRecValues().getARCHIVE_PATH_JAVA();
2421 if(! StringUtil.nullToEmpty(destination).isEmpty())
2422 archivePath = destination;
2423 archivePath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(archivePath);
2424 archivePath = archivePath.concat(File.separator).concat(System.currentTimeMillis() + ".err");
2425 File newSwftFile = new File(archivePath);
2426 FileOutputStream fos = new FileOutputStream(archivePath, true);
2427 fos.write(message.getBytes(FileUtil.DEFAULT_FILE_ENCODING));
2428 fos.flush();
2429 fos.close();
2430 }
2431
2432 catch(Exception e){
2433 log.error(e,"Exception in create error file");
2434 }
2435
2436 }
2437
2438 public void createErrorFile(String code,String message){
2439 String archivePath;
2440 File archiveFileMaker;
2441 try{
2442
2443 archivePath = commonLibBO.returnSwiftCtrlRecValues().getARCHIVE_PATH_JAVA();
2444 archivePath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(archivePath);
2445 archivePath = archivePath.concat(File.separator).concat(System.currentTimeMillis() + ".err");
2446 File newSwftFile = new File(archivePath);
2447 FileOutputStream fos = new FileOutputStream(archivePath, true);
2448 fos.write(message.getBytes(FileUtil.DEFAULT_FILE_ENCODING));
2449 fos.flush();
2450 fos.close();
2451 }
2452
2453 catch(Exception e){
2454 log.error(e,"Exception in create error file");
2455 }
2456
2457 }
2458
2459 public void moveFile(String fileName, String ackNackFlag, String sLanguage) throws BaseException
2460 {
2461 String sSwiftInwardPath = null, archivePath, renamePath;
2462 String[] saTransMsgArr;
2463 File inwardFileMaker, archiveFileMaker;
2464 boolean bRetun = false;
2465 if("0".equals(StringUtil.nullToEmpty(ackNackFlag)))
2466 {
2467 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_PATH_JAVA();
2468 }
2469 else if("1".equals(ackNackFlag))
2470 {
2471 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_ACK_PATH_JAVA();
2472 }
2473 else if("2".equals(ackNackFlag))
2474 {
2475 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_NACK_PATH_JAVA();
2476 }
2477 archivePath = commonLibBO.returnSwiftCtrlRecValues().getARCHIVE_PATH_JAVA();
2478
2479 sSwiftInwardPath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(sSwiftInwardPath);
2480
2481 archivePath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(archivePath);
2482
2483 archiveFileMaker = new File(archivePath);
2484 inwardFileMaker = new File(sSwiftInwardPath);
2485 if(!inwardFileMaker.exists())
2486 {
2487 bRetun = inwardFileMaker.mkdir();
2488 if(!bRetun)
2489 {
2490 saTransMsgArr = commonLibBO.returnTranslMessage(66760, sLanguage);
2491 throw new BOException(saTransMsgArr[0]);
2492 }
2493 }
2494
2495 if(!archiveFileMaker.exists())
2496 {
2497 bRetun = archiveFileMaker.mkdir();
2498 if(!bRetun)
2499 {
2500 saTransMsgArr = commonLibBO.returnTranslMessage(66762, sLanguage);
2501 throw new BOException(saTransMsgArr[0]);
2502 }
2503 }
2504
2505 renamePath = archivePath;
2506
2507 sSwiftInwardPath = sSwiftInwardPath.concat(File.separator).concat(fileName);
2508 // archivePath = archivePath + "/";
2509 File destDirectory = new File(archivePath.toString());
2510
2511 if(!destDirectory.exists())
2512 {
2513 bRetun = destDirectory.mkdir();
2514 if(!bRetun)
2515 {
2516 saTransMsgArr = commonLibBO.returnTranslMessage(66762, sLanguage);
2517 throw new BOException(saTransMsgArr[0]);
2518 }
2519 }
2520 archivePath = archivePath.concat(File.separator).concat(fileName);
2521
2522 destDirectory = new File(archivePath);
2523
2524 File deletedFile = new File(sSwiftInwardPath);
2525
2526 try
2527 {
2528 Files.move(deletedFile.toPath(), destDirectory.toPath(), StandardCopyOption.REPLACE_EXISTING);
2529 String timeStamp = DateUtil.format(commonLibBO.returnSystemDateWithTime(), "yyyyMMdd_HHmmss");
2530 renamePath = renamePath.concat(File.separator).concat(fileName.substring(0, fileName.indexOf('.'))).concat(
2531 timeStamp).concat(".txt");
2532 Boolean bVal = destDirectory.renameTo(new File(renamePath));
2533 if (!bVal)
2534 {
2535 saTransMsgArr = commonLibBO.returnTranslMessage(66771, sLanguage);
2536 throw new BOException(saTransMsgArr[0]);
2537 }
2538 }
2539 catch(IOException e)
2540 {
2541 log.error(e, "Exception in moveFile");
2542 throw new BOException(e.getMessage(), e);// olivia 31/07/2014 jenkin
2543 // issues
2544 }
2545 }
2546
2547 public int returnInwardSwiftLogGridCount(SwiftInwardSC swiftInwardSC) throws BaseException
2548 {
2549 return swiftInwardDAO.returnInwardSwiftLogGridCount(swiftInwardSC);
2550 }
2551
2552 public ArrayList<SWIFT_LOG_INVO> returnInwardSwiftLogGrid(SwiftInwardSC swiftInwardSC) throws BaseException
2553 {
2554 ArrayList<SWIFT_LOG_INVO> swiftLogINVO;
2555 swiftLogINVO = swiftInwardDAO.returnInwardSwiftLogGrid(swiftInwardSC);
2556 return swiftLogINVO;
2557 }
2558
2559 public synchronized int swenEngineProcessIn(String sLanguage, BigDecimal bdCompCode, BigDecimal bdBranchCode, String sUserId,
2560 BigDecimal bdBaseCurrency, Date dSystemDate) throws BaseException
2561 {
2562 // check if ack flag in the control record is 1 or 0
2563 int iAck = 1;
2564 if(BigDecimal.ONE.equals(commonLibBO.returnSwiftCtrlRecValues().getACK()))
2565 {
2566 iAck = 3;
2567 }
2568 /*BMOUPI180305 Mohamad Hojeij 27/05/2018 chck if there is any thread active to stop its self*/
2569 HashMap<String, Object> mqRespscHash = new HashMap<>();
2570 try{
2571
2572 String swiftUrl = PathPropertyUtil.returnPathPropertyFromFile("PathRemoting.properties","swift.serviceURL") ;
2573 SWIFT_CONTROLVO swiftControlVo = new SWIFT_CONTROLVO();
2574 swiftControlVo = swiftInwardDAO.readMQSettings();
2575 if(NumberUtil.nullToZero(swiftControlVo.getQUEUE_INT_YN()).equals(BigDecimal.ONE)){
2576 MQConnectorBO mqConnectorBO = (MQConnectorBO) RmiServiceCaller.returnRmiInterface(swiftUrl, MQConnectorBO.class,"mqConnectorBOService");
2577 HashMap<String, Object> swiftControlVoHash = new HashMap<>();
2578 swiftControlVoHash = PathPropertyUtil.convertToMap(swiftControlVo);
2579 mqRespscHash = mqConnectorBO.getMQMessages(swiftControlVoHash);
2580 ArrayList<Object> a = new ArrayList<>();
2581 a= (ArrayList<Object>) mqRespscHash.get("msgsArray");
2582 for(int j = 0 ; j < a.size();j++){
2583 if(ConstantsCommon.timerInExec == null) break;
2584 ArrayList<SwiftInwardCO> swiftInwardCOList;
2585 swiftInwardCOList = readMqFile(((HashMap<String, String>)(a.get(j))).get("message"), sLanguage, bdCompCode);
2586 String sMsgCode = null;
2587 if(swiftInwardCOList != null && !swiftInwardCOList.isEmpty())
2588 {
2589 sMsgCode = swiftInwardCOList.get(0).getCf_mt();
2590 }
2591 // Check if Inward Recon
2592
2593 // get the hashmap of the message
2594 ArrayList<Map<String, Object>> aListMapSqlRep = convertObjectListToMapList(swiftInwardCOList);
2595 Long MsgGrp = 1L;
2596 int lastLine = 1;
2597 BigDecimal StartingLine = BigDecimal.ONE;
2598 ArrayList<SwiftInwardCO> swiftInwardCOList2 = new ArrayList<SwiftInwardCO>();
2599 Boolean firstMsg = false;
2600
2601 ArrayList<ArrayList<SwiftInwardCO>> swiftInwardCOList1 = new ArrayList<ArrayList<SwiftInwardCO>>();;
2602
2603 for(int i = 0;i< swiftInwardCOList.size(); i++)
2604 {
2605 if(swiftInwardCOList.get(i).getCf_tag().equals("H"))
2606 {
2607 if(firstMsg==true)
2608 {
2609 swiftInwardCOList1.add(swiftInwardCOList2);
2610 swiftInwardCOList2 = new ArrayList<SwiftInwardCO>();
2611 }
2612 swiftInwardCOList2.add(swiftInwardCOList.get(i));
2613 }
2614 else
2615 {
2616 firstMsg=true;
2617 if(!swiftInwardCOList.get(i).getCf_tag().equals("N"))
2618 {
2619 swiftInwardCOList2.add(swiftInwardCOList.get(i));
2620 }
2621 }
2622 }
2623 swiftInwardCOList1.add(swiftInwardCOList2);
2624
2625 for(int i = 0; i < swiftInwardCOList1.size(); i++)
2626 {
2627 // GETTING START LINE FOR EACH MESSAGE
2628 for(SwiftInwardCO swiftInwardCoElement : swiftInwardCOList1.get(i))
2629 {
2630 if(swiftInwardCoElement.getCf_tag().equals("H"))//efarah 06-03-2017
2631 {
2632 if(i==0)
2633 {
2634 MsgGrp = 1L;
2635 lastLine =swiftInwardCOList1.get(i).size();
2636 swiftInwardCOList.get(i).setCf_first_line(1L);
2637 swiftInwardCOList.get(i).setCf_last_line(new Long(lastLine));
2638 }
2639 else
2640 {
2641 MsgGrp = new Long(lastLine);
2642 if (swiftInwardCoElement.getCompute_4() == 2) MsgGrp = MsgGrp + 1; //#619070 Mohamad Hojeij - 12/05/2018
2643 swiftInwardCOList.get(i).setCf_first_line(new Long(lastLine) +1);
2644 swiftInwardCOList.get(i).setCf_last_line(new Long(lastLine) + new Long(swiftInwardCOList1.get(i).size()));
2645 lastLine =swiftInwardCOList1.get(i).size();
2646 }
2647 StartingLine = new BigDecimal(swiftInwardCoElement.getCompute_1());
2648 sMsgCode = swiftInwardCoElement.getCf_mt();
2649 break;
2650 }
2651 }
2652
2653 // BUILDING THE MESSAGE TO BE SAVED IN SWIFT HISTORY
2654 StringBuilder sbInwardMsg = new StringBuilder();
2655 String sTag, sMessageLine;
2656 for(int k = StartingLine.intValue() - 1; k < swiftInwardCOList.size(); k++)
2657 {
2658 sTag = swiftInwardCOList.get(k).getCf_tag();
2659 sMessageLine = swiftInwardCOList.get(k).getMessage_line();
2660
2661 if(! StringUtil.nullToEmpty(sMessageLine).isEmpty())
2662 {
2663 sbInwardMsg.append(sMessageLine);
2664 sbInwardMsg.append("\r\n");
2665 }
2666
2667 if("T".equals(sTag))
2668 {
2669 break;
2670
2671 }
2672
2673 }
2674
2675 try
2676 {
2677 swiftCO = parseMessage(swiftInwardCOList, sMsgCode, MsgGrp, bdCompCode, bdBranchCode, sUserId,
2678 commonLibBO.returnSystemDateWithTime(), BigDecimal.ZERO, sbInwardMsg.toString(), "S", "U",
2679 0L, null, null, sLanguage, aListMapSqlRep);
2680 if(swiftCO.getReturnVar() == -1)
2681 createErrorFile(((HashMap<String, String>)(a.get(j))).get("id"), ((HashMap<String, String>)(a.get(j))).get("message"));
2682 //moveFile(sFileName2, bdFolderCount.toString(), sLanguage);
2683 }
2684 catch(BOException e)
2685 {
2686 log.error(e, "Exception in swenengineprocessin");
2687 createErrorFile(((HashMap<String, String>)(a.get(j))).get("id"), ((HashMap<String, String>)(a.get(j))).get("message"));
2688 throw new BOException(e);
2689 }
2690
2691 }
2692 }
2693 }
2694 }
2695 catch(Exception e){
2696 log.error(e, "Exception in swenengineprocessin");
2697 e.printStackTrace();
2698 }
2699
2700 for(int folderCount = 0; folderCount < iAck; folderCount++)
2701 {
2702 String sSwiftInwardPath = null;
2703 String[] saTransMsgArr;
2704 if(ConstantsCommon.timerInExec == null) break;
2705 switch (folderCount)
2706 {
2707 case 0:
2708 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_PATH_JAVA();
2709 if(sSwiftInwardPath == null || sSwiftInwardPath.isEmpty())
2710 {
2711 saTransMsgArr = commonLibBO.returnTranslMessage(66752, sLanguage);
2712 throw new BOException(saTransMsgArr[0]);
2713 }
2714 break;
2715 case 1:
2716 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_ACK_PATH_JAVA();
2717 if(sSwiftInwardPath == null || sSwiftInwardPath.isEmpty())
2718 {
2719 saTransMsgArr = commonLibBO.returnTranslMessage(66758, sLanguage);
2720 throw new BOException(saTransMsgArr[0]);
2721 }
2722 break;
2723 case 2:
2724 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_NACK_PATH_JAVA();
2725 if(sSwiftInwardPath == null || sSwiftInwardPath.isEmpty())
2726 {
2727 saTransMsgArr = commonLibBO.returnTranslMessage(66759, sLanguage);
2728 throw new BOException(saTransMsgArr[0]);
2729 }
2730 break;
2731 default:
2732 break;
2733 }
2734 // Concat the file directory with repository directory
2735 String sRepoSwift = FileUtil.getFileURLByName("repository");
2736 sSwiftInwardPath = sRepoSwift.concat(sSwiftInwardPath);
2737
2738 // parse message logic must be applied on how much each folder
2739 // contain MSGs
2740 File inwardFolder = new File(sSwiftInwardPath);
2741 ArrayList<SwiftInwardCO> swiftInwardCOList;
2742
2743 for(File file : inwardFolder.listFiles())
2744 {
2745 if(ConstantsCommon.timerInExec == null) break;
2746 if(file.isDirectory()
2747 || !"txt"
2748 .equals(file.getName().substring(file.getName().length() - 3, file.getName().length()).toLowerCase()))
2749 {
2750 continue;
2751 }
2752
2753 String sFileName = file.getName();
2754 BigDecimal bdFolderCount = new BigDecimal(folderCount), bdAckMode = BigDecimal.ZERO;
2755 String sFileName2 = sFileName.replaceFirst(Pattern.quote("." +
2756 "txt") + "$", Matcher.quoteReplacement("." + "prc"));
2757
2758 if(! file.renameTo(new File(sSwiftInwardPath + sFileName2))){
2759 continue;
2760 }
2761 swiftInwardCOList = readTextFile(sFileName2, sLanguage, bdCompCode, bdFolderCount.toString());
2762 String sMsgCode = null;
2763 if(swiftInwardCOList != null && !swiftInwardCOList.isEmpty())
2764 {
2765 sMsgCode = swiftInwardCOList.get(0).getCf_mt();
2766 }
2767 // Check if Inward Recon
2768 if("MT 950".equals(sMsgCode) || "MT 940".equals(sMsgCode) && folderCount == 0)
2769 {
2770 String sFileContent = "";
2771 try
2772 {
2773 sFileContent = FileUtil.readFile(sSwiftInwardPath.concat(File.separator).concat(sFileName));
2774 }
2775 catch(Exception e)
2776 {
2777 log.error(e, "Exception in swenengineprocessin");
2778 throw new BOException(e);
2779 }
2780 try
2781 {
2782 swiftReconBO.selectFile(sFileContent, sLanguage, bdCompCode, bdBaseCurrency, sUserId,
2783 dSystemDate, 1);
2784 moveFile(sFileName2, bdFolderCount.toString(), sLanguage);
2785 continue;
2786 }
2787 catch(BOException e)
2788 {
2789 log.error(e, "Exception in swenengineprocessin");
2790 moveFile(sFileName2, bdFolderCount.toString(), sLanguage);
2791 throw new BOException(e);
2792 }
2793 }
2794 // get the hashmap of the message
2795 ArrayList<Map<String, Object>> aListMapSqlRep = convertObjectListToMapList(swiftInwardCOList);
2796 Long MsgGrp = 1L;
2797 int lastLine = 1;
2798 BigDecimal StartingLine = BigDecimal.ONE;
2799 ArrayList<SwiftInwardCO> swiftInwardCOList2 = new ArrayList<SwiftInwardCO>();
2800 Boolean firstMsg = false;
2801
2802 ArrayList<ArrayList<SwiftInwardCO>> swiftInwardCOList1 = new ArrayList<ArrayList<SwiftInwardCO>>();;
2803
2804 for(int i = 0;i< swiftInwardCOList.size(); i++)
2805 {
2806 if(swiftInwardCOList.get(i).getCf_tag().equals("H"))
2807 {
2808 if(firstMsg==true)
2809 {
2810 swiftInwardCOList1.add(swiftInwardCOList2);
2811 swiftInwardCOList2 = new ArrayList<SwiftInwardCO>();
2812 }
2813 swiftInwardCOList2.add(swiftInwardCOList.get(i));
2814 }
2815 else
2816 {
2817 firstMsg=true;
2818 if(!swiftInwardCOList.get(i).getCf_tag().equals("N"))
2819 {
2820 swiftInwardCOList2.add(swiftInwardCOList.get(i));
2821 }
2822 }
2823 }
2824 swiftInwardCOList1.add(swiftInwardCOList2);
2825
2826 for(int i = 0; i < swiftInwardCOList1.size(); i++)
2827 {
2828 // GETTING START LINE FOR EACH MESSAGE
2829 for(SwiftInwardCO swiftInwardCoElement : swiftInwardCOList1.get(i))
2830 {
2831 if(swiftInwardCoElement.getCf_tag().equals("H"))//efarah 06-03-2017
2832 {
2833 if(i==0)
2834 {
2835 MsgGrp = 1L;
2836 lastLine =swiftInwardCOList1.get(i).size();
2837 swiftInwardCOList.get(i).setCf_first_line(1L);
2838 swiftInwardCOList.get(i).setCf_last_line(new Long(lastLine));
2839 }
2840 else
2841 {
2842 MsgGrp = new Long(lastLine);
2843 if (swiftInwardCoElement.getCompute_4() == 2) MsgGrp = MsgGrp + 1; //#619070 Mohamad Hojeij - 12/05/2018
2844 swiftInwardCOList.get(i).setCf_first_line(new Long(lastLine) +1);
2845 swiftInwardCOList.get(i).setCf_last_line(new Long(lastLine) + new Long(swiftInwardCOList1.get(i).size()));
2846 lastLine =swiftInwardCOList1.get(i).size();
2847 }
2848 StartingLine = new BigDecimal(swiftInwardCoElement.getCompute_1());
2849 sMsgCode = swiftInwardCoElement.getCf_mt();
2850 break;
2851 }
2852 }
2853
2854 // BUILDING THE MESSAGE TO BE SAVED IN SWIFT HISTORY
2855 StringBuilder sbInwardMsg = new StringBuilder();
2856 String sTag, sMessageLine;
2857 for(int k = StartingLine.intValue() - 1; k < swiftInwardCOList.size(); k++)
2858 {
2859 sTag = swiftInwardCOList.get(k).getCf_tag();
2860 sMessageLine = swiftInwardCOList.get(k).getMessage_line();
2861
2862 if(! StringUtil.nullToEmpty(sMessageLine).isEmpty())
2863 {
2864 sbInwardMsg.append(sMessageLine);
2865 sbInwardMsg.append("\r\n");
2866 }
2867
2868 if("T".equals(sTag))
2869 {
2870 break;
2871
2872 }
2873
2874 }
2875
2876 try
2877 {
2878 swiftCO = parseMessage(swiftInwardCOList, sMsgCode, MsgGrp, bdCompCode, bdBranchCode, sUserId,
2879 commonLibBO.returnSystemDateWithTime(), bdAckMode, sbInwardMsg.toString(), "S", "U",
2880 0L, null, null, sLanguage, aListMapSqlRep);
2881
2882
2883 moveFile(sFileName2, bdFolderCount.toString(), sLanguage);
2884 }
2885 catch(BOException e)
2886 {
2887 log.error(e, "Exception in swenengineprocessin");
2888 moveFile(sFileName2, bdFolderCount.toString(), sLanguage);
2889 log.error(e, "");
2890 throw new BOException(e);
2891 }
2892 catch(Exception e)
2893 {
2894 log.error(e, "Exception in swenengineprocessin");
2895
2896 moveFile(sFileName2, bdFolderCount.toString(), sLanguage);
2897 log.error(e, "");
2898 throw new BOException(e);
2899 }
2900
2901 }
2902 }
2903 }
2904 return 1;
2905 }
2906
2907 private ArrayList<Map<String, Object>> convertObjectListToMapList(ArrayList<SwiftInwardCO> swiftInwardCOList)
2908 throws BaseException
2909 {
2910 ArrayList<Map<String, Object>> inwardMapList = new ArrayList<Map<String, Object>>();
2911 Map<String, Object> hm;
2912 for(SwiftInwardCO swiftInwardCO : swiftInwardCOList)
2913 {
2914 hm = new HashMap<String, Object>();
2915 hm.put("compute_1", swiftInwardCO.getCompute_1());
2916 hm.put("cf_msg_grp", StringUtil.nullToEmpty(swiftInwardCO.getCf_msg_grp()));
2917 hm.put("cf_msg_line_count", StringUtil.nullToEmpty(swiftInwardCO.getCf_msg_line_count()));
2918 hm.put("cf_mt", swiftInwardCO.getCf_mt());
2919 hm.put("cf_tag", swiftInwardCO.getCf_tag());
2920 hm.put("compute_3", swiftInwardCO.getCompute_3());
2921 hm.put("cf_first_line", StringUtil.nullToEmpty(swiftInwardCO.getCf_first_line()));
2922 hm.put("cf_header_det", swiftInwardCO.getCf_header_det());
2923 hm.put("cf_last_line", StringUtil.nullToEmpty(swiftInwardCO.getCf_last_line()));
2924 hm.put("cf_line_value", swiftInwardCO.getCf_line_value());
2925 hm.put("cf_nbr_msgs", swiftInwardCO.getCf_nbr_msgs());
2926 hm.put("cf_nbr_repetition", StringUtil.nullToEmpty(swiftInwardCO.getCf_nbr_repetition()));
2927 hm.put("cf_value", swiftInwardCO.getCf_value());
2928 hm.put("cfd_tag", swiftInwardCO.getCfd_tag());
2929 hm.put("compute_2", swiftInwardCO.getCompute_2());
2930 hm.put("compute_3", swiftInwardCO.getCompute_3());
2931 hm.put("compute_4", swiftInwardCO.getCompute_4());
2932 hm.put("compute_5", swiftInwardCO.getCompute_5());
2933 hm.put("message_line", swiftInwardCO.getMessage_line());
2934 inwardMapList.add(hm);
2935 }
2936 return inwardMapList;
2937 }
2938
2939 public void updateEngineServiceStatusIn(BigDecimal bdCompCode, String serviceName, int serviceStatus,
2940 String sLanguage, SwiftInwardSC swiftInwardSC) throws BaseException
2941 {
2942 String[] saTransMsgArr;
2943 String logMsg;
2944
2945 if(serviceStatus == 1)
2946 {
2947 swiftInwardSC.setServiceStatus("ON");
2948 saTransMsgArr = commonLibBO.returnTranslMessage(66674, sLanguage);
2949 logMsg = saTransMsgArr[0]; // Swift Engine Started
2950 }
2951 else
2952 {
2953 swiftInwardSC.setServiceStatus("OFF");
2954 saTransMsgArr = commonLibBO.returnTranslMessage(66675, sLanguage);
2955 logMsg = saTransMsgArr[0]; // Swift Engine Stopped
2956 }
2957
2958 swiftInwardSC.setServiceName(serviceName);
2959
2960 swiftInwardDAO.updateEngineServiceStatusIn(swiftInwardSC);
2961 SwiftInwardCO swiftInwardCO = new SwiftInwardCO();
2962 writeLogFile(bdCompCode, 1, logMsg, sLanguage, swiftInwardCO);
2963
2964 }
2965
2966 public void resetLog() throws BaseException
2967 {
2968 swiftInwardDAO.deleteSwiftLogInward();
2969 }
2970
2971 public BigDecimal returnSwiftTrxNo() throws BaseException
2972 {
2973 //Get sequence/identity
2974 BigDecimal ldSwiftTrxNo;
2975 DBSequenceSC dbSeqSC = new DBSequenceSC();
2976 dbSeqSC.setSequenceName("SWIFT_TRX_NO_SEQ");
2977 dbSeqSC.setTableName("SWIFT_TRXNO_IDENTITY");
2978
2979 ldSwiftTrxNo = commonLibBO.returnTableSequence(dbSeqSC);
2980
2981 return ldSwiftTrxNo;
2982 }
2983
2984 //efarah 07/04/2017 EWBI170270
2985 public void stopThread() throws BaseException {
2986
2987 getLockClusterdThread().shutdownNow();
2988
2989 synchronized(lock){
2990 /*SWFT_SCHED_MANAGER_INVO managVo = new SWFT_SCHED_MANAGER_INVO();
2991 managVo.setTHREAD_ID(0);
2992 genericDAO.delete(managVo);*/
2993 if(ConstantsCommon.timerInExec != null){
2994 ConstantsCommon.timerInExec.cancel();
2995 ConstantsCommon.timerInExec = null;
2996 }
2997 }
2998 }
2999
3000 private void updateTimerOperation(Long iRefreshRate){
3001 try{
3002 CommonLibBO commonLibBO = (CommonLibBO) ApplicationContextProvider
3003 .getApplicationContext().getBean("commonLibBO");
3004 commonLibBO.clusterOperationControlTimeUpdate("SwenProcessIn", iRefreshRate);
3005 }
3006 catch(Exception e){
3007 log.error(e, "on update Timer operation");
3008 }
3009
3010 }
3011
3012 private void callSchedTimeCluster(){
3013
3014
3015 String clusterTimeSpan = "0";
3016 long expiremilis;
3017 try
3018 {
3019 clusterTimeSpan = PathPropertyUtil.getPathRemotingProp("PathServices", "global.cluster.timespan");
3020 expiremilis = Long.parseLong(clusterTimeSpan, 10);
3021
3022
3023
3024 setLockClusterdThread(Executors.newScheduledThreadPool(1));
3025 getLockClusterdThread().scheduleAtFixedRate(()->{updateTimerOperation(expiremilis - 5000);},0, expiremilis - 5000, TimeUnit.MILLISECONDS);
3026 }
3027 catch(Exception e)
3028 {
3029 Log.getInstance().error(e, e.toString());
3030 }
3031
3032 }
3033
3034 //efarah 07/04/2017 EWBI170270
3035 public void runThread(Long iRefreshRate, String language,
3036 BigDecimal companyCode, BigDecimal branchCode, String userName,
3037 SwiftInwardCO swiftInwardCO, BigDecimal bdBaseCurrency,Date dSysDate) throws BaseException {
3038
3039 if(ConstantsCommon.GLOBAL_CLUSTER_ENABLE)
3040 callSchedTimeCluster();
3041
3042 if(ConstantsCommon.timerInExec == null)
3043 {
3044 synchronized(lock)
3045 {
3046 updateEngineServiceStatusIn(companyCode,"SWIFT_IN", 1, language, new SwiftInwardSC()) ;
3047 ConstantsCommon.timerInExec = new Timer();
3048 ConstantsCommon.timerInExec.schedule(
3049 new SwenINTaskRunner(language, companyCode, branchCode, userName,
3050 swiftInwardCO, bdBaseCurrency,dSysDate/*,threadId*/),
3051 iRefreshRate, iRefreshRate);/*Mohamad Hojeij 27/05/2018 BMOUPI180305 add the thread id*/
3052 }
3053 }
3054 /*else
3055 {
3056 synchronized(lock)
3057 {
3058 ConstantsCommon.timerInExec.cancel();
3059 ConstantsCommon.timerInExec = new Timer();
3060 }
3061 } */
3062 //long threadId = System.currentTimeMillis();/*Mohamad Hojeij 27/05/2018 BMOUPI180305*/
3063
3064 }
3065
3066 //efarah 07/04/2017 EWBI170270
3067 public class SwenINTaskRunner extends TimerTask
3068 {
3069 String language;
3070 BigDecimal companyCode;
3071 BigDecimal branchCode;
3072 String userName;
3073 SwiftInwardCO swiftInwardCO;
3074 BigDecimal bdBaseCurrency;
3075 Date dSysDate;
3076 //long threadId;
3077 /*commented by Mohamad Hojeij 27/05/2018 BMOUPI180305*/
3078 /* public SwenINTaskRunner(String language, BigDecimal companyCode,BigDecimal branchCode, String userName, SwiftInwardCO swiftInwardCO, BigDecimal bdBaseCurrency,Date dSysDate)
3079 {
3080
3081 this.language = language;
3082 this.companyCode = companyCode;
3083 this.branchCode = branchCode;
3084 this.userName = userName;
3085 this.swiftInwardCO = swiftInwardCO;
3086 this.bdBaseCurrency = bdBaseCurrency;
3087 this.dSysDate = dSysDate;
3088 }*/
3089
3090 public SwenINTaskRunner(String language, BigDecimal companyCode,BigDecimal branchCode, String userName, SwiftInwardCO swiftInwardCO, BigDecimal bdBaseCurrency,Date dSysDate/*,long threadId*/)
3091 {
3092
3093 this.language = language;
3094 this.companyCode = companyCode;
3095 this.branchCode = branchCode;
3096 this.userName = userName;
3097 this.swiftInwardCO = swiftInwardCO;
3098 this.bdBaseCurrency = bdBaseCurrency;
3099 this.dSysDate = dSysDate;
3100 // this.threadId = threadId;/*Mohamad Hojeij 27/05/2018 BMOUPI180305*/
3101 }
3102
3103
3104
3105
3106 public void run()
3107 {
3108 try {
3109 /*Mohamad Hojeij 27/05/2018 BMOUPI180305*/
3110 /*SWFT_SCHED_MANAGER_INVO managVo = new SWFT_SCHED_MANAGER_INVO();
3111 int iEngineStatus = returnServiceStatus("SWIFT_IN", language);
3112
3113 if(iEngineStatus == 0){
3114 this.cancel();
3115
3116 managVo = new SWFT_SCHED_MANAGER_INVO();
3117 managVo.setTHREAD_ID(threadId);
3118 genericDAO.delete(managVo);
3119 return;
3120 }
3121
3122
3123 managVo.setTHREAD_ID(threadId);
3124 BigDecimal activeThreadsCount = swiftInwardDAO.returnCountActiveThreads(managVo);
3125 BigDecimal isActive = swiftInwardDAO.returnIsActiveThreads(managVo);
3126
3127 if(activeThreadsCount.equals(BigDecimal.ONE) && isActive.equals(BigDecimal.ZERO) ){
3128 this.cancel();
3129 return;
3130 }
3131
3132
3133 if(activeThreadsCount.equals(BigDecimal.ZERO) && isActive.equals(BigDecimal.ZERO)){
3134
3135
3136 Date thread_date = commonLibBO.returnSystemDateWithTime();
3137 managVo = new SWFT_SCHED_MANAGER_INVO();
3138 managVo.setTHREAD_ID(threadId);
3139 managVo.setTHREAD_DATE(thread_date);
3140 managVo.setTHREAD_STATUS("A");
3141 genericDAO.insert(managVo);
3142 }
3143
3144 if((activeThreadsCount.compareTo(BigDecimal.ONE)== 1 || activeThreadsCount.equals(BigDecimal.ONE)) && isActive.equals(BigDecimal.ONE)){
3145 long threadwithMindate = swiftInwardDAO.returnThreadWithMinDate(managVo);
3146 if(threadwithMindate != threadId){
3147 this.cancel();
3148 managVo = new SWFT_SCHED_MANAGER_INVO();
3149 managVo.setTHREAD_ID(threadId);
3150 genericDAO.delete(managVo);
3151 return;
3152 }
3153 }*/
3154
3155
3156 /*managVo = new SWFT_SCHED_MANAGER_INVO();
3157 managVo.setTHREAD_ID(threadId);
3158 activeThreadsCount = swiftInwardDAO.returnIsActiveThreads(managVo);
3159 if(activeThreadsCount.equals(BigDecimal.ZERO)){
3160 Date thread_date = commonLibBO.returnSystemDateWithTime();
3161 managVo = new SWFT_SCHED_MANAGER_INVO();
3162 managVo.setTHREAD_ID(threadId);
3163 managVo.setTHREAD_DATE(thread_date);
3164 managVo.setTHREAD_STATUS("A");
3165 genericDAO.insert(managVo);
3166 }
3167 else if(activeThreadsCount.equals(BigDecimal.ONE)){
3168 managVo = new SWFT_SCHED_MANAGER_INVO();
3169 managVo.setTHREAD_ID(threadId);
3170 activeThreadsCount = swiftInwardDAO.returnIsActiveThreads(managVo);
3171
3172 }
3173
3174 if(activeThreadsCount.compareTo(BigDecimal.ONE) == 1){ //activeThreadsCount > 1 --> kill all the threads and leave the one with the old date
3175
3176
3177
3178 }*/
3179
3180
3181
3182
3183 CommonLibBO commonLibBO = (CommonLibBO) ApplicationContextProvider.getApplicationContext().getBean("commonLibBO");
3184
3185 if(commonLibBO.clusterOperationControl ("SwenProcessIn", false))
3186 {
3187 //SwiftInwardBO swiftInwardBO = (SwiftInwardBO) ApplicationContextProvider.getApplicationContext().getBean("swiftInwardBO");
3188
3189 try
3190 {
3191 swenEngineProcessIn(language,companyCode,branchCode,userName, bdBaseCurrency,dSysDate);
3192 }
3193 catch(Exception e)
3194 {
3195 // // Cancel the Timer in order not to stop the task execution
3196 // this.cancel();
3197 log.error(e, "Exception in runscheduler");
3198 SwiftInwardCO swiftInwardCO = new SwiftInwardCO();
3199 try
3200 {
3201 writeLogFile(companyCode, 0, e.getMessage(), language, swiftInwardCO);
3202 }
3203 catch(Exception e1)
3204 {
3205 log.error(e1, "Exception in swenengineprocessin");
3206 e1.printStackTrace();
3207 }
3208 }
3209 }
3210 } catch (BeansException e) {
3211 // TODO Auto-generated catch block
3212 log.error(e, "Exception in runscheduler");
3213 e.printStackTrace();
3214 } catch (BaseException e) {
3215 // TODO Auto-generated catch block
3216 log.error(e, "Exception in runscheduler");
3217 e.printStackTrace();
3218 }
3219
3220 }
3221 }
3222
3223 //efarah 07/04/2017 EWBI170270
3224 public Integer updateRefreshRate(BigDecimal bdRefRate,String serviceName) throws BaseException
3225 {
3226 if(NumberUtil.isNumberNegative(bdRefRate) || bdRefRate.compareTo(new BigDecimal(999999999)) == 1)
3227 {
3228 return -1;
3229 }
3230 EAS_SERVICESVO easServicesVO = new EAS_SERVICESVO();
3231 easServicesVO.setREFRESH_RATE(bdRefRate);
3232 easServicesVO.setSERVICE_NAME(serviceName);
3233
3234 try
3235 {
3236 genericDAO.update(easServicesVO);
3237 return 1;
3238 }
3239 catch(DAOException e)
3240 {
3241 log.error(e, "Exception in updaterefreshrate");
3242 return -1;
3243 }
3244 }
3245
3246 public KeyStore loadKeyStore (String keyStoreFileName, String keyStorePassword) throws Exception
3247 {
3248 KeyStore keystore = KeyStore.getInstance("JKS");
3249 FileInputStream inputStream = new FileInputStream(keyStoreFileName);
3250 keystore.load(inputStream, keyStorePassword.toCharArray());
3251 return keystore;
3252 }
3253
3254 public SwiftSignatureSC verifySignatureMessage(SwiftSignatureSC swiftSignatureSC) throws Exception {
3255 // TODO Auto-generated method stub
3256 try{
3257 KeyStore keyStore = loadKeyStore(swiftSignatureSC.getKeyStoreFileName(),swiftSignatureSC.getKeyStorePassword());
3258 Signature signature = Signature.getInstance("SHA256withRSA");
3259 signature.initVerify(keyStore.getCertificate(swiftSignatureSC.getKeyAlias()).getPublicKey());
3260 signature.update(swiftSignatureSC.getContent().getBytes());
3261 boolean s = signature.verify(Base64.decode(swiftSignatureSC.getDigitalSignature().getBytes()));
3262 if(s)
3263 swiftSignatureSC.setSigned("true");
3264 else
3265 swiftSignatureSC.setSigned("false");
3266 swiftSignatureSC.setOlErrorCode(0);
3267 swiftSignatureSC.setOsErrorDesc("");
3268 return swiftSignatureSC;
3269
3270 }
3271 catch(Exception e){
3272 swiftSignatureSC.setSigned("false");
3273 swiftSignatureSC.setOlErrorCode(-1);
3274 swiftSignatureSC.setOsErrorDesc(e.toString());
3275 log.error(e, "Exception in verifySignatureMessage");
3276 return swiftSignatureSC;
3277 }
3278 }
3279 //LBedrane - BMO180040 - TP#690676 - 12/07/2018
3280 public Integer returnValueOfEnableQueueYn() throws BaseException {
3281
3282 return swiftInwardDAO.returnValueOfEnableQueueYn();
3283 }
3284
3285 //LBedrane - BMO180040 - TP#690676 - 12/07/2018 <Start>
3286 //used to fill the MQ grid at the level of the inwardprocess screen
3287 public HashMap<String, Object> fillInwardQueueGrid() throws BaseException {
3288
3289 HashMap<String, Object> mqRespscHash = new HashMap<>();
3290 try{
3291
3292 String swiftUrl = PathPropertyUtil.returnPathPropertyFromFile("PathRemoting.properties","swift.serviceURL") ;
3293 SWIFT_CONTROLVO swiftControlVo = new SWIFT_CONTROLVO();
3294 swiftControlVo = swiftInwardDAO.readMQSettings();
3295 MQConnectorBO mqConnectorBO = (MQConnectorBO) RmiServiceCaller.returnRmiInterface(swiftUrl, MQConnectorBO.class,"mqConnectorBOService");
3296 HashMap<String, Object> swiftControlVoHash = new HashMap<>();
3297 swiftControlVoHash = PathPropertyUtil.convertToMap(swiftControlVo);
3298 mqRespscHash = mqConnectorBO.getMQMessages(swiftControlVoHash);
3299 if(! mqRespscHash.get("ol_error_code").equals("0")){
3300 throw new BOException((String)mqRespscHash.get("os_error_desc"));
3301 }
3302 }
3303 catch(Exception e){
3304 log.error(e, "Exception in fillInwardQueueGrid");
3305 throw new BOException(e.toString());
3306 }
3307
3308 return mqRespscHash;
3309 }
3310 //LBedrane - BMO180040 - TP#690676 - 12/07/2018 <ENd>
3311
3312 @Override
3313 public void deleteThreadsInSched(SWFT_SCHED_MANAGER_INVO mangVO) throws BaseException {
3314 // TODO Auto-generated method stub
3315 genericDAO.delete(mangVO);
3316 }
3317
3318
3319 private byte[] encode(byte[] hexkey, byte[] hexvalue) throws NoSuchAlgorithmException, InvalidKeyException {
3320 Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
3321 SecretKeySpec secret_key = new SecretKeySpec(hexkey, "HmacSHA256");
3322 sha256_HMAC.init(secret_key);
3323
3324 return sha256_HMAC.doFinal(hexvalue);
3325
3326 }
3327 private String useCrLf(String str){
3328 str = str.replace("\r\n","\n");
3329 str = str.replace("\r","\n");
3330 str = str.replace("\n","\r\n");
3331 return str;
3332 }
3333
3334 public byte[] stringToHexByte(String base) throws UnsupportedEncodingException{
3335 return DatatypeConverter.parseHexBinary(stringToHex(base).toUpperCase());
3336 }
3337 public String stringToHex(String base) throws UnsupportedEncodingException{
3338 return String.format("%040x",new BigInteger(1,base.getBytes(StandardCharsets.US_ASCII)));
3339 }
3340
3341
3342
3343 public void moveFile(String fileName, String ackNackFlag, String sLanguage, String destination) throws BaseException
3344
3345 {
3346
3347 String sSwiftInwardPath = null, archivePath, renamePath;
3348
3349 String[] saTransMsgArr;
3350 File inwardFileMaker, archiveFileMaker;
3351 boolean bRetun = false;
3352 if ("0".equals(StringUtil.nullToEmpty(ackNackFlag))) {
3353 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_PATH_JAVA();
3354 } else if ("1".equals(ackNackFlag)) {
3355 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_ACK_PATH_JAVA();
3356 } else if ("2".equals(ackNackFlag)) {
3357 sSwiftInwardPath = commonLibBO.returnSwiftCtrlRecValues().getINWARD_NACK_PATH_JAVA();
3358 }
3359 archivePath = commonLibBO.returnSwiftCtrlRecValues().getARCHIVE_PATH_JAVA();
3360 ;// destination;
3361
3362 if (!StringUtil.nullToEmpty(destination).isEmpty()) {
3363 archivePath = destination;
3364 }
3365
3366 sSwiftInwardPath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(sSwiftInwardPath);
3367
3368 archivePath = FileUtil.getFileURLByName("repository").concat(File.separator).concat(archivePath);
3369
3370 archiveFileMaker = new File(archivePath);
3371 inwardFileMaker = new File(sSwiftInwardPath);
3372 if (!inwardFileMaker.exists()) {
3373 bRetun = inwardFileMaker.mkdir();
3374 if (!bRetun) {
3375 saTransMsgArr = commonLibBO.returnTranslMessage(66760, sLanguage);
3376 throw new BOException(saTransMsgArr[0]);
3377 }
3378 }
3379
3380 if (!archiveFileMaker.exists()) {
3381 bRetun = archiveFileMaker.mkdir();
3382 if (!bRetun) {
3383 saTransMsgArr = commonLibBO.returnTranslMessage(66762, sLanguage);
3384 throw new BOException(saTransMsgArr[0]);
3385 }
3386 }
3387
3388 renamePath = archivePath;
3389
3390 sSwiftInwardPath = sSwiftInwardPath.concat(File.separator).concat(fileName);
3391 // archivePath = archivePath + "/";
3392 File destDirectory = new File(archivePath.toString());
3393
3394 if (!destDirectory.exists()) {
3395 bRetun = destDirectory.mkdir();
3396 if (!bRetun) {
3397 saTransMsgArr = commonLibBO.returnTranslMessage(66762, sLanguage);
3398 throw new BOException(saTransMsgArr[0]);
3399 }
3400 }
3401 archivePath = archivePath.concat(File.separator).concat(fileName);
3402
3403 destDirectory = new File(archivePath);
3404
3405 File deletedFile = new File(sSwiftInwardPath);
3406
3407 try {
3408 Files.move(deletedFile.toPath(), destDirectory.toPath(), StandardCopyOption.REPLACE_EXISTING);
3409 String timeStamp = DateUtil.format(commonLibBO.returnSystemDateWithTime(), "yyyyMMdd_HHmmss");
3410 renamePath = renamePath.concat(File.separator).concat(fileName.substring(0, fileName.indexOf('.')))
3411 .concat(timeStamp).concat(".txt");
3412 Boolean bVal = destDirectory.renameTo(new File(renamePath));
3413 if (!bVal) {
3414 saTransMsgArr = commonLibBO.returnTranslMessage(66771, sLanguage);
3415 throw new BOException(saTransMsgArr[0]);
3416 }
3417 } catch (IOException e) {
3418 throw new BOException(e.getMessage(), e);// olivia 31/07/2014 jenkin
3419 // issues
3420 }
3421 }
3422}