/*
* 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.cg.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.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.country.CountryEbo;
import org.kuali.rice.location.framework.state.StateEbo;
/**
* Subcontractors are vendors involved with an awarded {@link Proposal}.
*/
public class SubContractor extends PersistableBusinessObjectBase implements MutableInactivatable {
protected String subcontractorNumber;
protected String subcontractorName;
protected String subcontractorAddressLine1;
protected String subcontractorAddressLine2;
protected String subcontractorCity;
protected String subcontractorStateCode;
protected String subcontractorZipCode;
protected String subcontractorCountryCode;
protected boolean active;
protected StateEbo subcontractorState;
protected CountryEbo subcontractorCountry;
public static final String CACHE_NAME = KFSConstants.APPLICATION_NAMESPACE_CODE + "/" + "SubContractor";
/**
* Gets the subcontractorNumber attribute.
*
* @return Returns the subcontractorNumber
*/
public String getSubcontractorNumber() {
return subcontractorNumber;
}
/**
* Sets the subcontractorNumber attribute.
*
* @param subcontractorNumber The subcontractorNumber to set.
*/
public void setSubcontractorNumber(String subcontractorNumber) {
this.subcontractorNumber = subcontractorNumber;
}
/**
* Gets the subcontractorName attribute.
*
* @return Returns the subcontractorName
*/
public String getSubcontractorName() {
return subcontractorName;
}
/**
* Sets the subcontractorName attribute.
*
* @param subcontractorName The subcontractorName to set.
*/
public void setSubcontractorName(String subcontractorName) {
this.subcontractorName = subcontractorName;
}
/**
* Gets the subcontractorAddressLine1 attribute.
*
* @return Returns the subcontractorAddressLine1
*/
public String getSubcontractorAddressLine1() {
return subcontractorAddressLine1;
}
/**
* Sets the subcontractorAddressLine1 attribute.
*
* @param subcontractorAddressLine1 The subcontractorAddressLine1 to set.
*/
public void setSubcontractorAddressLine1(String subcontractorAddressLine1) {
this.subcontractorAddressLine1 = subcontractorAddressLine1;
}
/**
* Gets the subcontractorAddressLine2 attribute.
*
* @return Returns the subcontractorAddressLine2
*/
public String getSubcontractorAddressLine2() {
return subcontractorAddressLine2;
}
/**
* Sets the subcontractorAddressLine2 attribute.
*
* @param subcontractorAddressLine2 The subcontractorAddressLine2 to set.
*/
public void setSubcontractorAddressLine2(String subcontractorAddressLine2) {
this.subcontractorAddressLine2 = subcontractorAddressLine2;
}
/**
* Gets the subcontractorCity attribute.
*
* @return Returns the subcontractorCity
*/
public String getSubcontractorCity() {
return subcontractorCity;
}
/**
* Sets the subcontractorCity attribute.
*
* @param subcontractorCity The subcontractorCity to set.
*/
public void setSubcontractorCity(String subcontractorCity) {
this.subcontractorCity = subcontractorCity;
}
/**
* Gets the subcontractorStateCode attribute.
*
* @return Returns the subcontractorStateCode.
*/
public String getSubcontractorStateCode() {
return subcontractorStateCode;
}
/**
* Sets the subcontractorStateCode attribute value.
*
* @param subcontractorStateCode The subcontractorStateCode to set.
*/
public void setSubcontractorStateCode(String subcontractorStateCode) {
this.subcontractorStateCode = subcontractorStateCode;
}
/**
* Gets the subcontractorZipCode attribute.
*
* @return Returns the subcontractorZipCode
*/
public String getSubcontractorZipCode() {
return subcontractorZipCode;
}
/**
* Sets the subcontractorZipCode attribute.
*
* @param subcontractorZipCode The subcontractorZipCode to set.
*/
public void setSubcontractorZipCode(String subcontractorZipCode) {
this.subcontractorZipCode = subcontractorZipCode;
}
/**
* Gets the subcontractorCountryCode attribute.
*
* @return Returns the subcontractorCountryCode
*/
public String getSubcontractorCountryCode() {
return subcontractorCountryCode;
}
/**
* Sets the subcontractorCountryCode attribute.
*
* @param subcontractorCountryCode The subcontractorCountryCode to set.
*/
public void setSubcontractorCountryCode(String subcontractorCountryCode) {
this.subcontractorCountryCode = subcontractorCountryCode;
}
/**
* 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 {@link Country} in which the subcontractor is located.
*
* @return the {@link Country} in which the subcontractor is located.
*/
public CountryEbo getSubcontractorCountry() {
if ( StringUtils.isBlank(subcontractorCountryCode) ) {
subcontractorCountry = null;
} else {
if ( subcontractorCountry == null || !StringUtils.equals( subcontractorCountry.getCode(), subcontractorCountryCode) ) {
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, subcontractorCountryCode);
subcontractorCountry = moduleService.getExternalizableBusinessObject(CountryEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return subcontractorCountry;
}
/**
* Sets the {@link Country} in which the subcontractor is located.
*
* @param country the {@link Country} in which the subcontractor is located.
*/
public void setSubcontractorCountry(CountryEbo country) {
this.subcontractorCountry = country;
}
/**
* Gets the {@link State} in which the subcontractor is located.
*
* @return the {@link State} in which the subcontractor is located.
*/
public StateEbo getSubcontractorState() {
if ( StringUtils.isBlank(subcontractorCountryCode) || StringUtils.isBlank(KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) {
subcontractorState = null;
} else {
if ( subcontractorState == null || !StringUtils.equals( subcontractorState.getCode(),subcontractorCountryCode) || !StringUtils.equals(subcontractorState.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, subcontractorCountryCode);
subcontractorState = moduleService.getExternalizableBusinessObject(StateEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return subcontractorState;
}
/**
* Sets the {@link State} in which the subcontractor is located.
*
* @param state the {@link State} in which the subcontractor is located.
*/
public void setSubcontractorState(StateEbo state) {
this.subcontractorState = state;
}
}