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 30eff688aa2a686587ef22f803f9704ba710e168..aec0401c7a1ee7fdddd274e6c30978624afa2802 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 087a5f7f83927e283a3a2d83ba47f579a8eddd9c..7cb6205ac832a68b17e39350c3fb9e67c6f6890a 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 17e9b5792c104246dd6cb5862fa2626f475f4bd2..f4a0093a6371a688b587844d15e5fc345be92267 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 f1733cae38de8de3dfee1c16522c4e50f8232080..f2b3e8f04e70661c956bab2bb4085f970efcfeec 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;