From fa3f73a46151d06c4f80eb0c43d3eda6c23c3709 Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Tue, 15 Sep 2015 12:55:30 +0200 Subject: fix problems with OracleDB and configuration storage implementation --- .../moa/id/commons/db/MOASessionDBUtils.java | 10 ++++--- .../moa/id/commons/db/NewConfigurationDBRead.java | 7 +++-- .../db/dao/config/DatabaseConfigPropertyImpl.java | 35 +++++++++++++++++++--- 3 files changed, 42 insertions(+), 10 deletions(-) (limited to 'id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db') diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java index 76215528d..49e0634cb 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java @@ -163,8 +163,9 @@ public final class MOASessionDBUtils { } catch(HibernateException e) { Logger.warn("Error during MOASession database saveOrUpdate. Rollback.", e); - tx.rollback(); - throw new MOADatabaseException(e); + if (tx != null) + tx.rollback(); + throw new MOADatabaseException(e); } } @@ -183,8 +184,9 @@ public final class MOASessionDBUtils { } catch(HibernateException e) { Logger.warn("Error during MOASession database delete. Rollback.", e); - tx.rollback(); - return false; + if (tx != null) + tx.rollback(); + return false; } } diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java index 0f157f109..c049eebc4 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java @@ -41,9 +41,12 @@ public class NewConfigurationDBRead { } - public Map getOnlineApplicationKeyValueWithId(String id) { + public Map getOnlineApplicationKeyValueWithId(String id, boolean backupVersion) { try { - return conf.getOnlineApplication(id); + if (backupVersion) + return conf.getOnlineApplicationBackupVersion(id); + else + return conf.getOnlineApplication(id); } catch (ConfigurationException e) { Logger.warn("OnlineApplication with Id: " + id + " not found.", e); diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java index f59e39ac6..aad830d65 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java @@ -1,6 +1,10 @@ package at.gv.egovernment.moa.id.commons.db.dao.config; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.Map.Entry; +import java.util.regex.Pattern; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -137,10 +141,33 @@ public class DatabaseConfigPropertyImpl extends AbstractConfigurationImpl { throw new ConfigurationException("No EntityManager set!"); } - TypedQuery query = em.createQuery("select key from ConfigProperty dbconfig where dbconfig.value like :value", String.class); - query.setParameter("value", searchString.replace("*", "%")); - List result = query.getResultList(); - return result.toArray(new String[result.size()]); + TypedQuery query = em.createQuery("select * from ConfigProperty dbconfig", ConfigProperty.class); + List all = query.getResultList(); + + searchString = searchString.replace(".", "\\."); + String regex = searchString.replace("*", ".*"); + regex = regex.replace("%", "\\w*"); + log.debug("Searching with regex: {}", regex); + Pattern pattern = Pattern.compile(regex); + + List keyList = new ArrayList(); + Iterator keyIt; + if (all != null) { + keyIt = all.iterator(); + while(keyIt.hasNext()) { + ConfigProperty entry = keyIt.next(); + String value = entry.getValue(); + String key = entry.getKey(); + + if(pattern.matcher(value).matches()) { + keyList.add(key); + } + } + } + + String[] result = new String[keyList.size()]; + return keyList.toArray(result); + } /* (non-Javadoc) -- cgit v1.2.3