package cms.model.service; import cms.model.converter.AuthorConverter; import cms.model.dao.AuthorDAO; import cms.model.model.AuthorEntity; import cms.model.validator.AuthorValidator; import com.google.appengine.api.datastore.Key; import com.google.inject.Inject; import java.util.ConcurrentModificationException; import java.util.Map; import java.util.List; public class AuthorService implements Service { @Inject private AuthorDAO authorDAO; @Inject private AuthorConverter authorConverter; @Inject private AuthorValidator authorValidator; public List<AuthorEntity> getAllAuthors() { return authorDAO.getAll(); } public AuthorEntity getAuthor(Key key) { return authorDAO.get(key); } public AuthorEntity getAuthorByEmail(String email) { return authorDAO.getByEmail(email); } public boolean isAuthor(String email) { return (authorDAO.getByEmail(email) != null); } public AuthorEntity insert(Map<String, Object> input) throws ServiceException { AuthorEntity authorEntity = authorConverter.convert(input); authorValidator.validateAdd(authorEntity); return authorDAO.insert(authorEntity); } public AuthorEntity edit(Map<String, Object> input) throws ServiceException { AuthorEntity authorEntity = authorConverter.convert(input); authorValidator.validateEdit(authorEntity); AuthorEntity editedAuthor = null; try { editedAuthor = authorDAO.edit(authorEntity); } catch (ConcurrentModificationException e) { throw new ServiceException("Autora upravuje někdo jiný."); } return editedAuthor; } public void delete(Key key, Long version) throws ServiceException { try { authorDAO.delete(key, version); } catch (ConcurrentModificationException e) { throw new ServiceException("Autora upravuje někdo jiný."); } } }