package au.org.aurin.wif.svc.allocation;
import java.net.MalformedURLException;
import java.util.List;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.NoSuchAuthorityCodeException;
import au.org.aurin.wif.exception.config.GeoServerConfigException;
import au.org.aurin.wif.exception.config.ParsingException;
import au.org.aurin.wif.exception.config.WifInvalidConfigException;
import au.org.aurin.wif.exception.io.DataStoreUnavailableException;
import au.org.aurin.wif.exception.validate.IncompleteAllocationConfigException;
import au.org.aurin.wif.exception.validate.IncompleteAllocationControlScenarioException;
import au.org.aurin.wif.exception.validate.WifInvalidInputException;
import au.org.aurin.wif.model.allocation.AllocationControlScenario;
/**
* What if? projects future land use, population and employment patterns by
*/
public interface AllocationControlScenarioService {
/**
* Creates the allocation scenario.
*
* @param AllocationControlScenario
* the allocation scenario
* @param projectId
* the project id
* @return the allocation scenario
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
* @throws ParsingException
* the parsing exception
* @throws IncompleteAllocationControlScenarioException
* the incomplete allocation scenario exception
* @throws FactoryException
* @throws GeoServerConfigException
* @throws DataStoreUnavailableException
* @throws NoSuchAuthorityCodeException
* @throws MalformedURLException
* @throws IllegalArgumentException
* @throws IncompleteAllocationConfigException
*/
AllocationControlScenario createAllocationControlScenario(
AllocationControlScenario AllocationControlScenario, String projectId)
throws WifInvalidInputException, WifInvalidConfigException,
ParsingException, IncompleteAllocationControlScenarioException,
IllegalArgumentException, MalformedURLException,
NoSuchAuthorityCodeException, DataStoreUnavailableException,
GeoServerConfigException, FactoryException;
/**
* Gets the allocation scenario.
*
* @param id
* the id
* @return the allocation scenario
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
* @throws ParsingException
* the parsing exception
*/
AllocationControlScenario getAllocationControlScenario(String id)
throws WifInvalidInputException, WifInvalidConfigException,
ParsingException;
/**
* Gets the allocation scenario.
*
* @param id
* the id
* @param projectId
* the project id
* @return the allocation scenario
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
* @throws ParsingException
* the parsing exception
*/
AllocationControlScenario getAllocationControlScenario(String id,
String projectId) throws WifInvalidInputException,
WifInvalidConfigException, ParsingException;
/**
* Update allocation scenario.
*
* @param AllocationControlScenario
* the allocation scenario
* @param projectId
* the project id
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
* @throws ParsingException
* the parsing exception
*/
void updateAllocationControlScenario(
AllocationControlScenario AllocationControlScenario, String projectId)
throws WifInvalidInputException, WifInvalidConfigException,
ParsingException;
/**
* Delete allocation scenario.
*
* @param id
* the id
* @param projectId
* the project id
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
* @throws ParsingException
* the parsing exception
*/
void deleteAllocationControlScenario(String id, String projectId)
throws WifInvalidInputException, WifInvalidConfigException,
ParsingException;
/**
* Gets the allocation scenarios.
*
* @param projectId
* the project id
* @return the allocation scenarios
* @throws WifInvalidInputException
* the wif invalid input exception
*/
List<AllocationControlScenario> getAllocationControlScenarios(String projectId)
throws WifInvalidInputException;
}