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 aec0401c7a1ee7fdddd274e6c30978624afa2802..4985a3d99090a3259ebac8dc509f45b60a9d64a1 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 @@ -199,19 +199,11 @@ public class OrganismController extends HttpServlet { organism.setHierarchyCategoryId(formValidation.getFormField("hierarchyCategoryId").getValueAsInteger()); organism.setParentOrganismId(formValidation.getFormField("parentOrganismId").getValueAsInteger()); - - // Adding local name only if it is set - if(!formValidation.getFormField("localName").getWebValue().isEmpty()) - { - 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); + organism = SessionControllerGetter.getOrganismBean().storeOrganismWithLocalName( + organism, + formValidation.getFormField("localName").getWebValue(), + SessionLocaleUtil.getCurrentLocale(request) + ); //System.out.println(formValidation.getFormFields().toString()); Map<String, FormField> externalResourceIdentifiers = formValidation.getMultipleMapFormFields().get("externalResourceIdentifier"); 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 f4a0093a6371a688b587844d15e5fc345be92267..d9dc6ecebc0b9db8bd31311b519fb5221826749d 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 @@ -36,7 +36,9 @@ import no.bioforsk.vips.logic.entity.Organism; import no.bioforsk.vips.logic.entity.OrganismExternalResource; import no.bioforsk.vips.logic.entity.OrganismLocale; import no.bioforsk.vips.logic.entity.OrganismLocalePK; +import no.bioforsk.vips.logic.i18n.SessionLocaleUtil; import no.bioforsk.vips.logic.util.HierarchyCategoryLocaleNames; +import no.bioforsk.vips.logic.util.SessionControllerGetter; /** * @copyright 2014 <a href="http://www.bioforsk.no/">Bioforsk</a> @@ -129,13 +131,26 @@ public class OrganismBean { } } - public Organism storeOrganism(Organism organism) { + public Organism storeOrganismWithLocalName(Organism organism, String localName, ULocale currentLocale) { // Ensure that parentOrganismId = -1 => null if(organism.getParentOrganismId().equals(-1)) { organism.setParentOrganismId(null); } - return em.merge(organism); + organism = em.merge(organism); + // Adding local name only if it is set + if(!localName.isEmpty()) + { + //SessionControllerGetter.getOrganismBean().setOrganismLocalName(organism, localName, currentLocale); + this.setOrganismLocalName(organism, localName, currentLocale); + } + // If local name form field is not set, but it already has a local name, delete it + else if(organism.getOrganismLocale(currentLocale.getLanguage()) != null) + { + //SessionControllerGetter.getOrganismBean().removeOrganismLocalName(organism, currentLocale); + this.removeOrganismLocalName(organism, currentLocale); + } + return organism; } public void storeOrganismExternalResource(OrganismExternalResource organismExternalResource) { @@ -179,7 +194,6 @@ public class OrganismBean { * @param currentLocale */ public void setOrganismLocalName(Organism organism, String localName, ULocale currentLocale) { - if(organism.getOrganismLocale(currentLocale.getLanguage()) == null) { OrganismLocalePK pk = new OrganismLocalePK(organism.getOrganismId(), currentLocale.getLanguage()); 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 f2b3e8f04e70661c956bab2bb4085f970efcfeec..8c1c4752e002ff87af6fd9842e7f56ffa51cb9bc 100644 --- a/src/main/java/no/bioforsk/vips/logic/entity/Organism.java +++ b/src/main/java/no/bioforsk/vips/logic/entity/Organism.java @@ -19,6 +19,7 @@ package no.bioforsk.vips.logic.entity; import java.io.Serializable; +import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.Basic; @@ -143,6 +144,8 @@ public class Organism implements Serializable { public Set<OrganismLocale> getOrganismLocaleSet() { + if(this.organismLocaleSet == null) + this.organismLocaleSet = new HashSet<>(); return organismLocaleSet; }