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    
017    package org.kuali.kfs.vnd.businessobject;
018    
019    import java.util.LinkedHashMap;
020    import java.util.List;
021    
022    import org.apache.commons.lang.builder.EqualsBuilder;
023    import org.apache.log4j.Logger;
024    import org.kuali.rice.kns.bo.Country;
025    import org.kuali.rice.kns.bo.State;
026    import org.kuali.kfs.sys.context.SpringContext;
027    import org.kuali.rice.kns.service.CountryService;
028    import org.kuali.rice.kns.service.StateService;
029    import org.kuali.kfs.vnd.document.service.VendorService;
030    import org.kuali.rice.kns.bo.Inactivateable;
031    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
032    import org.kuali.rice.kns.util.ObjectUtils;
033    import org.kuali.rice.kns.util.TypedArrayList;
034    
035    /**
036     * Address to be associated with a particular Vendor.
037     */
038    public class VendorAddress extends PersistableBusinessObjectBase implements VendorRoutingComparable, Inactivateable {
039        private static Logger LOG = Logger.getLogger(VendorAddress.class);
040    
041        private Integer vendorAddressGeneratedIdentifier;
042        private Integer vendorHeaderGeneratedIdentifier;
043        private Integer vendorDetailAssignedIdentifier;
044        private String vendorAddressTypeCode;
045        private String vendorLine1Address;
046        private String vendorLine2Address;
047        private String vendorCityName;
048        private String vendorStateCode;
049        private String vendorZipCode;
050        private String vendorCountryCode;
051        private String vendorAttentionName;
052        private String vendorAddressInternationalProvinceName;
053        private String vendorAddressEmailAddress;
054        private String vendorBusinessToBusinessUrlAddress;
055        private String vendorFaxNumber;
056        private boolean vendorDefaultAddressIndicator;
057        private boolean active;
058    
059        private List<VendorDefaultAddress> vendorDefaultAddresses;
060    
061        private VendorDetail vendorDetail;
062        private AddressType vendorAddressType;
063        private State vendorState;
064        private Country vendorCountry;
065    
066        /**
067         * Default constructor.
068         */
069        public VendorAddress() {
070            vendorDefaultAddresses = new TypedArrayList(VendorDefaultAddress.class);
071        }
072    
073        public Integer getVendorAddressGeneratedIdentifier() {
074            return vendorAddressGeneratedIdentifier;
075        }
076    
077        public void setVendorAddressGeneratedIdentifier(Integer vendorAddressGeneratedIdentifier) {
078            this.vendorAddressGeneratedIdentifier = vendorAddressGeneratedIdentifier;
079        }
080    
081        public Integer getVendorHeaderGeneratedIdentifier() {
082            return vendorHeaderGeneratedIdentifier;
083        }
084    
085        public void setVendorHeaderGeneratedIdentifier(Integer vendorHeaderGeneratedIdentifier) {
086            this.vendorHeaderGeneratedIdentifier = vendorHeaderGeneratedIdentifier;
087        }
088    
089        public Integer getVendorDetailAssignedIdentifier() {
090            return vendorDetailAssignedIdentifier;
091        }
092    
093        public void setVendorDetailAssignedIdentifier(Integer vendorDetailAssignedIdentifier) {
094            this.vendorDetailAssignedIdentifier = vendorDetailAssignedIdentifier;
095        }
096    
097        public String getVendorAddressInternationalProvinceName() {
098            return vendorAddressInternationalProvinceName;
099        }
100    
101        public void setVendorAddressInternationalProvinceName(String vendorAddressInternationalProvinceName) {
102            this.vendorAddressInternationalProvinceName = vendorAddressInternationalProvinceName;
103        }
104    
105        public String getVendorAddressEmailAddress() {
106            return vendorAddressEmailAddress;
107        }
108    
109        public void setVendorAddressEmailAddress(String vendorAddressEmailAddress) {
110            this.vendorAddressEmailAddress = vendorAddressEmailAddress;
111        }
112    
113        public String getVendorAddressTypeCode() {
114            return vendorAddressTypeCode;
115        }
116    
117        public void setVendorAddressTypeCode(String vendorAddressTypeCode) {
118            this.vendorAddressTypeCode = vendorAddressTypeCode;
119        }
120    
121        public String getVendorLine1Address() {
122            return vendorLine1Address;
123        }
124    
125        public void setVendorLine1Address(String vendorLine1Address) {
126            this.vendorLine1Address = vendorLine1Address;
127        }
128    
129        public String getVendorLine2Address() {
130            return vendorLine2Address;
131        }
132    
133        public void setVendorLine2Address(String vendorLine2Address) {
134            this.vendorLine2Address = vendorLine2Address;
135        }
136    
137        public String getVendorCityName() {
138            return vendorCityName;
139        }
140    
141        public void setVendorCityName(String vendorCityName) {
142            this.vendorCityName = vendorCityName;
143        }
144    
145        public String getVendorStateCode() {
146            return vendorStateCode;
147        }
148    
149        public void setVendorStateCode(String vendorStateCode) {
150            this.vendorStateCode = vendorStateCode;
151        }
152    
153        public String getVendorZipCode() {
154            return vendorZipCode;
155        }
156    
157        public void setVendorZipCode(String vendorZipCode) {
158            this.vendorZipCode = vendorZipCode;
159        }
160    
161        public String getVendorCountryCode() {
162            return vendorCountryCode;
163        }
164    
165        public void setVendorCountryCode(String vendorCountryCode) {
166            this.vendorCountryCode = vendorCountryCode;
167        }
168    
169        public String getVendorAttentionName() {
170            return vendorAttentionName;
171        }
172    
173        public void setVendorAttentionName(String vendorAttentionName) {
174            this.vendorAttentionName = vendorAttentionName;
175        }
176    
177        public String getVendorBusinessToBusinessUrlAddress() {
178            return vendorBusinessToBusinessUrlAddress;
179        }
180    
181        public void setVendorBusinessToBusinessUrlAddress(String vendorBusinessToBusinessUrlAddress) {
182            this.vendorBusinessToBusinessUrlAddress = vendorBusinessToBusinessUrlAddress;
183        }
184    
185        public VendorDetail getVendorDetail() {
186            return vendorDetail;
187        }
188    
189        /**
190         * Sets the vendorDetail attribute.
191         * 
192         * @param vendorDetail The vendorDetail to set.
193         * @deprecated
194         */
195        public void setVendorDetail(VendorDetail vendorDetail) {
196            this.vendorDetail = vendorDetail;
197        }
198    
199        public AddressType getVendorAddressType() {
200            return vendorAddressType;
201        }
202    
203        /**
204         * Sets the vendorAddressType attribute.
205         * 
206         * @param vendorAddressType The vendorAddressType to set.
207         * @deprecated
208         */
209        public void setVendorAddressType(AddressType vendorAddressType) {
210            this.vendorAddressType = vendorAddressType;
211        }
212    
213        public State getVendorState() {
214            vendorState = SpringContext.getBean(StateService.class).getByPrimaryIdIfNecessary(vendorCountryCode, vendorStateCode, vendorState);
215            return vendorState;
216        }
217    
218        /**
219         * Sets the vendorState attribute.
220         * 
221         * @param vendorState The vendorState to set.
222         * @deprecated
223         */
224        public void setVendorState(State vendorState) {
225            this.vendorState = vendorState;
226        }
227    
228        public Country getVendorCountry() {
229            vendorCountry = SpringContext.getBean(CountryService.class).getByPrimaryIdIfNecessary(vendorCountryCode, vendorCountry);
230            return vendorCountry;
231        }
232    
233        /**
234         * Sets the vendorCountry attribute.
235         * 
236         * @param vendorCountry The vendorCountry to set.
237         * @deprecated
238         */
239        public void setVendorCountry(Country vendorCountry) {
240            this.vendorCountry = vendorCountry;
241        }
242    
243        /**
244         * Gets the vendorFaxNumber attribute.
245         * 
246         * @return Returns the vendorFaxNumber.
247         */
248        public String getVendorFaxNumber() {
249            return vendorFaxNumber;
250        }
251    
252        /**
253         * Sets the vendorFaxNumber attribute value.
254         * 
255         * @param vendorFaxNumber The vendorFaxNumber to set.
256         */
257        public void setVendorFaxNumber(String vendorFaxNumber) {
258            this.vendorFaxNumber = vendorFaxNumber;
259        }
260    
261        /**
262         * Gets the vendorDefaultAddressIndicator attribute.
263         * 
264         * @return Returns the vendorDefaultAddressIndicator.
265         */
266        public boolean isVendorDefaultAddressIndicator() {
267            return vendorDefaultAddressIndicator;
268        }
269    
270        /**
271         * Sets the vendorDefaultAddressIndicator attribute value.
272         * 
273         * @param vendorDefaultAddressIndicator The vendorDefaultAddressIndicator to set.
274         */
275        public void setVendorDefaultAddressIndicator(boolean vendorDefaultAddressIndicator) {
276            this.vendorDefaultAddressIndicator = vendorDefaultAddressIndicator;
277        }
278    
279        public boolean isActive() {
280            return active;
281        }
282    
283        public void setActive(boolean active) {
284            this.active = active;
285        }
286    
287        public List<VendorDefaultAddress> getVendorDefaultAddresses() {
288            return vendorDefaultAddresses;
289        }
290    
291        public void setVendorDefaultAddresses(List<VendorDefaultAddress> vendorDefaultAddresses) {
292            this.vendorDefaultAddresses = vendorDefaultAddresses;
293        }
294    
295        /**
296         * @see org.kuali.kfs.vnd.document.routing.VendorRoutingComparable#isEqualForRouting(java.lang.Object)
297         */
298        public boolean isEqualForRouting(Object toCompare) {
299            LOG.debug("Entering isEqualForRouting.");
300            if ((ObjectUtils.isNull(toCompare)) || !(toCompare instanceof VendorAddress)) {
301                LOG.debug("Exiting isEqualForRouting");
302                return false;
303            }
304            else {
305                VendorAddress va = (VendorAddress) toCompare;
306                boolean eq = new EqualsBuilder().append(this.getVendorAddressGeneratedIdentifier(), va.getVendorAddressGeneratedIdentifier()).append(this.getVendorHeaderGeneratedIdentifier(), va.getVendorHeaderGeneratedIdentifier()).append(this.getVendorDetailAssignedIdentifier(), va.getVendorDetailAssignedIdentifier()).append(this.getVendorAddressTypeCode(), va.getVendorAddressTypeCode()).append(this.getVendorLine1Address(), va.getVendorLine1Address()).append(this.getVendorLine2Address(), va.getVendorLine2Address()).append(this.getVendorCityName(), va.getVendorCityName()).append(this.getVendorStateCode(), va.getVendorStateCode()).append(this.getVendorZipCode(), va.getVendorZipCode()).append(this.getVendorCountryCode(), va.getVendorCountryCode()).append(this.getVendorAttentionName(), va.getVendorAttentionName()).append(this.getVendorAddressInternationalProvinceName(), va.getVendorAddressInternationalProvinceName()).append(this.getVendorAddressEmailAddress(),
307                        va.getVendorAddressEmailAddress()).append(this.getVendorBusinessToBusinessUrlAddress(), va.getVendorBusinessToBusinessUrlAddress()).append(this.getVendorFaxNumber(), va.getVendorFaxNumber()).append(this.isVendorDefaultAddressIndicator(), va.isVendorDefaultAddressIndicator()).isEquals();
308                eq &= SpringContext.getBean(VendorService.class).equalMemberLists(this.getVendorDefaultAddresses(), va.getVendorDefaultAddresses());
309                LOG.debug("Exiting isEqualForRouting.");
310                return eq;
311            }
312        }
313    
314        /**
315         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
316         */
317        protected LinkedHashMap toStringMapper() {
318            LinkedHashMap m = new LinkedHashMap();
319            if (this.vendorAddressGeneratedIdentifier != null) {
320                m.put("vendorAddressGeneratedIdentifier", this.vendorAddressGeneratedIdentifier.toString());
321            }
322            return m;
323        }
324    
325    }