This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See http://git.nuiton.org/topia.git commit a66f6cdebd045f9d1bf8c3e0a0428f261a876bb5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Jan 2 17:14:00 2016 +0100 Add getSchemaNames method (See #3859) --- .../topia/persistence/TopiaApplicationContext.java | 8 +++++++- .../internal/AbstractTopiaApplicationContext.java | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java index d1655ff..bfe94e0 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java @@ -24,6 +24,7 @@ package org.nuiton.topia.persistence; * #L% */ +import com.google.common.collect.ImmutableSet; import org.nuiton.topia.persistence.support.TopiaListenableSupport; import org.nuiton.topia.persistence.support.TopiaServiceSupport; @@ -98,6 +99,12 @@ public interface TopiaApplicationContext<K extends TopiaPersistenceContext> String getSchemaName(); + /** + * @return all schema names used by persistent entities. + * @since 3.0.1 + */ + ImmutableSet<String> getSchemaNames(); + void createSchema(); void showCreateSchema(); @@ -122,5 +129,4 @@ public interface TopiaApplicationContext<K extends TopiaPersistenceContext> */ @Override void close(); - } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java index 2b938ac..f0c7be8 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java @@ -25,11 +25,14 @@ package org.nuiton.topia.persistence.internal; */ import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; +import org.hibernate.mapping.PersistentClass; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.nuiton.topia.persistence.TopiaApplicationContext; @@ -57,6 +60,7 @@ import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; @@ -492,6 +496,22 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence } @Override + public ImmutableSet<String> getSchemaNames() { + + ImmutableSet.Builder <String> result = ImmutableSet.builder(); + Iterator<PersistentClass> classMappings = hibernateProvider.getHibernateConfiguration().getClassMappings(); + while (classMappings.hasNext()) { + PersistentClass persistentClass = classMappings.next(); + String schema = persistentClass.getIdentityTable().getSchema(); + if (StringUtils.isNotEmpty(schema)) { + result.add(schema); + } + } + return result.build(); + + } + + @Override public boolean isClosed() { return closed; } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.