001package org.kuali.ole.batch.bo;
002
003import org.apache.log4j.Logger;
004import org.kuali.ole.OLEConstants;
005import org.kuali.ole.batch.document.OLEBatchProcessDefinitionDocument;
006import org.kuali.ole.batch.form.OLEBatchProcessJobDetailsForm;
007import org.kuali.ole.batch.helper.OLEBatchProcessDataHelper;
008import org.kuali.rice.coreservice.impl.parameter.ParameterBo;
009import org.kuali.rice.krad.document.TransactionalDocumentBase;
010import org.kuali.rice.krad.service.KRADServiceLocator;
011
012import java.io.File;
013import java.nio.file.FileSystems;
014import java.sql.Timestamp;
015import java.util.Date;
016import java.util.HashMap;
017import java.util.List;
018import java.util.Map;
019
020/**
021 * Created with IntelliJ IDEA.
022 * User: krishnamohanv
023 * Date: 7/11/13
024 * Time: 6:53 PM
025 * To change this template use File | Settings | File Templates.
026 */
027public class OLEBatchProcessJobDetailsBo extends TransactionalDocumentBase {
028
029
030    private String sNo;
031    private String jobId;
032    private String jobIdNum;
033    private String jobName;
034    private String userName;
035    private Timestamp startTime = new Timestamp(new Date().getTime()); //default value
036    private String timeSpent="0:0:0";
037    private String recordsExported;
038    private String perCompleted = "0.0%"; //default value
039    private String status;
040    private String batchProfileName;
041    private String uploadFileName;
042    private Timestamp createTime = new Timestamp(new Date().getTime()); //default value
043    private Timestamp endTime;
044    private String statusDesc;
045    private String oleBatchPrcsScheduleId;
046    private String batchProcessId;
047    private String batchProcessType;
048    private String totalNoOfRecords="0";
049    private String noOfRecordsProcessed="0";
050    private String noOfSuccessRecords="0";
051    private String noOfFailureRecords="0";
052    private String noOfDeletedRecords="0";
053    private boolean failureAttachmentFlag;
054    private boolean errorAttachmentFlag;
055
056    private boolean fileCreatedWithOutLinkFlag;
057    private boolean fileCreatedWithMoreThanOneLinkFlag;
058
059    private boolean failureCSVAttachmentFlag;
060    private String bibErrorPath;
061    private String batchDeletePath;
062
063    private String serialCSVErrorPath;
064    private String hstrySucceesCount="0";
065    private String hstryFailureCount="0";
066    private String typeSuccessCount="0";
067    private String typeFailureCount="0";
068    private boolean documentFlag;
069    private boolean historyFlag;
070    private boolean typeFlag;
071    private boolean inputCSVFormatFlag;
072    private Integer orderImportSuccessCount;
073    private Integer orderImportFailureCount;
074    private Integer createBibCount;
075    private Integer updateBibCount;
076    private Integer createHoldingsCount;
077    private Integer updateHoldingsCount;
078
079    private Integer noOfEinstanceAdded;
080    private Integer noOfEinstanceDeleted;
081    private Integer noOfEinstanceCreatedWithOutLink;
082    private Integer noOfbibsHaveMoreThanOneEinstance;
083    private boolean bibsDeletedForExportFlag;
084
085    private OLEBatchProcessScheduleBo oleBatchProcessScheduleBo;
086    private List<OLEBatchProcessScheduleBo> oleBatchProcessScheduleBoList;
087
088    private OLEBatchProcessDefinitionDocument oLEBatchProcessDefinitionDocument;
089    public OLEBatchProcessJobDetailsForm form;
090
091    private OrderImportHelperBo orderImportHelperBo = new OrderImportHelperBo();
092
093    private static final Logger LOG = Logger.getLogger(OLEBatchProcessJobDetailsBo.class);
094
095
096    public boolean isFailureAttachmentFlag() {
097        File file = new File(getBatchProcessFilePath(this.getBatchProcessType(), this.getJobId()) + this.getJobId() + "_FailureRecord" + "_" + this.getUploadFileName());
098        if (file.exists()) {
099            return true;
100        } else if ((this.getBatchProcessType() != null && !this.getBatchProcessType().equals(OLEConstants.OLEBatchProcess.ORDER_RECORD_IMPORT)) && isFileCreatedWithMoreThanOneLinkFlag()) {
101            return true;
102        } else if ((this.getBatchProcessType() != null && !this.getBatchProcessType().equals(OLEConstants.OLEBatchProcess.ORDER_RECORD_IMPORT)) && isFileCreatedWithOutLinkFlag()) {
103            return true;
104        }
105        return false;
106    }
107
108    public boolean isErrorAttachmentFlag() {
109        String uploadFileName = this.getUploadFileName();
110        String errorFileName = null;
111        String[] fileNames = uploadFileName.split(",");
112        errorFileName = fileNames.length == 2 ? fileNames[0]:uploadFileName;
113        if(errorFileName.endsWith(".mrc")){
114            errorFileName = errorFileName.replace(".mrc",".txt");
115        }
116        else if(errorFileName.endsWith(".INV")){
117            errorFileName = errorFileName.replace(".INV",".txt");
118        }
119        else if(errorFileName.endsWith(".edi")){
120            errorFileName = errorFileName.replace(".edi",".txt");
121        }
122        File file = new File(getBatchProcessFilePath(this.getBatchProcessType() , this.getJobId())+this.getJobId()+ "_FailureRecord" + "_" + errorFileName);
123        if(file.exists())
124            return true;
125        return false;
126    }
127
128    public void setErrorAttachmentFlag(boolean errorAttachmentFlag) {
129        this.errorAttachmentFlag= errorAttachmentFlag;
130    }
131
132    public boolean isFileCreatedWithOutLinkFlag() {
133        File file = new File(getBatchProcessFilePath(this.getBatchProcessType() , this.getJobId())+ this.getJobId() + OLEConstants.OLEBatchProcess.RECORDS_CREATED_WITHOUT_LINK  + this.getUploadFileName());
134        if(file.exists())
135            return true;
136        return false;
137    }
138
139    public void setFileCreatedWithOutLinkFlag(boolean fileCreatedWithOutLinkFlag) {
140        this.fileCreatedWithOutLinkFlag = fileCreatedWithOutLinkFlag;
141    }
142
143    public boolean isFileCreatedWithMoreThanOneLinkFlag() {
144        File file = new File(getBatchProcessFilePath(this.getBatchProcessType() , this.getJobId()) +  this.getJobId()  + OLEConstants.OLEBatchProcess.RECORDS_CREATED_WITH_MORE_THAN_ONE_LINK + this.getUploadFileName());
145        if(file.exists())
146            return true;
147        return false;
148    }
149
150    public void setFileCreatedWithMoreThanOneLinkFlag(boolean fileCreatedWithMoreThanOneLinkFlag) {
151        this.fileCreatedWithMoreThanOneLinkFlag = fileCreatedWithMoreThanOneLinkFlag;
152    }
153
154    public boolean isBibsDeletedForExportFlag() {
155        File file = new File(getBatchProcessFilePath(this.getBatchProcessType(), this.getJobId()) + this.getJobId() + OLEConstants.OLEBatchProcess.DELETED_BIB_IDS_FILE_NAME);
156        if (file.exists()) {
157            return true;
158        }
159        return false;
160    }
161
162    public void setBibsDeletedForExportFlag(boolean bibsDeletedForExportFlag) {
163        this.bibsDeletedForExportFlag = bibsDeletedForExportFlag;
164    }
165
166    public Integer getNoOfEinstanceAdded() {
167        return noOfEinstanceAdded;
168    }
169
170    public void setNoOfEinstanceAdded(Integer noOfEinstanceAdded) {
171        this.noOfEinstanceAdded = noOfEinstanceAdded;
172    }
173
174    public Integer getNoOfEinstanceDeleted() {
175        return noOfEinstanceDeleted;
176    }
177
178    public void setNoOfEinstanceDeleted(Integer noOfEinstanceDeleted) {
179        this.noOfEinstanceDeleted = noOfEinstanceDeleted;
180    }
181
182    public Integer getNoOfEinstanceCreatedWithOutLink() {
183        return noOfEinstanceCreatedWithOutLink;
184    }
185
186    public void setNoOfEinstanceCreatedWithOutLink(Integer noOfEinstanceCreatedWithOutLink) {
187        this.noOfEinstanceCreatedWithOutLink = noOfEinstanceCreatedWithOutLink;
188    }
189
190    public Integer getNoOfbibsHaveMoreThanOneEinstance() {
191        return noOfbibsHaveMoreThanOneEinstance;
192    }
193
194    public void setNoOfbibsHaveMoreThanOneEinstance(Integer noOfbibsHaveMoreThanOneEinstance) {
195        this.noOfbibsHaveMoreThanOneEinstance = noOfbibsHaveMoreThanOneEinstance;
196    }
197
198    public void setFailureAttachmentFlag(boolean failureAttachmentFlag) {
199        this.failureAttachmentFlag = failureAttachmentFlag;
200    }
201
202    public boolean isFailureCSVAttachmentFlag() {
203        String[] fileNames=this.getUploadFileName().split(",");
204        for (String fileName:fileNames){
205            if (fileName.contains(getParameter(OLEConstants.OLEBatchProcess.SERIAL_RECORD_NAME))){
206                File file = new File(getBatchProcessFilePath(this.getBatchProcessType(), jobId) + this.getJobId() + "_FailureRecord" + "_" + fileName.replace("csv","xml"));
207                if(file.exists())
208                    return true;
209            }
210            else if (fileName.contains(getParameter(OLEConstants.OLEBatchProcess.SERIAL_HISTORY_NAME))){
211                File file = new File(getBatchProcessFilePath(this.getBatchProcessType(),jobId) + this.getJobId() + "_FailureRecord" + "_" + fileName.replace("csv","xml"));
212                if(file.exists())
213                    return true;
214            } else if (fileName.contains(getParameter(OLEConstants.OLEBatchProcess.SERIAL_TYPE_NAME))){
215                File file = new File(getBatchProcessFilePath(this.getBatchProcessType(),jobId) + this.getJobId() + "_FailureRecord" + "_" + fileName.replace("csv","xml"));
216                if(file.exists())
217                    return true;
218            }
219        }
220        return false;
221    }
222
223    public void setFailureCSVAttachmentFlag(boolean failureCSVAttachmentFlag) {
224        this.failureCSVAttachmentFlag = failureCSVAttachmentFlag;
225    }
226
227    public void getJobDisplay(){
228        LOG.info("get Report.....");
229    }
230
231
232    public String getTotalNoOfRecords() {
233        return totalNoOfRecords;
234    }
235
236    public void setTotalNoOfRecords(String totalNoOfRecords) {
237        this.totalNoOfRecords = totalNoOfRecords;
238    }
239
240    public String getNoOfRecordsProcessed() {
241        return noOfRecordsProcessed;
242    }
243
244    public void setNoOfRecordsProcessed(String noOfRecordsProcessed) {
245        this.noOfRecordsProcessed = noOfRecordsProcessed;
246    }
247
248    public OLEBatchProcessJobDetailsForm getForm() {
249        return form;
250    }
251
252    public void setForm(OLEBatchProcessJobDetailsForm form) {
253        this.form = form;
254    }
255
256    public String getsNo() {
257        return sNo;
258    }
259
260    public void setsNo(String sNo) {
261        this.sNo = sNo;
262    }
263
264    public String getJobId() {
265        return jobId;
266    }
267
268    public void setJobId(String jobId) {
269        this.jobId = jobId;
270    }
271
272    public String getJobName() {
273        return jobName;
274    }
275
276    public void setJobName(String jobName) {
277        this.jobName = jobName;
278    }
279
280    public String getUserName() {
281        return userName;
282    }
283
284    public void setUserName(String userName) {
285        this.userName = userName;
286    }
287
288    public String getRecordsExported() {
289        return recordsExported;
290    }
291
292    public void setRecordsExported(String recordsExported) {
293        this.recordsExported = recordsExported;
294    }
295
296    public String getPerCompleted() {
297        return perCompleted;
298    }
299
300    public void setPerCompleted(String perCompleted) {
301        this.perCompleted = perCompleted;
302    }
303
304    public String getStatus() {
305        return status;
306    }
307
308    public void setStatus(String status) {
309        this.status = status;
310    }
311
312    public String getBatchProfileName() {
313        return batchProfileName;
314    }
315
316    public void setBatchProfileName(String batchProfileName) {
317        this.batchProfileName = batchProfileName;
318    }
319
320
321    public String getUploadFileName() {
322        return uploadFileName;
323    }
324
325    public void setUploadFileName(String uploadFileName) {
326        this.uploadFileName = uploadFileName;
327    }
328
329
330    public Timestamp getStartTime() {
331        return startTime;
332    }
333
334    public void setStartTime(Timestamp startTime) {
335        this.startTime = startTime;
336    }
337
338
339    public Timestamp getEndTime() {
340        return endTime;
341    }
342
343    public void setEndTime(Timestamp endTime) {
344        this.endTime = endTime;
345    }
346
347    public String getStatusDesc() {
348        return statusDesc;
349    }
350
351    public void setStatusDesc(String statusDesc) {
352        this.statusDesc = statusDesc;
353    }
354
355    public String getOleBatchPrcsScheduleId() {
356        return oleBatchPrcsScheduleId;
357    }
358
359    public void setOleBatchPrcsScheduleId(String oleBatchPrcsScheduleId) {
360        this.oleBatchPrcsScheduleId = oleBatchPrcsScheduleId;
361    }
362
363    public String getBatchProcessId() {
364        return batchProcessId;
365    }
366
367    public Timestamp getCreateTime() {
368        return createTime;
369    }
370
371    public void setCreateTime(Timestamp createTime) {
372        this.createTime = createTime;
373    }
374
375    public void setBatchProcessId(String batchProcessId) {
376        this.batchProcessId = batchProcessId;
377    }
378
379    public OLEBatchProcessScheduleBo getOleBatchProcessScheduleBo() {
380        return oleBatchProcessScheduleBo;
381    }
382
383    public void setOleBatchProcessScheduleBo(OLEBatchProcessScheduleBo oleBatchProcessScheduleBo) {
384        this.oleBatchProcessScheduleBo = oleBatchProcessScheduleBo;
385    }
386
387    public List<OLEBatchProcessScheduleBo> getOleBatchProcessScheduleBoList() {
388        return oleBatchProcessScheduleBoList;
389    }
390
391    public void setOleBatchProcessScheduleBoList(List<OLEBatchProcessScheduleBo> oleBatchProcessScheduleBoList) {
392        this.oleBatchProcessScheduleBoList = oleBatchProcessScheduleBoList;
393    }
394
395    public String getBatchProcessType() {
396        return batchProcessType;
397    }
398
399    public void setBatchProcessType(String batchProcessType) {
400        this.batchProcessType = batchProcessType;
401    }
402
403    public OLEBatchProcessDefinitionDocument getOLEBatchProcessDefinitionDocument() {
404        return oLEBatchProcessDefinitionDocument;
405    }
406
407    public void setOLEBatchProcessDefinitionDocument(OLEBatchProcessDefinitionDocument oLEBatchProcessDefinitionDocument) {
408        this.oLEBatchProcessDefinitionDocument = oLEBatchProcessDefinitionDocument;
409    }
410
411    public String getTimeSpent() {
412        return timeSpent;
413    }
414
415    public void setTimeSpent(String timeSpent) {
416        this.timeSpent = timeSpent;
417    }
418
419    public String getNoOfSuccessRecords() {
420        return noOfSuccessRecords;
421    }
422
423    public void setNoOfSuccessRecords(String noOfSuccessRecords) {
424        this.noOfSuccessRecords = noOfSuccessRecords;
425    }
426
427    public String getNoOfFailureRecords() {
428        return noOfFailureRecords;
429    }
430
431    public void setNoOfFailureRecords(String noOfFailureRecords) {
432        this.noOfFailureRecords = noOfFailureRecords;
433    }
434
435    public String getNoOfDeletedRecords() {
436        return noOfDeletedRecords;
437    }
438
439    public void setNoOfDeletedRecords(String noOfDeletedRecords) {
440        this.noOfDeletedRecords = noOfDeletedRecords;
441    }
442
443    private String getBatchProcessFilePath(String batchProceesType) {
444        String batchProcessLocation =  OLEBatchProcessDataHelper.getInstance().getBatchProcessFilePath(batchProceesType);
445        return batchProcessLocation;
446    }
447    private String getBatchProcessFilePath(String batchProceesType,String jobId) {
448        String batchProcessLocation =  OLEBatchProcessDataHelper.getInstance().getBatchProcessFilePath(batchProceesType,jobId);
449        return batchProcessLocation;
450    }
451
452    public String getBibErrorPath() {
453        return bibErrorPath;
454    }
455
456    public void setBibErrorPath(String bibErrorPath) {
457        this.bibErrorPath = bibErrorPath;
458    }
459
460    public String getBatchDeletePath() {
461        return batchDeletePath;
462    }
463
464    public void setBatchDeletePath(String batchDeletePath) {
465        this.batchDeletePath = batchDeletePath;
466    }
467
468    public void setJobIdNum(String jobIdNum) {
469        this.jobIdNum = jobIdNum;
470    }
471
472    public String getJobIdNum() {
473        return String.format("%08d", Integer.parseInt(jobId)) ;
474    }
475
476    public String getHstrySucceesCount() {
477        return hstrySucceesCount;
478    }
479
480    public void setHstrySucceesCount(String hstrySucceesCount) {
481        this.hstrySucceesCount = hstrySucceesCount;
482    }
483
484    public String getHstryFailureCount() {
485        return hstryFailureCount;
486    }
487
488    public void setHstryFailureCount(String hstryFailureCount) {
489        this.hstryFailureCount = hstryFailureCount;
490    }
491
492    public String getTypeSuccessCount() {
493        return typeSuccessCount;
494    }
495
496    public void setTypeSuccessCount(String typeSuccessCount) {
497        this.typeSuccessCount = typeSuccessCount;
498    }
499
500    public String getTypeFailureCount() {
501        return typeFailureCount;
502    }
503
504    public void setTypeFailureCount(String typeFailureCount) {
505        this.typeFailureCount = typeFailureCount;
506    }
507
508    public boolean isDocumentFlag() {
509        if (uploadFileName.contains(getParameter(OLEConstants.OLEBatchProcess.SERIAL_RECORD_NAME)+".csv")){
510            return true;
511        }
512        return false;
513    }
514
515    public void setDocumentFlag(boolean documentFlag) {
516        this.documentFlag = documentFlag;
517    }
518
519    public boolean isHistoryFlag() {
520        if (uploadFileName.contains(getParameter(OLEConstants.OLEBatchProcess.SERIAL_HISTORY_NAME)+".csv")){
521            return true;
522        }
523        return false;
524    }
525
526    public void setHistoryFlag(boolean historyFlag) {
527        this.historyFlag = historyFlag;
528    }
529
530    public boolean isTypeFlag() {
531        if (uploadFileName.contains(getParameter(OLEConstants.OLEBatchProcess.SERIAL_TYPE_NAME)+".csv")){
532            return true;
533        }
534        return false;
535    }
536
537    public void setTypeFlag(boolean typeFlag) {
538        this.typeFlag = typeFlag;
539    }
540    private String getParameter(String name) {
541        String parameter = "";
542        try {
543            Map<String, String> criteriaMap = new HashMap<String, String>();
544            criteriaMap.put("namespaceCode", OLEConstants.SYS_NMSPC);
545            criteriaMap.put("componentCode", OLEConstants.BATCH_CMPNT);
546            criteriaMap.put("name", name);
547            List<ParameterBo> parametersList = (List<ParameterBo>) KRADServiceLocator.getBusinessObjectService().findMatching(ParameterBo.class, criteriaMap);
548            for (ParameterBo parameterBo : parametersList) {
549                parameter = parameterBo.getValue();
550            }
551        } catch (Exception e) {
552            e.printStackTrace();
553        }
554        return parameter;
555    }
556
557    public String getSerialCSVErrorPath() {
558        return serialCSVErrorPath;
559    }
560
561    public void setSerialCSVErrorPath(String serialCSVErrorPath) {
562        this.serialCSVErrorPath = serialCSVErrorPath;
563    }
564
565    public boolean isInputCSVFormatFlag() {
566        if (uploadFileName.contains(".csv")) {
567            return true;
568        }
569        return false;
570    }
571
572    public void setInputCSVFormatFlag(boolean inputCSVFormatFlag) {
573        this.inputCSVFormatFlag = inputCSVFormatFlag;
574    }
575
576    public Integer getOrderImportSuccessCount() {
577        return orderImportSuccessCount;
578    }
579
580    public void setOrderImportSuccessCount(Integer orderImportSuccessCount) {
581        this.orderImportSuccessCount = orderImportSuccessCount;
582    }
583
584    public Integer getOrderImportFailureCount() {
585        return orderImportFailureCount;
586    }
587
588    public void setOrderImportFailureCount(Integer orderImportFailureCount) {
589        this.orderImportFailureCount = orderImportFailureCount;
590    }
591
592    public Integer getCreateBibCount() {
593        return createBibCount;
594    }
595
596    public void setCreateBibCount(Integer createBibCount) {
597        this.createBibCount = createBibCount;
598    }
599
600    public Integer getUpdateBibCount() {
601        return updateBibCount;
602    }
603
604    public void setUpdateBibCount(Integer updateBibCount) {
605        this.updateBibCount = updateBibCount;
606    }
607
608    public Integer getCreateHoldingsCount() {
609        return createHoldingsCount;
610    }
611
612    public void setCreateHoldingsCount(Integer createHoldingsCount) {
613        this.createHoldingsCount = createHoldingsCount;
614    }
615
616    public OrderImportHelperBo getOrderImportHelperBo() {
617        return orderImportHelperBo;
618    }
619
620    public void setOrderImportHelperBo(OrderImportHelperBo orderImportHelperBo) {
621        this.orderImportHelperBo = orderImportHelperBo;
622    }
623
624    public Integer getUpdateHoldingsCount() {
625        return updateHoldingsCount;
626    }
627
628    public void setUpdateHoldingsCount(Integer updateHoldingsCount) {
629        this.updateHoldingsCount = updateHoldingsCount;
630    }
631
632    public void setJobstatistics(OLEBatchBibImportStatistics bibImportStatistics) {
633        setNoOfRecordsProcessed(Integer.parseInt(noOfRecordsProcessed) + bibImportStatistics.getTotalCount() + "");
634        setNoOfSuccessRecords(bibImportStatistics.getSuccessRecord() + "");
635        setNoOfFailureRecords((bibImportStatistics.getMismatchRecordList().size()) + "");
636        setNoOfEinstanceAdded(bibImportStatistics.getNoOfEinstanceAdded());
637        setNoOfEinstanceDeleted(bibImportStatistics.getNoOfEinstanceDeleted());
638        setNoOfEinstanceCreatedWithOutLink(bibImportStatistics.getNoOfEinstanceCreatedWithOutLink());
639        setNoOfbibsHaveMoreThanOneEinstance(bibImportStatistics.getNoOfbibsHaveMoreThanOneEinstance());
640
641    }
642    
643    
644    public void setIntailJob(OLEBatchBibImportStatistics bibImportStatistics){
645       setNoOfSuccessRecords("0");
646       setNoOfFailureRecords("0");
647       setNoOfRecordsProcessed("0");
648       setNoOfEinstanceAdded(0);
649       setNoOfEinstanceDeleted(0);
650       setNoOfEinstanceCreatedWithOutLink(0);
651       setNoOfbibsHaveMoreThanOneEinstance(0);
652       setTotalNoOfRecords(bibImportStatistics.getBibMarcRecordList().size()+"");
653    }
654
655}