Author: bleny Date: 2013-10-11 16:40:39 +0200 (Fri, 11 Oct 2013) New Revision: 2837 Url: http://nuiton.org/projects/topia/repository/revisions/2837 Log: move some methods around ApplicationContext and PersistenceContext recode instanciation of business PersistenceContext Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaPersistenceContext.java trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaPersistenceContext.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ApplicationContextTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/PersistenceContextTransformer.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java 2013-10-11 14:18:51 UTC (rev 2836) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java 2013-10-11 14:40:39 UTC (rev 2837) @@ -28,14 +28,22 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; 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.SessionFactory; +import org.hibernate.cfg.Configuration; +import org.hibernate.tool.hbm2ddl.SchemaExport; +import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.nuiton.topia.event.TopiaEntitiesVetoable; import org.nuiton.topia.event.TopiaEntityListener; import org.nuiton.topia.event.TopiaEntityVetoable; import org.nuiton.topia.event.TopiaSchemaListener; import org.nuiton.topia.event.TopiaTransactionListener; import org.nuiton.topia.event.TopiaTransactionVetoable; +import org.nuiton.topia.framework.TopiaFiresSupport; import org.nuiton.topia.framework.TopiaService; +import org.nuiton.topia.framework.TopiaUtil; import org.nuiton.topia.persistence.DefaultTopiaIdFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaIdFactory; @@ -55,13 +63,15 @@ */ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistenceContext> implements TopiaReplicationSupport, TopiaListenableSupport, TopiaServiceSupport { + private static final Log log = LogFactory.getLog(AbstractTopiaApplicationContext.class); + protected TopiaIdFactory topiaIdFactory; protected ImmutableMap<String, String> configuration; protected TopiaReplicationSupport topiaReplicationSupport; - protected TopiaListenableSupport topiaListenableSupport; + protected TopiaFiresSupport topiaFiresSupport = new TopiaFiresSupport(); protected TopiaServiceSupport topiaServiceSupport; @@ -105,8 +115,7 @@ } protected TopiaListenableSupport getTopiaListenableSupport() { - // TODO brendan 11/10/13 instancier - return topiaListenableSupport; + return topiaFiresSupport; } protected ImmutableMap<String, String> getConfiguration() { @@ -157,92 +166,92 @@ @Override public void addTopiaEntityListener(TopiaEntityListener listener) { - topiaListenableSupport.addTopiaEntityListener(listener); + topiaFiresSupport.addTopiaEntityListener(listener); } @Override public void addTopiaEntityListener(Class<? extends TopiaEntity> entityClass, TopiaEntityListener listener) { - topiaListenableSupport.addTopiaEntityListener(entityClass, listener); + topiaFiresSupport.addTopiaEntityListener(entityClass, listener); } @Override public void removeTopiaEntityListener(TopiaEntityListener listener) { - topiaListenableSupport.removeTopiaEntityListener(listener); + topiaFiresSupport.removeTopiaEntityListener(listener); } @Override public void removeTopiaEntityListener(Class<? extends TopiaEntity> entityClass, TopiaEntityListener listener) { - topiaListenableSupport.removeTopiaEntityListener(entityClass, listener); + topiaFiresSupport.removeTopiaEntityListener(entityClass, listener); } @Override public void addTopiaEntityVetoable(TopiaEntityVetoable vetoable) { - topiaListenableSupport.addTopiaEntityVetoable(vetoable); + topiaFiresSupport.addTopiaEntityVetoable(vetoable); } @Override public void addTopiaEntityVetoable(Class<? extends TopiaEntity> entityClass, TopiaEntityVetoable vetoable) { - topiaListenableSupport.addTopiaEntityVetoable(entityClass, vetoable); + topiaFiresSupport.addTopiaEntityVetoable(entityClass, vetoable); } @Override public void removeTopiaEntityVetoable(TopiaEntityVetoable vetoable) { - topiaListenableSupport.removeTopiaEntityVetoable(vetoable); + topiaFiresSupport.removeTopiaEntityVetoable(vetoable); } @Override public void removeTopiaEntityVetoable(Class<? extends TopiaEntity> entityClass, TopiaEntityVetoable vetoable) { - topiaListenableSupport.removeTopiaEntityVetoable(entityClass, vetoable); + topiaFiresSupport.removeTopiaEntityVetoable(entityClass, vetoable); } @Override public void addTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) { - topiaListenableSupport.addTopiaEntitiesVetoable(vetoable); + topiaFiresSupport.addTopiaEntitiesVetoable(vetoable); } @Override public void removeTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) { - topiaListenableSupport.removeTopiaEntitiesVetoable(vetoable); + topiaFiresSupport.removeTopiaEntitiesVetoable(vetoable); } @Override public void addTopiaTransactionListener(TopiaTransactionListener listener) { - topiaListenableSupport.addTopiaTransactionListener(listener); + topiaFiresSupport.addTopiaTransactionListener(listener); } @Override public void removeTopiaTransactionListener(TopiaTransactionListener listener) { - topiaListenableSupport.removeTopiaTransactionListener(listener); + topiaFiresSupport.removeTopiaTransactionListener(listener); } @Override public void addTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) { - topiaListenableSupport.addTopiaTransactionVetoable(vetoable); + topiaFiresSupport.addTopiaTransactionVetoable(vetoable); } @Override public void removeTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) { - topiaListenableSupport.removeTopiaTransactionVetoable(vetoable); + topiaFiresSupport.removeTopiaTransactionVetoable(vetoable); } @Override public void addPropertyChangeListener(PropertyChangeListener listener) { - topiaListenableSupport.addPropertyChangeListener(listener); + topiaFiresSupport.addPropertyChangeListener(listener); } @Override public void removePropertyChangeListener(PropertyChangeListener listener) { - topiaListenableSupport.removePropertyChangeListener(listener); + topiaFiresSupport.removePropertyChangeListener(listener); } @Override public void addTopiaSchemaListener(TopiaSchemaListener listener) { - topiaListenableSupport.addTopiaSchemaListener(listener); + topiaFiresSupport.addTopiaSchemaListener(listener); } @Override public void removeTopiaSchemaListener(TopiaSchemaListener listener) { - topiaListenableSupport.removeTopiaSchemaListener(listener); + topiaFiresSupport.removeTopiaSchemaListener(listener); } @Override @@ -259,4 +268,93 @@ public Map<String, TopiaService> getServices() { return topiaServiceSupport.getServices(); } + + public List<Class<?>> getPersistenceClasses() { + return null; // TODO AThimel 27/09/13 May be moved to TopiaHibernateSupport ? + } + + public boolean isSchemaEmpty() { + Configuration configuration = getHibernateProvider().getHibernateConfiguration(); + boolean result = TopiaUtil.isSchemaEmpty(configuration); + return result; + } + + public boolean isTableExists(Class<?> clazz) { + Configuration configuration = getHibernateProvider().getHibernateConfiguration(); + boolean result = TopiaUtil.isSchemaExist(configuration, clazz.getName()); + return result; + } + + public String getSchemaName() { + // TODO AThimel 02/08/13 I absolutely don't know if it works + return getConfiguration().get(TopiaContextFactory.CONFIG_DEFAULT_SCHEMA); + } + + public void createSchema() { + try { + boolean showSchema = false; + if (log.isDebugEnabled()) { + showSchema = true; + } + // TODO brendan 11/10/13 reable event + // topiaFiresSupport.firePreCreateSchema(this); + new SchemaExport(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, true, false, true); + // TODO brendan 11/10/13 reable event + // topiaFiresSupport.firePostCreateSchema(this); + } catch (HibernateException eee) { + throw new TopiaException( + String.format("Could not create schema for reason: %s", + eee.getMessage()), eee); + } + } + + public void showCreateSchema() { + try { + new SchemaExport(getHibernateProvider().getHibernateConfiguration()). + execute(true, false, false, true); + } catch (HibernateException eee) { + throw new TopiaException( + String.format("Could not show create schema for reason: %s", + eee.getMessage()), eee); + } + + } + + public void updateSchema() { + try { + boolean showSchema = false; + if (log.isDebugEnabled()) { + showSchema = true; + } + + // TODO brendan 11/10/13 reable event + // topiaFiresSupport.firePreUpdateSchema(this); + new SchemaUpdate(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, + true); + // topiaFiresSupport.firePostUpdateSchema(this); + } catch (HibernateException eee) { + throw new TopiaException( + String.format("Could not update schema for reason: %s", + eee.getMessage()), eee); + } + } + + public void dropSchema() { + try { + boolean showSchema = false; + if (log.isDebugEnabled()) { + showSchema = true; + } + + // TODO brendan 11/10/13 reable event + // topiaFiresSupport.firePreDropSchema(this); + new SchemaExport(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, true, true, false); +// topiaFiresSupport.firePostDropSchema(this); + } catch (HibernateException eee) { + throw new TopiaException( + String.format("Could not drop schema for reason: %s", + eee.getMessage()), eee); + } + } + } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaPersistenceContext.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaPersistenceContext.java 2013-10-11 14:18:51 UTC (rev 2836) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaPersistenceContext.java 2013-10-11 14:40:39 UTC (rev 2837) @@ -59,11 +59,6 @@ private static final Log log = LogFactory.getLog(AbstractTopiaPersistenceContext.class); /** - * List of persistent classes - */ - protected List<Class<?>> persistenceClasses = Lists.newArrayList(); - - /** * Already loaded DAO cache within this persistence context */ protected Map<Class<? extends TopiaEntity>, TopiaDAO<? extends TopiaEntity>> daoCache = Maps.newHashMap(); // TODO AThimel 27/09/13 Concurrent map ? @@ -105,12 +100,11 @@ // * @param config */ public AbstractTopiaPersistenceContext(HibernateProvider hibernateProvider, - TopiaSqlSupport sqlSupport, TopiaListenableSupport listenableSupport, TopiaIdFactory topiaIdFactory) { this.hibernateSupport = new InternalTopiaHibernateSupport(hibernateProvider); - this.sqlSupport = sqlSupport; + // TODO brendan 11/10/13 init this.sqlSupport this.listenableSupport = listenableSupport; this.topiaIdFactory = topiaIdFactory; // this.config = config; @@ -181,11 +175,6 @@ return topiaIdFactory; } - @Override - public List<Class<?>> getPersistenceClasses() { - return null; // TODO AThimel 27/09/13 May be moved to TopiaHibernateSupport ? - } - // @Override // public Properties getConfig() { // return config; @@ -255,94 +244,6 @@ } @Override - public boolean isSchemaEmpty() { - Configuration configuration = hibernateSupport.getHibernateConfiguration(); - boolean result = TopiaUtil.isSchemaEmpty(configuration); - return result; - } - - @Override - public boolean isTableExists(Class<?> clazz) { - checkClosed(); - - Configuration configuration = hibernateSupport.getHibernateConfiguration(); - boolean result = TopiaUtil.isSchemaExist(configuration, clazz.getName()); - return result; - } - - @Override - public String getSchemaName() { - // TODO AThimel 02/08/13 I absolutely don't know if it works - return getConfig().getProperty(TopiaContextFactory.CONFIG_DEFAULT_SCHEMA); - } - - @Override - public void createSchema() { - try { - boolean showSchema = false; - if (log.isDebugEnabled()) { - showSchema = true; - } - getFiresSupport().firePreCreateSchema(this); - new SchemaExport(hibernateSupport.getHibernateConfiguration()).execute(showSchema, true, false, true); - getFiresSupport().firePostCreateSchema(this); - } catch (HibernateException eee) { - throw new TopiaException( - String.format("Could not create schema for reason: %s", - eee.getMessage()), eee); - } - - } - - @Override - public void showCreateSchema() { - try { - new SchemaExport(hibernateSupport.getHibernateConfiguration()). - execute(true, false, false, true); - } catch (HibernateException eee) { - throw new TopiaException( - String.format("Could not show create schema for reason: %s", - eee.getMessage()), eee); - } - - } - - @Override - public void updateSchema() { - try { - boolean showSchema = false; - if (log.isDebugEnabled()) { - showSchema = true; - } - getFiresSupport().firePreUpdateSchema(this); - new SchemaUpdate(hibernateSupport.getHibernateConfiguration()).execute(showSchema, - true); - getFiresSupport().firePostUpdateSchema(this); - } catch (HibernateException eee) { - throw new TopiaException( - String.format("Could not update schema for reason: %s", - eee.getMessage()), eee); - } - } - - @Override - public void dropSchema() { - try { - boolean showSchema = false; - if (log.isDebugEnabled()) { - showSchema = true; - } - getFiresSupport().firePreDropSchema(this); - new SchemaExport(hibernateSupport.getHibernateConfiguration()).execute(showSchema, true, true, false); - getFiresSupport().firePostDropSchema(this); - } catch (HibernateException eee) { - throw new TopiaException( - String.format("Could not drop schema for reason: %s", - eee.getMessage()), eee); - } - } - - @Override public void commitTransaction() { //To change body of implemented methods use File | Settings | File Templates. } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaPersistenceContext.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaPersistenceContext.java 2013-10-11 14:18:51 UTC (rev 2836) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaPersistenceContext.java 2013-10-11 14:40:39 UTC (rev 2837) @@ -27,9 +27,6 @@ import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaIdFactory; -import java.util.List; -import java.util.Properties; - /** * This API provides all methods related to persistence : * <ul> @@ -67,61 +64,4 @@ */ TopiaIdFactory getTopiaIdFactory(); - /** - * @return the list of classes managed by this TopiaPersistenceContext - */ - List<Class<?>> getPersistenceClasses(); - - /** - * @return Returns the config. - */ - Properties getConfig(); // TODO AThimel 02/08/13 Change type ? - - /** - * Detects if the db associated to the current context contains at least one - * entity table. - * - * @return {@code true} if there is no schema for any of the dealed entities, - * {@code false} otherwise. - * @since 3.0 - */ - boolean isSchemaEmpty(); - - /** - * Detects if the table is created on storage for a given persistent class. - * - * @param clazz the researched class - * @return true if the table exists on storage - * @since 3.0 - */ - boolean isTableExists(Class<?> clazz); - - /** - * @return the current schema name - * @since 3.0 - */ - String getSchemaName(); - - /** - * Triggers database schema creation - */ - void createSchema(); - - /** - * Displays the SQL queries that would be used for a schema creation - */ - void showCreateSchema(); - - /** - * Triggers database schema update - */ - void updateSchema(); - - /** - * Triggers database schema drop - * - * @since 3.0 - */ - void dropSchema(); - } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java 2013-10-11 14:18:51 UTC (rev 2836) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/AbstractTopiaContext.java 2013-10-11 14:40:39 UTC (rev 2837) @@ -539,7 +539,6 @@ } } - @Override public void dropSchema() throws TopiaException { try { boolean showSchema = false; @@ -1329,13 +1328,11 @@ return isTableExists(clazz); } - @Override public boolean isSchemaEmpty() { // TODO AThimel 02/08/13 Implement throw new UnsupportedOperationException("Not yet implemented"); } - @Override public boolean isTableExists(Class<?> clazz) { checkClosed(String.format("This context is closed, it is not possible to release the operation '%1$s'", "replicateEntity")); @@ -1343,7 +1340,6 @@ return result; } - @Override public String getSchemaName() { // TODO AThimel 02/08/13 I absolutely don't know if it works return getConfig().getProperty(TopiaContextFactory.CONFIG_DEFAULT_SCHEMA); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2013-10-11 14:18:51 UTC (rev 2836) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2013-10-11 14:40:39 UTC (rev 2837) @@ -25,16 +25,6 @@ package org.nuiton.topia.framework; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.beans.VetoableChangeSupport; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - import org.apache.commons.collections.map.IdentityMap; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -63,6 +53,7 @@ import org.nuiton.topia.TopiaDAOSupplier; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaJpaSupport; +import org.nuiton.topia.TopiaListenableSupport; import org.nuiton.topia.TopiaPersistenceContext; import org.nuiton.topia.TopiaVetoException; import org.nuiton.topia.event.TopiaContextEvent; @@ -82,6 +73,16 @@ import org.nuiton.util.CategorisedListenerSet; import org.nuiton.util.ListenerSet; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.beans.VetoableChangeSupport; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * TODO-fdesbois-20100507 : Need translation of javadoc. * <p/> @@ -91,7 +92,7 @@ * @author jruchaud <jruchaud@codelutin.com> * @version $Id$ */ -public class TopiaFiresSupport { +public class TopiaFiresSupport implements TopiaListenableSupport { static private Log log = LogFactory.getLog(TopiaFiresSupport.class); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ApplicationContextTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ApplicationContextTransformer.java 2013-10-11 14:18:51 UTC (rev 2836) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ApplicationContextTransformer.java 2013-10-11 14:40:39 UTC (rev 2837) @@ -174,7 +174,7 @@ addAnnotation(output, op, Override.class); setOperationBody(op, "" /*{ - return new <%=persistenceContextConcreteName%>(); + return new <%=persistenceContextConcreteName%>(getHibernateProvider(), getTopiaListenableSupport(), getTopiaIdFactory()); }*/ ); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/PersistenceContextTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/PersistenceContextTransformer.java 2013-10-11 14:18:51 UTC (rev 2836) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/PersistenceContextTransformer.java 2013-10-11 14:40:39 UTC (rev 2837) @@ -35,8 +35,10 @@ import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.topia.AbstractTopiaPersistenceContext; -import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.HibernateProvider; +import org.nuiton.topia.TopiaListenableSupport; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaIdFactory; import org.nuiton.topia.persistence.util.EntityOperator; import org.nuiton.topia.persistence.util.EntityOperatorStore; @@ -140,19 +142,16 @@ addImport(output, EntityOperatorStore.class); } - // add context field - addAttribute(output, "context", TopiaContext.class, null, - ObjectModelJavaModifier.PROTECTED); - // add public constructor ObjectModelOperation constructor = addConstructor( output, ObjectModelJavaModifier.PUBLIC); - addParameter(constructor, TopiaContext.class, "context"); + addParameter(constructor, HibernateProvider.class, "hibernateProvider"); + addParameter(constructor, TopiaListenableSupport.class, "listenableSupport"); + addParameter(constructor, TopiaIdFactory.class, "topiaIdFactory"); setOperationBody(constructor, "" /*{ - super(context, context, context, context.getTopiaIdFactory(), context.getConfig()); - this.context = context; + super(hibernateProvider, listenableSupport, topiaIdFactory); }*/ ); @@ -282,10 +281,12 @@ ObjectModelOperation constructor = addConstructor( output, ObjectModelJavaModifier.PUBLIC); - addParameter(constructor, TopiaContext.class, "context"); + addParameter(constructor, HibernateProvider.class, "hibernateProvider"); + addParameter(constructor, TopiaListenableSupport.class, "listenableSupport"); + addParameter(constructor, TopiaIdFactory.class, "topiaIdFactory"); setOperationBody(constructor, "" - /*{ - super(context); +/*{ + super(hibernateProvider, listenableSupport, topiaIdFactory); }*/ );
participants (1)
-
bleny@users.nuiton.org