001/*
002 * Copyright 2007 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 */
016package org.kuali.ole.module.purap.util;
017
018import org.apache.commons.lang.builder.CompareToBuilder;
019import org.apache.commons.lang.builder.EqualsBuilder;
020import org.apache.commons.lang.builder.HashCodeBuilder;
021import org.kuali.ole.module.purap.document.PurchasingAccountsPayableDocument;
022
023public class VendorGroupingHelper implements Comparable {
024    private Integer vendorHeaderGeneratedIdentifier;
025    private Integer vendorDetailAssignedIdentifier;
026    private String vendorCountry;
027    private String vendorPostalCode;
028
029    public VendorGroupingHelper(PurchasingAccountsPayableDocument doc) {
030        vendorHeaderGeneratedIdentifier = doc.getVendorHeaderGeneratedIdentifier();
031        vendorDetailAssignedIdentifier = doc.getVendorDetailAssignedIdentifier();
032        vendorCountry = doc.getVendorCountryCode();
033        vendorPostalCode = doc.getVendorPostalCode();
034        if (vendorPostalCode != null && vendorPostalCode.length() > 5) {
035            vendorPostalCode = vendorPostalCode.substring(0, 5);
036        }
037    }
038
039    public Integer getVendorHeaderGeneratedIdentifier() {
040        return vendorHeaderGeneratedIdentifier;
041    }
042
043    public Integer getVendorDetailAssignedIdentifier() {
044        return vendorDetailAssignedIdentifier;
045    }
046
047    public String getVendorCountry() {
048        return vendorCountry;
049    }
050
051    public String getVendorPostalCode() {
052        return vendorPostalCode;
053    }
054
055    /**
056     * @see java.lang.Object#toString()
057     */
058    public String toString() {
059        return vendorHeaderGeneratedIdentifier + "-" + vendorDetailAssignedIdentifier + "-" + vendorCountry + "-" + vendorPostalCode;
060    }
061
062    /**
063     * @see java.lang.Object#equals(Object)
064     */
065    public boolean equals(Object object) {
066        if (!(object instanceof VendorGroupingHelper)) {
067            return false;
068        }
069        VendorGroupingHelper rhs = (VendorGroupingHelper) object;
070        return new EqualsBuilder().append(
071                this.vendorPostalCode, rhs.vendorPostalCode).append(
072                this.vendorHeaderGeneratedIdentifier, rhs.vendorHeaderGeneratedIdentifier).append(
073                this.vendorDetailAssignedIdentifier, rhs.vendorDetailAssignedIdentifier).append(
074                this.vendorCountry, rhs.vendorCountry).isEquals();
075    }
076
077    /**
078     * @see java.lang.Object#hashCode()
079     */
080    public int hashCode() {
081        return new HashCodeBuilder(-999235111, -1951404497).append(this.vendorPostalCode)
082                .append(this.vendorHeaderGeneratedIdentifier)
083                .append(this.vendorDetailAssignedIdentifier).append(this.vendorCountry)
084                .toHashCode();
085    }
086
087    /**
088     * @see java.lang.Comparable#compareTo(Object)
089     */
090    public int compareTo(Object object) {
091        VendorGroupingHelper myClass = (VendorGroupingHelper) object;
092        return new CompareToBuilder().append(this.vendorPostalCode, myClass.vendorPostalCode)
093                .append(this.vendorHeaderGeneratedIdentifier,
094                        myClass.vendorHeaderGeneratedIdentifier)
095                .append(this.vendorDetailAssignedIdentifier,
096                        myClass.vendorDetailAssignedIdentifier).append(this.vendorCountry,
097                        myClass.vendorCountry).toComparison();
098    }
099
100
101}