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;