package fr.plil.sio.persistence.api; import java.util.List; public interface RightService { /** * Create a parent right with a specific name in the database. * It is possible that two rights has the same name. * * @param name the name of the right * @throws IllegalArgumentException if name is null */ Right create(String name); /** * Create a sibling right attached to a parent right with a specific name in the database. * It is possible that two rights has the same name. * Return only the right with the parent in the field parent. * * * @param name the name of the right * @param parent the parent right * @throws IllegalArgumentException if name or parent is null, or if parent does not exist in the database. */ Right create(String name, Right parent); /** * Delete a right in the database. Delete sibling rights if present. * * @param right the right to delete * @return true if right has been deleted, false else. * @throws IllegalArgumentException if right is null. */ boolean delete(Right right); /** * Find a list of rights in the database based on their name. * All dependencies at one-level are loaded, i.e for each right returned the parent and sibling are present. * * @param name the name of the rights to search for. * @return A list of rights, eventually empty. * @throws IllegalArgumentException if name is null */ List findByName(String name); /** * Find a right in the database based on its id. * All dependencies at one-level are loaded, i.e the parent and sibling are present. * * @param id the name of the right to search for. * @return an instance of the right if found, else null. * @throws IllegalArgumentException if id is null */ Right findOne(Long id); }