001/*
002 * Copyright 2006 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
017package org.kuali.ole.gl.businessobject;
018
019import java.util.LinkedHashMap;
020
021import org.apache.commons.lang.StringUtils;
022import org.kuali.ole.sys.OLEPropertyConstants;
023import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
024
025/**
026 * Represents a GLCP criteria
027 */
028public class CorrectionCriteria extends PersistableBusinessObjectBase implements Comparable {
029
030    private String documentNumber;
031    private Integer correctionChangeGroupLineNumber;
032    private Integer correctionCriteriaLineNumber;
033    private Integer correctionStartPosition;
034    private Integer correctionEndPosition;
035    private String correctionOperatorCode;
036    private String correctionFieldValue;
037    private String correctionFieldName;
038
039    private CorrectionChangeGroup correctionChangeGroup;
040
041    public CorrectionCriteria() {
042        super();
043
044    }
045
046    public CorrectionCriteria(String documentNumber, Integer correctionChangeGroupLineNumber, Integer correctionCriteriaLineNumber) {
047        this.documentNumber = documentNumber;
048        this.correctionChangeGroupLineNumber = correctionChangeGroupLineNumber;
049        this.correctionCriteriaLineNumber = correctionCriteriaLineNumber;
050    }
051
052    public boolean isEmpty() {
053        return (versionNumber == null) && StringUtils.isEmpty(correctionFieldValue);
054    }
055
056    public String getDocumentNumber() {
057        return documentNumber;
058    }
059
060    public void setDocumentNumber(String documentNumber) {
061        this.documentNumber = documentNumber;
062    }
063
064    public Integer getCorrectionChangeGroupLineNumber() {
065        return correctionChangeGroupLineNumber;
066    }
067
068    public void setCorrectionChangeGroupLineNumber(Integer correctionChangeGroupLineNumber) {
069        this.correctionChangeGroupLineNumber = correctionChangeGroupLineNumber;
070    }
071
072    public Integer getCorrectionCriteriaLineNumber() {
073        return correctionCriteriaLineNumber;
074    }
075
076    public void setCorrectionCriteriaLineNumber(Integer correctionCriteriaLineNumber) {
077        this.correctionCriteriaLineNumber = correctionCriteriaLineNumber;
078    }
079
080    public String getCorrectionOperatorCode() {
081        return correctionOperatorCode;
082    }
083
084    public void setCorrectionOperatorCode(String correctionOperatorCode) {
085        this.correctionOperatorCode = correctionOperatorCode;
086    }
087
088    public String getCorrectionFieldValue() {
089        return correctionFieldValue;
090    }
091
092    public void setCorrectionFieldValue(String correctionFieldValue) {
093        this.correctionFieldValue = correctionFieldValue;
094    }
095
096    public CorrectionChangeGroup getCorrectionChangeGroup() {
097        return correctionChangeGroup;
098    }
099
100    public void setCorrectionChangeGroup(CorrectionChangeGroup correctionChangeGroup) {
101        this.correctionChangeGroup = correctionChangeGroup;
102    }
103
104    public String getCorrectionFieldName() {
105        return correctionFieldName;
106    }
107
108    public void setCorrectionFieldName(String correctionFieldName) {
109        this.correctionFieldName = correctionFieldName;
110    }
111
112    /**
113     * Compares this object with another CorrectionCriteria based on document number, 
114     * correction change group line number, and correction criteria line number
115     * 
116     * @see java.lang.Comparable#compareTo(java.lang.Object)
117     */
118    public int compareTo(Object o) {
119        CorrectionCriteria cc = (CorrectionCriteria) o;
120
121        String thisFdocNbr = documentNumber == null ? "" : documentNumber;
122        String thatFdocNbr = cc.documentNumber == null ? "" : cc.documentNumber;
123        int c = thisFdocNbr.compareTo(thatFdocNbr);
124
125        if (c == 0) {
126            Integer thisGn = correctionChangeGroupLineNumber == null ? 0 : correctionChangeGroupLineNumber;
127            Integer thatGn = cc.correctionChangeGroupLineNumber == null ? 0 : cc.correctionChangeGroupLineNumber;
128            c = thisGn.compareTo(thatGn);
129            if (c == 0) {
130                Integer thisCln = correctionCriteriaLineNumber == null ? 0 : correctionCriteriaLineNumber;
131                Integer thatCln = correctionCriteriaLineNumber == null ? 0 : cc.correctionCriteriaLineNumber;
132                return c = thisCln.compareTo(thatCln);
133            }
134            else {
135                return c;
136            }
137        }
138        else {
139            return c;
140        }
141    }
142
143    /**
144     * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper()
145     */
146    protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
147        LinkedHashMap m = new LinkedHashMap();
148        m.put(OLEPropertyConstants.DOCUMENT_NUMBER, this.documentNumber);
149        if (this.correctionChangeGroupLineNumber != null) {
150            m.put("correctionChangeGroupLineNumber", this.correctionChangeGroupLineNumber.toString());
151        }
152        if (this.correctionCriteriaLineNumber != null) {
153            m.put("correctionCriteriaLineNumber", this.correctionCriteriaLineNumber.toString());
154        }
155        return m;
156    }
157}