package au.org.aurin.wif.model.allocation;
import au.org.aurin.wif.impl.population.PopulationProjector;
import au.org.aurin.wif.model.Projection;
import au.org.aurin.wif.model.demand.DemandScenario;
import au.org.aurin.wif.model.demand.ResidentialDemographicData;
import au.org.aurin.wif.model.demand.info.ResidentialDemandInfo;
/**
* The Class Forecast.
*/
public class Forecast {
/** The id. @uml.property name="id" */
private Integer id;
/** The associated lu. */
private AllocationLU forecastLU;
/** The projection. */
private Projection projection;
/** The projected demographics. */
private ResidentialDemographicData projectedDemographics;
/** The source demographics. */
private ResidentialDemographicData sourceDemographics;
/** The demand scenario. */
private DemandScenario demandScenario;
/** The new area. */
private Double newArea;
/** The unchanged area. */
private Double unchangedArea;
/** The project population. */
private Double projectPopulation;
/**
* Sets the projection.
*
* @param projection
* the projection to set
*/
public void setProjection(Projection projection) {
this.projection = projection;
}
/**
* Gets the projection.
*
* @return the projection
*/
public Projection getProjection() {
return projection;
}
/**
* Gets the new area.
*
* @return the newArea
*/
public Double getNewArea() {
return newArea;
}
/**
* Sets the new area.
*
* @param newArea
* the newArea to set
*/
public void setNewArea(Double newArea) {
this.newArea = newArea;
}
/**
* Gets the unchanged area.
*
* @return the unchangedArea
*/
public Double getUnchangedArea() {
return unchangedArea;
}
/**
* Sets the unchanged area.
*
* @param unchangedArea
* the unchangedArea to set
*/
public void setUnchangedArea(Double unchangedArea) {
this.unchangedArea = unchangedArea;
}
/**
* Gets the source demographics.
*
* @return the sourceDemographics
*/
public ResidentialDemographicData getSourceDemographics() {
return sourceDemographics;
}
/**
* Sets the source demographics.
*
* @param demographicData
* the new source demographics
*/
public void setSourceDemographics(ResidentialDemographicData demographicData) {
this.sourceDemographics = demographicData;
}
/**
* Sets the projected demographics.
*
* @param projectedDemographics
* the projectedDemographics to set
*/
public void setProjectedDemographics(ResidentialDemographicData projectedDemographics) {
this.projectedDemographics = projectedDemographics;
}
/**
* Gets the projected demographics.
*
* @return the projectedDemographics
*/
public ResidentialDemographicData getProjectedDemographics() {
return projectedDemographics;
}
/**
* Sets the project population.
*
* @param projectPopulation the projectPopulation to set
*/
public void setProjectPopulation(Double projectPopulation) {
this.projectPopulation = projectPopulation;
}
/**
* Gets the project population.
*
* @return the projectPopulation
*/
public Double getProjectPopulation() {
return projectPopulation;
}
/**
* Do projection.
*
* @param unchangedLandUseArea the unchanged land use area
* @param newLandUseArea the new land use area
* @param residentialDemandInfo the residential demand info
* @param currentDemographic the current demographic
*/
public void doProjection(Double unchangedLandUseArea,
Double newLandUseArea, ResidentialDemandInfo residentialDemandInfo,
ResidentialDemographicData currentDemographic) {
this.setSourceDemographics(currentDemographic);
this.setUnchangedArea(unchangedLandUseArea);
this.setNewArea(newLandUseArea);
// this.setDemandInfo(residentialDemandInfo);
Double projectResidentialPopulation = PopulationProjector
.projectResidentialPopulation(unchangedLandUseArea,
newLandUseArea, currentDemographic.getHouseholds(),
residentialDemandInfo.getCurrentDensity(),
residentialDemandInfo.getFutureDensity(),
residentialDemandInfo.getFutureVacancyRate(),
residentialDemandInfo.getInfillRate(),
currentDemographic.getAverageHouseholdSize());
this.setProjectPopulation(projectResidentialPopulation);
}
/**
* Sets the demand scenario.
*
* @param demandScenario the demandScenario to set
*/
public void setDemandScenario(DemandScenario demandScenario) {
this.demandScenario = demandScenario;
}
/**
* Gets the demand scenario.
*
* @return the demandScenario
*/
public DemandScenario getDemandScenario() {
return demandScenario;
}
}