package au.org.aurin.wif.restclient.demand;
import java.util.List;
import org.springframework.validation.BindException;
import au.org.aurin.wif.exception.config.WifInvalidConfigException;
import au.org.aurin.wif.exception.validate.WifInvalidInputException;
import au.org.aurin.wif.model.demand.AreaRequirement;
import au.org.aurin.wif.model.demand.DemandScenario;
import au.org.aurin.wif.model.reports.demand.DemandAnalysisReport;
/**
* The Interface DemandScenarioServiceClient.
*/
public interface DemandScenarioServiceClient {
/**
* Sets the url.
*
* @param url
* the new url
*/
void setUrl(String url);
/**
* Gets the demand scenarios for project.
*
* @param roleId
* the role id
* @param projectId
* the project id
* @return the demand scenarios for project
* @throws WifInvalidInputException
* the wif invalid input exception
*/
List<DemandScenario> getDemandScenariosForProject(String roleId,
String projectId) throws WifInvalidInputException;
/**
* Gets the demand scenario.
*
* @param roleId
* the role id
* @param projectId
* the project id
* @param id
* the id
* @return the demand scenario
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
*/
DemandScenario getDemandScenario(String roleId, String projectId, String id)
throws WifInvalidInputException, WifInvalidConfigException;
/**
* Creates the demand scenario.
*
* @param roleId
* the role id
* @param projectId
* the project id
* @param demandScenario
* the demand scenario
* @return the string
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws BindException
* the bind exception
*/
String createDemandScenario(String roleId, String projectId,
DemandScenario demandScenario) throws WifInvalidInputException,
BindException;
/**
* Update demand scenario.
*
* @param roleId
* the role id
* @param projectId
* the project id
* @param id
* the id
* @param demandScenario
* the demand scenario
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws BindException
* the bind exception
* @throws WifInvalidConfigException
* the wif invalid config exception
*/
void updateDemandScenario(String roleId, String projectId, String id,
DemandScenario demandScenario) throws WifInvalidInputException,
BindException, WifInvalidConfigException;
/**
* Delete demand scenario.
*
* @param roleId
* the role id
* @param projectId
* the project id
* @param id
* the id
* @throws WifInvalidInputException
* the wif invalid input exception
*/
void deleteDemandScenario(String roleId, String projectId, String id)
throws WifInvalidInputException;
/**
* Gets the demand scenario outcome.
*
* @param roleId
* the role id
* @param projectId
* the project id
* @param id
* the id
* @return the demand scenario outcome
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
*/
List<AreaRequirement> getDemandScenarioOutcome(String roleId,
String projectId, String id) throws WifInvalidInputException,
WifInvalidConfigException;
/**
* Gets the demand scenario report.
*
* @param roleId
* the role id
* @param projectId
* the project id
* @param id
* the id
* @return the demand scenario report
* @throws WifInvalidConfigException
* @throws WifInvalidInputException
*/
DemandAnalysisReport getDemandScenarioReport(String roleId, String projectId,
String id) throws WifInvalidInputException, WifInvalidConfigException;
}