package au.org.aurin.wif.svc;
import java.util.List;
import au.org.aurin.wif.exception.config.WifInvalidConfigException;
import au.org.aurin.wif.exception.validate.InvalidFFNameException;
import au.org.aurin.wif.exception.validate.InvalidLabelException;
import au.org.aurin.wif.exception.validate.WifInvalidInputException;
import au.org.aurin.wif.model.allocation.AllocationLU;
/**
* The Interface AllocationLUService. It handles the CRUD operations on
* AllocationLU, plus other important access operations
*/
public interface AllocationLUService {
/**
* Adds the allocationLU.
*
* @param allocationLU
* the allocationLU
* @param projectId
* the project id
* @return the allocationLU
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
* @throws InvalidLabelException
* @throws InvalidFFNameException
*/
AllocationLU createAllocationLU(AllocationLU allocationLU, String projectId)
throws WifInvalidInputException, WifInvalidConfigException,
InvalidLabelException, InvalidFFNameException;
/**
* Gets the allocationLU.
*
* @param id
* the id
* @return the allocationLU
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
*/
AllocationLU getAllocationLU(String id) throws WifInvalidInputException,
WifInvalidConfigException;
/**
* Gets the allocationLU.
*
* @param id
* the id
* @param projectId
* the project id
* @return the allocationLU
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
*/
AllocationLU getAllocationLU(String id, String projectId)
throws WifInvalidInputException, WifInvalidConfigException;
/**
* Update allocationLU.
*
* @param allocationLU
* the allocationLU
* @param projectId
* the project id
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
*/
void updateAllocationLU(AllocationLU allocationLU, String projectId)
throws WifInvalidInputException, WifInvalidConfigException;
/**
* Delete allocationLU.
*
* @param id
* the id
* @param projectId
* the project id
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
* the wif invalid config exception
*/
void deleteAllocationLU(String id, String projectId)
throws WifInvalidInputException, WifInvalidConfigException;
/**
* Gets the allocationLUs.
*
* @param projectId
* the project id
* @return the allocationLUs
* @throws WifInvalidInputException
* the wif invalid input exception
*/
List<AllocationLU> getAllocationLUs(String projectId)
throws WifInvalidInputException;
/**
* Gets the allocationLUs which have suitability land use.
*
* @param projectId
* the project id
* @return the allocationLUs
* @throws WifInvalidInputException
* the wif invalid input exception
* @throws WifInvalidConfigException
*/
List<AllocationLU> getAllocationLUsSuitabilityAssociated(String projectId)
throws WifInvalidInputException, WifInvalidConfigException;
}