diff options
Diffstat (limited to 'id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java')
-rw-r--r-- | id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java | 110 |
1 files changed, 81 insertions, 29 deletions
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java index 297c63d7d..b9b5ad611 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java @@ -1,5 +1,7 @@ package at.gv.egovernment.moa.id.commons.config.persistence; +import java.sql.SQLSyntaxErrorException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -131,13 +133,88 @@ public class MOAIDConfigurationImpl extends DatabaseConfigPropertyImpl implement String keyId = MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES + ".%." + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER; - + + List<ConfigProperty> oaSearchResult = null; TypedQuery<ConfigProperty> oaSearchQuery = em.createQuery("select dbconfig from ConfigProperty dbconfig where dbconfig.key like :key and dbconfig.value = SUBSTRING(:uniqueID, 1, LENGTH(dbconfig.value))", ConfigProperty.class); oaSearchQuery.setParameter("key", keyId); oaSearchQuery.setParameter("uniqueID", publicURLPrefix); - List<ConfigProperty> oaSearchResult = oaSearchQuery.getResultList(); + oaSearchResult = oaSearchQuery.getResultList(); + + return postProcessLoadOnlineApplication(em, oaSearchResult); + + } + + /* (non-Javadoc) + * @see at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration#getOnlineApplicationBackupVersion(java.lang.String) + */ + @Override + public Map<String, String> getOnlineApplicationBackupVersion( + String publicURLPrefix) throws ConfigurationException { + Logger.debug("Use backup implementation to query configuration database"); + + EntityManager em = this.getPersistenceContext(); + if (null == em) { + Logger.error("No EntityManager set!"); + throw new ConfigurationException("No EntityManager set!"); + + } + + //search key prefix for online application with this publicURLPrefix + String keyId = MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES + + ".%." + + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER; - if (oaSearchResult.size() == 0) { + List<ConfigProperty> oaSearchResult = new ArrayList<ConfigProperty>(); + + TypedQuery<ConfigProperty> oaSearchQuery = em.createQuery("select dbconfig from ConfigProperty dbconfig where dbconfig.key like :key", ConfigProperty.class); + oaSearchQuery.setParameter("key", keyId); + List<ConfigProperty> intermResult = oaSearchQuery.getResultList(); + if (intermResult != null) { + for (ConfigProperty el : intermResult) { + if (publicURLPrefix.startsWith(el.getValue())) + oaSearchResult.add(el); + + } + } + + return postProcessLoadOnlineApplication(em, oaSearchResult); + + } + + /** + * Small helper method. NOTE: may return empty configuration properties, but never {@code null}. + * + * @param propPrefix: the prefix of the desired property. + * @param input: List of database objects with key/value information. + * @param removePrefix: Indicates if the prefix should be removed from the result key + * @return the {@link Map} of configuration properties + */ + private Map<String, String> getKeyValueFromDatabaseDAO(Iterator<ConfigProperty> input, final String prefix, boolean removePrefix) { + Map<String, String> configProp = new HashMap<String, String>(); + while (input.hasNext()) { + ConfigProperty el = input.next(); + if (removePrefix) { + if (el.getKey().startsWith(prefix)) { + String propertyName = KeyValueUtils.removePrefixFromKey(el.getKey(), prefix); + configProp.put(propertyName, el.getValue()); + + } + } else + configProp.put(el.getKey(), el.getValue()); + + } + return configProp; + } + + /** + * Online-Application load operation post-processing + * + * @param em EntityManager for Database access + * @param oaSearchResult Search result of first OA selection operation + * @return Map of post-processed OA configuration key/value pairs + */ + private Map<String, String> postProcessLoadOnlineApplication(EntityManager em, List<ConfigProperty> oaSearchResult) { + if (oaSearchResult == null || oaSearchResult.size() == 0) { Logger.debug("No entries found."); return null; } @@ -170,31 +247,6 @@ public class MOAIDConfigurationImpl extends DatabaseConfigPropertyImpl implement result.put(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES, oaType); return result; + } - - /** - * Small helper method. NOTE: may return empty configuration properties, but never {@code null}. - * - * @param propPrefix: the prefix of the desired property. - * @param input: List of database objects with key/value information. - * @param removePrefix: Indicates if the prefix should be removed from the result key - * @return the {@link Map} of configuration properties - */ - private Map<String, String> getKeyValueFromDatabaseDAO(Iterator<ConfigProperty> input, final String prefix, boolean removePrefix) { - Map<String, String> configProp = new HashMap<String, String>(); - while (input.hasNext()) { - ConfigProperty el = input.next(); - if (removePrefix) { - if (el.getKey().startsWith(prefix)) { - String propertyName = KeyValueUtils.removePrefixFromKey(el.getKey(), prefix); - configProp.put(propertyName, el.getValue()); - - } - } else - configProp.put(el.getKey(), el.getValue()); - - } - return configProp; - } - } |