package com.megatim.fdxconsultation.core.impl.documents; import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO; import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager; import com.megatim.commons.tools.exceptions.ApplicationServerException; import com.megatim.fdxconsultation.core.ifaces.documents.DocumentManager; import com.megatim.fdxconsultation.dao.ifaces.documents.CategoryDAO; import com.megatim.fdxconsultation.dao.ifaces.documents.DocumentDAO; import com.megatim.fdxconsultation.dao.impl.utils.BaseEntityUtil; import com.megatim.fdxconsultation.model.administration.User; import com.megatim.fdxconsultation.model.documents.Category; import com.megatim.fdxconsultation.model.documents.Document; import javax.enterprise.context.Dependent; import javax.inject.Inject; import javax.transaction.Transactional; /** * * @author Gabuntu */ @Dependent public class DocumentManageImpl extends AbstractGenericManager implements DocumentManager { @Inject private DocumentDAO dao; @Inject private CategoryDAO categoryDAO; @Override public GenericDAO getDao() { return dao; } @Override public String getEntityIdName() { return "id"; } @Transactional @Override public Document add(Long CategoryId, Document document, User connectedUser) { Category category = categoryDAO.getById(CategoryId); if (category == null) { throw new ApplicationServerException("La catégorie à associer au document à enregistrer est introuvable"); } document.setCategory(category); BaseEntityUtil.setBaseEntityFieldsForAdd(document, connectedUser); return dao.save(document); } @Transactional @Override public Document update(Long id, Document document, User connectedUser) { Document doc = getById(id); doc.setLabel(document.getLabel()); doc.setVersion(document.getVersion()); doc.setPosition(document.getPosition()); doc.setItemFile(document.getItemFile()); BaseEntityUtil.setBaseEntityFieldsForUpdate(doc, connectedUser); return dao.save(doc); } @Transactional @Override public Document delete(Long id, User connectedUser) { Document document = getById(id); BaseEntityUtil.setBaseEntityFieldsForDelete(document, connectedUser); return dao.save(document); } private Document getById(Long id) { Document document = dao.getById(id); if (document == null) { throw new ApplicationServerException("Document introuvable"); } return document; } }