Author: tchemit Date: 2013-07-14 21:41:45 +0200 (Sun, 14 Jul 2013) New Revision: 2769 Url: http://nuiton.org/projects/topia/repository/revisions/2769 Log: refs #2088: remove i18n from ToPIA refs #2748: Improve TopiaContext if necessary (add a dropSchema operation + event on listener for this too) Modified: trunk/pom.xml trunk/topia-persistence/pom.xml trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextAdapter.java trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextListener.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java trunk/topia-persistence/src/site/rst/user/start_using_api.rst trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/pom.xml 2013-07-14 19:41:45 UTC (rev 2769) @@ -61,6 +61,7 @@ <!-- libs version --> <eugeneVersion>2.6.4-SNAPSHOT</eugeneVersion> <nuitonUtilsVersion>2.6.12</nuitonUtilsVersion> + <nuitonI18nVersion>2.5.1</nuitonI18nVersion> <processorPluginVersion>1.3</processorPluginVersion> <xmlrpcVersion>3.1.2</xmlrpcVersion> <hibernateVersion>4.2.2.Final</hibernateVersion> @@ -118,6 +119,12 @@ </dependency> <dependency> + <groupId>org.nuiton.i18n</groupId> + <artifactId>nuiton-i18n</artifactId> + <version>${nuitonI18nVersion}</version> + </dependency> + + <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernateVersion}</version> Modified: trunk/topia-persistence/pom.xml =================================================================== --- trunk/topia-persistence/pom.xml 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/pom.xml 2013-07-14 19:41:45 UTC (rev 2769) @@ -54,6 +54,11 @@ </dependency> <dependency> + <groupId>org.nuiton.i18n</groupId> + <artifactId>nuiton-i18n</artifactId> + </dependency> + + <dependency> <groupId>org.nuiton.eugene</groupId> <artifactId>eugene</artifactId> </dependency> Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2013-07-14 19:41:45 UTC (rev 2769) @@ -141,6 +141,14 @@ void updateSchema() throws TopiaException; /** + * Permet de supprimer le schema de la base de données. + * + * @throws TopiaException if any exception + * @since 3.0 + */ + void dropSchema() throws TopiaException; + + /** * Return a new context containing his own transaction. * * @return new context with transaction Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextAdapter.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextAdapter.java 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextAdapter.java 2013-07-14 19:41:45 UTC (rev 2769) @@ -34,7 +34,16 @@ * @since 2.3.4 */ public class TopiaContextAdapter implements TopiaContextListener { + @Override + public void preDropSchema(TopiaContextEvent event) { + } + + @Override + public void postDropSchema(TopiaContextEvent event) { + } + + @Override public void preCreateSchema(TopiaContextEvent event) { } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextListener.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextListener.java 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/event/TopiaContextListener.java 2013-07-14 19:41:45 UTC (rev 2769) @@ -34,7 +34,7 @@ * <ul> * <li>createSchema</li> * <li>updateSchema</li> - * <li>...</li> + * <li>...</li> * </ul> * * @author chatellier <chatellier@codelutin.com> @@ -43,9 +43,25 @@ public interface TopiaContextListener extends EventListener { /** + * Called before dropSchema call + * + * @param event event + * @since 3.0 + */ + void preDropSchema(TopiaContextEvent event); + + /** + * Called after dropSchema call + * + * @param event event + * @since 3.0 + */ + void postDropSchema(TopiaContextEvent event); + + /** * Called before createSchema call * - * @param event evet + * @param event event */ void preCreateSchema(TopiaContextEvent event); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2013-07-14 19:41:45 UTC (rev 2769) @@ -86,8 +86,6 @@ import java.util.WeakHashMap; import java.util.zip.GZIPInputStream; -import static org.nuiton.i18n.I18n._; - /** * Le TopiaContextImpl est le point d'entre pour acceder aux donnees. Il est * configurer par un fichier de propriete @@ -259,15 +257,15 @@ TopiaService service = (TopiaService) newInstance; if (key.equals("topia.service." + service.getServiceName())) { result.put(service.getServiceName(), service); - log.info(_("topia.persistence.service.loaded", + log.info(String.format("Service '%1$s' loaded (implementation %2$s)", key, classService)); } else { - log.warn(_("topia.persistence.warn.service.not.loaded", + log.warn(String.format("The service with key '%1$s' has a different name '%2$s'! (service not activated)", key, service.getServiceName())); } } catch (Throwable eee) { String message = - _("topia.persistence.error.service.unknown", + String.format("The service %1$s of type %2$s was not found.", key, classService); if (log.isDebugEnabled()) { log.debug(message, eee); @@ -283,7 +281,7 @@ protected void preInitServices(Map<String, TopiaService> services) { for (TopiaService service : services.values()) { if (!service.preInit(this)) { - log.warn(_("topia.persistence.warn.service.not.preInit", + log.warn(String.format("The service named '%1$s' could not be post-initialized (service not activated)", service.getServiceName())); } } @@ -292,7 +290,7 @@ protected void postInitServices(Map<String, TopiaService> services) { for (TopiaService service : services.values()) { if (!service.postInit(this)) { - log.warn(_("topia.persistence.warn.service.not.postInit", + log.warn(String.format("The service named '%1$s' could not be pre-initialized (service not activated)", service.getServiceName())); } } @@ -357,13 +355,13 @@ result = (E) getService(name); } catch (Exception eee) { throw new TopiaNotFoundException( - _("topia.persistence.error.service.not.retreaved", + String.format("Could not retreave service %1$s for following reason: %2$s", interfaceService, getProperExceptionMessage(eee)), eee); } if (result == null) { throw new TopiaNotFoundException( - _("topia.persistence.error.service.not.found", + String.format("The service %1$s was not found.", interfaceService)); } return result; @@ -377,7 +375,7 @@ String name = getServiceName(interfaceService); result = serviceEnabled(name); } catch (Exception eee) { - String message = _("topia.persistence.warn.service.not.found", + String message = String.format("The service named '%1$s' could not be found for following reason: %2$s", interfaceService, getProperExceptionMessage(eee)); if (log.isDebugEnabled()) { log.debug(message, eee); @@ -479,7 +477,7 @@ getFiresSupport().firePostCreateSchema(this); } catch (HibernateException eee) { throw new TopiaException( - _("topia.persistence.error.create.schema", + String.format("Could not create schema for reason: %s", eee.getMessage()), eee); } } @@ -491,7 +489,7 @@ execute(true, false, false, true); } catch (HibernateException eee) { throw new TopiaException( - _("topia.persistence.error.create.schema", + String.format("Could not show create schema for reason: %s", eee.getMessage()), eee); } } @@ -509,16 +507,32 @@ getFiresSupport().firePostUpdateSchema(this); } catch (HibernateException eee) { throw new TopiaException( - _("topia.persistence.error.update.schema", + String.format("Could not update schema for reason: %s", eee.getMessage()), eee); } } @Override + public void dropSchema() throws TopiaException { + try { + boolean showSchema = false; + if (log.isDebugEnabled()) { + showSchema = true; + } + getFiresSupport().firePreCreateSchema(this); + new SchemaExport(getHibernateConfiguration()).execute(showSchema, true, true, false); + getFiresSupport().firePostCreateSchema(this); + } catch (HibernateException eee) { + throw new TopiaException( + String.format("Could not drop schema for reason: %s", + eee.getMessage()), eee); + } + } + + @Override public Session getHibernate() throws TopiaException { if (hibernate == null) { - throw new TopiaException( - _("topia.persistence.error.no.hibernate.session")); + throw new TopiaException("No hibernate session"); } return hibernate; } @@ -1209,8 +1223,8 @@ getFiresSupport().firePostRestoreSchema(this); } catch (Exception eee) { throw new TopiaException(String.format( - "An error occurs while restore operation: %1$s", - sql, eee.getMessage()), eee); + String.format("An error occurs while restore operation: %1$s : %2$s", + sql, eee.getMessage())), eee); } } 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-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2013-07-14 19:41:45 UTC (rev 2769) @@ -838,6 +838,47 @@ } /** + * Notify topia context listeners for drop schema pre operation + * + * @param context topia context + * @since 3.0 + */ + public void firePreDropSchema(TopiaContext context) { + if (log.isDebugEnabled()) { + log.debug("firePreDropSchema"); + } + TopiaContextEvent event = new TopiaContextEvent(context); + for (TopiaContextListener topiaContextListener : topiaContextListeners) { + try { + topiaContextListener.preDropSchema(event); + } catch (Exception eee) { + throw new TopiaVetoException(eee); + } + } + } + + /** + * Notify topia context listeners for drop schema post operation + * + * @param context topia context + * @since 3.0 + */ + public void firePostDropSchema(TopiaContext context) { + if (log.isDebugEnabled()) { + log.debug("firePostDropSchema"); + } + TopiaContextEvent event = new TopiaContextEvent(context); + for (TopiaContextListener topiaContextListener : topiaContextListeners) { + try { + topiaContextListener.postDropSchema(event); + } catch (Exception eee) { + throw new TopiaVetoException(eee); + } + } + } + + + /** * Notify entities listeners for load operation * * @param <E> type of entities Modified: trunk/topia-persistence/src/site/rst/user/start_using_api.rst =================================================================== --- trunk/topia-persistence/src/site/rst/user/start_using_api.rst 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/src/site/rst/user/start_using_api.rst 2013-07-14 19:41:45 UTC (rev 2769) @@ -150,45 +150,6 @@ Suppression d'une entité. -Configuration I18n ------------------- - -ToPIA contient une internationnalisation des messages utilisateurs (logs). -Il est préférable d'initialiser I18n pour accélérer la recherche des messages. - -Au démarrage de l'application :: - - I18nInitializer i18nInitializer = new DefaultI18nInitializer("library-bundle"); - I18n.init(i18nInitializer, new Locale("fr", "FR")); - -Configuration maven :: - - <!-- Plugin i18n pour gérer le bundle de messages --> - <plugin> - <groupId>org.nuiton.i18n</groupId> - <artifactId>i18n-maven-plugin</artifactId> - <version>${nuitonI18nVersion}</version> - <executions> - <!-- Cette exécution permet de rassembler tous les messages i18n - dans un seul 'properties bundle' nommé library-bundle - --> - <execution> - <id>make-bundle</id> - <configuration> - <bundleOutputName>library-bundle</bundleOutputName> - </configuration> - <goals> - <goal>bundle</goal> - </goals> - </execution> - </executions> - </plugin> - -Vous pourrez également utiliser `nuiton-i18n`_ pour l'internationnalisation de -votre application. - -.. _nuiton-i18n: http://maven-site.nuiton.org/i18n/ - Exemple complet --------------- Modified: trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java 2013-07-14 19:40:12 UTC (rev 2768) +++ trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java 2013-07-14 19:41:45 UTC (rev 2769) @@ -34,7 +34,6 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.nuiton.i18n.I18n; import org.nuiton.topia.TopiaContextFactory; import org.nuiton.topia.TopiaDatabase; import org.nuiton.topia.TopiaNotFoundException; @@ -45,7 +44,6 @@ import java.io.File; import java.util.HashMap; -import java.util.Locale; import java.util.Map; import java.util.Properties; @@ -68,7 +66,6 @@ public static void setUpClass() throws Exception { testBasedir = TopiaDatabase.getTestSpecificDirectory(TopiaContextImplTest.class, "dummy"); - I18n.init(null, Locale.FRENCH); } @Before