39. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 2/7/2017 12:14:06 PM Eastern Standard Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

39.1 Files compared

# Location File Last Modified
1 cpss.zip\cpss\src\main\java\gov\va\cpss\job\sendbill SendBillDataItemProcessor.java Wed Feb 1 21:07:30 2017 UTC
2 cpss.zip\cpss\src\main\java\gov\va\cpss\job\sendbill SendBillDataItemProcessor.java Fri Feb 3 20:47:31 2017 UTC

39.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 618
Changed 1 2
Inserted 0 0
Removed 0 0

39.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

39.4 Active regular expressions

No regular expressions were active.

39.5 Comparison detail

  1   package go v.va.cpss. job.sendbi ll;
  2  
  3   import sta tic gov.va .cpss.job. CbssJobPro cessingCon stants.JOB _FAILURE_K EY;
  4   import sta tic gov.va .cpss.job. CbssJobPro cessingCon stants.JOB _FAILURE_M ESSAGE_KEY ;
  5   import sta tic gov.va .cpss.job. CbssJobPro cessingCon stants.PRO CESSING_FA ILURE_STAT US;
  6   import sta tic gov.va .cpss.job. sendbill.S endBillDat aProcessin gConstants .TOTAL_BIL L_PATIENT_ DATA_PROCE SSED;
  7   import sta tic gov.va .cpss.job. sendbill.S endBillDat aProcessin gConstants .SEND_BILL _TOTAL_REC ORD_COUNT;
  8   import jav a.util.Arr ayList;
  9   import jav a.util.Lis t;
  10  
  11   import sta tic gov.va .cpss.job. sendbill.S endBillDat aProcessin gConstants .SEND_BILL _ID_KEY;
  12  
  13   import org .apache.lo g4j.Logger ;
  14   import org .springfra mework.bat ch.core.It emProcessL istener;
  15   import org .springfra mework.bat ch.core.Jo bExecution ;
  16   import org .springfra mework.bat ch.core.St epExecutio n;
  17   import org .springfra mework.bat ch.core.an notation.A fterStep;
  18   import org .springfra mework.bat ch.core.an notation.B eforeStep;
  19   import org .springfra mework.bat ch.item.It emProcesso r;
  20  
  21   import gov .va.cpss.m odel.bal.S iteBalance ;
  22   import gov .va.cpss.s ervice.Sen dBillDataS ervice;
  23  
  24   /**
  25    * Custom  ItemProces sor used b y the Proc ess FPS Da ta batch j ob to regi ster the
  26    * ICN.
  27    * 
  28    * @author   DN S      P II
  29    */
  30   public cla ss SendBil lDataItemP rocessor i mplements  ItemProces sor<SiteBa lance, Lis t<SendBill StringDTO> >,
  31                    Item ProcessLis tener<Site Balance, L ist<SendBi llStringDT O>> {
  32  
  33           /*
  34            *  Flag to i ndicate th at the job  has been  forcefully  stopped a nd should  no
  35            *  longer at tempt proc essing.
  36            * /
  37           pr ivate bool ean forceS top = fals e;
  38  
  39           pr ivate fina l Logger p rocessorLo gger;
  40  
  41           pr ivate JobE xecution j obExecutio n;
  42  
  43           pr ivate int  batchRunId ;
  44  
  45           pr ivate Send BillDataSe rvice send BillDataSe rvice;
  46  
  47           /* *
  48            *  @return t he sendBil lDataServi ce
  49            * /
  50           pu blic SendB illDataSer vice getSe ndBillData Service()  {
  51                    retu rn sendBil lDataServi ce;
  52           }
  53  
  54           /* *
  55            *  @param se ndBillData Service
  56            *              the send BillDataSe rvice to s et
  57            * /
  58           pu blic void  setSendBil lDataServi ce(SendBil lDataServi ce sendBil lDataServi ce) {
  59                    this .sendBillD ataService  = sendBil lDataServi ce;
  60           }
  61  
  62           pr ivate Send BillString DTO combin edDTO;
  63  
  64           /* *
  65            *  @return t he combine dDTO
  66            * /
  67           pu blic SendB illStringD TO getComb inedDTO()  {
  68                    retu rn combine dDTO;
  69           }
  70  
  71           /* *
  72            *  @param co mbinedDTO
  73            *              the comb inedDTO to  set
  74            * /
  75           pu blic void  setCombine dDTO(SendB illStringD TO combine dDTO) {
  76                    this .combinedD TO = combi nedDTO;
  77           }
  78  
  79           pu blic SendB illDataIte mProcessor () {
  80                    proc essorLogge r = Logger .getLogger (this.getC lass().get CanonicalN ame());
  81           }
  82  
  83           @O verride
  84           pu blic List< SendBillSt ringDTO> p rocess(Sit eBalance p ojo) throw s Exceptio n {
  85                    
  86                    proc essorLogge r.info("Be gin Proces s Currentl y in Item  Processor" );
  87                    proc essorLogge r.info("To tal Patien t Count ha s Been Dec reased: "  + jobExecu tion.getEx ecutionCon text().get Int(SEND_B ILL_TOTAL_ RECORD_COU NT));
  88                    // D o not atte mpt to pro cess if fo rced stop.
  89                    if ( forceStop)  {
  90                             proces sorLogger. info("FORC E STOP");
  91                             return  null;
  92                    }
  93                    
  94                    List <SendBillS tringDTO>  writeDTO =  new Array List<SendB illStringD TO>();
  95                    
  96                             try {
  97                                      
  98                                      long cur rentAccoun tId = pojo .getCbsAcc ount().get Id();
  99                                      
  100                                      if (getC ombinedDTO () != null ) {
  101                                               if (curren tAccountId  == getCom binedDTO() .getCbssId ()) {
  102                                                       se tCombinedD TO(getSend BillDataSe rvice().pr ocessExist ingBillRec ord(pojo,  getCombine dDTO()));
  103                                                       ac crueProces singCount( TOTAL_BILL _PATIENT_D ATA_PROCES SED, 1);
  104                                                       pr ocessorLog ger.info(" Number of  Patients P rocessed i s: " + job Execution. getExecuti onContext( ).getLong( TOTAL_BILL _PATIENT_D ATA_PROCES SED));
  105                                                       
  106                                                       if (decreaseT otalPatien Count(SEND _BILL_TOTA L_RECORD_C OUNT, 1))
  107                                                       {
  108                                                                writ eDTO.add(g etCombined DTO());
  109                                                       }
  110                                                       
  111                                               } else {
  112                                                       // jobExecuti on.getExec utionConte xt().
  113                                                       //  Existing  is ready t o write.
  114                                                       pr ocessorLog ger.info(" Number of  Patients P rocessed i s: " + job Execution. getExecuti onContext( ).getLong( TOTAL_BILL _PATIENT_D ATA_PROCES SED));
  115                                                       pr ocessorLog ger.info(" ---------- ---------- The Data i s being Wr itten----- ---------- ");
  116                                                       wr iteDTO.add (getCombin edDTO());
  117                                                       pr ocessorLog ger.info(" Write Comp lete Recie ving New R ecord");
  118                                                       //  Received  a new reco rd. True
  119                                                       se tCombinedD TO(getSend BillDataSe rvice().pr ocessNewBi llRecord(p ojo));
  120                                                       ac crueProces singCount( TOTAL_BILL _PATIENT_D ATA_PROCES SED, 1);
  121                                                       
  122                                                       if (decreaseT otalPatien Count(SEND _BILL_TOTA L_RECORD_C OUNT, 1))
  123                                                       {
  124                                                                writ eDTO.add(g etCombined DTO());
  125                                                       }
  126                                                       
  127                                                       
  128                                               }
  129                                      } else {
  130                                               // Create  new record  True
  131                                                       se tCombinedD TO(getSend BillDataSe rvice().pr ocessNewBi llRecord(p ojo));
  132                                                       ac crueProces singCount( TOTAL_BILL _PATIENT_D ATA_PROCES SED, 1);
  133                                                       pr ocessorLog ger.info(" Number of  Patients P rocessed i s: " + job Execution. getExecuti onContext( ).getLong( TOTAL_BILL _PATIENT_D ATA_PROCES SED));
  134                                                       if (decreaseT otalPatien Count(SEND _BILL_TOTA L_RECORD_C OUNT, 1))
  135                                                       {
  136                                                                writ eDTO.add(g etCombined DTO());
  137                                                       }
  138                                                       
  139                                      }
  140  
  141                             } catc h (Excepti on e) {
  142  
  143                                      // Unrec overable e rror so st op the job .
  144                                      stopJob( PROCESSING _FAILURE_S TATUS, "Un recoverabl e processi ng error:  " + e.getM essage());
  145                             }
  146  
  147                
  148                    proc essorLogge r.info("En d Process" );
  149                    if(w riteDTO.is Empty())
  150                    {
  151                             return  null;
  152                    }
  153                    retu rn writeDT O;
  154                    
  155           }
  156  
  157           /* *
  158            *  Before pr ocessing c apture the  job execu tion and t he receive d id for d ata
  159            *  processin g.
  160            *  
  161            *  @param st epExecutio n
  162            * /
  163           @B eforeStep
  164           pu blic void  beforeStep (StepExecu tion stepE xecution)  {
  165                    proc essorLogge r.info("Be fore Step  Execution" );
  166  
  167                    // S ave the jo b executio n at the b eginning o f the step .
  168                    // T he executi on context  will be u sed to set  key value s as data  is
  169                    // p rocessed.
  170                    jobE xecution =  stepExecu tion.getJo bExecution ();
  171                    // S ets The De fault Pati ents Proce ssed Value
  172                    jobE xecution.g etExecutio nContext() .putLong(T OTAL_BILL_ PATIENT_DA TA_PROCESS ED, 0);
  173                    // S ave the ba tchRunId a t the begi nning of t he step.
  174  
  175           }
  176  
  177           /* *
  178            *  After pro cessing ch eck for un expected c onditions  that sugge st an erro r.
  179            *  
  180            *  @param st epExecutio n
  181            * /
  182           @A fterStep
  183           pu blic void  afterStep( StepExecut ion stepEx ecution) {
  184  
  185                    proc essorLogge r.info("Af ter Step E xecution") ;
  186           }
  187  
  188           @O verride
  189           pu blic void  beforeProc ess(SiteBa lance item ) {
  190                    proc essorLogge r.info("Be fore Proce ss");
  191                    forc eStop = fa lse;
  192                    if ( jobExecuti on.getExec utionConte xt().conta insKey(JOB _FAILURE_K EY)) {
  193                             proces sorLogger. error("Sys tem failur e detected .");
  194                             forceS top = true ;
  195                    }
  196                    // G et the id  of the Bat chRun reco rd for thi s job.
  197                    setB atchRunId( jobExecuti on.getJobP arameters( ).getLong( SEND_BILL_ ID_KEY).in tValue());
  198           }
  199  
  200           @O verride
  201           pu blic void  afterProce ss(SiteBal ance item,  List<Send BillString DTO> resul t) {
  202                    // D o not need  to do any thing afte r process.
  203           }
  204  
  205           @O verride
  206           pu blic void  onProcessE rror(SiteB alance ite m, Excepti on e) {
  207                    proc essorLogge r.error("P rocessor e ncountered  system er ror and fo rced stop" );
  208  
  209                    Stri ngBuilder  error = ne w StringBu ilder();
  210                    erro r.append(" Unable to  process it em because  of ");
  211                    erro r.append(e .getClass( ).getSimpl eName());
  212                    erro r.append(" \nMessage:  ");
  213                    erro r.append(e .getMessag e());
  214                    erro r.append(" \nCause: " );
  215                    erro r.append(e .getCause( ).getMessa ge().trim( ));
  216  
  217                    // S et failure  and messa ge.
  218                    stop Job(PROCES SING_FAILU RE_STATUS,  "Unrecove rable proc essor erro r");
  219           }
  220  
  221           /* *
  222            *  Forcefull y stop the  job proce ssing beca use a fail ure was de tected.
  223            *  
  224            *  @return R eturn a nu ll record  to stop st ep process ing.
  225            * /
  226           pr ivate void  stopJob(f inal Strin g status,  final Stri ng message ) {
  227  
  228                    // S et the fla g to indic ate the jo b has been  forcefull y stopped.
  229                    forc eStop = tr ue;
  230  
  231                    // L og message .
  232                    proc essorLogge r.error("P rocessor e xecution e ncountered  unrecover able error  and force d stop");
  233  
  234                    // S et failure  and messa ge.
  235                    setF ailureStat us(status) ;
  236  
  237                    // S et failure  message.
  238                    setF ailureMess age(messag e);
  239           }
  240  
  241           /* *
  242            *  Set the f ailure in  the job ex ecution co ntext.
  243            *  
  244            *  @param st atus
  245            *              The fail ure status .
  246            * /
  247           pr ivate void  setFailur eStatus(fi nal String  status) {
  248  
  249                    // L og job fai lure statu s.
  250                    proc essorLogge r.error("J ob failed  with statu s: " + sta tus);
  251  
  252                    // S et job fai lure.
  253                    jobE xecution.g etExecutio nContext() .putString (JOB_FAILU RE_KEY, st atus);
  254           }
  255  
  256           /* *
  257            *  Set the f ailure mes sage in th e job exec ution cont ext.
  258            *  
  259            *  @param me ssage
  260            *              The mess age to ass ociate wit h the erro r status.
  261            * /
  262           pr ivate void  setFailur eMessage(f inal Strin g message)  {
  263  
  264                    // L og job fai lure messa ge.
  265                    proc essorLogge r.error("J ob failure  message:  " + messag e);
  266  
  267                    // S et job fai lure messa ge.
  268                    jobE xecution.g etExecutio nContext() .putString (JOB_FAILU RE_MESSAGE _KEY, mess age);
  269           }
  270  
  271           pu blic int g etBatchRun Id() {
  272                    retu rn batchRu nId;
  273           }
  274  
  275           pu blic void  setBatchRu nId(int ba tchRunId)  {
  276                    this .batchRunI d = batchR unId;
  277           }
  278  
  279           /* *
  280            *  Accrue th e given pr ocessing c ount in th e job exec ution cont ext.
  281            *  
  282            *  @param ke y
  283            *              Name of  the proces sing count .
  284            *  @param nu mOfBills
  285            *              Amount t o add to t he process ing count.
  286            * /
  287           pr ivate void  accruePro cessingCou nt(final S tring key,  final int  numOfBill s) {
  288                    long  totalStmt s = jobExe cution.get ExecutionC ontext().g etLong(key );
  289                    tota lStmts +=  numOfBills ;
  290                    jobE xecution.g etExecutio nContext() .putLong(k ey, totalS tmts);
  291           }
  292  
  293           pr ivate bool ean decrea seTotalPat ienCount(f inal Strin g key, fin al Integer  numOfPati ents) {
  294                    int  totalStmts  = jobExec ution.getE xecutionCo ntext().ge tInt(key);
  295                    proc essorLogge r.info("To tal Patien t Count is : " + tota lStmts);
  296                    if ( totalStmts  > 0) {
  297                             totalS tmts = tot alStmts -  numOfPatie nts;
  298                             proces sorLogger. info("Tota l Patient  Count has  Been Decre ased: " +  totalStmts );
  299                             jobExe cution.get ExecutionC ontext().p utInt(key,  totalStmt s);
  300                             if (to talStmts = = 0) {
  301                                      return t rue;
  302                             } else  {
  303                                      return f alse;
  304                             }
  305                    } el se {
  306                             return  true;
  307                    }
  308           }
  309  
  310   }