package au.org.aurin.wif.restclient.demand;
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.DemandConfig;
/**
* The Interface DemandConfigServiceClient.
*/
public interface DemandConfigServiceClient {
/**
* Sets the url.
*
* @param url the new url
*/
void setUrl(String url);
/**
* Gets the demand config.
*
* @param roleId the role id
* @param projectId the project id
* @return the demand config
* @throws WifInvalidInputException the wif invalid input exception
* @throws WifInvalidConfigException the wif invalid config exception
*/
DemandConfig getDemandConfig(String roleId, String projectId)
throws WifInvalidInputException, WifInvalidConfigException;
/**
* Creates the demand config.
*
* @param roleId the role id
* @param projectId the project id
* @param demandConfig the demand config
* @return the string
* @throws WifInvalidInputException the wif invalid input exception
* @throws BindException the bind exception
*/
String createDemandConfig(String roleId, String projectId, DemandConfig demandConfig)
throws WifInvalidInputException, BindException;
/**
* Update demand config.
*
* @param roleId the role id
* @param projectId the project id
* @param demandConfig the demand config
* @throws WifInvalidInputException the wif invalid input exception
* @throws BindException the bind exception
* @throws WifInvalidConfigException the wif invalid config exception
*/
void updateDemandConfig(String roleId, String projectId, DemandConfig demandConfig)
throws WifInvalidInputException, BindException, WifInvalidConfigException;
/**
* Delete demand config.
*
* @param roleId the role id
* @param projectId the project id
* @throws WifInvalidInputException the wif invalid input exception
*/
void deleteDemandConfig(String roleId, String projectId)
throws WifInvalidInputException;
}