/*
* 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.sys.businessobject;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.core.api.mo.common.active.MutableInactivatable;
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.campus.CampusEbo;
import org.kuali.rice.location.framework.country.CountryEbo;
import org.kuali.rice.location.framework.postalcode.PostalCodeEbo;
import org.kuali.rice.location.framework.state.StateEbo;
/**
*
*/
public class Building extends PersistableBusinessObjectBase implements MutableInactivatable {
protected String campusCode;
protected String buildingCode;
protected String buildingName;
protected String buildingStreetAddress;
protected String buildingAddressCityName;
protected String buildingAddressStateCode;
protected String buildingAddressZipCode;
protected String alternateBuildingCode;
protected boolean active;
protected String buildingAddressCountryCode;
protected CampusEbo campus;
protected StateEbo buildingAddressState;
protected PostalCodeEbo buildingAddressZip;
protected CountryEbo buildingAddressCountry;
/**
* Gets the campusCode attribute.
*
* @return Returns the campusCode
*/
public String getCampusCode() {
return campusCode;
}
/**
* Sets the campusCode attribute.
*
* @param campusCode The campusCode to set.
*/
public void setCampusCode(String campusCode) {
this.campusCode = campusCode;
}
/**
* Gets the buildingCode attribute.
*
* @return Returns the buildingCode
*/
public String getBuildingCode() {
return buildingCode;
}
/**
* Sets the buildingCode attribute.
*
* @param buildingCode The buildingCode to set.
*/
public void setBuildingCode(String buildingCode) {
this.buildingCode = buildingCode;
}
/**
* Gets the buildingName attribute.
*
* @return Returns the buildingName
*/
public String getBuildingName() {
return buildingName;
}
/**
* Sets the buildingName attribute.
*
* @param buildingName The buildingName to set.
*/
public void setBuildingName(String buildingName) {
this.buildingName = buildingName;
}
/**
* Gets the campus attribute.
*
* @return Returns the campus.
*/
public CampusEbo getCampus() {
if ( StringUtils.isBlank(campusCode) ) {
campus = null;
} else {
if ( campus == null || !StringUtils.equals( campus.getCode(),campusCode) ) {
ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(CampusEbo.class);
if ( moduleService != null ) {
Map<String,Object> keys = new HashMap<String, Object>(1);
keys.put(LocationConstants.PrimaryKeyConstants.CODE, campusCode);
campus = moduleService.getExternalizableBusinessObject(CampusEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return campus;
}
/**
* Sets the campus attribute value.
*
* @param campus The campus to set.
*/
public void setCampus(CampusEbo campus) {
this.campus = campus;
}
/**
* Gets the alternateBuildingCode attribute.
*
* @return Returns the alternateBuildingCode.
*/
public String getAlternateBuildingCode() {
return alternateBuildingCode;
}
/**
* Sets the alternateBuildingCode attribute value.
*
* @param alternateBuildingCode The alternateBuildingCode to set.
*/
public void setAlternateBuildingCode(String alternateBuildingCode) {
this.alternateBuildingCode = alternateBuildingCode;
}
/**
* Gets the buildingAddressCityName attribute.
*
* @return Returns the buildingAddressCityName.
*/
public String getBuildingAddressCityName() {
return buildingAddressCityName;
}
/**
* Sets the buildingAddressCityName attribute value.
*
* @param buildingAddressCityName The buildingAddressCityName to set.
*/
public void setBuildingAddressCityName(String buildingAddressCityName) {
this.buildingAddressCityName = buildingAddressCityName;
}
/**
* Gets the buildingAddressStateCode attribute.
*
* @return Returns the buildingAddressStateCode.
*/
public String getBuildingAddressStateCode() {
return buildingAddressStateCode;
}
/**
* Sets the buildingAddressStateCode attribute value.
*
* @param buildingAddressStateCode The buildingAddressStateCode to set.
*/
public void setBuildingAddressStateCode(String buildingAddressStateCode) {
this.buildingAddressStateCode = buildingAddressStateCode;
}
/**
* Gets the buildingAddressZipCode attribute.
*
* @return Returns the buildingAddressZipCode.
*/
public String getBuildingAddressZipCode() {
return buildingAddressZipCode;
}
/**
* Sets the buildingAddressZipCode attribute value.
*
* @param buildingAddressZipCode The buildingAddressZipCode to set.
*/
public void setBuildingAddressZipCode(String buildingAddressZipCode) {
this.buildingAddressZipCode = buildingAddressZipCode;
}
/**
* Gets the buildingStreetAddress attribute.
*
* @return Returns the buildingStreetAddress.
*/
public String getBuildingStreetAddress() {
return buildingStreetAddress;
}
/**
* Sets the buildingStreetAddress attribute value.
*
* @param buildingStreetAddress The buildingStreetAddress to set.
*/
public void setBuildingStreetAddress(String buildingStreetAddress) {
this.buildingStreetAddress = buildingStreetAddress;
}
/**
* Gets the active attribute.
* @return Returns the active.
*/
@Override
public boolean isActive() {
return active;
}
/**
* Sets the active attribute value.
* @param active The active to set.
*/
@Override
public void setActive(boolean active) {
this.active = active;
}
/**
* Gets the buildingAddressState attribute.
*
* @return Returns the buildingAddressState.
*/
public StateEbo getBuildingAddressState() {
if ( StringUtils.isBlank(buildingAddressStateCode) || StringUtils.isBlank(buildingAddressCountryCode ) ) {
buildingAddressState = null;
} else {
if ( buildingAddressState == null || !StringUtils.equals( buildingAddressState.getCode(),buildingAddressStateCode) || !StringUtils.equals(buildingAddressState.getCountryCode(), buildingAddressCountryCode ) ) {
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, buildingAddressCountryCode);
keys.put(LocationConstants.PrimaryKeyConstants.CODE, buildingAddressStateCode);
buildingAddressState = moduleService.getExternalizableBusinessObject(StateEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return buildingAddressState;
}
/**
* Sets the buildingAddressState attribute value.
*
* @param buildingAddressState The buildingAddressState to set.
* @deprecated
*/
public void setBuildingAddressState(StateEbo buildingAddressState) {
this.buildingAddressState = buildingAddressState;
}
/**
* Gets the buildingAddressZip attribute.
*
* @return Returns the buildingAddressZip.
*/
public PostalCodeEbo getBuildingAddressZip() {
if ( StringUtils.isBlank(buildingAddressZipCode) || StringUtils.isBlank(buildingAddressCountryCode) ) {
buildingAddressZip = null;
} else {
if ( buildingAddressZip == null || !StringUtils.equals( buildingAddressZip.getCode(),buildingAddressZipCode) || !StringUtils.equals(buildingAddressZip.getCountryCode(), buildingAddressCountryCode ) ) {
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, buildingAddressCountryCode);
keys.put(LocationConstants.PrimaryKeyConstants.CODE, buildingAddressZipCode);
buildingAddressZip = moduleService.getExternalizableBusinessObject(PostalCodeEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return buildingAddressZip;
}
/**
* Sets the buildingAddressZip attribute value.
*
* @param buildingAddressZip The buildingAddressZip to set.
* @deprecated
*/
public void setBuildingAddressZip(PostalCodeEbo buildingAddressZip) {
this.buildingAddressZip = buildingAddressZip;
}
/**
* Gets the buildingAddressCountryCode attribute.
* @return Returns the buildingAddressCountryCode.
*/
public String getBuildingAddressCountryCode() {
return buildingAddressCountryCode;
}
/**
* Sets the buildingAddressCountryCode attribute value.
* @param buildingAddressCountryCode The buildingAddressCountryCode to set.
*/
public void setBuildingAddressCountryCode(String buildingAddressCountryCode) {
this.buildingAddressCountryCode = buildingAddressCountryCode;
}
/**
* Gets the buildingAddressCountry attribute.
* @return Returns the buildingAddressCountry.
*/
public CountryEbo getBuildingAddressCountry() {
if ( StringUtils.isBlank(buildingAddressCountryCode) ) {
buildingAddressCountry = null;
} else {
if ( buildingAddressCountry == null || !StringUtils.equals( buildingAddressCountry.getCode(),buildingAddressCountryCode) ) {
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, buildingAddressCountryCode);
buildingAddressCountry = moduleService.getExternalizableBusinessObject(CountryEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return buildingAddressCountry;
}
/**
* Sets the buildingAddressCountry attribute value.
* @param buildingAddressCountry The buildingAddressCountry to set.
*/
public void setBuildingAddressCountry(CountryEbo buildingAddressCountry) {
this.buildingAddressCountry = buildingAddressCountry;
}
}