/**
*
* marcosnr
* 08/03/2012
*/
package au.org.aurin.wif.model.demand.info;
import java.util.HashSet;
import java.util.Set;
import au.org.aurin.wif.exception.validate.WifInvalidInputException;
import au.org.aurin.wif.model.Projection;
import au.org.aurin.wif.model.demand.data.ProjectedData;
//
/**
* <b>ProjectedDemandInfo.java</b> : Configuration parameters required to set up
* the projected demand like preservation.
*
* @author <a href="mailto:marcosnr@unimelb.edu.au"> Marcos Nino-Ruiz
* marcosnr@unimelb.edu.au</a> - 2012
*/
public class ProjectedDemandInfo extends DemandInfo {
/** The projected datas. */
private Set<ProjectedData> projectedDatas;
/**
* Instantiates a new projected demand info.
*/
public ProjectedDemandInfo() {
super();
this.projectedDatas = new HashSet<ProjectedData>();
}
/**
* Instantiates a new projected demand info.
*
* @param copy the copy
*/
public ProjectedDemandInfo(ProjectedDemandInfo copy) {
super(copy);
Set<ProjectedData> projectedDataNew = new HashSet<ProjectedData>();
Set<ProjectedData> projectedDatas = copy.getProjectedDatas();
for (ProjectedData projectedData : projectedDatas) {
ProjectedData copyPd = new ProjectedData(projectedData);
projectedDataNew.add(copyPd);
}
this.projectedDatas = projectedDataNew;
}
/**
* Sets the data projections.
*
* @param projectedDatas
* the projectedDatas to set
*/
public void setProjectedDatas(Set<ProjectedData> projectedDatas) {
this.projectedDatas = projectedDatas;
}
/**
* Gets the data projections.
*
* @return the projectedDatas
*/
public Set<ProjectedData> getProjectedDatas() {
return projectedDatas;
}
/**
* Adds the data projection.
*
* @param projectedDatas
* the projected datas
*/
public void addProjectedData(ProjectedData projectedDatas) {
this.projectedDatas.add(projectedDatas);
}
/**
* Gets the data projection.
*
* @param projection
* the projection
* @return the data projection
* @throws WifInvalidInputException
* the wif invalid input exception
*/
public ProjectedData getProjectedData(Projection projection)
throws WifInvalidInputException {
for (ProjectedData projectedData : this.getProjectedDatas()) {
if (projectedData.getProjection() == projection)
return projectedData;
}
throw new WifInvalidInputException(
"there's no ProjectedData from projection: " + projection.getLabel()
+ " in demand scenario: " + this.getDemandScenario().getLabel());
}
}