From 4820d2c11ae226680166809c5d204031e1b7f2b7 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Tue, 17 Sep 2019 15:39:08 -0400 Subject: [PATCH] fixes the issue with the settings api introduced by #6042. (#6173) --- .../settings/SettingsServiceBean.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java index adac915bceb..c7969a4dcdb 100644 --- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java @@ -518,7 +518,22 @@ public String getValueForKey( Key key, String lang, String defaultValue ) { } public Setting set( String name, String content ) { - Setting s = new Setting( name, content ); + Setting s = null; + + List tokens = em.createNamedQuery("Setting.findByName", Setting.class) + .setParameter("name", name ) + .getResultList(); + + if(tokens.size() > 0) { + s = tokens.get(0); + } + + if (s == null) { + s = new Setting( name, content ); + } else { + s.setContent(content); + } + s = em.merge(s); actionLogSvc.log( new ActionLogRecord(ActionLogRecord.ActionType.Setting, "set") .setInfo(name + ": " + content)); @@ -526,7 +541,23 @@ public Setting set( String name, String content ) { } public Setting set( String name, String lang, String content ) { - Setting s = new Setting( name, lang, content ); + Setting s = null; + + List tokens = em.createNamedQuery("Setting.findByNameAndLang", Setting.class) + .setParameter("name", name ) + .setParameter("lang", lang ) + .getResultList(); + + if(tokens.size() > 0) { + s = tokens.get(0); + } + + if (s == null) { + s = new Setting( name, lang, content ); + } else { + s.setContent(content); + } + em.merge(s); actionLogSvc.log( new ActionLogRecord(ActionLogRecord.ActionType.Setting, "set") .setInfo(name + ": " +lang + ": " + content));