From 1cde66fe2269d0ac2013ba1cdb3228528a325ad7 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@bioforsk.no> Date: Fri, 7 Nov 2014 15:11:34 +0100 Subject: [PATCH] VIPSNEW-63 --- .../controller/servlet/OrganismController.java | 14 +++++++++++--- .../logic/controller/session/ForecastBean.java | 3 +-- .../logic/controller/session/OrganismBean.java | 14 +++++++++++--- .../no/bioforsk/vips/logic/entity/Organism.java | 2 +- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java b/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java index 30eff688..aec0401c 100644 --- a/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java +++ b/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java @@ -198,13 +198,21 @@ public class OrganismController extends HttpServlet { organism.setTradeName(formValidation.getFormField("tradeName").getWebValue()); organism.setHierarchyCategoryId(formValidation.getFormField("hierarchyCategoryId").getValueAsInteger()); organism.setParentOrganismId(formValidation.getFormField("parentOrganismId").getValueAsInteger()); - organism = SessionControllerGetter.getOrganismBean().storeOrganism(organism); - // Adding local name + + // Adding local name only if it is set if(!formValidation.getFormField("localName").getWebValue().isEmpty()) { - SessionControllerGetter.getOrganismBean().storeOrganismLocalName(organism, formValidation.getFormField("localName").getWebValue(), SessionLocaleUtil.getCurrentLocale(request)); + SessionControllerGetter.getOrganismBean().setOrganismLocalName(organism, formValidation.getFormField("localName").getWebValue(), SessionLocaleUtil.getCurrentLocale(request)); + } + // If local name form field is not set, but it already has a local name, delete it + else if(organism.getOrganismLocale(SessionLocaleUtil.getCurrentLocale(request).getLanguage()) != null) + { + SessionControllerGetter.getOrganismBean().removeOrganismLocalName(organism, SessionLocaleUtil.getCurrentLocale(request)); } + + organism = SessionControllerGetter.getOrganismBean().storeOrganism(organism); + //System.out.println(formValidation.getFormFields().toString()); Map<String, FormField> externalResourceIdentifiers = formValidation.getMultipleMapFormFields().get("externalResourceIdentifier"); for(String key:externalResourceIdentifiers.keySet()) diff --git a/src/main/java/no/bioforsk/vips/logic/controller/session/ForecastBean.java b/src/main/java/no/bioforsk/vips/logic/controller/session/ForecastBean.java index 087a5f7f..7cb6205a 100644 --- a/src/main/java/no/bioforsk/vips/logic/controller/session/ForecastBean.java +++ b/src/main/java/no/bioforsk/vips/logic/controller/session/ForecastBean.java @@ -57,7 +57,6 @@ import no.bioforsk.vips.logic.entity.VipsLogicUser; import no.bioforsk.vips.logic.scheduling.model.ModelRunPreprocessor; import no.bioforsk.vips.logic.scheduling.model.ModelRunPreprocessorFactory; import no.bioforsk.vips.logic.scheduling.model.PreprocessorException; -import no.bioforsk.vips.logic.util.Globals; import no.bioforsk.vips.logic.util.RunModelException; import no.bioforsk.vips.logic.util.SessionControllerGetter; import no.bioforsk.vips.logic.util.SystemTime; @@ -67,7 +66,7 @@ import org.codehaus.jackson.JsonNode; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; /** - * @copyright 2013 <a href="http://www.bioforsk.no/">Bioforsk</a> + * @copyright 2013-2014 <a href="http://www.bioforsk.no/">Bioforsk</a> * @author Tor-Einar Skog <tor-einar.skog@bioforsk.no> */ @Stateless diff --git a/src/main/java/no/bioforsk/vips/logic/controller/session/OrganismBean.java b/src/main/java/no/bioforsk/vips/logic/controller/session/OrganismBean.java index 17e9b579..f4a0093a 100644 --- a/src/main/java/no/bioforsk/vips/logic/controller/session/OrganismBean.java +++ b/src/main/java/no/bioforsk/vips/logic/controller/session/OrganismBean.java @@ -178,15 +178,14 @@ public class OrganismBean { * @param localName * @param currentLocale */ - public void storeOrganismLocalName(Organism organism, String localName, ULocale currentLocale) { + public void setOrganismLocalName(Organism organism, String localName, ULocale currentLocale) { if(organism.getOrganismLocale(currentLocale.getLanguage()) == null) { - OrganismLocalePK pk = new OrganismLocalePK(organism.getOrganismId(), currentLocale.getLanguage()); OrganismLocale oLocale = new OrganismLocale(pk); oLocale.setLocalName(localName); - em.persist(oLocale); + organism.getOrganismLocaleSet().add(oLocale); } else { @@ -195,4 +194,13 @@ public class OrganismBean { } } + public void removeOrganismLocalName(Organism organism, ULocale currentLocale) + { + OrganismLocale oLocale = organism.getOrganismLocale(currentLocale.getLanguage()); + if(oLocale != null) + { + organism.getOrganismLocaleSet().remove(oLocale); + } + } + } diff --git a/src/main/java/no/bioforsk/vips/logic/entity/Organism.java b/src/main/java/no/bioforsk/vips/logic/entity/Organism.java index f1733cae..f2b3e8f0 100644 --- a/src/main/java/no/bioforsk/vips/logic/entity/Organism.java +++ b/src/main/java/no/bioforsk/vips/logic/entity/Organism.java @@ -75,7 +75,7 @@ public class Organism implements Serializable { private Integer parentOrganismId; @Column(name = "hierarchy_category_id") private Integer hierarchyCategoryId; - @OneToMany(cascade = CascadeType.ALL, mappedBy = "organismId", fetch = FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL, mappedBy = "organismId", fetch = FetchType.EAGER, orphanRemoval = true) private Set<OrganismLocale> organismLocaleSet; @OneToMany(cascade = CascadeType.ALL, mappedBy = "organism", fetch = FetchType.EAGER) private Set<OrganismExternalResource> organismExternalResourceSet; -- GitLab