r65 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence magalie-services/src/main/java/com/franciaflex/magalie/services/service magalie-services/src/test/java/com/franciaflex/magalie/services/service magalie-web/src/main/java/com/franciaflex/magalie/web/action magalie-web/src/main/webapp/WEB-INF/content
Author: bleny Date: 2013-04-02 16:09:40 +0200 (Tue, 02 Apr 2013) New Revision: 65 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: in report add a way to restore fixtures Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/RestoreFixturesAction.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java 2013-03-29 17:22:11 UTC (rev 64) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java 2013-04-02 14:09:40 UTC (rev 65) @@ -5,12 +5,19 @@ import org.apache.commons.lang3.SystemUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.ejb.AvailableSettings; +import org.hibernate.ejb.EntityManagerFactoryImpl; +import org.hibernate.service.ServiceRegistry; +import org.hibernate.service.internal.SessionFactoryServiceRegistryImpl; +import org.hibernate.tool.hbm2ddl.SchemaExport; +import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import java.io.File; +import java.lang.reflect.Field; import java.util.Collections; import java.util.Map; @@ -18,8 +25,6 @@ private static final Log log = LogFactory.getLog(JpaUtil.class); - private JpaUtil() {} - protected static final ImmutableMap<String, String> JPA_H2_CONFIG = ImmutableMap.of( AvailableSettings.JDBC_DRIVER, org.h2.Driver.class.getName(), @@ -29,6 +34,8 @@ Environment.HBM2DDL_AUTO, "create" ); + private JpaUtil() {} + public static EntityManagerFactory createTempEntityManagerFactory(String persistenceUnitName, String context) { EntityManagerFactory tempEntityManagerFactory = @@ -70,4 +77,40 @@ } + public static void cleanDatabase(EntityManager entityManager) { + + if (log.isInfoEnabled()) { + log.info("will clean database"); + } + + ServiceRegistry serviceRegistry = + ((EntityManagerFactoryImpl) entityManager.getEntityManagerFactory()) + .getSessionFactory().getServiceRegistry(); + + Configuration configuration = null; + try { + Field configurationField = SessionFactoryServiceRegistryImpl.class.getDeclaredField("configuration"); + configurationField.setAccessible(true); + configuration = (Configuration) configurationField.get(serviceRegistry); + } catch (IllegalAccessException e) { + if (log.isErrorEnabled()) { + log.error("should not occur", e); + } + } catch (NoSuchFieldException e) { + if (log.isErrorEnabled()) { + log.error("should not occur", e); + } + } + + SchemaExport schemaExport= new SchemaExport(serviceRegistry, configuration); + + schemaExport.setHaltOnError(true); + + // drop + schemaExport.execute(true, true, true, false); + + // create + schemaExport.execute(true, true, false, true); + + } } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java 2013-03-29 17:22:11 UTC (rev 64) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java 2013-04-02 14:09:40 UTC (rev 65) @@ -1,5 +1,6 @@ package com.franciaflex.magalie.services.service; +import com.franciaflex.magalie.persistence.JpaUtil; import com.franciaflex.magalie.persistence.dao.ArticleDao; import com.franciaflex.magalie.persistence.dao.MagalieUserDao; import com.franciaflex.magalie.persistence.dao.SiteDao; @@ -12,7 +13,6 @@ import com.franciaflex.magalie.services.MagalieFixtures; import com.franciaflex.magalie.services.MagalieService; import com.franciaflex.magalie.services.MagalieServiceContext; -import com.google.common.collect.Iterables; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -51,65 +51,46 @@ EntityManager entityManager = ((DefaultMagalieServiceContext) serviceContext).getEntityManager(); -// entityManager. -// MetadataImplementor getDatabase -// ull; -// try { -// conn = getConnection(); -// metadata = new DatabaseMetadata(conn, dialect); -// DROP_SCRIPTS = config.generateDropSchemaScript(dialect); -// CREATE_SCRIPTS = config.generateSchemaCreationScript(dialect); -// } finally { -// close(conn); -// } + JpaUtil.cleanDatabase(entityManager); -// ((org.hibernate.service.internal.SessionFactoryServiceRegistryImpl) ((org.hibernate.ejb.EntityManagerFactoryImpl) entityManager.getEntityManagerFactory()).getSessionFactory().getServiceRegistry()) -// -// ((SessionImpl) entityManager.getDelegate()).get - MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao(); Collection<MagalieUser> users = fixtures.fixture("users"); - boolean alreadyLoaded = magalieUserDao.findById(Iterables.get(users, 0).getId()) != null; + for (MagalieUser user : users) { - if ( ! alreadyLoaded) { + magalieUserDao.persist(user); - for (MagalieUser user : users) { + } - magalieUserDao.persist(user); + SiteDao siteDao = serviceContext.getSiteDao(); - } + Collection<Site> sites = fixtures.fixture("sites"); - SiteDao siteDao = serviceContext.getSiteDao(); + for (Site site : sites) { - Collection<Site> sites = fixtures.fixture("sites"); + siteDao.persist(site); - for (Site site : sites) { + } - siteDao.persist(site); + ArticleDao articleDao = serviceContext.getArticleDao(); - } + Collection<Article> articles = fixtures.fixture("articles"); - ArticleDao articleDao = serviceContext.getArticleDao(); + for (Article article : articles) { - Collection<Article> articles = fixtures.fixture("articles"); + articleDao.persist(article); - for (Article article : articles) { + } - articleDao.persist(article); + StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao(); - } + Collection<StoredArticle> storedArticles = fixtures.fixture("storedArticles"); - StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao(); + for (StoredArticle storedArticle : storedArticles) { - Collection<StoredArticle> storedArticles = fixtures.fixture("storedArticles"); + storedArticleDao.persist(storedArticle); - for (StoredArticle storedArticle : storedArticles) { - - storedArticleDao.persist(storedArticle); - - } } } else { Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java 2013-03-29 17:22:11 UTC (rev 64) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java 2013-04-02 14:09:40 UTC (rev 65) @@ -1,9 +1,12 @@ package com.franciaflex.magalie.services.service; +import com.franciaflex.magalie.persistence.JpaUtil; +import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.services.AbstractMagalieServiceTest; import com.google.common.collect.Sets; import org.junit.Test; +import javax.persistence.EntityManager; import java.util.Comparator; import java.util.Set; @@ -29,4 +32,19 @@ System.out.println(doubles); } + + @Test + public void testName() throws Exception { + getServiceContext(); + + MagalieUser alexandre = fixture("alexandre"); + + EntityManager entityManager = serviceContext.getEntityManager(); + + JpaUtil.cleanDatabase(entityManager); + +// MagalieUser found = serviceContext.getMagalieUserDao().findById(alexandre.getId()); + +// Assert.assertNull(found); + } } Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java 2013-03-29 17:22:11 UTC (rev 64) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java 2013-04-02 14:09:40 UTC (rev 65) @@ -1,5 +1,6 @@ package com.franciaflex.magalie.web.action; +import com.franciaflex.magalie.MagalieApplicationConfig; import com.franciaflex.magalie.services.MagalieReport; import com.franciaflex.magalie.services.service.ReportService; import com.franciaflex.magalie.web.MagalieActionSupport; @@ -10,10 +11,16 @@ protected MagalieReport report; + protected MagalieApplicationConfig config; + public void setService(ReportService service) { this.service = service; } + public void setConfig(MagalieApplicationConfig config) { + this.config = config; + } + @Override public String execute() { @@ -26,4 +33,8 @@ public MagalieReport getReport() { return report; } + + public boolean isDevMode() { + return config.isDevMode(); + } } Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/RestoreFixturesAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/RestoreFixturesAction.java (rev 0) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/RestoreFixturesAction.java 2013-04-02 14:09:40 UTC (rev 65) @@ -0,0 +1,27 @@ +package com.franciaflex.magalie.web.action; + +import com.franciaflex.magalie.services.service.FixturesService; +import com.franciaflex.magalie.web.MagalieActionSupport; +import org.apache.struts2.convention.annotation.Result; +import org.apache.struts2.convention.annotation.Results; + +@Results({ + @Result(name="success", type="redirectAction", params = { "actionName", "report" }) +}) +public class RestoreFixturesAction extends MagalieActionSupport { + + protected FixturesService service; + + public void setService(FixturesService service) { + this.service = service; + } + + @Override + public String execute() throws Exception { + + service.loadFixtures(); + + return SUCCESS; + + } +} Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp =================================================================== --- trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp 2013-03-29 17:22:11 UTC (rev 64) +++ trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp 2013-04-02 14:09:40 UTC (rev 65) @@ -245,4 +245,11 @@ </tbody> </table> -</section> \ No newline at end of file +</section> + +<s:if test="devMode"> + <p> + <s:url namespace="/" action="restore-fixtures" id="restoreFixturesUrl"/> + <s:a href="%{restoreFixturesUrl}">Restaurer le jeu de test de départ</s:a> + </p> +</s:if>
participants (1)
-
bleny@users.forge.codelutin.com