001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.cam.util;
017
018 import org.apache.commons.collections.Closure;
019 import org.apache.commons.collections.Predicate;
020 import org.apache.commons.lang.StringUtils;
021 import org.kuali.kfs.module.cam.CamsConstants;
022 import org.kuali.kfs.module.cam.businessobject.BarcodeInventoryErrorDetail;
023 import org.kuali.kfs.module.cam.document.BarcodeInventoryErrorDocument;
024
025 /**
026 *
027 * Helps filter out records from a collection of BCIE and replace its elements with the inputted data
028 */
029 public class BarcodeInventoryErrorDetailPredicate implements Predicate, Closure {
030 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BarcodeInventoryErrorDetailPredicate.class);
031 private BarcodeInventoryErrorDocument doc;
032
033 /**
034 *
035 * Constructs a BarcodeInventoryErrorDetailPredicate.java.
036 * @param form
037 */
038 public BarcodeInventoryErrorDetailPredicate(BarcodeInventoryErrorDocument doc) {
039 this.doc = doc;
040 }
041
042 /**
043 *
044 * @see org.apache.commons.collections.Predicate#evaluate(java.lang.Object)
045 */
046 public boolean evaluate(Object object) {
047 boolean satisfies = true;
048
049 if (object instanceof BarcodeInventoryErrorDetail) {
050
051 BarcodeInventoryErrorDetail detail = (BarcodeInventoryErrorDetail) object;
052
053 // It will only replace when the status is equals to error
054 if (detail.getErrorCorrectionStatusCode().equals(CamsConstants.BarCodeInventoryError.STATUS_CODE_ERROR)) {
055 if ((this.doc.getCurrentTagNumber() != null) && !StringUtils.isBlank(this.doc.getCurrentTagNumber())) {
056 if (!StringUtils.equals(this.doc.getCurrentTagNumber(), detail.getAssetTagNumber())) {
057 satisfies = false;
058 }
059 }
060
061 if (this.doc.getCurrentScanCode() != null && !StringUtils.isBlank(this.doc.getCurrentScanCode())) {
062 satisfies = (this.doc.getCurrentScanCode().equals("Y") && detail.isUploadScanIndicator());
063 }
064
065 if (this.doc.getCurrentCampusCode() != null && !StringUtils.isBlank(this.doc.getCurrentCampusCode())) {
066 if (!StringUtils.equals(this.doc.getCurrentCampusCode(), detail.getCampusCode())) {
067 satisfies = false;
068 }
069 }
070
071 if ((this.doc.getCurrentBuildingNumber() != null) && !StringUtils.isBlank(this.doc.getCurrentBuildingNumber())) {
072 if (!StringUtils.equals(this.doc.getCurrentBuildingNumber(), detail.getBuildingCode())) {
073 satisfies = false;
074 }
075 }
076
077 if ((this.doc.getCurrentRoom() != null) && !StringUtils.isBlank(this.doc.getCurrentRoom())) {
078 if (!StringUtils.equals(this.doc.getCurrentRoom(), detail.getBuildingRoomNumber())) {
079 satisfies = false;
080 }
081 }
082
083 if ((this.doc.getCurrentSubroom() != null) && !StringUtils.isBlank(this.doc.getCurrentSubroom())) {
084 if (!StringUtils.equals(this.doc.getCurrentSubroom(), detail.getBuildingSubRoomNumber())) {
085 satisfies = false;
086 }
087 }
088
089 if ((this.doc.getCurrentConditionCode() != null) && !StringUtils.isBlank(this.doc.getCurrentConditionCode())) {
090 if (!StringUtils.equals(this.doc.getCurrentConditionCode(), detail.getAssetConditionCode())) {
091 satisfies = false;
092 }
093 }
094 }
095 else {
096 satisfies = false;
097 }
098 }
099 return satisfies;
100 }
101
102 /**
103 *
104 * @see org.apache.commons.collections.Closure#execute(java.lang.Object)
105 */
106 public void execute(Object object) {
107 if (this.evaluate(object)) {
108 BarcodeInventoryErrorDetail detail = (BarcodeInventoryErrorDetail) object;
109 if (this.doc.getNewCampusCode() != null && !StringUtils.isBlank(this.doc.getNewCampusCode())) {
110 detail.setCampusCode(this.doc.getNewCampusCode());
111 }
112
113 if ((this.doc.getNewBuildingNumber() != null) && !StringUtils.isBlank(this.doc.getNewBuildingNumber())) {
114 detail.setBuildingCode(this.doc.getNewBuildingNumber());
115 }
116
117 if ((this.doc.getNewRoom() != null) && !StringUtils.isBlank(this.doc.getNewRoom())) {
118 detail.setBuildingRoomNumber(this.doc.getNewRoom());
119 }
120
121 if ((this.doc.getNewSubroom() != null) && !StringUtils.isBlank(this.doc.getNewSubroom())) {
122 detail.setBuildingSubRoomNumber(this.doc.getNewSubroom());
123 }
124
125 if ((this.doc.getNewConditionCode() != null) && !StringUtils.isBlank(this.doc.getNewConditionCode())) {
126 detail.setAssetConditionCode(this.doc.getNewConditionCode());
127 }
128 }
129 }
130 }