r168 - in trunk/echobase-ui/src/main: java/fr/ifremer/echobase/ui java/fr/ifremer/echobase/ui/actions java/fr/ifremer/echobase/ui/actions/importDb resources resources/config resources/i18n webapp/WEB-INF/includes webapp/WEB-INF/jsp webapp/WEB-INF/jsp/importDb
Author: tchemit Date: 2011-12-11 22:40:34 +0100 (Sun, 11 Dec 2011) New Revision: 168 Url: http://forge.codelutin.com/repositories/revision/echobase/168 Log: continue db import+ remove legacy import Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/LaunchImport.java trunk/echobase-ui/src/main/resources/config/struts-importDb.xml trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/ Removed: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importHistorical/ trunk/echobase-ui/src/main/resources/config/struts-importHistorical.xml trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importHistorical/ Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties trunk/echobase-ui/src/main/resources/struts.xml trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/configure.jsp trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/progress.jsp trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/result.jsp Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2011-12-11 21:39:42 UTC (rev 167) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2011-12-11 21:40:34 UTC (rev 168) @@ -25,7 +25,7 @@ import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.services.ImportDataConfiguration; -import fr.ifremer.echobase.services.ImportHistoricalConfiguration; +import fr.ifremer.echobase.services.ImportDbConfiguration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -49,8 +49,8 @@ /** Key to keep import data configuration in this session. */ protected static final String PROPERTY_IMPORT_DATA_CONFIGURATION = "importDataConfiguration"; - /** Key to keep historical import configuration in this session. */ - protected static final String PROPERTY_IMPORT_HISTORICAL_CONFIGURATION = "importHistoricalConfiguration"; + /** Key to keep import db configuration in this session. */ + protected static final String PROPERTY_IMPORT_DB_CONFIGURATION = "importDbConfiguration"; /** To store all properties in this session. */ protected Map<String, Object> store; @@ -81,12 +81,12 @@ set(PROPERTY_IMPORT_DATA_CONFIGURATION, configuration); } - public ImportHistoricalConfiguration getImportHistoricalConfiguration() { - return get(PROPERTY_IMPORT_HISTORICAL_CONFIGURATION, ImportHistoricalConfiguration.class); + public ImportDbConfiguration getImportDbConfiguration() { + return get(PROPERTY_IMPORT_DB_CONFIGURATION, ImportDbConfiguration.class); } - public void setImportHistoricalConfiguration(ImportHistoricalConfiguration configuration) { - set(PROPERTY_IMPORT_HISTORICAL_CONFIGURATION, configuration); + public void setImportDbConfiguration(ImportDbConfiguration configuration) { + set(PROPERTY_IMPORT_DB_CONFIGURATION, configuration); } /** Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java 2011-12-11 21:39:42 UTC (rev 167) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java 2011-12-11 21:40:34 UTC (rev 168) @@ -52,15 +52,14 @@ applicationContext.getRootContextSupplier(); TopiaContext rootContext = rootContextSupplier.get(); - TopiaContext transaction = null; try { - transaction = rootContext.beginTransaction(); + TopiaContext transaction = rootContext.beginTransaction(); + if (log.isDebugEnabled()) { + log.debug("Starts a new echo transaction " + transaction); + } + return transaction; } catch (TopiaException eee) { throw new TopiaRuntimeException("Could not start transaction", eee); } - if (log.isDebugEnabled()) { - log.debug("Starts a new echo transaction " + transaction); - } - return transaction; } } Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java (rev 0) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java 2011-12-11 21:40:34 UTC (rev 168) @@ -0,0 +1,100 @@ +/* + * #%L + * EchoBase :: UI + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.ui.actions.importDb; + +import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.services.ImportDbConfiguration; +import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; +import org.apache.commons.io.FileUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.FileUtil; + +import java.io.File; + +/** + * Configure a db import. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class Configure extends EchoBaseActionSupport { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(Configure.class); + + protected ImportDbConfiguration model; + + public ImportDbConfiguration getModel() { + if (model == null) { + model = new ImportDbConfiguration(getLocale()); + } + return model; + } + + public void setInputFileName(String fileName) { + getModel().getInput().setFileName(fileName); + } + + public void setInput(File file) { + getModel().getInput().setFile(file); + } + + public void setInputContentType(String contentType) { + getModel().getInput().setContentType(contentType); + } + + @Override + public String input() throws Exception { + + // always remove configuration from session anytime coming here + getEchoBaseSession().setImportDbConfiguration(null); + return INPUT; + } + + @Override + public String execute() throws Exception { + + ImportDbConfiguration configuration = getModel(); + + File tempDirectory = FileUtils.getTempDirectory(); + File dataDirectory = new File( + tempDirectory, + "echobase-importDb-" + System.currentTimeMillis()); + FileUtil.createDirectoryIfNecessary(dataDirectory); + configuration.setWorkingDirectory(dataDirectory); + if (log.isInfoEnabled()) { + log.info("Temporary directory to use : " + dataDirectory); + } + + InputFile input = configuration.getInput(); + copyFile(input, dataDirectory); + + // store configuration in session + getEchoBaseSession().setImportDbConfiguration(configuration); + return SUCCESS; + } +} Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/LaunchImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/LaunchImport.java (rev 0) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/LaunchImport.java 2011-12-11 21:40:34 UTC (rev 168) @@ -0,0 +1,117 @@ +/* + * #%L + * EchoBase :: UI + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.ui.actions.importDb; + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.Preparable; +import fr.ifremer.echobase.services.CsvImportResult; +import fr.ifremer.echobase.services.DbImportExportService; +import fr.ifremer.echobase.services.ImportDbConfiguration; +import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.framework.TopiaContextImplementor; + +/** + * Start the import db. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class LaunchImport extends EchoBaseActionSupport implements Preparable { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(LaunchImport.class); + + /** Configuration of the historical import. */ + protected ImportDbConfiguration model; + + /** Result of import. */ + protected CsvImportResult importResult; + + /** service to execute the import. */ + protected transient DbImportExportService service; + + protected ActionContext actionContext; + + public ImportDbConfiguration getModel() { + return model; + } + + @Override + public void prepare() throws Exception { + + if (actionContext == null) { + + // keep it since exec and wait then use another thread + actionContext = ActionContext.getContext(); + } else { + + // having the action cotnext here means we laready came here, + // now we need to propagate it + ActionContext.setContext(actionContext); + } + model = getEchoBaseSession().getImportDbConfiguration(); + + service = newService(DbImportExportService.class); + } + + @Override + public String execute() throws Exception { + + // having the action cotnext here means we laready came here, + // now we need to propagate it + ActionContext.setContext(actionContext); + + // we must use a standalone transaction since it will pass through + // in more thna one request + + TopiaContextImplementor tx = (TopiaContextImplementor) serviceContext.getTransaction(); + TopiaContextImplementor rootContext = tx.getRootContext(); + TopiaContext topiaContext = rootContext.beginTransaction(); + serviceContext.setTransaction(topiaContext); + try { + + if (log.isInfoEnabled()) { + log.info("Start imports with file " + + model.getInput().getFileName()); + } + + service.importDb(model, getEchoBaseSession().getEchoBaseUser()); + return SUCCESS; + } finally { + topiaContext.closeContext(); + + // clean configuration + model.destroy(); + + // remove configuration from session + getEchoBaseSession().setImportDbConfiguration(null); + } + } + +} \ No newline at end of file Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/LaunchImport.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-ui/src/main/resources/config/struts-importDb.xml (from rev 159, trunk/echobase-ui/src/main/resources/config/struts-importHistorical.xml) =================================================================== --- trunk/echobase-ui/src/main/resources/config/struts-importDb.xml (rev 0) +++ trunk/echobase-ui/src/main/resources/config/struts-importDb.xml 2011-12-11 21:40:34 UTC (rev 168) @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + #%L + EchoBase :: UI + + $Id$ + $HeadURL$ + %% + Copyright (C) 2011 Ifremer, Codelutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + #L% + --> +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.1.7.dtd"> + +<struts> + + <package name="importDb" extends="loggued" namespace="/importDb"> + + <!-- Configure import --> + <action name="configureImport" + class="fr.ifremer.echobase.ui.actions.importDb.Configure"> + <interceptor-ref name="paramsPrepareParamsStackLoggued"/> + <result name="input">/WEB-INF/jsp/importDb/configure.jsp</result> + <result type="redirectAction"> + <param name="namespace">/importDb</param> + <param name="actionName">doImport</param> + </result> + </action> + + <!-- Starts import --> + <action name="doImport" + class="fr.ifremer.echobase.ui.actions.importDb.LaunchImport" + method="execute"> + <interceptor-ref name="basicStackLoggued"/> + <interceptor-ref name="execAndWait"/> + <result name="wait">/WEB-INF/jsp/importDb/progress.jsp</result> + <result>/WEB-INF/jsp/importDb/result.jsp</result> + </action> + + </package> + +</struts> + Property changes on: trunk/echobase-ui/src/main/resources/config/struts-importDb.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/echobase-ui/src/main/resources/config/struts-importHistorical.xml =================================================================== --- trunk/echobase-ui/src/main/resources/config/struts-importHistorical.xml 2011-12-11 21:39:42 UTC (rev 167) +++ trunk/echobase-ui/src/main/resources/config/struts-importHistorical.xml 2011-12-11 21:40:34 UTC (rev 168) @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - #%L - EchoBase :: UI - - $Id$ - $HeadURL$ - %% - Copyright (C) 2011 Ifremer, Codelutin - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - #L% - --> - - -<!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" - "http://struts.apache.org/dtds/struts-2.1.7.dtd"> - -<struts> - - <package name="importHistorical" extends="loggued" namespace="/importHistorical"> - - <!-- Configure import --> - <action name="configureImport" - class="fr.ifremer.echobase.ui.actions.importHistorical.Configure"> - <interceptor-ref name="paramsPrepareParamsStackLoggued"/> - <result name="input">/WEB-INF/jsp/importHistorical/configure.jsp</result> - <result type="redirectAction"> - <param name="namespace">/importHistorical</param> - <param name="actionName">doImport</param> - </result> - </action> - - <!-- Starts import --> - <action name="doImport" - class="fr.ifremer.echobase.ui.actions.importHistorical.LaunchImport" - method="execute"> - <interceptor-ref name="basicStackLoggued"/> - <interceptor-ref name="execAndWait"/> - <result name="wait">/WEB-INF/jsp/importHistorical/progress.jsp</result> - <result>/WEB-INF/jsp/importHistorical/result.jsp</result> - </action> - - </package> - -</struts> - Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2011-12-11 21:39:42 UTC (rev 167) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2011-12-11 21:40:34 UTC (rev 168) @@ -89,8 +89,8 @@ echobase.legend.importData.configuration.files=Choix des fichiers d'import echobase.legend.importData.configuration.mission=Configurer la mission echobase.legend.importData.configuration.mission.resume=Résumé de la mission à utiliser +echobase.legend.importDb.configuration.files=Choix du fichier d'import de la base complête (fichier zip) echobase.legend.importFileResult=Résultat de l'import %s -echobase.legend.importHistorical.configuration.files=Choix du fichier d'import de données historiques echobase.legend.sqlQuery.configuration=Configuration de la requête echobase.legend.sqlQuery.result=Résultats de la requête echobase.menu.connectToDbInformations=Se connecter à la base @@ -98,7 +98,7 @@ echobase.menu.dbeditor=Modifier les données echobase.menu.export=Exporter des données echobase.menu.importData=Importer des données -echobase.menu.importHistorical=Importer les données historiques +echobase.menu.importDb=Importer une base complête echobase.menu.logs=Visualiser les modifications echobase.menu.users=Gérer les utilisateurs echobase.message.askAdministratorPassword=Demander à un administrateur le mot de passe pour l'utilisateur donné @@ -120,10 +120,10 @@ echobase.title.importData.configuration=Configuration d'un import de données echobase.title.importDataProgress=Import de données en cours echobase.title.importDataResult=Résultats de l'import de données +echobase.title.importDb.configuration=Configuration d'un import de base de données +echobase.title.importDbProgress=Import de données en cours +echobase.title.importDbResult=Résultats de l'import de données echobase.title.importHistorical=Import de données historiques -echobase.title.importHistorical.configuration=Configuration d'un import de données historiques -echobase.title.importHistoricalProgress=Import de données historiques en cours -echobase.title.importHistoricalResult=Résultats de l'import de données historiques echobase.title.importTable=Importer une table echobase.title.login=Connexion echobase.title.modification.detail=Détail de la modification Modified: trunk/echobase-ui/src/main/resources/struts.xml =================================================================== --- trunk/echobase-ui/src/main/resources/struts.xml 2011-12-11 21:39:42 UTC (rev 167) +++ trunk/echobase-ui/src/main/resources/struts.xml 2011-12-11 21:40:34 UTC (rev 168) @@ -132,7 +132,7 @@ <include file="config/struts-dbeditor.xml"/> <include file="config/struts-user.xml"/> <include file="config/struts-importData.xml"/> - <include file="config/struts-importHistorical.xml"/> + <include file="config/struts-importDb.xml"/> <include file="config/struts-export.xml"/> </struts> Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2011-12-11 21:39:42 UTC (rev 167) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2011-12-11 21:40:34 UTC (rev 168) @@ -55,8 +55,8 @@ <div class="cleanBoth"> <ul> <li> - <s:a action="configureImport" namespace="/importHistorical" method="input"> - <s:text name="echobase.menu.importHistorical"/></s:a> + <s:a action="configureImport" namespace="/importDb" method="input"> + <s:text name="echobase.menu.importDb"/></s:a> </li> <li> <s:a action="configureMission" namespace="/importData" method="input"> Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/configure.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importHistorical/configure.jsp 2011-12-08 05:55:37 UTC (rev 159) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/configure.jsp 2011-12-11 21:40:34 UTC (rev 168) @@ -26,15 +26,15 @@ <title><s:text name="echobase.title.importHistorical"/></title> -<s:form namespace="/importHistorical" method="POST" enctype="multipart/form-data"> +<s:form namespace="/importDb" method="POST" enctype="multipart/form-data"> <fieldset> <legend> - <s:text name="echobase.legend.importHistorical.configuration.files"/> + <s:text name="echobase.legend.importDb.configuration.files"/> </legend> <s:file name="input" required="true" - key="echobase.common.importHistoricalFile"/> + key="echobase.common.importDbFile"/> </fieldset> <br/> Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/progress.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importHistorical/progress.jsp 2011-12-08 05:55:37 UTC (rev 159) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/progress.jsp 2011-12-11 21:40:34 UTC (rev 168) @@ -25,10 +25,10 @@ <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sj" uri="/struts-jquery-tags" %> -<s:url id="url" action="doImport" namespace="/importHistorical"/> +<s:url id="url" action="doImport" namespace="/importDb"/> <meta http-equiv="refresh" content="1;url=${url}"/> -<title><s:text name="echobase.title.importHistoricalProgress"/></title> +<title><s:text name="echobase.title.importDbProgress"/></title> <%-- TODO letellier 20111104 : Add warn icon --%> <p><s:text name="echobase.message.warnImportInProgress"/></p> Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/result.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importHistorical/result.jsp 2011-12-08 05:55:37 UTC (rev 159) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/result.jsp 2011-12-11 21:40:34 UTC (rev 168) @@ -24,7 +24,7 @@ <%@page contentType="text/html" pageEncoding="UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> -<title><s:text name="echobase.title.importHistoricalResult"/></title> +<title><s:text name="echobase.title.importDbResult"/></title> <fieldset> <legend> @@ -37,11 +37,6 @@ <s:label value="%{model.input.fileName}" label="%{getText('echobase.label.importFile')}"/> - <s:label value="%{importResult.numberCreated}" - label="%{getText('echobase.label.numberOfCreatedEntities')}"/> - - <s:label value="%{importResult.numberUpdated}" - label="%{getText('echobase.label.numberOfUpdatedEntities')}"/> </fieldset> <div>TODO</div>
participants (1)
-
tchemit@users.forge.codelutin.com