Author: bleny Date: 2014-03-04 10:56:19 +0100 (Tue, 04 Mar 2014) New Revision: 1710 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1710 Log: refs #4560 add missing CRUD operations for companies Added: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/IllegalDeletionException.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/DeleteCompanyAction.java Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompaniesService.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoActionSupport.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/CompaniesAction.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditCompanyAction.java Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompaniesService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompaniesService.java 2014-03-03 17:16:55 UTC (rev 1709) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompaniesService.java 2014-03-04 09:56:19 UTC (rev 1710) @@ -3,8 +3,10 @@ import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyImpl; import fr.ifremer.wao.entity.CompanyTopiaDao; +import org.nuiton.topia.persistence.TopiaEntity; import java.util.List; +import java.util.Map; public class CompaniesService extends WaoServiceSupport { @@ -52,4 +54,22 @@ } + public void deleteCompany(String companyId) throws IllegalDeletionException { + + CompanyTopiaDao dao = getPersistenceContext().getCompanyDao(); + + Company company = dao.findByTopiaId(companyId); + + Map<Class<? extends TopiaEntity>,List<? extends TopiaEntity>> allUsages = dao.findAllUsages(company); + + if (allUsages.isEmpty()) { + dao.delete(company); + } else { + throw new IllegalDeletionException(allUsages.keySet()); + } + + commit(); + + } + } Added: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/IllegalDeletionException.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/IllegalDeletionException.java (rev 0) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/IllegalDeletionException.java 2014-03-04 09:56:19 UTC (rev 1710) @@ -0,0 +1,25 @@ +package fr.ifremer.wao.services.service; + +import fr.ifremer.wao.WaoException; +import org.nuiton.topia.persistence.TopiaEntity; + +import java.util.Set; + +/** + * L'utilisateur a voulu supprimer une entité mais on doit refuser sa demande car + * elle est liée à d'autres entités en base. + */ +public class IllegalDeletionException extends WaoException { + + /** Les types d'entités qui utilisent l'entité qu'on ne peut pas supprimer. */ + protected Set<Class<? extends TopiaEntity>> classes; + + public IllegalDeletionException(Set<Class<? extends TopiaEntity>> classes) { + this.classes = classes; + } + + public Set<Class<? extends TopiaEntity>> getClasses() { + return classes; + } + +} Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoActionSupport.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoActionSupport.java 2014-03-03 17:16:55 UTC (rev 1709) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoActionSupport.java 2014-03-04 09:56:19 UTC (rev 1710) @@ -1,6 +1,7 @@ package fr.ifremer.wao.web; import fr.ifremer.wao.WaoApplicationConfig; +import org.nuiton.i18n.I18n; import org.nuiton.web.struts2.BaseAction; public class WaoActionSupport extends BaseAction { @@ -21,4 +22,8 @@ this.session = session; } + public String t(String key, Object... args) { + return I18n.l(getLocale(), key, args); + } + } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/CompaniesAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/CompaniesAction.java 2014-03-03 17:16:55 UTC (rev 1709) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/CompaniesAction.java 2014-03-04 09:56:19 UTC (rev 1710) @@ -1,12 +1,13 @@ package fr.ifremer.wao.web.action.administration; +import com.opensymphony.xwork2.Preparable; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.services.service.CompaniesService; import fr.ifremer.wao.web.WaoJspActionSupport; import java.util.List; -public class CompaniesAction extends WaoJspActionSupport { +public class CompaniesAction extends WaoJspActionSupport implements Preparable { protected CompaniesService service; @@ -17,12 +18,10 @@ } @Override - public String execute() { + public void prepare() { companies = service.getCompanies(); - return SUCCESS; - } public List<Company> getCompanies() { Added: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/DeleteCompanyAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/DeleteCompanyAction.java (rev 0) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/DeleteCompanyAction.java 2014-03-04 09:56:19 UTC (rev 1710) @@ -0,0 +1,49 @@ +package fr.ifremer.wao.web.action.administration; + +import fr.ifremer.wao.services.service.CompaniesService; +import fr.ifremer.wao.services.service.IllegalDeletionException; +import fr.ifremer.wao.web.WaoJspActionSupport; +import org.apache.struts2.convention.annotation.Result; +import org.apache.struts2.convention.annotation.Results; + +@Results({ + @Result(name="error", type="redirectAction", params = { "actionName", "companies" }), + @Result(name="success", type="redirectAction", params = { "actionName", "companies" }) +}) +public class DeleteCompanyAction extends WaoJspActionSupport { + + protected CompaniesService service; + + protected String companyId; + + public void setCompanyId(String companyId) { + this.companyId = companyId; + } + + public void setService(CompaniesService service) { + this.service = service; + } + + @Override + public String execute() { + + try { + + service.deleteCompany(companyId); + + session.addMessage(t("wao.ui.action.deleteCompany.success")); + + return SUCCESS; + + } catch (IllegalDeletionException e) { + + // TODO brendan 04/03/14 préciser le problème + session.addErrorMessages(t("wao.ui.action.deleteCompany.failure")); + + return ERROR; + + } + + } + +} Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditCompanyAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditCompanyAction.java 2014-03-03 17:16:55 UTC (rev 1709) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditCompanyAction.java 2014-03-04 09:56:19 UTC (rev 1710) @@ -45,7 +45,7 @@ service.save(company); - addActionMessage("Société enregistrée"); + session.addMessage(t("wao.ui.action.save.success")); return SUCCESS; @@ -58,4 +58,5 @@ public Company getCompany() { return company; } + }