/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.cam.businessobject; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; import org.kuali.rice.krad.service.KualiModuleService; import org.kuali.rice.krad.service.ModuleService; import org.kuali.rice.location.api.LocationConstants; import org.kuali.rice.location.framework.country.CountryEbo; import org.kuali.rice.location.framework.postalcode.PostalCodeEbo; import org.kuali.rice.location.framework.state.StateEbo; /** * @author Kuali Nervous System Team (kualidev@oncourse.iu.edu) */ public class AssetLocation extends PersistableBusinessObjectBase { protected Long capitalAssetNumber; protected String assetLocationTypeCode; protected String assetLocationContactName; protected String assetLocationContactIdentifier; protected String assetLocationInstitutionName; protected String assetLocationPhoneNumber; protected String assetLocationStreetAddress; protected String assetLocationCityName; protected String assetLocationStateCode; protected String assetLocationCountryCode; protected String assetLocationZipCode; protected Asset asset; protected AssetLocationType assetLocationType; protected StateEbo assetLocationState; protected CountryEbo assetLocationCountry; protected PostalCodeEbo postalZipCode; /** * Default constructor. */ public AssetLocation() { } public AssetLocation(Long assetNumber) { this.capitalAssetNumber = assetNumber; } public AssetLocation(AssetLocation copiedLocation) { this.capitalAssetNumber = copiedLocation.getCapitalAssetNumber(); this.assetLocationTypeCode = copiedLocation.getAssetLocationTypeCode(); this.assetLocationContactName = copiedLocation.getAssetLocationContactName(); this.assetLocationContactIdentifier = copiedLocation.getAssetLocationContactIdentifier(); this.assetLocationInstitutionName = copiedLocation.getAssetLocationInstitutionName(); this.assetLocationPhoneNumber = copiedLocation.getAssetLocationPhoneNumber(); this.assetLocationStreetAddress = copiedLocation.getAssetLocationStreetAddress(); this.assetLocationCityName = copiedLocation.getAssetLocationCityName(); this.assetLocationStateCode = copiedLocation.getAssetLocationStateCode(); this.assetLocationCountryCode = copiedLocation.getAssetLocationCountryCode(); this.assetLocationZipCode = copiedLocation.getAssetLocationZipCode(); } /** * Gets the capitalAssetNumber attribute. * * @return Returns the capitalAssetNumber */ public Long getCapitalAssetNumber() { return capitalAssetNumber; } /** * Sets the capitalAssetNumber attribute. * * @param capitalAssetNumber The capitalAssetNumber to set. */ public void setCapitalAssetNumber(Long capitalAssetNumber) { this.capitalAssetNumber = capitalAssetNumber; } /** * Gets the assetLocationTypeCode attribute. * * @return Returns the assetLocationTypeCode */ public String getAssetLocationTypeCode() { return assetLocationTypeCode; } /** * Sets the assetLocationTypeCode attribute. * * @param assetLocationTypeCode The assetLocationTypeCode to set. */ public void setAssetLocationTypeCode(String assetLocationTypeCode) { this.assetLocationTypeCode = assetLocationTypeCode; } /** * Gets the assetLocationContactName attribute. * * @return Returns the assetLocationContactName */ public String getAssetLocationContactName() { return assetLocationContactName; } /** * Sets the assetLocationContactName attribute. * * @param assetLocationContactName The assetLocationContactName to set. */ public void setAssetLocationContactName(String assetLocationContactName) { this.assetLocationContactName = assetLocationContactName; } /** * Gets the assetLocationContactIdentifier attribute. * * @return Returns the assetLocationContactIdentifier */ public String getAssetLocationContactIdentifier() { return assetLocationContactIdentifier; } /** * Sets the assetLocationContactIdentifier attribute. * * @param assetLocationContactIdentifier The assetLocationContactIdentifier to set. */ public void setAssetLocationContactIdentifier(String assetLocationContactIdentifier) { this.assetLocationContactIdentifier = assetLocationContactIdentifier; } /** * Gets the assetLocationInstitutionName attribute. * * @return Returns the assetLocationInstitutionName */ public String getAssetLocationInstitutionName() { return assetLocationInstitutionName; } /** * Sets the assetLocationInstitutionName attribute. * * @param assetLocationInstitutionName The assetLocationInstitutionName to set. */ public void setAssetLocationInstitutionName(String assetLocationInstitutionName) { this.assetLocationInstitutionName = assetLocationInstitutionName; } /** * Gets the assetLocationPhoneNumber attribute. * * @return Returns the assetLocationPhoneNumber */ public String getAssetLocationPhoneNumber() { return assetLocationPhoneNumber; } /** * Sets the assetLocationPhoneNumber attribute. * * @param assetLocationPhoneNumber The assetLocationPhoneNumber to set. */ public void setAssetLocationPhoneNumber(String assetLocationPhoneNumber) { this.assetLocationPhoneNumber = assetLocationPhoneNumber; } /** * Gets the assetLocationStreetAddress attribute. * * @return Returns the assetLocationStreetAddress */ public String getAssetLocationStreetAddress() { return assetLocationStreetAddress; } /** * Sets the assetLocationStreetAddress attribute. * * @param assetLocationStreetAddress The assetLocationStreetAddress to set. */ public void setAssetLocationStreetAddress(String assetLocationStreetAddress) { this.assetLocationStreetAddress = assetLocationStreetAddress; } /** * Gets the assetLocationCityName attribute. * * @return Returns the assetLocationCityName */ public String getAssetLocationCityName() { return assetLocationCityName; } /** * Sets the assetLocationCityName attribute. * * @param assetLocationCityName The assetLocationCityName to set. */ public void setAssetLocationCityName(String assetLocationCityName) { this.assetLocationCityName = assetLocationCityName; } /** * Gets the assetLocationStateCode attribute. * * @return Returns the assetLocationStateCode */ public String getAssetLocationStateCode() { return assetLocationStateCode; } /** * Sets the assetLocationStateCode attribute. * * @param assetLocationStateCode The assetLocationStateCode to set. */ public void setAssetLocationStateCode(String assetLocationStateCode) { this.assetLocationStateCode = assetLocationStateCode; } /** * Gets the assetLocationCountryCode attribute. * * @return Returns the assetLocationCountryCode */ public String getAssetLocationCountryCode() { return assetLocationCountryCode; } /** * Sets the assetLocationCountryCode attribute. * * @param assetLocationCountryCode The assetLocationCountryCode to set. */ public void setAssetLocationCountryCode(String assetLocationCountryCode) { this.assetLocationCountryCode = assetLocationCountryCode; } /** * Gets the assetLocationZipCode attribute. * * @return Returns the assetLocationZipCode */ public String getAssetLocationZipCode() { return assetLocationZipCode; } /** * Sets the assetLocationZipCode attribute. * * @param assetLocationZipCode The assetLocationZipCode to set. */ public void setAssetLocationZipCode(String assetLocationZipCode) { this.assetLocationZipCode = assetLocationZipCode; } /** * Gets the postalZipCode attribute. * * @return Returns the postalZipCode. */ public PostalCodeEbo getPostalZipCode() { if ( StringUtils.isBlank(assetLocationZipCode) || StringUtils.isBlank(KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { postalZipCode = null; } else { if ( postalZipCode == null || !StringUtils.equals( postalZipCode.getCode(), assetLocationZipCode) || !StringUtils.equals(postalZipCode.getCountryCode(), KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(PostalCodeEbo.class); if ( moduleService != null ) { Map<String,Object> keys = new HashMap<String, Object>(2); keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, KFSConstants.COUNTRY_CODE_UNITED_STATES);/*RICE20_REFACTORME*/ keys.put(LocationConstants.PrimaryKeyConstants.CODE, assetLocationZipCode); postalZipCode = moduleService.getExternalizableBusinessObject(PostalCodeEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." ); } } } return postalZipCode; } /** * Sets the postalZipCode attribute. * * @param postalZipCode The postalZipCode to set. */ public void setPostalZipCode(PostalCodeEbo postalZipCode) { this.postalZipCode = postalZipCode; } /** * Gets the asset attribute. * * @return Returns the asset */ public Asset getAsset() { return asset; } /** * Sets the asset attribute. * * @param asset The asset to set. * @deprecated */ public void setAsset(Asset asset) { this.asset = asset; } /** * Gets the assetLocationType attribute. * * @return Returns the assetLocationType. */ public AssetLocationType getAssetLocationType() { return assetLocationType; } /** * Sets the assetLocationType attribute value. * * @param assetLocationType The assetLocationType to set. * @deprecated */ public void setAssetLocationType(AssetLocationType assetLocationType) { this.assetLocationType = assetLocationType; } /** * Gets the assetLocationCountry attribute. * * @return Returns the assetLocationCountry. */ public CountryEbo getAssetLocationCountry() { if ( StringUtils.isBlank(assetLocationCountryCode) ) { assetLocationCountry = null; } else { if ( assetLocationCountry == null || !StringUtils.equals( assetLocationCountry.getCode(), assetLocationCountryCode) ) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(CountryEbo.class); if ( moduleService != null ) { Map<String,Object> keys = new HashMap<String, Object>(1); keys.put(LocationConstants.PrimaryKeyConstants.CODE, assetLocationCountryCode); assetLocationCountry = moduleService.getExternalizableBusinessObject(CountryEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." ); } } } return assetLocationCountry; } public void setAssetLocationCountry(CountryEbo assetLocationCountry) { this.assetLocationCountry = assetLocationCountry; } /** * Gets the assetLocationState attribute * * @return Returns the assetLocationState */ public StateEbo getAssetLocationState() { if ( StringUtils.isBlank(assetLocationStateCode) || StringUtils.isBlank(KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { assetLocationState = null; } else { if ( assetLocationState == null || !StringUtils.equals( assetLocationState.getCode(), assetLocationStateCode) || !StringUtils.equals(assetLocationState.getCountryCode(), KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(StateEbo.class); if ( moduleService != null ) { Map<String,Object> keys = new HashMap<String, Object>(2); keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, KFSConstants.COUNTRY_CODE_UNITED_STATES);/*RICE20_REFACTORME*/ keys.put(LocationConstants.PrimaryKeyConstants.CODE, assetLocationStateCode); assetLocationState = moduleService.getExternalizableBusinessObject(StateEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." ); } } } return assetLocationState; } public void setAssetLocationState(StateEbo assetLocationState) { this.assetLocationState = assetLocationState; } }