Echobase-commits
Threads by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
November 2013
- 2 participants
- 19 discussions
r894 - trunk/echobase-services/src/main/resources
by tchemit@users.forge.codelutin.com Nov. 22, 2013
by tchemit@users.forge.codelutin.com Nov. 22, 2013
Nov. 22, 2013
Author: tchemit
Date: 2013-11-22 10:11:50 +0100 (Fri, 22 Nov 2013)
New Revision: 894
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/894
Log:
refs #3856: Probl?\195?\168me de g?\195?\169n?\195?\169ration des donn?\195?\169es spatiales suite ?\195?\160 un import de base.
Modified:
trunk/echobase-services/src/main/resources/postgis-structure.sql
Modified: trunk/echobase-services/src/main/resources/postgis-structure.sql
===================================================================
--- trunk/echobase-services/src/main/resources/postgis-structure.sql 2013-11-22 09:11:02 UTC (rev 893)
+++ trunk/echobase-services/src/main/resources/postgis-structure.sql 2013-11-22 09:11:50 UTC (rev 894)
@@ -264,7 +264,7 @@
*
FROM echobase_cell_spatial_temp LOOP
- PERFORM echobase_fill_cell_spatial_row(cellRow.cellid, cellRow.celltype);
+ PERFORM echobase_fill_cell_spatial_row(cellRow.cellid);
END LOOP;
1
0
r893 - in trunk: echobase-domain/src/main/java/fr/ifremer/echobase/persistence echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb
by tchemit@users.forge.codelutin.com Nov. 22, 2013
by tchemit@users.forge.codelutin.com Nov. 22, 2013
Nov. 22, 2013
Author: tchemit
Date: 2013-11-22 10:11:02 +0100 (Fri, 22 Nov 2013)
New Revision: 893
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/893
Log:
fixes #3776: Erreur lors de la cr?\195?\169ation d'une base embarqu?\195?\169e
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java 2013-11-22 07:01:59 UTC (rev 892)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java 2013-11-22 09:11:02 UTC (rev 893)
@@ -99,11 +99,15 @@
EchoBaseEntityEnum.Data,
+ // Result has a link on cell, need then to import cell before result
+ // see http://forge.codelutin.com/issues/3776
+ EchoBaseEntityEnum.Cell,
+
EchoBaseEntityEnum.Echotype,
EchoBaseEntityEnum.Category,
EchoBaseEntityEnum.Result,
- EchoBaseEntityEnum.Cell,
+// EchoBaseEntityEnum.Cell,
EchoBaseEntityEnum.DataProcessing,
EchoBaseEntityEnum.DataAcquisition,
EchoBaseEntityEnum.Transect,
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java 2013-11-22 07:01:59 UTC (rev 892)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java 2013-11-22 09:11:02 UTC (rev 893)
@@ -69,7 +69,8 @@
throw new ImportException("Could not import db", e);
}
- if (ImportDbMode.REFERENTIAL != importDbMode) {
+ if (ImportDbMode.REFERENTIAL != importDbMode &&
+ getSpatialService().isSpatialAware()) {
// let's update postgis table
getSpatialService().updatePostgisTable();
1
0
r892 - in trunk/echobase-ui/src/main: java/fr/ifremer/echobase/ui/actions/dbeditor resources/config
by tchemit@users.forge.codelutin.com Nov. 22, 2013
by tchemit@users.forge.codelutin.com Nov. 22, 2013
Nov. 22, 2013
Author: tchemit
Date: 2013-11-22 08:01:59 +0100 (Fri, 22 Nov 2013)
New Revision: 892
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/892
Log:
fixes #3851: Can't modify data anymore
Modified:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java
trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java 2013-11-22 06:42:18 UTC (rev 891)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java 2013-11-22 07:01:59 UTC (rev 892)
@@ -41,12 +41,16 @@
}
@Override
- public String input() throws Exception {
+ public String execute() throws Exception {
load();
if (tableMeta != null) {
exportFileName = "export-" + tableMeta.getEntityType().getSimpleName() + ".csv";
}
- return INPUT;
+ return SUCCESS;
}
+
+ public boolean isAdmin() {
+ return getEchoBaseSession().isAdmin();
+ }
}
Modified: trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2013-11-22 06:42:18 UTC (rev 891)
+++ trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2013-11-22 07:01:59 UTC (rev 892)
@@ -42,10 +42,10 @@
</result-types>
<!-- Load db editor main page -->
- <action name="dbeditor" method="input"
+ <action name="dbeditor"
class="fr.ifremer.echobase.ui.actions.dbeditor.LoadEntities">
<interceptor-ref name="prepareParamsStackLogguedWithDb"/>
- <result name="input">/WEB-INF/jsp/dbeditor/dbeditor.jsp</result>
+ <result>/WEB-INF/jsp/dbeditor/dbeditor.jsp</result>
</action>
<!-- Get foreign entities as a select box -->
1
0
Author: tchemit
Date: 2013-11-22 07:42:18 +0100 (Fri, 22 Nov 2013)
New Revision: 891
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/891
Log:
fixes 3850: Updates mavenpom to 4.3
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-10 08:22:52 UTC (rev 890)
+++ trunk/pom.xml 2013-11-22 06:42:18 UTC (rev 891)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>4.2</version>
+ <version>4.3</version>
</parent>
<groupId>fr.ifremer</groupId>
1
0
r890 - in trunk: echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb echobase-domain/src/main/resources/META-INF/services echobase-domain/src/main/xmi echobase-services/src/main/resources
by tchemit@users.forge.codelutin.com Nov. 10, 2013
by tchemit@users.forge.codelutin.com Nov. 10, 2013
Nov. 10, 2013
Author: tchemit
Date: 2013-11-10 09:22:52 +0100 (Sun, 10 Nov 2013)
New Revision: 890
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/890
Log:
refs #3672: Ajout de vues spatiales
Added:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_5.java
Modified:
trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion
trunk/echobase-domain/src/main/xmi/echobase.properties
trunk/echobase-services/src/main/resources/postgis-structure.sql
Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_5.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_5.java (rev 0)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_5.java 2013-11-10 08:22:52 UTC (rev 890)
@@ -0,0 +1,107 @@
+package fr.ifremer.echobase.persistence.migration.workingDb;
+
+/*
+ * #%L
+ * EchoBase :: Domain
+ * $Id$
+ * $HeadURL: http://svn.forge.codelutin.com/svn/echobase/trunk/echobase-domain/src/main/… $
+ * %%
+ * Copyright (C) 2011 - 2013 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%
+ */
+
+import fr.ifremer.echobase.entities.TopiaEchoBasePersistenceContext;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.util.Version;
+
+import java.util.List;
+
+/**
+ * Migrate workgin db to version {@code 2.5}.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.5
+ */
+public class MigrationCallBackForVersion2_5 extends MigrationCallBackForVersion {
+
+ @Override
+ public Version getVersion() {
+ return new Version("2.5");
+ }
+
+ @Override
+ protected void prepareMigrationScript(TopiaContext tx,
+ List<String> queries,
+ boolean showSql,
+ boolean showProgression) throws TopiaException {
+
+ // add spatial view (http://forge.codelutin.com/issues/3672)
+ updatePostgis(tx, queries);
+ }
+
+ protected void updatePostgis(TopiaContext tx, List<String> queries) {
+ TopiaEchoBasePersistenceContext persistenceContext =
+ new TopiaEchoBasePersistenceContext(tx);
+ boolean spatialAware =
+ persistenceContext.isSpatialAware();
+
+ try {
+ if (spatialAware) {
+
+ // add cell data view
+ queries.add("DROP VIEW IF EXISTS echobase_cell_spatial_data;");
+ queries.add("CREATE OR REPLACE VIEW echobase_cell_spatial_data AS\n" +
+ "SELECT\n" +
+ " s.*,\n" +
+ " m.topiaId as metaDataId,\n" +
+ " m.name as metaDataName,\n" +
+ " d.datavalue as dataValue,\n" +
+ " d.topiaid as dataId\n" +
+ "FROM\n" +
+ " echobase_cell_spatial s,\n" +
+ " data d,\n" +
+ " datametadata m\n" +
+ "WHERE\n" +
+ " s.cellid = d.cell AND\n" +
+ " d.datametadata = m.topiaid;");
+
+ // add cell result view
+ queries.add("DROP VIEW IF EXISTS echobase_cell_spatial_result;");
+ queries.add("CREATE OR REPLACE VIEW echobase_cell_spatial_result AS\n" +
+ "SELECT\n" +
+ " s.*,\n" +
+ " m.topiaId as metaDataId,\n" +
+ " m.name as metaDataName,\n" +
+ " r.resultvalue as resultValue,\n" +
+ " r.topiaid as resultId\n" +
+ "FROM\n" +
+ " echobase_cell_spatial s,\n" +
+ " result r,\n" +
+ " datametadata m\n" +
+ "WHERE\n" +
+ " s.cellid = r.cell AND\n" +
+ " r.datametadata = m.topiaid;");
+
+ // add operation data view
+ queries.add("DROP VIEW IF EXISTS echobase_operation_spatial_data;");
+ //TODO Add spatial table
+ }
+ } finally {
+ persistenceContext.rollbackTransaction();
+ }
+ }
+}
Property changes on: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_5.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion
===================================================================
--- trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion 2013-11-10 08:20:40 UTC (rev 889)
+++ trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion 2013-11-10 08:22:52 UTC (rev 890)
@@ -1 +1,2 @@
-fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_2
\ No newline at end of file
+fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_2
+fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_5
\ No newline at end of file
Modified: trunk/echobase-domain/src/main/xmi/echobase.properties
===================================================================
--- trunk/echobase-domain/src/main/xmi/echobase.properties 2013-11-10 08:20:40 UTC (rev 889)
+++ trunk/echobase-domain/src/main/xmi/echobase.properties 2013-11-10 08:22:52 UTC (rev 890)
@@ -25,7 +25,7 @@
model.tagValue.generateOperatorForDAOHelper=true
model.tagValue.generateStandaloneEnumForDAOHelper=true
model.tagValue.constantPrefix=PROPERTY_
-model.tagValue.version=2.2
+model.tagValue.version=2.5
model.tagValue.noPCS=true
model.tagValue.doNotGenerateBooleanGetMethods=true
model.tagValue.indexForeignKeys=true
Modified: trunk/echobase-services/src/main/resources/postgis-structure.sql
===================================================================
--- trunk/echobase-services/src/main/resources/postgis-structure.sql 2013-11-10 08:20:40 UTC (rev 889)
+++ trunk/echobase-services/src/main/resources/postgis-structure.sql 2013-11-10 08:22:52 UTC (rev 890)
@@ -60,6 +60,40 @@
CREATE INDEX echobase_cell_spatial_coordinate3D_gix ON echobase_cell_spatial USING GIST (coordinate3d);
CREATE INDEX echobase_cell_spatial_shape_gix ON echobase_cell_spatial USING GIST (shape);
+-- ajout de vues
+
+DROP VIEW IF EXISTS echobase_spatial_cell_result;
+CREATE OR REPLACE VIEW echobase_spatial_cell_result AS
+SELECT
+ s.*,
+ m.topiaId as metaDataId,
+ m.name as metaDataName,
+ r.resultvalue as resultValue,
+ r.topiaid as resultId
+FROM
+ echobase_cell_spatial s,
+ result r,
+ datametadata m
+WHERE
+ s.cellid = r.cell AND
+ r.datametadata = m.topiaid;
+
+DROP VIEW IF EXISTS echobase_spatial_cell_data;
+CREATE OR REPLACE VIEW echobase_spatial_cell_data AS
+SELECT
+ s.*,
+ m.topiaId as metaDataId,
+ m.name as metaDataName,
+ d.datavalue as dataValue,
+ d.topiaid as dataId
+FROM
+ echobase_cell_spatial s,
+ data d,
+ datametadata m
+WHERE
+ s.cellid = d.cell AND
+ d.datametadata = m.topiaid;
+
-- pour stoquer les traitements spatiaux a effectuer
DROP TABLE IF EXISTS echobase_cell_spatial_temp;
CREATE TABLE echobase_cell_spatial_temp (
@@ -862,6 +896,24 @@
CREATE INDEX echobase_operation_spatial_coordinate_gix ON echobase_operation_spatial USING GIST (coordinate);
+-- ajout de vues
+
+DROP VIEW IF EXISTS echobase_spatial_operation_data;
+
+--CREATE OR REPLACE VIEW echobase_spatial_operation_data AS
+--SELECT
+-- echobase_cell_spatial.*,
+-- datametadata.name,
+-- data.dataValue
+-- data.topiaid as dataId
+--FROM
+-- echobase_cell_spatial,
+-- data,
+-- datametadata
+--WHERE
+-- echobase_cell_spatial.cellid = data.cell AND
+-- data.datametadata = datametadata.topiaid;
+
-- pour stoquer les traitements spatiaux a effectuer
DROP TABLE IF EXISTS echobase_operation_spatial_temp;
CREATE TABLE echobase_operation_spatial_temp (
1
0
r889 - trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery
by tchemit@users.forge.codelutin.com Nov. 10, 2013
by tchemit@users.forge.codelutin.com Nov. 10, 2013
Nov. 10, 2013
Author: tchemit
Date: 2013-11-10 09:20:40 +0100 (Sun, 10 Nov 2013)
New Revision: 889
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/889
Log:
remove obsolete class
Removed:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java
Deleted: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2013-11-10 08:20:13 UTC (rev 888)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2013-11-10 08:20:40 UTC (rev 889)
@@ -1,225 +0,0 @@
-/*
- * #%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.exportQuery;
-
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.ExportQuery;
-import fr.ifremer.echobase.services.service.InternalDbPersistenceService;
-import fr.ifremer.echobase.services.service.exportquery.ExportQueryNotFoundException;
-import fr.ifremer.echobase.services.service.exportquery.ExportQueryService;
-import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.Map;
-
-/**
- * To manage {@link ExportQuery}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.1
- */
-public class ManageExportQuery extends EchoBaseActionSupport {//implements Preparable {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(ManageExportQuery.class);
-
- /** Selected query loaded from database if his id is not empty. */
- protected ExportQuery query;
-
- public ExportQuery getQuery() {
- if (query == null) {
- query = exportQueryService.newExportQuery();
- }
- return query;
- }
-
-// protected boolean newQuery;
-//
-// public void setNewQuery(boolean newQuery) {
-// this.newQuery = newQuery;
-// }
-
- public boolean isNewQuery() {
- return false;
- }
-
- public boolean isQueryExists() {
- return StringUtils.isNotEmpty(getQuery().getTopiaId());
- }
-
- protected boolean canUpdateQuery;
-
- public boolean isCanUpdateQuery() {
- return canUpdateQuery;
- }
-
- /** All available queries from database. */
- protected Map<String, String> queries;
-
- public Map<String, String> getQueries() {
- return queries;
- }
-
- public Map<String, String> getTableNames() {
- return queries;
- }
-
- @Override
- public String execute() throws ExportQueryNotFoundException {
-
- queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
-
- if (queries.isEmpty()) {
-
- // no query saved
- addFlashMessage(_("echobase.info.no.sqlQuery.saved"));
- } else {
-
- String selectedQueryId = getQuery().getTopiaId();
-
- if (!isQueryExists()) {
-
- // no query selected
- addFlashMessage(_("echobase.info.no.sqlQuery.selected"));
-
-// if (isNewQuery()) {
-//
-// // new query in progress
-// addFlashMessage(_("echobase.info.new.sqlQuery.inprogress"));
-// } else {
-//
-// // no query selected
-// addFlashMessage(_("echobase.info.no.sqlQuery.selected"));
-// }
- } else {
-
- // load query from database
- query = exportQueryService.getExportQuery(selectedQueryId);
-
- EchoBaseUser echoBaseUser =
- getEchoBaseSession().getUser();
- canUpdateQuery = echoBaseUser.isAdmin() ||
- echoBaseUser.getEmail().equals(
- query.getLastModifiedUser());
-
- if (!canUpdateQuery) {
-
- // this user can not update selected query
- addFlashMessage(
- _("echobase.info.sqlQuery.not.modifiable"));
- }
- }
- }
-
- if (isQueryExists()) {
-
- // test query
- checkQuery();
- }
- return SUCCESS;
- }
-
-// @Override
-// public void prepare() throws Exception {
-//
-// queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
-//
-// if (queries.isEmpty()) {
-//
-// // no query saved
-// addFlashMessage(_("echobase.info.no.sqlQuery.saved"));
-// } else {
-//
-// String selectedQueryId = getQuery().getTopiaId();
-//
-// if (!isQueryExists()) {
-//
-// if (isNewQuery() || isNewLibreOfficeQuery()) {
-//
-// // new query in progress
-// addFlashMessage(_("echobase.info.new.sqlQuery.inprogress"));
-// } else {
-//
-// // no query selected
-// addFlashMessage(_("echobase.info.no.sqlQuery.selected"));
-// }
-// } else {
-//
-// // load query from database
-// query = exportQueryService.getExportQuery(selectedQueryId);
-//
-// EchoBaseUser echoBaseUser =
-// getEchoBaseSession().getUser();
-// canUpdateQuery = echoBaseUser.isAdmin() ||
-// echoBaseUser.getEmail().equals(
-// query.getLastModifiedUser());
-//
-// if (!canUpdateQuery) {
-//
-// // this user can not update selected query
-// addFlashMessage(
-// _("echobase.info.sqlQuery.not.modifiable"));
-// }
-// }
-// }
-// }
-
- private boolean checkQuery() {
-
- boolean result;
- try {
- exportQueryService.testSql(getQuery().getSqlQuery());
- result = true;
- } catch (Exception e) {
- Throwable cause = e.getCause();
- if (log.isWarnEnabled()) {
- log.warn("Invalid sql ", cause);
- }
- addFieldError("query.sqlQuery",
- _("echobase.error.invalid.sql", cause.getMessage()));
- result = false;
- }
- return result;
- }
-
- //------------------------------------------------------------------------//
- //-- Injected objects //
- //------------------------------------------------------------------------//
-
- protected transient ExportQueryService exportQueryService;
-
- public void setExportQueryService(ExportQueryService exportQueryService) {
- this.exportQueryService = exportQueryService;
- }
-
- protected transient InternalDbPersistenceService internalDbPersistenceService;
-
- public void setInternalDbPersistenceService(InternalDbPersistenceService internalDbPersistenceService) {
- this.internalDbPersistenceService = internalDbPersistenceService;
- }
-}
\ No newline at end of file
1
0
r888 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery
by tchemit@users.forge.codelutin.com Nov. 10, 2013
by tchemit@users.forge.codelutin.com Nov. 10, 2013
Nov. 10, 2013
Author: tchemit
Date: 2013-11-10 09:20:13 +0100 (Sun, 10 Nov 2013)
New Revision: 888
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/888
Log:
improve count of request
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/GenericSQLQuery.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/GenericSQLQuery.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/GenericSQLQuery.java 2013-11-09 18:18:09 UTC (rev 887)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/GenericSQLQuery.java 2013-11-10 08:20:13 UTC (rev 888)
@@ -115,7 +115,31 @@
}
}
+ /**
+ * From a given result set, let's count his number of row.
+ * <p/>
+ * <strong>Note:</strong> the result set must be scrollable to go back to
+ * before first row.
+ *
+ * @param set the result set to inspect
+ * @return the number of row of the given result set
+ * @throws SQLException if any pb
+ * @since 2.6.4
+ */
@Override
+ protected long getNbRows(ResultSet set) throws SQLException {
+
+ //TODO Bring this back to Topia
+ long nbRows = 0;
+ if (set.last()) {
+ nbRows = set.getRow();
+ }
+ // go back before first row (be ware the resultset must be scrollable)
+ set.beforeFirst();
+ return nbRows;
+ }
+
+ @Override
protected Map<String, Object> prepareResult(ResultSet set) throws SQLException {
if (pager != null) {
1
0
Nov. 9, 2013
Author: tchemit
Date: 2013-11-09 19:18:09 +0100 (Sat, 09 Nov 2013)
New Revision: 887
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/887
Log:
fixes #3680: Pb export des donn?\195?\169es echobase
Added:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/AbstractEditExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ConfirmDeleteExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CreateNewExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DeleteExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/EditExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ShowExportQuery.java
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery-validation.xml
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery-validation.xml
Removed:
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/ExportQueryDAOImpl.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryService.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseInjectInterceptor.java
trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
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/exportQuery/exportQuery.jsp
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/ExportQueryDAOImpl.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/ExportQueryDAOImpl.java 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/ExportQueryDAOImpl.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -23,29 +23,30 @@
* #L%
*/
-import com.google.common.collect.Lists;
-import org.apache.commons.lang3.StringUtils;
import org.nuiton.topia.TopiaException;
-import java.util.List;
-
public class ExportQueryDAOImpl<E extends ExportQuery> extends ExportQueryDAOAbstract<E> {
- public boolean isQueryExists(String id, String queryName) throws TopiaException {
+ public boolean isQueryExists(String queryName) throws TopiaException {
String hql = "SELECT COUNT(*)" +
" FROM " + getTopiaEntityEnum().getImplementationFQN() +
" WHERE " + ExportQuery.PROPERTY_NAME + " = :name";
- List<Object> params = Lists.<Object>newArrayList("name", queryName);
+ boolean result = existsByQuery(hql, new String[]{"name", queryName});
+ return result;
+ }
- if (StringUtils.isNotBlank(id)) {
- hql += " AND " + ExportQuery.PROPERTY_TOPIA_ID + " = :id";
- params.add("id");
- params.add(id);
- }
+ public boolean isQueryExists(String id, String queryName) throws TopiaException {
- boolean result = existsByQuery(hql, params.toArray());
+ String hql = "SELECT COUNT(*)" +
+ " FROM " + getTopiaEntityEnum().getImplementationFQN() +
+ " WHERE " + ExportQuery.PROPERTY_NAME + " = :name" +
+ " AND " + ExportQuery.PROPERTY_TOPIA_ID + " != :id";
+
+ boolean result = existsByQuery(
+ hql,
+ new String[]{"name", queryName, "id", id});
return result;
}
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryService.java 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryService.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -65,6 +65,27 @@
}
+ public boolean isQueryNameValid(ExportQuery exportQuery) {
+ String queryName = exportQuery.getName();
+ boolean result = ExportQueries.isQueryNameValid(queryName);
+ return result;
+ }
+
+ public boolean isQueryNameAvailable(ExportQuery exportQuery) {
+ String queryName = exportQuery.getName();
+ String id = exportQuery.getTopiaId();
+ boolean mustCreate = StringUtils.isEmpty(id);
+
+ boolean result;
+ if (mustCreate) {
+
+ result = !getDAO().isQueryExists(queryName);
+ } else {
+ result = !getDAO().isQueryExists(id, queryName);
+ }
+ return result;
+ }
+
public ExportQuery createOrUpdate(ExportQuery exportQuery,
EchoBaseUser user) throws ExportQueryNameAlreadyExistException, ExportQueryInvalidNameException {
try {
@@ -78,20 +99,15 @@
String queryName = exportQuery.getName();
- if (!ExportQueries.isQueryNameValid(queryName)) {
+ if (!isQueryNameValid(exportQuery)) {
// can not accept a non alpha numeric name
throw new ExportQueryInvalidNameException();
}
// check query does not already exists with this name
- if (mustCreate) {
-
- boolean queryExists = dao.isQueryExists(id, queryName);
-
- if (queryExists) {
- throw new ExportQueryNameAlreadyExistException();
- }
+ if (!isQueryNameAvailable(exportQuery)) {
+ throw new ExportQueryNameAlreadyExistException();
}
ExportQuery entityToSave;
@@ -158,11 +174,11 @@
String safeSql = getSafeSql(sql);
GenericSQLQuery sqlQuery = new GenericSQLQuery(safeSql, null);
- getEchoBaseInternalPersistenceContext().findSingleResult(sqlQuery);
+ getEchoBasePersistenceContext().findSingleResult(sqlQuery);
sqlQuery.getColumnNames();
}
- public Map<String, Object>[] executeExportquery(String queryId,
+ public Map<String, Object>[] executeExportQuery(String queryId,
TopiaPagerBean pager) throws ExportQueryNotFoundException {
String sql = getSqlQuery(queryId);
@@ -171,7 +187,7 @@
GenericSQLQuery sqlQuery = new GenericSQLQuery(sql, pager);
try {
List<Map<String, Object>> result =
- getEchoBaseInternalPersistenceContext().findMultipleResult(sqlQuery);
+ getEchoBasePersistenceContext().findMultipleResult(sqlQuery);
return result.toArray(new Map[result.size()]);
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException(
@@ -190,7 +206,7 @@
// do a limit query to one result and obtain the column names
// from the meta data of the result set
GenericSQLQuery sqlQuery = new GenericSQLQuery(limitSql, null);
- getEchoBaseInternalPersistenceContext().findSingleResult(sqlQuery);
+ getEchoBasePersistenceContext().findSingleResult(sqlQuery);
String[] result = sqlQuery.getColumnNames();
return result;
} catch (TopiaException eee) {
@@ -209,7 +225,7 @@
GenericSQLQuery sqlQuery = new GenericSQLQuery(sql, null);
List<Map<String, Object>> rows;
try {
- rows = getEchoBaseInternalPersistenceContext().findMultipleResult(sqlQuery);
+ rows = getEchoBasePersistenceContext().findMultipleResult(sqlQuery);
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException(
"Could not execute sql query", eee);
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/AbstractEditExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/AbstractEditExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/AbstractEditExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,133 @@
+package fr.ifremer.echobase.ui.actions.exportQuery;
+
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.ExportQuery;
+import fr.ifremer.echobase.services.service.InternalDbPersistenceService;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Map;
+
+/**
+ * To save a export query.
+ * <p/>
+ * Created on 11/9/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.5
+ */
+public abstract class AbstractEditExportQuery extends EchoBaseActionSupport {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(AbstractEditExportQuery.class);
+
+ private static final long serialVersionUID = 1L;
+
+ /** Selected query loaded from database if his id is not empty. */
+ protected ExportQuery query;
+
+ public ExportQuery getQuery() {
+ if (query == null) {
+ query = exportQueryService.newExportQuery();
+ }
+ return query;
+ }
+
+ protected boolean canUpdateQuery;
+
+ protected boolean queryExist;
+
+ public boolean isCanUpdateQuery() {
+ return canUpdateQuery;
+ }
+
+ public boolean isQueryExists() {
+ return StringUtils.isNotEmpty(getQuery().getTopiaId());
+ }
+
+ public boolean isNewQuery() {
+ return !isQueryExists();
+ }
+
+ /** All available queries from database. */
+ protected Map<String, String> queries;
+
+ public Map<String, String> getQueries() {
+ return queries;
+ }
+
+ @Override
+ public String input() throws Exception {
+
+ // come back here when validation failed
+ queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
+
+ EchoBaseUser echoBaseUser = getEchoBaseSession().getUser();
+
+ canUpdateQuery = echoBaseUser.isAdmin() ||
+ echoBaseUser.getEmail().equals(
+ query.getLastModifiedUser());
+
+ if (isNewQuery()) {
+
+ // new query in progress
+ addFlashMessage(_("echobase.info.new.sqlQuery.inprogress"));
+ }
+ return INPUT;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ query = exportQueryService.createOrUpdate(
+ getQuery(), getEchoBaseSession().getUser());
+
+ return SUCCESS;
+ }
+
+ @Override
+ public void validate() {
+ super.validate();
+ if (!hasFieldErrors()) {
+ if (!exportQueryService.isQueryNameValid(getQuery())) {
+ addFieldError("query.name",
+ _("echobase.error.query.invalid.name"));
+ } else if (!exportQueryService.isQueryNameAvailable(getQuery())) {
+ addFieldError("query.name",
+ _("echobase.error.query.name.already.exists"));
+ } else {
+ try {
+ exportQueryService.testSql(getQuery().getSqlQuery());
+ } catch (Exception e) {
+ Throwable cause = e.getCause();
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid sql ", cause);
+ }
+ addFieldError("query.sqlQuery",
+ _("echobase.error.invalid.sql", cause.getMessage()));
+ }
+ }
+ }
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Injected objects //
+ //------------------------------------------------------------------------//
+
+ protected transient ExportQueryService exportQueryService;
+
+ public void setExportQueryService(ExportQueryService exportQueryService) {
+ this.exportQueryService = exportQueryService;
+ }
+
+ protected transient InternalDbPersistenceService internalDbPersistenceService;
+
+ public void setInternalDbPersistenceService(InternalDbPersistenceService internalDbPersistenceService) {
+ this.internalDbPersistenceService = internalDbPersistenceService;
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/AbstractEditExportQuery.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,48 @@
+package fr.ifremer.echobase.ui.actions.exportQuery;
+
+import com.opensymphony.xwork2.interceptor.annotations.InputConfig;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * To clone an export query.
+ * <p/>
+ * Created on 11/9/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.5
+ */
+public class CloneExportQuery extends AbstractEditExportQuery {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CloneExportQuery.class);
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void validate() {
+
+ // remove his id
+ query.setTopiaId(null);
+
+ // rename it
+ query.setName(getQuery().getName() + "-clone");
+ super.validate();
+ }
+
+ @InputConfig(methodName = INPUT)
+ @Override
+ public String execute() throws Exception {
+
+ String selectedQueryId = getQuery().getTopiaId();
+
+ if (log.isInfoEnabled()) {
+ log.info("Will clone query: " + selectedQueryId);
+ }
+
+ String result = super.execute();
+ addFlashMessage(_("echobase.info.query.cloned"));
+ return result;
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ConfirmDeleteExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ConfirmDeleteExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ConfirmDeleteExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,59 @@
+package fr.ifremer.echobase.ui.actions.exportQuery;
+
+import fr.ifremer.echobase.entities.ExportQuery;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * To confirm delete an export query.
+ * <p/>
+ * Created on 11/9/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.5
+ */
+public class ConfirmDeleteExportQuery extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ConfirmDeleteExportQuery.class);
+
+ /** Selected query loaded from database if his id is not empty. */
+ protected ExportQuery query;
+
+ public ExportQuery getQuery() {
+ if (query == null) {
+ query = exportQueryService.newExportQuery();
+ }
+ return query;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ String selectedQueryId = getQuery().getTopiaId();
+
+ if (log.isInfoEnabled()) {
+ log.info("Will confirm to delete query: " + selectedQueryId);
+ }
+
+ // get query
+ query = exportQueryService.getExportQuery(selectedQueryId);
+ return SUCCESS;
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Injected objects //
+ //------------------------------------------------------------------------//
+
+ protected transient ExportQueryService exportQueryService;
+
+ public void setExportQueryService(ExportQueryService exportQueryService) {
+ this.exportQueryService = exportQueryService;
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ConfirmDeleteExportQuery.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CreateNewExportQuery.java (from rev 886, trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java)
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CreateNewExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/CreateNewExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,108 @@
+/*
+ * #%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.exportQuery;
+
+import fr.ifremer.echobase.entities.ExportQuery;
+import fr.ifremer.echobase.services.service.InternalDbPersistenceService;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryNotFoundException;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Map;
+
+/**
+ * To create a new {@link ExportQuery}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class CreateNewExportQuery extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CreateNewExportQuery.class);
+
+ /** Selected query loaded from database if his id is not empty. */
+ protected ExportQuery query;
+
+ public ExportQuery getQuery() {
+ if (query == null) {
+ query = exportQueryService.newExportQuery();
+ }
+ return query;
+ }
+
+ public boolean isNewQuery() {
+ return true;
+ }
+
+ public boolean isQueryExists() {
+ return false;
+ }
+
+ public boolean isCanUpdateQuery() {
+ return false;
+ }
+
+ /** All available queries from database. */
+ protected Map<String, String> queries;
+
+ public Map<String, String> getQueries() {
+ return queries;
+ }
+
+ @Override
+ public String execute() throws ExportQueryNotFoundException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will create a new query");
+ }
+
+ queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
+
+ // new query in progress
+ addFlashMessage(_("echobase.info.new.sqlQuery.inprogress"));
+
+ return SUCCESS;
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Injected objects //
+ //------------------------------------------------------------------------//
+
+ protected transient ExportQueryService exportQueryService;
+
+ public void setExportQueryService(ExportQueryService exportQueryService) {
+ this.exportQueryService = exportQueryService;
+ }
+
+ protected transient InternalDbPersistenceService internalDbPersistenceService;
+
+ public void setInternalDbPersistenceService(InternalDbPersistenceService internalDbPersistenceService) {
+ this.internalDbPersistenceService = internalDbPersistenceService;
+ }
+}
\ No newline at end of file
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DeleteExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DeleteExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DeleteExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,57 @@
+package fr.ifremer.echobase.ui.actions.exportQuery;
+
+import fr.ifremer.echobase.entities.ExportQuery;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * To delete an export query.
+ * <p/>
+ * Created on 11/9/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.5
+ */
+public class DeleteExportQuery extends EchoBaseActionSupport {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(DeleteExportQuery.class);
+
+ private static final long serialVersionUID = 1L;
+
+ /** Selected query loaded from database if his id is not empty. */
+ protected ExportQuery query;
+
+ public ExportQuery getQuery() {
+ if (query == null) {
+ query = exportQueryService.newExportQuery();
+ }
+ return query;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ //TODO : do validation
+ if (log.isInfoEnabled()) {
+ log.info("Will delete query: " + getQuery().getTopiaId());
+ }
+ exportQueryService.delete(getQuery().getTopiaId());
+ query = null;
+ addFlashMessage(_("echobase.info.query.removed"));
+ return SUCCESS;
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Injected objects //
+ //------------------------------------------------------------------------//
+
+ protected transient ExportQueryService exportQueryService;
+
+ public void setExportQueryService(ExportQueryService exportQueryService) {
+ this.exportQueryService = exportQueryService;
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DeleteExportQuery.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/EditExportQuery.java (from rev 886, trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java)
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/EditExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/EditExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,145 @@
+/*
+ * #%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.exportQuery;
+
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.ExportQuery;
+import fr.ifremer.echobase.services.service.InternalDbPersistenceService;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryNotFoundException;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Map;
+
+/**
+ * To edit a {@link ExportQuery}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class EditExportQuery extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditExportQuery.class);
+
+ /** Selected query loaded from database if his id is not empty. */
+ protected ExportQuery query;
+
+ public ExportQuery getQuery() {
+ if (query == null) {
+ query = exportQueryService.newExportQuery();
+ }
+ return query;
+ }
+
+ public boolean isNewQuery() {
+ return false;
+ }
+
+ public boolean isQueryExists() {
+ return StringUtils.isNotEmpty(getQuery().getTopiaId());
+ }
+
+ protected boolean canUpdateQuery;
+
+ public boolean isCanUpdateQuery() {
+ return canUpdateQuery;
+ }
+
+ /** All available queries from database. */
+ protected Map<String, String> queries;
+
+ public Map<String, String> getQueries() {
+ return queries;
+ }
+
+ @Override
+ public String execute() throws ExportQueryNotFoundException {
+
+ queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
+
+ String selectedQueryId = getQuery().getTopiaId();
+
+
+ // load query from database
+ query = exportQueryService.getExportQuery(selectedQueryId);
+
+ EchoBaseUser echoBaseUser =
+ getEchoBaseSession().getUser();
+ canUpdateQuery = echoBaseUser.isAdmin() ||
+ echoBaseUser.getEmail().equals(
+ query.getLastModifiedUser());
+
+ if (!canUpdateQuery) {
+
+ // this user can not update selected query
+ addFlashMessage(
+ _("echobase.info.sqlQuery.not.modifiable"));
+ }
+
+ // test query
+ checkQuery();
+
+ return SUCCESS;
+ }
+
+ private boolean checkQuery() {
+
+ boolean result;
+ try {
+ exportQueryService.testSql(getQuery().getSqlQuery());
+ result = true;
+ } catch (Exception e) {
+ Throwable cause = e.getCause();
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid sql ", cause);
+ }
+ addFieldError("query.sqlQuery",
+ _("echobase.error.invalid.sql", cause.getMessage()));
+ result = false;
+ }
+ return result;
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Injected objects //
+ //------------------------------------------------------------------------//
+
+ protected transient ExportQueryService exportQueryService;
+
+ public void setExportQueryService(ExportQueryService exportQueryService) {
+ this.exportQueryService = exportQueryService;
+ }
+
+ protected transient InternalDbPersistenceService internalDbPersistenceService;
+
+ public void setInternalDbPersistenceService(InternalDbPersistenceService internalDbPersistenceService) {
+ this.internalDbPersistenceService = internalDbPersistenceService;
+ }
+}
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -61,7 +61,7 @@
@Override
public String execute() throws Exception {
- datas = exportQueryService.executeExportquery(queryId, pager);
+ datas = exportQueryService.executeExportQuery(queryId, pager);
return SUCCESS;
}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -23,12 +23,10 @@
*/
package fr.ifremer.echobase.ui.actions.exportQuery;
-import com.opensymphony.xwork2.Preparable;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.ExportQuery;
import fr.ifremer.echobase.services.service.InternalDbPersistenceService;
-import fr.ifremer.echobase.services.service.exportquery.ExportQueryInvalidNameException;
-import fr.ifremer.echobase.services.service.exportquery.ExportQueryNameAlreadyExistException;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryNotFoundException;
import fr.ifremer.echobase.services.service.exportquery.ExportQueryService;
import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
import org.apache.commons.lang3.StringUtils;
@@ -43,7 +41,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public class ManageExportQuery extends EchoBaseActionSupport implements Preparable {
+public class ManageExportQuery extends EchoBaseActionSupport {//implements Preparable {
private static final long serialVersionUID = 1L;
@@ -60,28 +58,16 @@
return query;
}
- protected boolean newQuery;
+// protected boolean newQuery;
+//
+// public void setNewQuery(boolean newQuery) {
+// this.newQuery = newQuery;
+// }
- public void setNewQuery(boolean newQuery) {
- this.newQuery = newQuery;
- }
-
public boolean isNewQuery() {
- return newQuery;
+ return false;
}
- protected boolean newLibreOfficeQuery;
-
- public void setNewLibreOfficeQuery(boolean newLibreOfficeQuery) {
- this.newLibreOfficeQuery = newLibreOfficeQuery;
- }
-
- public boolean isNewLibreOfficeQuery() {
- return newLibreOfficeQuery;
- }
-
- protected boolean queryExists;
-
public boolean isQueryExists() {
return StringUtils.isNotEmpty(getQuery().getTopiaId());
}
@@ -103,66 +89,9 @@
return queries;
}
- public String saveQuery() throws Exception {
-
- String result = INPUT;
-
- boolean safeSql = checkQuery();
-
- if (safeSql) {
- try {
- query = exportQueryService.createOrUpdate(
- getQuery(), getEchoBaseSession().getUser());
-
- result = SUCCESS;
- } catch (ExportQueryInvalidNameException e) {
- addFieldError("query.name",
- _("echobase.error.query.invalid.name"));
- } catch (ExportQueryNameAlreadyExistException e) {
- addFieldError("query.name",
- _("echobase.error.query.name.already.exists"));
- }
- }
- return result;
- }
-
- public String cloneQuery() throws Exception {
-
- getQuery().setTopiaId(null);
- getQuery().setName(getQuery().getName() + "-clone");
- query = exportQueryService.createOrUpdate(getQuery(),
- getEchoBaseSession().getUser()
- );
- return SUCCESS;
- }
-
- public String confirmDeleteQuery() throws Exception {
-
- return SUCCESS;
- }
-
- public String deleteQuery() throws Exception {
-
- //TODO : do validation
- exportQueryService.delete(getQuery().getTopiaId());
- query = null;
- return SUCCESS;
- }
-
@Override
- public String execute() {
+ public String execute() throws ExportQueryNotFoundException {
- if (StringUtils.isNotEmpty(getQuery().getTopiaId())) {
-
- // test query
- checkQuery();
- }
- return SUCCESS;
- }
-
- @Override
- public void prepare() throws Exception {
-
queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
if (queries.isEmpty()) {
@@ -175,15 +104,18 @@
if (!isQueryExists()) {
- if (isNewQuery() || isNewLibreOfficeQuery()) {
+ // no query selected
+ addFlashMessage(_("echobase.info.no.sqlQuery.selected"));
- // new query in progress
- addFlashMessage(_("echobase.info.new.sqlQuery.inprogress"));
- } else {
-
- // no query selected
- addFlashMessage(_("echobase.info.no.sqlQuery.selected"));
- }
+// if (isNewQuery()) {
+//
+// // new query in progress
+// addFlashMessage(_("echobase.info.new.sqlQuery.inprogress"));
+// } else {
+//
+// // no query selected
+// addFlashMessage(_("echobase.info.no.sqlQuery.selected"));
+// }
} else {
// load query from database
@@ -203,8 +135,60 @@
}
}
}
+
+ if (isQueryExists()) {
+
+ // test query
+ checkQuery();
+ }
+ return SUCCESS;
}
+// @Override
+// public void prepare() throws Exception {
+//
+// queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
+//
+// if (queries.isEmpty()) {
+//
+// // no query saved
+// addFlashMessage(_("echobase.info.no.sqlQuery.saved"));
+// } else {
+//
+// String selectedQueryId = getQuery().getTopiaId();
+//
+// if (!isQueryExists()) {
+//
+// if (isNewQuery() || isNewLibreOfficeQuery()) {
+//
+// // new query in progress
+// addFlashMessage(_("echobase.info.new.sqlQuery.inprogress"));
+// } else {
+//
+// // no query selected
+// addFlashMessage(_("echobase.info.no.sqlQuery.selected"));
+// }
+// } else {
+//
+// // load query from database
+// query = exportQueryService.getExportQuery(selectedQueryId);
+//
+// EchoBaseUser echoBaseUser =
+// getEchoBaseSession().getUser();
+// canUpdateQuery = echoBaseUser.isAdmin() ||
+// echoBaseUser.getEmail().equals(
+// query.getLastModifiedUser());
+//
+// if (!canUpdateQuery) {
+//
+// // this user can not update selected query
+// addFlashMessage(
+// _("echobase.info.sqlQuery.not.modifiable"));
+// }
+// }
+// }
+// }
+
private boolean checkQuery() {
boolean result;
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,45 @@
+package fr.ifremer.echobase.ui.actions.exportQuery;
+
+import com.opensymphony.xwork2.interceptor.annotations.InputConfig;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * To save a query.
+ * <p/>
+ * Created on 11/9/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.5
+ */
+public class SaveExportQuery extends AbstractEditExportQuery {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(SaveExportQuery.class);
+
+ private static final long serialVersionUID = 1L;
+
+ @InputConfig(methodName = INPUT)
+ @Override
+ public String execute() throws Exception {
+
+ boolean newQuery = isNewQuery();
+ if (log.isInfoEnabled()) {
+ if (newQuery) {
+
+ log.info("Will create query: " + getQuery().getName());
+ } else {
+ log.info("Will save query with id: " + getQuery().getTopiaId());
+ }
+ }
+
+ String result = super.execute();
+ if (newQuery) {
+ addFlashMessage(_("echobase.info.query.created"));
+ } else {
+ addFlashMessage(_("echobase.info.query.saved"));
+ }
+ return result;
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ShowExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ShowExportQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ShowExportQuery.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,110 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL: http://svn.forge.codelutin.com/svn/echobase/trunk/echobase-ui/src/main/java… $
+ * %%
+ * 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.exportQuery;
+
+import fr.ifremer.echobase.entities.ExportQuery;
+import fr.ifremer.echobase.entities.ExportQueryImpl;
+import fr.ifremer.echobase.services.service.InternalDbPersistenceService;
+import fr.ifremer.echobase.services.service.exportquery.ExportQueryNotFoundException;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Map;
+
+/**
+ * To show all {@link ExportQuery}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class ShowExportQuery extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ShowExportQuery.class);
+
+ /** Selected query loaded from database if his id is not empty. */
+ protected final ExportQuery query = new ExportQueryImpl();
+
+ public ExportQuery getQuery() {
+// if (query == null) {
+// query = exportQueryService.newExportQuery();
+// }
+ return query;
+ }
+
+ public boolean isNewQuery() {
+ return false;
+ }
+
+ public boolean isQueryExists() {
+ return false;
+ }
+
+ public boolean isCanUpdateQuery() {
+ return false;
+ }
+
+ /** All available queries from database. */
+ protected Map<String, String> queries;
+
+ public Map<String, String> getQueries() {
+ return queries;
+ }
+
+ @Override
+ public String execute() throws ExportQueryNotFoundException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will show all queries");
+ }
+
+ queries = internalDbPersistenceService.loadSortAndDecorate(ExportQuery.class);
+
+ if (queries.isEmpty()) {
+
+ // no query saved
+ addFlashMessage(_("echobase.info.no.sqlQuery.saved"));
+ }
+ return SUCCESS;
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Injected objects //
+ //------------------------------------------------------------------------//
+
+// protected transient ExportQueryService exportQueryService;
+//
+// public void setExportQueryService(ExportQueryService exportQueryService) {
+// this.exportQueryService = exportQueryService;
+// }
+
+ protected transient InternalDbPersistenceService internalDbPersistenceService;
+
+ public void setInternalDbPersistenceService(InternalDbPersistenceService internalDbPersistenceService) {
+ this.internalDbPersistenceService = internalDbPersistenceService;
+ }
+}
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ShowExportQuery.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseInjectInterceptor.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseInjectInterceptor.java 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseInjectInterceptor.java 2013-11-09 18:18:09 UTC (rev 887)
@@ -112,24 +112,8 @@
}
}
-
- try {
-
- return invocation.invoke();
-
- } finally {
-
- // serviceContext.getPersistenceContext().getEntityTransaction().rollback();
-
- }
-
- } else {
-
- // not an action, just process
-
- return invocation.invoke();
-
}
+ return invocation.invoke();
}
@@ -138,14 +122,6 @@
EchoBaseSession session = EchoBaseSession.getEchoBaseSession(
invocation.getInvocationContext());
-// if (session == null) {
-//
-// session = new EchoBaseSession();
-//
-// invocation.getInvocationContext().getSession().put(EchoBaseSession.SESSION_PARAMETER, session);
-//
-// }
-
return session;
}
Modified: trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml 2013-11-09 18:18:09 UTC (rev 887)
@@ -29,13 +29,19 @@
<struts>
- <package name="exportQuery" extends="logguedAndWithDb" namespace="/exportQuery">
+ <package name="exportQuery" extends="logguedAndWithDb"
+ namespace="/exportQuery">
<result-types>
- <result-type name="redirectExportQuery"
+ <result-type name="redirectToList"
class="org.apache.struts2.dispatcher.ServletActionRedirectResult">
- <param name="actionName">manageExportQuery</param>
- <param name="namespace">export</param>
+ <param name="actionName">list</param>
+ <param name="namespace">exportQuery</param>
+ </result-type>
+ <result-type name="redirectToEdit"
+ class="org.apache.struts2.dispatcher.ServletActionRedirectResult">
+ <param name="actionName">edit</param>
+ <param name="namespace">exportQuery</param>
<param name="query.topiaId">${query.topiaId}</param>
</result-type>
<result-type name="showList"
@@ -46,23 +52,25 @@
</result-types>
- <interceptors>
- <!-- authenticated stack with params - prepare - params -->
- <interceptor-stack name="paramsPrepareParamsStackLogguedWithDb">
- <interceptor-ref name="i18n"/>
- <interceptor-ref name="checkUserLoggued"/>
- <interceptor-ref name="checkWorkingDbSelected"/>
- <interceptor-ref name="paramsPrepareParamsStack"/>
- </interceptor-stack>
- </interceptors>
-
<!-- Display export query main page -->
- <action name="manageExportQuery"
- class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
- <interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>
+ <action name="list"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.ShowExportQuery">
+ <!--<interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>-->
<result type="showList"/>
</action>
+ <!-- Edit a query -->
+ <action name="edit"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.EditExportQuery">
+ <result type="showList"/>
+ </action>
+
+ <!-- To create a new query -->
+ <action name="create"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.CreateNewExportQuery">
+ <result type="showList"/>
+ </action>
+
<!-- Display the result of the export query execution -->
<action name="exportQueryResult"
class="fr.ifremer.echobase.ui.actions.exportQuery.ExportQueryResult">
@@ -84,40 +92,37 @@
</action>
<!-- Clone the export query -->
- <action name="clone" method="cloneQuery"
- class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
- <interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>
+ <action name="clone"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.CloneExportQuery">
+ <interceptor-ref name="prepareParamsStackLogguedWithDb"/>
<result name="input" type="showList"/>
- <result type="redirectExportQuery"/>
+ <result type="redirectToEdit"/>
</action>
<!-- Save the export query -->
- <action name="save" method="saveQuery"
- class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
- <interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>
+ <action name="save"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.SaveExportQuery">
+ <interceptor-ref name="prepareParamsStackLogguedWithDb"/>
<result name="input" type="showList"/>
- <result type="redirectExportQuery"/>
+ <result type="redirectToEdit"/>
</action>
<!-- Confirm to delete the export query -->
- <action name="confirmDelete" method="confirmDeleteQuery"
- class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
- <interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>
+ <action name="confirmDelete"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.ConfirmDeleteExportQuery">
<result>/WEB-INF/jsp/exportQuery/confirmDelete.jsp</result>
</action>
<!-- Delete the export query -->
- <action name="delete" method="deleteQuery"
- class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
- <interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>
- <result name="input" type="showList"/>
- <result type="redirectExportQuery"/>
+ <action name="delete"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.DeleteExportQuery">
+ <result type="redirectToList"/>
</action>
<!-- Download the sql query csv file -->
<action name="downloadExportQueryResult"
class="fr.ifremer.echobase.ui.actions.exportQuery.DownloadExportQueryResult">
- <interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>
+ <!--<interceptor-ref name="paramsPrepareParamsStackLogguedWithDb"/>-->
<result type="stream">
<param name="contentType">${contentType}</param>
<param name="contentLength">${contentLength}</param>
Copied: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery-validation.xml (from rev 886, trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml)
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery-validation.xml (rev 0)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/CloneExportQuery-validation.xml 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,79 @@
+<!--
+ #%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 validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="query.name">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.name.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.description">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.description.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.sqlQuery">
+
+ <field-validator type="requiredstring" short-circuit="true">
+ <message key="echobase.error.export.sqlQuery.requiredstring"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("insert")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.insert.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("update")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.update.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("delete")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.delete.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("drop")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.drop.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("alter")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.alter.word"/>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Deleted: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml 2013-11-09 18:18:09 UTC (rev 887)
@@ -1,49 +0,0 @@
-<!--
- #%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 validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
- "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
-<validators>
-
- <field name="query.name">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.name.requiredstring"/>
- </field-validator>
- </field>
-
- <field name="query.description">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.description.requiredstring"/>
- </field-validator>
- </field>
-
- <field name="query.sqlQuery">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.sqlQuery.requiredstring"/>
- </field-validator>
- </field>
-
-</validators>
\ No newline at end of file
Deleted: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml 2013-11-09 18:18:09 UTC (rev 887)
@@ -1,80 +0,0 @@
-<!--
- #%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 validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
- "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
-<validators>
-
- <field name="query.name">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.name.requiredstring"/>
- </field-validator>
- </field>
-
- <field name="query.description">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.description.requiredstring"/>
- </field-validator>
- </field>
-
- <field name="query.sqlQuery">
-
- <field-validator type="requiredstring" short-circuit="true">
- <message key="echobase.error.export.sqlQuery.requiredstring"/>
- </field-validator>
-
- <field-validator type="fieldexpression" short-circuit="true">
- <param name="expression">
- <![CDATA[!query.sqlQuery.toLowerCase().contains("insert")]]></param>
- <message key="echobase.error.export.sqlQuery.forbidden.insert.word"/>
- </field-validator>
-
- <field-validator type="fieldexpression" short-circuit="true">
- <param name="expression">
- <![CDATA[!query.sqlQuery.toLowerCase().contains("update")]]></param>
- <message key="echobase.error.export.sqlQuery.forbidden.update.word"/>
- </field-validator>
-
- <field-validator type="fieldexpression" short-circuit="true">
- <param name="expression">
- <![CDATA[!query.sqlQuery.toLowerCase().contains("delete")]]></param>
- <message key="echobase.error.export.sqlQuery.forbidden.delete.word"/>
- </field-validator>
-
- <field-validator type="fieldexpression" short-circuit="true">
- <param name="expression">
- <![CDATA[!query.sqlQuery.toLowerCase().contains("drop")]]></param>
- <message key="echobase.error.export.sqlQuery.forbidden.drop.word"/>
- </field-validator>
-
- <field-validator type="fieldexpression" short-circuit="true">
- <param name="expression">
- <![CDATA[!query.sqlQuery.toLowerCase().contains("alter")]]></param>
- <message key="echobase.error.export.sqlQuery.forbidden.alter.word"/>
- </field-validator>
-
- </field>
-
-</validators>
\ No newline at end of file
Copied: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery-validation.xml (from rev 886, trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml)
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery-validation.xml (rev 0)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/SaveExportQuery-validation.xml 2013-11-09 18:18:09 UTC (rev 887)
@@ -0,0 +1,80 @@
+<!--
+ #%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 validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="query.name">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.name.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.description">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.description.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.sqlQuery">
+
+ <field-validator type="requiredstring" short-circuit="true">
+ <message key="echobase.error.export.sqlQuery.requiredstring"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("insert")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.insert.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("update")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.update.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("delete")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.delete.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("drop")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.drop.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("alter")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.alter.word"/>
+ </field-validator>
+
+ </field>
+
+</validators>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-09 18:18:09 UTC (rev 887)
@@ -266,6 +266,10 @@
echobase.info.no.workingDb.selected=No working database selected
echobase.info.no.workingDbConfiguration.saved=No working database configuration saved
echobase.info.no.workingDbConfiguration.selected=Select a working database configuration and then connect
+echobase.info.query.cloned=
+echobase.info.query.created=
+echobase.info.query.removed=
+echobase.info.query.saved=
echobase.info.removeData.failed=Import removal failed
echobase.info.removeData.succeded=Successful data import removal
echobase.info.reportBug=Bug report
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 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2013-11-09 18:18:09 UTC (rev 887)
@@ -266,6 +266,10 @@
echobase.info.no.workingDb.selected=Aucune base de travail sélectionnée
echobase.info.no.workingDbConfiguration.saved=Aucune configuration de base de travail enregistrée
echobase.info.no.workingDbConfiguration.selected=Sélectionner une configuration pour ensuite vous y connecter
+echobase.info.query.cloned=Requête dupliquée
+echobase.info.query.created=Requête créée
+echobase.info.query.removed=Requête supprimée
+echobase.info.query.saved=Requête mise à jour
echobase.info.removeData.failed=La suppresion de l'import a échoué
echobase.info.removeData.succeded=La suppresion de l'import a réussi
echobase.info.reportBug=Rapport de bug
Modified: trunk/echobase-ui/src/main/resources/struts.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/struts.xml 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/resources/struts.xml 2013-11-09 18:18:09 UTC (rev 887)
@@ -35,8 +35,7 @@
name="default" />
<bean class="org.nuiton.web.struts2.I18nTextProvider"
- name="i18nTextProvider"
- type="com.opensymphony.xwork2.TextProvider"/>
+ name="i18nTextProvider" type="com.opensymphony.xwork2.TextProvider"/>
<!-- dev mode tuning -->
<constant name="struts.devMode" value="${devMode}"/>
@@ -152,6 +151,35 @@
<interceptor-ref name="debugging"/>
</interceptor-stack>
+ <!--interceptor-stack name="echobaseParamsPrepareParamsStack">
+ <interceptor-ref name="exception"/>
+ <interceptor-ref name="alias"/>
+ <interceptor-ref name="i18n"/>
+ <interceptor-ref name="checkbox"/>
+ <interceptor-ref name="multiselect"/>
+ <interceptor-ref name="echobaseInjector"/>
+ <interceptor-ref name="params">
+ <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
+ </interceptor-ref>
+ <interceptor-ref name="servletConfig"/>
+ <interceptor-ref name="prepare"/>
+ <interceptor-ref name="chain"/>
+ <interceptor-ref name="modelDriven"/>
+ <interceptor-ref name="fileUpload"/>
+ <interceptor-ref name="staticParams"/>
+ <interceptor-ref name="actionMappingParams"/>
+ <interceptor-ref name="params">
+ <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
+ </interceptor-ref>
+ <interceptor-ref name="conversionError"/>
+ <interceptor-ref name="validation">
+ <param name="excludeMethods">input,back,cancel,browse</param>
+ </interceptor-ref>
+ <interceptor-ref name="workflow">
+ <param name="excludeMethods">input,back,cancel,browse</param>
+ </interceptor-ref>
+ </interceptor-stack-->
+
</interceptors>
<!-- default action to use everywhere (fix i18n when not translated) -->
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2013-11-09 18:18:09 UTC (rev 887)
@@ -102,7 +102,7 @@
<span><s:text name="echobase.menu.importData"/></s:a></span>
</li>
<li>
- <s:a action="manageExportQuery" namespace="/exportQuery"
+ <s:a action="list" namespace="/exportQuery"
cssClass="expDonnee">
<span><s:text name="echobase.menu.export"/></span>
</s:a>
@@ -159,7 +159,7 @@
<s:else>
<s:if test="#session.echoBaseSession.workingDbSelected">
<li>
- <s:a action="manageExportQuery" namespace="/exportQuery"
+ <s:a action="list" namespace="/exportQuery"
cssClass="expDonnee">
<span><s:text name="echobase.menu.export"/></span>
</s:a>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp 2013-11-04 07:59:04 UTC (rev 886)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp 2013-11-09 18:18:09 UTC (rev 887)
@@ -29,33 +29,29 @@
<script type="text/javascript">
- function reloadPage(params) {
- var url = "<s:url action='manageExportQuery' namespace='/exportQuery'/>?";
- window.location = url + $.param(params);
- return false;
- }
+ function reloadPage(id) {
+ if (!!!id) {
- function newQuery(newParam) {
- if (<s:property value="%{queryExists or (!newQuery and !newLibreOfficeQuery)}"/>) {
- var params = {};
- params[newParam] = true;
- reloadPage(params);
+ // no edit (show list)
+ window.location = "<s:url action='list' namespace='/exportQuery'/>";
} else {
- $('[name="query.topiaId"]').val('');
- $('[name="query.name"]').val('');
- $('[name="query.description"]').val('');
- $('[name="query.sqlQuery"]').val('');
- if (newParam=='newLibreOfficeQuery') {
- openNewLibreOfficeDialog();
- }
+
+ // edit query
+ window.location = "<s:url action='edit' namespace='/exportQuery'/>?" + $.param({'query.topiaId': id});
}
return false;
}
- function reloadQuery() {
- return reloadPage({'query.topiaId':'<s:property value="query.topiaId"/>'});
+ function newQuery() {
+ window.location = "<s:url action='create' namespace='/exportQuery'/>";
+ return false;
}
+ // function reloadQuery() {
+ <%--return reloadPage('<s:property value="query.topiaId"/>');--%>
+ // }
+
+ <s:if test="%{queryExists}">
function openNewLibreOfficeDialog() {
var dialog = $("#newLibreOfficeDialog");
var url = "<s:url action='newLibreOfficeQuery' namespace='/exportQuery' method="input"/>";
@@ -65,14 +61,16 @@
return false;
}
- function confirmDeleteQuery() {
- var url = "<s:url action='confirmDelete' namespace='/exportQuery'/>?" +
- $.param({ 'query.topiaId':'<s:property value="query.topiaId"/>'});
+ function openConfirmDeleteQueryDialog() {
var dialog = $("#confirmDeleteDialog");
+ var url = "<s:url action='confirmDelete' namespace='/exportQuery'/>?" +
+ $.param({ 'query.topiaId': '<s:property value="query.topiaId"/>'});
+ dialog.html("");
dialog.load(url);
dialog.dialog('open');
return false;
}
+ </s:if>
</script>
<title><s:text name="echobase.title.export"/></title>
@@ -81,7 +79,7 @@
<ul class="toolbar floatLeft">
<li>
- <s:submit onclick="return newQuery('newQuery');" theme="simple"
+ <s:submit onclick="return newQuery();" theme="simple"
key="echobase.action.newQuery"/>
</li>
</ul>
@@ -93,7 +91,7 @@
list="queries" headerKey="" headerValue="" theme="simple"/>
</fieldset>
- <s:if test="%{!#noError or queryExists or newQuery or newLibreOfficeQuery}">
+ <s:if test="%{!#noError or queryExists or newQuery}">
<fieldset>
<legend><s:text name="echobase.legend.sqlQuery.configuration"/></legend>
@@ -101,7 +99,8 @@
readonly="%{queryExists and !canUpdateQuery}"
label="%{getText('echobase.label.query.name')}"/>
- <s:textarea key="query.description" requiredLabel="true" cols="160" rows="2"
+ <s:textarea key="query.description" requiredLabel="true" cols="160"
+ rows="2"
readonly="%{queryExists and !canUpdateQuery}"
label="%{getText('echobase.label.query.description')}"/>
@@ -124,8 +123,8 @@
</li>
<s:if test="queryExists">
<li>
- <s:submit onclick="return reloadQuery();" theme="simple"
- key="echobase.action.reloadSqlQuery"/>
+ <s:submit onclick="return reloadPage('%{query.topiaId}');"
+ theme="simple" key="echobase.action.reloadSqlQuery"/>
</li>
<li>
<s:submit action="clone" theme="simple"
@@ -133,8 +132,8 @@
</li>
<s:if test="canUpdateQuery">
<li>
- <s:submit onclick="return confirmDeleteQuery();" theme="simple"
- key="echobase.action.delete"/>
+ <s:submit onclick="return openConfirmDeleteQueryDialog();"
+ theme="simple" key="echobase.action.delete"/>
</li>
<li>
<s:submit action="save" theme="simple"
@@ -144,6 +143,10 @@
</s:if>
<s:if test="%{!queryExists}">
<li>
+ <s:submit action="list" theme="simple"
+ key="echobase.action.cancel"/>
+ </li>
+ <li>
<s:submit action="save" theme="simple"
key="echobase.action.createSqlQuery"/>
</li>
@@ -170,7 +173,7 @@
jQuery(document).ready(function () {
$('[name="query.topiaId"]').change(function (event) {
- reloadPage({'query.topiaId':this.value});
+ reloadPage(this.value);
});
if (<s:property value='%{#noError and queryExists}'/>) {
@@ -178,19 +181,13 @@
// load sql query
$.ajax(
{
- url:'<s:url action="exportQueryResult" namespace="/exportQuery"/>',
- data:{queryId:$('[name="query.topiaId"]').val()},
- success:function (data, textStatus, jqXHR) {
+ url: '<s:url action="exportQueryResult" namespace="/exportQuery"/>',
+ data: {queryId: $('[name="query.topiaId"]').val()},
+ success: function (data, textStatus, jqXHR) {
$('#resultGrid').html(data);
}
});
}
-
- if (<s:property value="newLibreOfficeQuery"/>) {
-
- // auto load new libreOffice dialog
- openNewLibreOfficeDialog();
- }
});
</script>
1
0
The EchoBase team is pleased to announce the echobase-2.4 release!
The French Institute for the Exploitation of the Sea (Ifremer) has designed
an open software suite for storing fisheries acoustic data and computing
acoustic indicators for survey-based ecosystem monitoring.
It comprises a postgreSQL database designed to store acoustic, navigation
and fishing data from ecosystemic surveys (EchoBase) and a suite of R
codes (EchoR) for computing fish population indicators based on Echobase
data.
Documentation of the project can be found here:
http://maven-site.forge.codelutin.com/echobase
Changes
-------
Changes in this version include:
New features:
o Faciliter la création de nouvelles bases Issue: 3667. Thanks to Tony Chemit. Resolved by tchemit.
o Simplifier la mise en place d'une base spatiale Issue: 3661. Thanks to Tony Chemit. Resolved by tchemit.
o Ajout des données spatiales pour les opérations Issue: 3660. Thanks to Tony Chemit. Resolved by tchemit.
o Utilisation des types geometry Issue: 3652. Thanks to Tony Chemit. Resolved by tchemit.
Fixed Bugs:
o L'application embarquée ne démarre plus Issue: 3663. Thanks to Tony Chemit. Resolved by tchemit.
Changes:
o Updates mavenpom to 4.2 Issue: 3665. Thanks to Tony Chemit. Resolved by tchemit.
o Updates i18n-m-p to 2.5.2 Issue: 3666. Thanks to Tony Chemit. Resolved by tchemit.
o Updates to topia 3.0-alpha-3.1 Issue: 3664. Thanks to Tony Chemit. Resolved by tchemit.
o Updates pogresql driver to 9.2-1003-jdbc4 Issue: 3662. Thanks to Tony Chemit. Resolved by tchemit.
Downloads
---------
For a manual installation, you can download files here:
http://forge.codelutin.com/projects/echobase/files
* echobase-embedded-2.4-SNAPSHOT.zip - http://forge.codelutin.com/attachments/download/1199
* echobase-embedded-2.4-SNAPSHOT.zip - http://forge.codelutin.com/attachments/download/1200
* echobase-full-2.4-SNAPSHOT.war - http://forge.codelutin.com/attachments/download/1201
* echobase-full-2.4-SNAPSHOT.war - http://forge.codelutin.com/attachments/download/1202
* echobase-embedded-2.4.zip - http://forge.codelutin.com/attachments/download/1203
* echobase-full-2.4.war - http://forge.codelutin.com/attachments/download/1204
* echobase-referentiel-2.4.echobase - http://forge.codelutin.com/attachments/download/1205
Maven artifacts
---------------
Artifacts are deployed in nuiton maven repository
http://maven.nuiton.org/other-releases/
Have fun!
-EchoBase team
1
0
r886 - in trunk: . echobase-domain echobase-services echobase-tools echobase-ui
by tchemit@users.forge.codelutin.com Nov. 4, 2013
by tchemit@users.forge.codelutin.com Nov. 4, 2013
Nov. 4, 2013
Author: tchemit
Date: 2013-11-04 08:59:04 +0100 (Mon, 04 Nov 2013)
New Revision: 886
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/886
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/echobase-domain/pom.xml
trunk/echobase-services/pom.xml
trunk/echobase-tools/pom.xml
trunk/echobase-ui/pom.xml
trunk/pom.xml
Modified: trunk/echobase-domain/pom.xml
===================================================================
--- trunk/echobase-domain/pom.xml 2013-11-04 07:58:46 UTC (rev 885)
+++ trunk/echobase-domain/pom.xml 2013-11-04 07:59:04 UTC (rev 886)
@@ -9,7 +9,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-services/pom.xml
===================================================================
--- trunk/echobase-services/pom.xml 2013-11-04 07:58:46 UTC (rev 885)
+++ trunk/echobase-services/pom.xml 2013-11-04 07:59:04 UTC (rev 886)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-tools/pom.xml
===================================================================
--- trunk/echobase-tools/pom.xml 2013-11-04 07:58:46 UTC (rev 885)
+++ trunk/echobase-tools/pom.xml 2013-11-04 07:59:04 UTC (rev 886)
@@ -11,7 +11,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2013-11-04 07:58:46 UTC (rev 885)
+++ trunk/echobase-ui/pom.xml 2013-11-04 07:59:04 UTC (rev 886)
@@ -7,7 +7,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-04 07:58:46 UTC (rev 885)
+++ trunk/pom.xml 2013-11-04 07:59:04 UTC (rev 886)
@@ -11,7 +11,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4</version>
+ <version>2.5-SNAPSHOT</version>
<modules>
<module>echobase-domain</module>
@@ -85,12 +85,12 @@
</developers>
<scm>
- <url>https://forge.codelutin.com/repositories/browse/echobase/tags/echobase-2.4</url>
+ <url>https://forge.codelutin.com/repositories/browse/echobase/trunk</url>
<connection>
- scm:svn:https://forge.codelutin.com/svn/echobase/tags/echobase-2.4
+ scm:svn:https://forge.codelutin.com/svn/echobase/trunk
</connection>
<developerConnection>
- scm:svn:https://forge.codelutin.com/svn/echobase/tags/echobase-2.4
+ scm:svn:https://forge.codelutin.com/svn/echobase/trunk
</developerConnection>
</scm>
1
0
Author: tchemit
Date: 2013-11-04 08:58:46 +0100 (Mon, 04 Nov 2013)
New Revision: 885
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/885
Log:
[maven-release-plugin] copy for tag echobase-2.4
Added:
tags/echobase-2.4/
1
0
r884 - in trunk: . echobase-domain echobase-services echobase-tools echobase-ui
by tchemit@users.forge.codelutin.com Nov. 4, 2013
by tchemit@users.forge.codelutin.com Nov. 4, 2013
Nov. 4, 2013
Author: tchemit
Date: 2013-11-04 08:58:36 +0100 (Mon, 04 Nov 2013)
New Revision: 884
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/884
Log:
[maven-release-plugin] prepare release echobase-2.4
Modified:
trunk/echobase-domain/pom.xml
trunk/echobase-services/pom.xml
trunk/echobase-tools/pom.xml
trunk/echobase-ui/pom.xml
trunk/pom.xml
Modified: trunk/echobase-domain/pom.xml
===================================================================
--- trunk/echobase-domain/pom.xml 2013-11-04 07:52:33 UTC (rev 883)
+++ trunk/echobase-domain/pom.xml 2013-11-04 07:58:36 UTC (rev 884)
@@ -9,7 +9,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4-SNAPSHOT</version>
+ <version>2.4</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-services/pom.xml
===================================================================
--- trunk/echobase-services/pom.xml 2013-11-04 07:52:33 UTC (rev 883)
+++ trunk/echobase-services/pom.xml 2013-11-04 07:58:36 UTC (rev 884)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4-SNAPSHOT</version>
+ <version>2.4</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-tools/pom.xml
===================================================================
--- trunk/echobase-tools/pom.xml 2013-11-04 07:52:33 UTC (rev 883)
+++ trunk/echobase-tools/pom.xml 2013-11-04 07:58:36 UTC (rev 884)
@@ -11,7 +11,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4-SNAPSHOT</version>
+ <version>2.4</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2013-11-04 07:52:33 UTC (rev 883)
+++ trunk/echobase-ui/pom.xml 2013-11-04 07:58:36 UTC (rev 884)
@@ -7,7 +7,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4-SNAPSHOT</version>
+ <version>2.4</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-04 07:52:33 UTC (rev 883)
+++ trunk/pom.xml 2013-11-04 07:58:36 UTC (rev 884)
@@ -11,7 +11,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>2.4-SNAPSHOT</version>
+ <version>2.4</version>
<modules>
<module>echobase-domain</module>
@@ -85,12 +85,12 @@
</developers>
<scm>
- <url>https://forge.codelutin.com/repositories/browse/echobase/trunk</url>
+ <url>https://forge.codelutin.com/repositories/browse/echobase/tags/echobase-2.4</url>
<connection>
- scm:svn:https://forge.codelutin.com/svn/echobase/trunk
+ scm:svn:https://forge.codelutin.com/svn/echobase/tags/echobase-2.4
</connection>
<developerConnection>
- scm:svn:https://forge.codelutin.com/svn/echobase/trunk
+ scm:svn:https://forge.codelutin.com/svn/echobase/tags/echobase-2.4
</developerConnection>
</scm>
1
0
Nov. 4, 2013
Author: tchemit
Date: 2013-11-04 08:52:33 +0100 (Mon, 04 Nov 2013)
New Revision: 883
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/883
Log:
clean code, optimize i18n
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java
trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/src/site/rst/db.rst
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -54,36 +54,4 @@
return (TopiaDAO<E>) getDAO(tx, type.getContract());
}
-// public final void flushTransaction(TopiaContext tx, String errorMessage) {
-// try {
-// tx.getHibernateSession().flush();
-// } catch (TopiaException e) {
-// throw new EchoBaseTechnicalException(errorMessage, e);
-// }
-// }
-
-// public boolean canUpdatePostgis(TopiaContext tx) {
-// String dialect = tx.getHibernateConfiguration().getProperty(TopiaContextFactory.CONFIG_DIALECT);
-//
-// return DriverType.POSTGRESQL.getDialectClass().getName().equals(dialect);
-// }
-
-// public boolean isSpatialAware(TopiaContext tx) {
-// boolean result = canUpdatePostgis(tx);
-//
-// if (result) {
-//
-// // on pg db, check there is now a echobase_spatial_cell
-// try {
-// ((TopiaSqlSupport) tx).executeSQL("select count(*) from echobase_cell_spatial;");
-// } catch (Exception e) {
-// // table not found (or other, ...)
-// result = false;
-// // rollback (otherwise transaction will stay dirty)
-// ((TopiaTransaction) tx).rollbackTransaction();
-// }
-// }
-// return result;
-// }
-
}
Modified: trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties
===================================================================
--- trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties 2013-11-04 07:52:33 UTC (rev 883)
@@ -16,8 +16,6 @@
echobase.common.importType.operation.short=Operation
echobase.common.importType.resultsEsdu=Import the “ESDU” cells results
echobase.common.importType.resultsEsdu.short=R ESDU
-echobase.common.importType.resultsMap=Import the “map” cells results
-echobase.common.importType.resultsMap.short=Map
echobase.common.importType.resultsMapFish=Import the “map (fishes)” cells results
echobase.common.importType.resultsMapFish.short=Map (fishes)
echobase.common.importType.resultsMapOther=Import the “map (others)” cells results
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -52,36 +52,23 @@
protected EchoBaseDbMeta dbMeta;
-// private SpatialDataCache spatialCache;
-
public static EchoBaseServiceContext newContext(
Locale locale,
EchoBaseConfiguration configuration,
EchoBaseDbMeta dbMeta) {
-// ,
-// SpatialDataCache spatialCache) {
return new DefaultEchoBaseServiceContext(locale,
configuration,
dbMeta);
-// ,
-// spatialCache);
}
protected DefaultEchoBaseServiceContext(Locale locale,
EchoBaseConfiguration configuration,
EchoBaseDbMeta dbMeta) {
-// SpatialDataCache spatialCache) {
this.locale = locale;
this.configuration = configuration;
this.dbMeta = dbMeta;
-// this.spatialCache = spatialCache;
}
-// @Override
-// public SpatialDataCache getSpatialDataCache() {
-// return spatialCache;
-// }
-
@Override
public TopiaEchoBasePersistenceContext getEchoBasePersistenceContext() {
return echoBasePersistenceContext;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -42,8 +42,6 @@
*/
public interface EchoBaseServiceContext {
-// SpatialDataCache getSpatialDataCache();
-
TopiaEchoBasePersistenceContext getEchoBasePersistenceContext();
void setEchoBasePersistenceContext(TopiaEchoBasePersistenceContext internalPersistenceContext);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -74,10 +74,6 @@
return serviceContext.getWorkgingDbUrl();
}
-// protected final SpatialDataCache getSpatialDataCache() {
-// return serviceContext.getSpatialDataCache();
-// }
-
protected final Locale getLocale() {
return serviceContext.getLocale();
}
@@ -138,9 +134,4 @@
return newService(ExportQueryService.class);
}
-// public final <E extends EchoBaseService> E getService(Class<E> serviceClass) {
-// E result = serviceContext.newService(serviceClass);
-// return result;
-// }
-
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataService.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataService.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -117,11 +117,6 @@
// do commit
getEchoBasePersistenceContext().commitTransaction();
-// // revoke spatial data memory cache
-// getSpatialDataCache().onVoyageChanged(
-// serviceContext.getWorkgingDbUrl(),
-// configuration.getVoyageId());
-
// update sql spatial data
getSpatialService().updatePostgisTable();
@@ -260,36 +255,6 @@
}
}
-// protected <E extends TopiaEntity> E create(TopiaDAO<E> dao) {
-// try {
-// E result = dao.create();
-// return result;
-// } catch (TopiaException e) {
-// throw new EchoBaseTechnicalException("Could not create entity", e);
-// }
-// }
-
-// protected <E extends TopiaEntity> E create(TopiaDAO<E> dao, E entity) {
-// try {
-// E result = dao.create(entity);
-// return result;
-// } catch (TopiaException e) {
-// throw new EchoBaseTechnicalException("Could not create entity", e);
-// }
-// }
-
-// protected <E extends TopiaEntity> E findByProperties(TopiaDAO<E> dao,
-// String propertyName,
-// Object value,
-// Object... others) {
-// try {
-// E result = dao.findByProperties(propertyName, value, others);
-// return result;
-// } catch (TopiaException e) {
-// throw new EchoBaseTechnicalException("Could not obtain query db", e);
-// }
-// }
-
protected String getImportMessage(M configuration, InputFile inputFile) {
String message = l_(getLocale(), "echobase.importLabel.withFile",
getImportLabel(configuration), inputFile.getFileName());
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdb/ImportDbService.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -71,10 +71,6 @@
if (ImportDbMode.REFERENTIAL != importDbMode) {
-// // revoke all spatial data cache for all this db
-// getSpatialDataCache().onDbChanged(
-// serviceContext.getWorkgingDbUrl());
-
// let's update postgis table
getSpatialService().updatePostgisTable();
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -109,64 +109,56 @@
public Set<SpatialData> getSpatialData(SpatialConfiguration model) {
-// SpatialDataCache cache = getSpatialDataCache();
-//
-// Set<SpatialData> result = cache.get(model);
Set<SpatialData> result = null;
- if (result == null) {
+ String voyageId = model.getVoyageId();
- String voyageId = model.getVoyageId();
+ String dataMetadataId = model.getDataMetadataId();
+ String cellTypeId = model.getCellTypeId();
- String dataMetadataId = model.getDataMetadataId();
- String cellTypeId = model.getCellTypeId();
+ String speciesId = model.getSpeciesId();
+ String echotypeId = model.getEchotypeId();
- String speciesId = model.getSpeciesId();
- String echotypeId = model.getEchotypeId();
+ TopiaEchoBasePersistenceContext persistenceContext = getEchoBasePersistenceContext();
- TopiaEchoBasePersistenceContext persistenceContext = getEchoBasePersistenceContext();
+ Voyage voyage = persistenceContext.getEntityById(Voyage.class, voyageId);
- Voyage voyage = persistenceContext.getEntityById(Voyage.class, voyageId);
+ Preconditions.checkNotNull(
+ voyage,
+ "Could not find voyage with id " + voyageId);
- Preconditions.checkNotNull(
- voyage,
- "Could not find voyage with id " + voyageId);
+ DataMetadata dataMetadata =
+ persistenceContext.getEntityById(DataMetadata.class, dataMetadataId);
- DataMetadata dataMetadata =
- persistenceContext.getEntityById(DataMetadata.class, dataMetadataId);
+ Preconditions.checkNotNull(
+ dataMetadata,
+ "Could not find dataMetadata with id " + dataMetadataId);
- Preconditions.checkNotNull(
- dataMetadata,
- "Could not find dataMetadata with id " + dataMetadataId);
+ CellType cellType =
+ persistenceContext.getEntityById(CellType.class, cellTypeId);
- CellType cellType =
- persistenceContext.getEntityById(CellType.class, cellTypeId);
+ Preconditions.checkNotNull(
+ cellType,
+ "Could not find cellType with id " + cellTypeId);
- Preconditions.checkNotNull(
- cellType,
- "Could not find cellType with id " + cellTypeId);
+ Species species =
+ persistenceContext.getEntityOrNullById(Species.class, speciesId);
- Species species =
- persistenceContext.getEntityOrNullById(Species.class, speciesId);
+ Echotype echotype =
+ persistenceContext.getEntityOrNullById(Echotype.class, echotypeId);
- Echotype echotype =
- persistenceContext.getEntityOrNullById(Echotype.class, echotypeId);
+ List<Predicate<Category>> predicates = Lists.newArrayList();
+ if (species != null) {
+ predicates.add(newSpeciesCategoryPredicate(species));
+ }
+ if (echotype != null) {
+ predicates.add(newEchotypeCategoryPredicate(echotype));
+ }
- List<Predicate<Category>> predicates = Lists.newArrayList();
- if (species != null) {
- predicates.add(newSpeciesCategoryPredicate(species));
- }
- if (echotype != null) {
- predicates.add(newEchotypeCategoryPredicate(echotype));
- }
+ Predicate<Category> acceptPredicate = Predicates.or(predicates);
- Predicate<Category> acceptPredicate = Predicates.or(predicates);
+ result = getSpatialData(voyage, dataMetadata, cellType, acceptPredicate);
- result = getSpatialData(voyage, dataMetadata, cellType, acceptPredicate);
-
-// cache.put(model, result);
- }
-
return result;
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -191,11 +191,6 @@
return result;
}
-// @Override
-// public SpatialDataCache getSpatialDataCache() {
-// return null;
-// }
-
@Override
public Locale getLocale() {
return Locale.FRANCE;
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java 2013-11-04 07:52:33 UTC (rev 883)
@@ -27,13 +27,11 @@
import fr.ifremer.echobase.entities.DriverType;
import fr.ifremer.echobase.persistence.EchoBaseEntityHelper;
import fr.ifremer.echobase.persistence.JdbcConfiguration;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import java.sql.SQLException;
/**
- * To create a fresh postgres database.
+ * To create a new fresh postgres database.
* <p/>
* Created on 11/3/13.
*
@@ -44,9 +42,6 @@
private static final long serialVersionUID = 1L;
- /** Logger. */
- private static final Log log = LogFactory.getLog(CreatePostgresDb.class);
-
protected String login;
protected String password;
@@ -75,8 +70,6 @@
@Override
public String execute() throws Exception {
- String result = INPUT;
-
EchoBaseEntityHelper.checkJDBCConnection(metaJdbcConf);
try {
@@ -91,28 +84,20 @@
getEchoBaseSession().initWorkingDb(jdbcConf, true);
addFlashMessage(_("echobase.info.workingDb.created", conf.getUrl()));
- result = SUCCESS;
} catch (Exception e) {
-// if (log.isErrorEnabled()) {
-// log.error("Could not create db", e);
-// }
try {
//close working db if something is wrong.
getEchoBaseSession().releaseWorkingDb();
} finally {
metaJdbcConf = null;
jdbcConf = null;
-// addFieldError(
-// "conf.url",
-// _("echobase.error.workingDbConfiguration.couldNotCreate",
-// e.getMessage()));
}
throw e;
}
- return result;
+ return SUCCESS;
}
@Override
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-04 07:52:33 UTC (rev 883)
@@ -122,7 +122,6 @@
echobase.common.modificationUser=User
echobase.common.moviesFile=
echobase.common.name=Name
-echobase.common.nbSpatialData=Number of result
echobase.common.operationFile=
echobase.common.operationMetadataFile=
echobase.common.organisationLevelAcknowledgements=organisationLevelAcknowledgements
@@ -234,10 +233,8 @@
echobase.error.showData.voyage.required=Voyage required
echobase.error.warlocation.notFound=Database .war file not found at location %s
echobase.error.workingDbConfiguration.couldNotConnect=Could not connect to database (%s)
-echobase.error.workingDbConfiguration.couldNotCreate=Could not create new postgres database
echobase.error.workingDbConfiguration.createOnlyOnPostgresql=Database creation is only possible for *Postgresql* type
echobase.error.workingDbConfiguration.description.required=Mandatory description
-echobase.error.workingDbConfiguration.login.required=Mandatory login
echobase.error.workingDbConfiguration.url.already.exists=A configuration with same url already exists
echobase.error.workingDbConfiguration.url.required=Mandatory jdbc url
echobase.header.request.result=SQL query result
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 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2013-11-04 07:52:33 UTC (rev 883)
@@ -57,7 +57,6 @@
echobase.common.author=Auteur
echobase.common.authorEmail=Courriel de l'auteur
echobase.common.biometrySampleFile=
-echobase.common.cellMapsFile=
echobase.common.cellMapsFishFile=Fichier des cellules Cartes (Poisson)
echobase.common.cellMapsOtherFile=Fichier des cellules Cartes (Autre)
echobase.common.cellPositionReference=Référentiel géographique des cellules des cartes
@@ -123,7 +122,6 @@
echobase.common.modificationUser=Utilisateur
echobase.common.moviesFile=
echobase.common.name=Nom
-echobase.common.nbSpatialData=Nombre de cellules
echobase.common.operationFile=
echobase.common.operationMetadataFile=
echobase.common.organisationLevelAcknowledgements=organisationLevelAcknowledgements
@@ -235,10 +233,8 @@
echobase.error.showData.voyage.required=La sélection d'une campagne est obligatoire
echobase.error.warlocation.notFound=L'application n'a pas été trouvée à l'emplacement suivant %s
echobase.error.workingDbConfiguration.couldNotConnect=Impossible de se connecter (%s)
-echobase.error.workingDbConfiguration.couldNotCreate=Impossible de créer la nouvelle base postgres
echobase.error.workingDbConfiguration.createOnlyOnPostgresql=La création d'une base n'est possible que pour le type *Postgresql*
echobase.error.workingDbConfiguration.description.required=Description obligatoire
-echobase.error.workingDbConfiguration.login.required=Login obligatoire
echobase.error.workingDbConfiguration.url.already.exists=Une configuration existe déjà avec cette url
echobase.error.workingDbConfiguration.url.required=Url jdbc obligatoire
echobase.header.request.result=Résultat de la requête SQL
Modified: trunk/src/site/rst/db.rst
===================================================================
--- trunk/src/site/rst/db.rst 2013-11-04 07:45:35 UTC (rev 882)
+++ trunk/src/site/rst/db.rst 2013-11-04 07:52:33 UTC (rev 883)
@@ -119,7 +119,6 @@
A noter que l'utilisateur pour se connecter à la base doit avoir des droits de
création de base.
-
Spatialiser une base postgresql
-------------------------------
1
0
Nov. 4, 2013
Author: tchemit
Date: 2013-11-04 08:45:35 +0100 (Mon, 04 Nov 2013)
New Revision: 882
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/882
Log:
fixes #3667: Faciliter la cr?\195?\169ation de nouvelles bases
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java
trunk/echobase-ui/pom.xml
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp
trunk/src/site/rst/db.rst
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java 2013-11-04 07:45:35 UTC (rev 882)
@@ -23,10 +23,10 @@
package fr.ifremer.echobase.config;
import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
import fr.ifremer.echobase.EchoBaseDateConverter;
import fr.ifremer.echobase.EchoBaseTechnicalException;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.config.ApplicationConfig;
@@ -37,6 +37,9 @@
import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -124,9 +127,26 @@
}
}
- @Override
- public String toString() {
- return ReflectionToStringBuilder.toString(this);
+ public static final Comparator<EchoBaseConfigurationOption> CONFIGURATION_OPTION_COMPARATOR = new Comparator<EchoBaseConfigurationOption>() {
+ @Override
+ public int compare(EchoBaseConfigurationOption o1, EchoBaseConfigurationOption o2) {
+ return o1.key.compareTo(o2.key);
+ }
+ };
+
+ public String printConfig() {
+ StringBuilder builder = new StringBuilder();
+ List<EchoBaseConfigurationOption> options = Lists.newArrayList(EchoBaseConfigurationOption.values());
+ Collections.sort(options, CONFIGURATION_OPTION_COMPARATOR);
+ builder.append("Echobase configuration:");
+ builder.append("\n--------------------------------------------------------------------------------\n");
+ for (EchoBaseConfigurationOption option : options) {
+ builder.append(String.format("\n%1$-40s = %2$s",
+ option.getKey(),
+ applicationConfig.getOption(option)));
+ }
+ builder.append("\n--------------------------------------------------------------------------------");
+ return builder.toString();
}
public Properties getProperties() {
@@ -240,8 +260,8 @@
key +
"in your configuration file named echobase.properties)"
);
- if (log.isInfoEnabled()) {
- log.info(key + " = " + directory);
+ if (log.isDebugEnabled()) {
+ log.debug(key + " = " + directory);
}
try {
FileUtil.createDirectoryIfNecessary(directory);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java 2013-11-04 07:45:35 UTC (rev 882)
@@ -373,8 +373,8 @@
"could not find resource " + resourcePath);
try {
File outputFile = new File(targetDirectory, resourceName);
- if (log.isInfoEnabled()) {
- log.info("Copy binary file from " + resourceName + " to " +
+ if (log.isDebugEnabled()) {
+ log.debug("Copy binary file from " + resourceName + " to " +
outputFile);
}
OutputStream outputStream = new FileOutputStream(outputFile);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java 2013-11-04 07:45:35 UTC (rev 882)
@@ -159,7 +159,8 @@
try {
String sql = String.format(CREATE_DB_SQL_QUERY, dbName, jdbcConf.getLogin());
if (log.isInfoEnabled()) {
- log.info("Create new postgres database: " + dbName + " with sql: " + sql);
+ log.info("Create new postgres database: " + dbName +
+ " with sql statement: " + sql);
}
getEchoBasePersistenceContext().getContext().getHibernateSession().doWork(
new AbstractTopiaContext.SQLWork(sql) {
@@ -172,9 +173,8 @@
}
);
} catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("Can't create a new database: " + dbName, e);
- }
+ throw new EchoBaseTechnicalException(
+ "Can't create a new database: " + dbName, e);
}
}
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-ui/pom.xml 2013-11-04 07:45:35 UTC (rev 882)
@@ -134,6 +134,10 @@
<name>echobase.data.dir</name>
<value>${project.build.directory}/echobase-data</value>
</systemProperty>
+ <systemProperty>
+ <name>echobase.embedded</name>
+ <value>true</value>
+ </systemProperty>
</systemProperties>
</configuration>
</plugin>
@@ -149,6 +153,7 @@
<echobase.data.dir>
${project.build.directory}/echobase-data
</echobase.data.dir>
+ <echobase.embedded>true</echobase.embedded>
<JAVA_OPTS>-Xms512m -Xmx2048m -XX:MaxPermSize=256m</JAVA_OPTS>
</systemProperties>
</configuration>
@@ -164,6 +169,7 @@
<echobase.data.dir>
${project.build.directory}/echobase-data
</echobase.data.dir>
+ <echobase.embedded>true</echobase.embedded>
<JAVA_OPTS>-Xms512m -Xmx2048m -XX:MaxPermSize=256m</JAVA_OPTS>
</systemProperties>
</configuration>
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2013-11-04 07:45:35 UTC (rev 882)
@@ -197,6 +197,10 @@
"Could not init logger.", e);
}
+ if (log.isInfoEnabled()) {
+ log.info(configuration.printConfig());
+ }
+
// initialize internal root context
TopiaContext internalRootContext =
EchobaseTopiaContexts.newInternalDb(
@@ -212,8 +216,6 @@
Locale.getDefault(),
getConfiguration(),
getDbMeta());
-// ,
-// getSpatialDataCache());
// init database (and create minimal admin user if required)
initInternalDatabase(serviceContext);
@@ -242,10 +244,6 @@
return defaultUsersCreated;
}
-// public SpatialDataCache getSpatialDataCache() {
-// return spatialDataCache;
-// }
-
public EchoBaseServiceContext newServiceContext(Locale locale,
TopiaContext topiaInternalContext,
TopiaContext topiaContext) {
@@ -255,8 +253,6 @@
locale,
configuration,
dbMeta);
-// ,
-// spatialDataCache);
TopiaEchoBaseInternalPersistenceContext internalPersistenceContext =
new TopiaEchoBaseInternalPersistenceContext(topiaInternalContext);
@@ -275,8 +271,6 @@
public void close() {
try {
-// spatialDataCache.clear();
-
if (internalRootContext != null) {
// release internal db
EchoBaseEntityHelper.releaseRootContext(internalRootContext);
@@ -431,8 +425,7 @@
}
protected void extractFiles(EchoBaseServiceContext serviceContext) throws IOException {
- EmbeddedApplicationService service =
- serviceContext.newService(EmbeddedApplicationService.class);
+
EchoBaseConfiguration configuration = serviceContext.getConfiguration();
// copy drivers
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java 2013-11-04 07:45:35 UTC (rev 882)
@@ -95,20 +95,22 @@
} catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("Could not create db", e);
- }
+// if (log.isErrorEnabled()) {
+// log.error("Could not create db", e);
+// }
try {
//close working db if something is wrong.
getEchoBaseSession().releaseWorkingDb();
} finally {
metaJdbcConf = null;
jdbcConf = null;
- addFieldError(
- "conf.url",
- _("echobase.error.workingDbConfiguration.couldNotCreate",
- e.getMessage()));
+// addFieldError(
+// "conf.url",
+// _("echobase.error.workingDbConfiguration.couldNotCreate",
+// e.getMessage()));
}
+
+ throw e;
}
return result;
}
@@ -120,28 +122,30 @@
addFieldError(
"conf.driverType",
_("echobase.error.workingDbConfiguration.createOnlyOnPostgresql"));
- }
- jdbcConf = JdbcConfiguration.newConfig(
- getConf().getDriverType(), getConf().getUrl(),
- login, password);
+ } else {
+ jdbcConf = JdbcConfiguration.newConfig(
+ getConf().getDriverType(), getConf().getUrl(),
+ login, password);
- // gets the meta db configuration
- metaJdbcConf = EchoBaseEntityHelper.newMetaWorkingDb(jdbcConf);
+ // gets the meta db configuration
+ metaJdbcConf = EchoBaseEntityHelper.newMetaWorkingDb(jdbcConf);
- // check connection is ok
- try {
- EchoBaseEntityHelper.checkJDBCConnection(metaJdbcConf);
- } catch (SQLException e) {
- jdbcConf = null;
- addFieldError(
- "login",
- _("echobase.error.workingDbConfiguration.couldNotConnect",
- e.getMessage()));
- addFieldError(
- "password",
- _("echobase.error.workingDbConfiguration.couldNotConnect",
- e.getMessage()));
+ // check connection is ok
+ try {
+ EchoBaseEntityHelper.checkJDBCConnection(metaJdbcConf);
+ } catch (SQLException e) {
+ jdbcConf = null;
+ addFieldError(
+ "login",
+ _("echobase.error.workingDbConfiguration.couldNotConnect",
+ e.getMessage()));
+ addFieldError(
+ "password",
+ _("echobase.error.workingDbConfiguration.couldNotConnect",
+ e.getMessage()));
+ }
}
+
}
}
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-04 07:45:35 UTC (rev 882)
@@ -38,6 +38,7 @@
echobase.action.show.import.documentation=How to import data
echobase.action.show.importDb.documentation=How to import a database
echobase.action.show.showData.documentation=How to display spatial data
+echobase.action.show.workingDb.documentation=How to connect to a working database
echobase.action.toEnglish=English
echobase.action.toFrench=French
echobase.action.usingEnglish=English
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 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2013-11-04 07:45:35 UTC (rev 882)
@@ -38,6 +38,7 @@
echobase.action.show.import.documentation=Comment importer des données
echobase.action.show.importDb.documentation=Comment importer une base
echobase.action.show.showData.documentation=Comment visualiser des données
+echobase.action.show.workingDb.documentation=Comment se connecter à une base de travail
echobase.action.toEnglish=En anglais
echobase.action.toFrench=En français
echobase.action.usingEnglish=Version anglaise
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp 2013-11-04 07:45:35 UTC (rev 882)
@@ -78,6 +78,13 @@
</s:else>
</legend>
+ <div class="cleanBoth help">
+ <s:a href="%{getDocumentation('db.html', null)}" target="doc">
+ <s:text name="echobase.action.show.workingDb.documentation"/>
+ </s:a>
+ </div>
+ <br/>
+
<s:select key="conf.driverType" cssStyle="font-size: 140%"
label="%{getText('echobase.label.driverType')}" requiredLabel="true"
list="driverTypes" disabled="%{confExists}"/>
@@ -101,18 +108,16 @@
<ul id="dbeditorToolbar" class="toolbar floatRight">
<s:if test="confExists">
- <s:if test="echoBaseSession.user.admin">
- <li>
- <s:submit action="createPostgresDb" theme="simple"
- key="echobase.action.createPostgresDb"/>
- </li>
- </s:if>
<li>
<s:submit action="connect" theme="simple"
key="echobase.action.connectToWorkingDb"/>
</li>
<s:if test="echoBaseSession.user.admin">
<li>
+ <s:submit action="createPostgresDb" theme="simple"
+ key="echobase.action.createPostgresDb"/>
+ </li>
+ <li>
<s:submit action="clone" theme="simple"
key="echobase.action.clone"/>
</li>
Modified: trunk/src/site/rst/db.rst
===================================================================
--- trunk/src/site/rst/db.rst 2013-11-03 10:39:54 UTC (rev 881)
+++ trunk/src/site/rst/db.rst 2013-11-04 07:45:35 UTC (rev 882)
@@ -101,7 +101,8 @@
su postgres
-- Création de l'utilisateur de la base *userName*
+- Création de l'utilisateur de la base *userName* (avec des droits de création
+ de base)
::
@@ -109,21 +110,16 @@
- Création de la base de donnée *dbName*
-::
+Depuis la version *2.4*, vous pouvez directement créer les bases depuis
+l'interface web :
- createdb -U postgres -E UTF-8 -O userName dbName
+Après avoir créé une configuration de base de travail postgresql, une action
+**Créer la base** est disponible (pour les utilisateurs *administrateur*).
-- Donner les droits d'acces à l'utilisateur echobase (cela varie d'un système à
- l'autre, donc se référer à la documentation du système). Cela fonctionne
- lorsqu'on peut accéder à la base via cette commande :
+A noter que l'utilisateur pour se connecter à la base doit avoir des droits de
+création de base.
-::
- psql -h localhost -U userName dbName
-
-- Il faut ensuite ne pas oublier de créer une configuration de base de travail
- pour pouvoir accéder à cette base.
-
Spatialiser une base postgresql
-------------------------------
1
0
Nov. 3, 2013
Author: tchemit
Date: 2013-11-03 11:39:54 +0100 (Sun, 03 Nov 2013)
New Revision: 881
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/881
Log:
ref #3667: Faciliter la cr?\195?\169ation de nouvelle base
Added:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/TopiaEchoBasePersistenceContext.java
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowSpatialData.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Connect.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Information.java
trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/TopiaEchoBasePersistenceContext.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/TopiaEchoBasePersistenceContext.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/TopiaEchoBasePersistenceContext.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -200,15 +200,14 @@
return sqlQuery.findMultipleResult(context);
}
-
- public boolean canUpdatePostgis() {
+ public boolean isPostgresql() {
String dialect = context.getHibernateConfiguration().getProperty(TopiaContextFactory.CONFIG_DIALECT);
return DriverType.POSTGRESQL.getDialectClass().getName().equals(dialect);
}
public boolean isSpatialAware() {
- boolean result = canUpdatePostgis();
+ boolean result = isPostgresql();
if (result) {
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -23,8 +23,11 @@
* #L%
*/
+import com.google.common.base.Preconditions;
+import fr.ifremer.echobase.entities.DriverType;
import fr.ifremer.echobase.entities.EchoBaseUserImpl;
import fr.ifremer.echobase.entities.data.VoyageImpl;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Transaction;
@@ -110,6 +113,42 @@
}
}
+ /**
+ * Create a configuration to connect to the {@code postgres} database
+ * from a normal database configuration.
+ * <p/>
+ * This is used to create a new concrete database.
+ * <p/>
+ * <strong>Note: </strong>This only works for postgresql database.
+ *
+ * @param jdbcConfiguration jdbc configuration
+ * @return the jdbcl configuration to {@code postgres} database.
+ * @since 2.4
+ */
+ public static JdbcConfiguration newMetaWorkingDb(JdbcConfiguration jdbcConfiguration) {
+
+ String url = jdbcConfiguration.getUrl();
+ String dbName = StringUtils.substringAfterLast(url, "/");
+ String connectUrl = StringUtils.removeEnd(url, dbName) + "postgres";
+
+ if (log.isInfoEnabled()) {
+ log.info("Use meta database conttection url: " + connectUrl);
+ }
+ DriverType driverType = jdbcConfiguration.getDriverType();
+
+ Preconditions.checkArgument(
+ DriverType.POSTGRESQL.equals(driverType),
+ "Can't create a meta configuration for a none postgresql database.");
+ JdbcConfiguration metaConfiguration = JdbcConfiguration.newConfig(
+ driverType,
+ connectUrl,
+ jdbcConfiguration.getLogin(),
+ jdbcConfiguration.getPassword()
+ );
+
+ return metaConfiguration;
+ }
+
public static void closeConnection(TopiaContext transaction) {
if (transaction == null) {
if (log.isTraceEnabled()) {
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -24,8 +24,8 @@
*/
import com.google.common.base.Charsets;
+import fr.ifremer.echobase.EchoBaseTechnicalException;
import fr.ifremer.echobase.config.EchoBaseConfigurationOption;
-import fr.ifremer.echobase.EchoBaseTechnicalException;
import fr.ifremer.echobase.entities.DriverType;
import fr.ifremer.echobase.entities.EchoBaseDAOHelper;
import fr.ifremer.echobase.entities.EchoBaseInternalDAOHelper;
@@ -73,20 +73,37 @@
*/
public static TopiaContext newWorkingDb(JdbcConfiguration jdbcConfiguration) {
+ TopiaContext result = newWorkingDb(jdbcConfiguration, true);
+ return result;
+ }
+
+ /**
+ * Open a new topia root context from the given jdbc configuration and
+ * create schema if asked and schema does not exist.
+ * <p/>
+ *
+ * @param jdbcConfiguration jdbc configuration
+ * @return the new fresh root context
+ * @since 2.4
+ */
+ public static TopiaContext newWorkingDb(JdbcConfiguration jdbcConfiguration, boolean createSchema) {
+
Properties properties = loadWorkingDbConfiguration(jdbcConfiguration);
TopiaContext result = newDb(properties);
- try {
- if (!EchoBaseEntityHelper.isWorkingDbSchemaCreated(result)) {
+ if (createSchema) {
+ try {
+ if (!EchoBaseEntityHelper.isWorkingDbSchemaCreated(result)) {
- if (log.isInfoEnabled()) {
- log.info("Will create schema for " +
- jdbcConfiguration.getUrl());
+ if (log.isInfoEnabled()) {
+ log.info("Will create schema for " +
+ jdbcConfiguration.getUrl());
+ }
+ ((TopiaPersistenceContext) result).createSchema();
}
- ((TopiaPersistenceContext) result).createSchema();
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException("Could not create db schema", e);
}
- } catch (TopiaException e) {
- throw new EchoBaseTechnicalException("Could not create db schema", e);
}
return result;
}
@@ -198,8 +215,8 @@
}
private static void reloadProperty(Properties properties,
- String propertyName,
- String propertyNameToRemove) {
+ String propertyName,
+ String propertyNameToRemove) {
Object o = properties.getProperty(propertyName);
properties.put(propertyName, o);
properties.remove(propertyNameToRemove);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -266,8 +266,8 @@
return result;
}
- public boolean canUpdatePostgis() {
- boolean result = getEchoBasePersistenceContext().canUpdatePostgis();
+ public boolean isPostgresql() {
+ boolean result = getEchoBasePersistenceContext().isPostgresql();
return result;
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -27,10 +27,17 @@
import fr.ifremer.echobase.entities.DriverType;
import fr.ifremer.echobase.entities.WorkingDbConfiguration;
import fr.ifremer.echobase.entities.WorkingDbConfigurationDAO;
+import fr.ifremer.echobase.persistence.JdbcConfiguration;
import fr.ifremer.echobase.services.EchoBaseServiceSupport;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.AbstractTopiaContext;
import java.io.File;
+import java.sql.Connection;
+import java.sql.SQLException;
import java.util.List;
/**
@@ -41,6 +48,12 @@
*/
public class WorkingDbConfigurationService extends EchoBaseServiceSupport {
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(WorkingDbConfigurationService.class);
+
+ public static final String CREATE_DB_SQL_QUERY = "CREATE DATABASE \"%s\" WITH OWNER = %s ENCODING 'UTF8' TEMPLATE template0;";
+
public List<WorkingDbConfiguration> getWorkingDbConfigurations() {
try {
List<WorkingDbConfiguration> result = getDAO().findAll();
@@ -128,6 +141,43 @@
}
}
+ /**
+ * Create the concrete working db from his working configuration.
+ * <p/>
+ * <strong>Note: </strong> Works only for pg db.
+ *
+ * @param jdbcConf id of the configuration to use.
+ * @since 2.4
+ */
+ public void createDb(JdbcConfiguration jdbcConf) throws WorkingDbConfigurationNotFoundException {
+
+
+ // get the dbName from his url
+ String url = jdbcConf.getUrl();
+ String dbName = StringUtils.substringAfterLast(url, "/");
+
+ try {
+ String sql = String.format(CREATE_DB_SQL_QUERY, dbName, jdbcConf.getLogin());
+ if (log.isInfoEnabled()) {
+ log.info("Create new postgres database: " + dbName + " with sql: " + sql);
+ }
+ getEchoBasePersistenceContext().getContext().getHibernateSession().doWork(
+ new AbstractTopiaContext.SQLWork(sql) {
+ @Override
+ public void execute(Connection connection) throws SQLException {
+ //to create a database, need no transaction block
+ connection.setAutoCommit(true);
+ super.execute(connection);
+ }
+ }
+ );
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create a new database: " + dbName, e);
+ }
+ }
+ }
+
protected WorkingDbConfiguration getExistingConf(String id) throws WorkingDbConfigurationNotFoundException {
WorkingDbConfiguration entity = getDAO().findByTopiaId(id);
if (entity == null) {
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 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -165,7 +165,7 @@
* @param jdbcConfiguration the connection configuration to use
* @throws TopiaNotFoundException if could not create root context
*/
- public void initWorkingDb(JdbcConfiguration jdbcConfiguration) throws TopiaNotFoundException {
+ public void initWorkingDb(JdbcConfiguration jdbcConfiguration, boolean createSchema) throws TopiaNotFoundException {
// close any previous db
releaseWorkingDb();
@@ -173,7 +173,7 @@
// creates a new topia root context from configuration
TopiaContext rootContext =
EchobaseTopiaContexts.newWorkingDb(
- jdbcConfiguration);
+ jdbcConfiguration, createSchema);
// keep configuration is session
set(PROPERTY_WORKING_DB_CONFIGURATION, jdbcConfiguration);
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowSpatialData.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowSpatialData.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowSpatialData.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -79,7 +79,7 @@
// can add postgis if working db is postgresql and has still no echobase
// spatial db
- canAddSpatial = !model.isWithSpatial() && spatialService.canUpdatePostgis();
+ canAddSpatial = !model.isWithSpatial() && spatialService.isPostgresql();
}
@Override
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Connect.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Connect.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Connect.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -71,7 +71,7 @@
try {
EchoBaseEntityHelper.checkJDBCConnection(jdbcConf);
- getEchoBaseSession().initWorkingDb(jdbcConf);
+ getEchoBaseSession().initWorkingDb(jdbcConf, true);
addFlashMessage(_("echobase.info.workingDbconfiguration.connected",
conf.getUrl()));
result = SUCCESS;
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -0,0 +1,147 @@
+package fr.ifremer.echobase.ui.actions.workingDb;
+
+/*
+ * #%L
+ * EchoBase :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2013 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%
+ */
+
+import com.opensymphony.xwork2.interceptor.annotations.InputConfig;
+import fr.ifremer.echobase.entities.DriverType;
+import fr.ifremer.echobase.persistence.EchoBaseEntityHelper;
+import fr.ifremer.echobase.persistence.JdbcConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.sql.SQLException;
+
+/**
+ * To create a fresh postgres database.
+ * <p/>
+ * Created on 11/3/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+public class CreatePostgresDb extends AbstractWorkingDbAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CreatePostgresDb.class);
+
+ protected String login;
+
+ protected String password;
+
+ protected JdbcConfiguration jdbcConf;
+
+ protected JdbcConfiguration metaJdbcConf;
+
+ public String getLogin() {
+ return login;
+ }
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @InputConfig(methodName = INPUT)
+ @Override
+ public String execute() throws Exception {
+
+ String result = INPUT;
+
+ EchoBaseEntityHelper.checkJDBCConnection(metaJdbcConf);
+
+ try {
+
+ // connect to meta database
+ getEchoBaseSession().initWorkingDb(metaJdbcConf, false);
+
+ // create database
+ workingDbConfigurationService.createDb(jdbcConf);
+
+ // connect to new database
+ getEchoBaseSession().initWorkingDb(jdbcConf, true);
+
+ addFlashMessage(_("echobase.info.workingDb.created", conf.getUrl()));
+ result = SUCCESS;
+
+ } catch (Exception e) {
+
+ if (log.isErrorEnabled()) {
+ log.error("Could not create db", e);
+ }
+ try {
+ //close working db if something is wrong.
+ getEchoBaseSession().releaseWorkingDb();
+ } finally {
+ metaJdbcConf = null;
+ jdbcConf = null;
+ addFieldError(
+ "conf.url",
+ _("echobase.error.workingDbConfiguration.couldNotCreate",
+ e.getMessage()));
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public void validate() {
+
+ if (!DriverType.POSTGRESQL.equals(getConf().getDriverType())) {
+ addFieldError(
+ "conf.driverType",
+ _("echobase.error.workingDbConfiguration.createOnlyOnPostgresql"));
+ }
+ jdbcConf = JdbcConfiguration.newConfig(
+ getConf().getDriverType(), getConf().getUrl(),
+ login, password);
+
+ // gets the meta db configuration
+ metaJdbcConf = EchoBaseEntityHelper.newMetaWorkingDb(jdbcConf);
+
+ // check connection is ok
+ try {
+ EchoBaseEntityHelper.checkJDBCConnection(metaJdbcConf);
+ } catch (SQLException e) {
+ jdbcConf = null;
+ addFieldError(
+ "login",
+ _("echobase.error.workingDbConfiguration.couldNotConnect",
+ e.getMessage()));
+ addFieldError(
+ "password",
+ _("echobase.error.workingDbConfiguration.couldNotConnect",
+ e.getMessage()));
+ }
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Information.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Information.java 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/Information.java 2013-11-03 10:39:54 UTC (rev 881)
@@ -83,7 +83,7 @@
// can add postgis if working db is postgresql and has still no echobase
// spatial db
- canAddSpatial = !spatialAware && spatialService.canUpdatePostgis();
+ canAddSpatial = !spatialAware && spatialService.isPostgresql();
return SUCCESS;
}
Modified: trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml 2013-11-03 10:39:54 UTC (rev 881)
@@ -95,6 +95,17 @@
<result type="redirectToShowList"/>
</action>
+ <!-- Create a new postgres database and connect to it -->
+ <action name="createPostgresDb" method="execute"
+ class="fr.ifremer.echobase.ui.actions.workingDb.CreatePostgresDb">
+ <interceptor-ref name="prepareParamsStackLoggued"/>
+ <result name="input" type="showList"/>
+ <result type="redirectAction">
+ <param name="actionName">information</param>
+ <param name="namespace">/workingDb</param>
+ </result>
+ </action>
+
<!-- Connect to selected workingDbConfiguration -->
<action name="connect" method="execute"
class="fr.ifremer.echobase.ui.actions.workingDb.Connect">
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-03 10:39:54 UTC (rev 881)
@@ -8,10 +8,12 @@
echobase.action.createEmbeddedApplication=Create a portable database
echobase.action.createMission=Create mission
echobase.action.createNewMission=Create a new mission
+echobase.action.createPostgresDb=Create database
echobase.action.createSqlQuery=Save
echobase.action.createWorkingDbConfiguration=Save
echobase.action.delete=Delete
echobase.action.delete.selectedImport=Delete selected imports
+echobase.action.deleteConfiguration=Delete
echobase.action.display=Display spatial data
echobase.action.downloadEmbeddedApplicationFile=Download the portable database
echobase.action.downloadExportDbFile=Download database export file
@@ -231,6 +233,8 @@
echobase.error.showData.voyage.required=Voyage required
echobase.error.warlocation.notFound=Database .war file not found at location %s
echobase.error.workingDbConfiguration.couldNotConnect=Could not connect to database (%s)
+echobase.error.workingDbConfiguration.couldNotCreate=Could not create new postgres database
+echobase.error.workingDbConfiguration.createOnlyOnPostgresql=Database creation is only possible for *Postgresql* type
echobase.error.workingDbConfiguration.description.required=Mandatory description
echobase.error.workingDbConfiguration.login.required=Mandatory login
echobase.error.workingDbConfiguration.url.already.exists=A configuration with same url already exists
@@ -274,6 +278,7 @@
echobase.info.user.delete=User %s deleted
echobase.info.user.update=User %s updated
echobase.info.userSupport=User support
+echobase.info.workingDb.created=New database %s created
echobase.info.workingDbconfiguration.connected=Connection to the working database '%s' successful
echobase.info.workingDbconfiguration.created=Working database configuration '%s' created
echobase.info.workingDbconfiguration.deleted=Working database configuration '%s' deleted
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 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2013-11-03 10:39:54 UTC (rev 881)
@@ -8,10 +8,12 @@
echobase.action.createEmbeddedApplication=Créer l'application
echobase.action.createMission=Créer la mission
echobase.action.createNewMission=Créer une nouvelle mission
+echobase.action.createPostgresDb=Créer la base
echobase.action.createSqlQuery=Enregistrer
echobase.action.createWorkingDbConfiguration=Enregistrer
echobase.action.delete=Suppression
echobase.action.delete.selectedImport=Supprimer les imports sélectionnés
+echobase.action.deleteConfiguration=Supprimer
echobase.action.display=Afficher les données
echobase.action.downloadEmbeddedApplicationFile=Télécharger l'application embarquée
echobase.action.downloadExportDbFile=Télécharger le fichier d'export de la base complète
@@ -232,6 +234,8 @@
echobase.error.showData.voyage.required=La sélection d'une campagne est obligatoire
echobase.error.warlocation.notFound=L'application n'a pas été trouvée à l'emplacement suivant %s
echobase.error.workingDbConfiguration.couldNotConnect=Impossible de se connecter (%s)
+echobase.error.workingDbConfiguration.couldNotCreate=Impossible de créer la nouvelle base postgres
+echobase.error.workingDbConfiguration.createOnlyOnPostgresql=La création d'une base n'est possible que pour le type *Postgresql*
echobase.error.workingDbConfiguration.description.required=Description obligatoire
echobase.error.workingDbConfiguration.login.required=Login obligatoire
echobase.error.workingDbConfiguration.url.already.exists=Une configuration existe déjà avec cette url
@@ -275,6 +279,7 @@
echobase.info.user.delete=L'utilisateur '%s' a été supprimé
echobase.info.user.update=L'utilisateur '%s' a été mis à jour
echobase.info.userSupport=Support utilisateur
+echobase.info.workingDb.created=Nouvelle base de donnée %s créée
echobase.info.workingDbconfiguration.connected=Connexion à la base de travail '%s' réussie
echobase.info.workingDbconfiguration.created=Configuration à la base de travail '%s' créée
echobase.info.workingDbconfiguration.deleted=Configuration à la base de travail '%s' supprimée
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp 2013-11-02 11:48:19 UTC (rev 880)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp 2013-11-03 10:39:54 UTC (rev 881)
@@ -101,6 +101,12 @@
<ul id="dbeditorToolbar" class="toolbar floatRight">
<s:if test="confExists">
+ <s:if test="echoBaseSession.user.admin">
+ <li>
+ <s:submit action="createPostgresDb" theme="simple"
+ key="echobase.action.createPostgresDb"/>
+ </li>
+ </s:if>
<li>
<s:submit action="connect" theme="simple"
key="echobase.action.connectToWorkingDb"/>
@@ -112,7 +118,7 @@
</li>
<li>
<s:submit onclick="return confirmDelete();" theme="simple"
- key="echobase.action.delete"/>
+ key="echobase.action.deleteConfiguration"/>
</li>
</s:if>
</s:if>
1
0
Author: tchemit
Date: 2013-11-02 12:48:19 +0100 (Sat, 02 Nov 2013)
New Revision: 880
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/880
Log:
fixes #3665: Updates mavenpom to 4.2
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-01 14:52:13 UTC (rev 879)
+++ trunk/pom.xml 2013-11-02 11:48:19 UTC (rev 880)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>4.2-SNAPSHOT</version>
+ <version>4.2</version>
</parent>
<groupId>fr.ifremer</groupId>
1
0
Author: tchemit
Date: 2013-11-01 15:52:13 +0100 (Fri, 01 Nov 2013)
New Revision: 879
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/879
Log:
fixes #3665: Updates mavenpom to 4.2
refs #3666: Updates i18n-m-p to 2.5.2
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-01 13:55:16 UTC (rev 878)
+++ trunk/pom.xml 2013-11-01 14:52:13 UTC (rev 879)
@@ -139,21 +139,16 @@
<!-- libraries version -->
- <eugenePluginVersion>2.7.2</eugenePluginVersion>
<topiaVersion>3.0-alpha-3.1</topiaVersion>
- <nuitonUtilsVersion>2.7</nuitonUtilsVersion>
<nuitonI18nVersion>2.5.2</nuitonI18nVersion>
<nuitonWebVersion>1.14</nuitonWebVersion>
- <msaccessImporterVersion>1.4.1</msaccessImporterVersion>
+ <nuitonUtilsVersion>2.7.1</nuitonUtilsVersion>
<struts2Version>2.3.15.3</struts2Version>
- <jqueryPluginVersion>3.6.0</jqueryPluginVersion>
- <h2Version>1.3.173</h2Version>
+ <jqueryPluginVersion>3.6.1</jqueryPluginVersion>
+ <h2Version>1.3.174</h2Version>
<postgresqlVersion>9.2-1003-jdbc4</postgresqlVersion>
<slf4jVersion>1.7.5</slf4jVersion>
- <jackcessVersion>1.2.13</jackcessVersion>
- <hibernateVersion>4.2.4.Final</hibernateVersion>
-
<googleSearchEnabled>true</googleSearchEnabled>
<!-- license header configuration -->
@@ -182,14 +177,14 @@
<dependency>
<groupId>fr.ird</groupId>
<artifactId>msaccess-importer</artifactId>
- <version>${msaccessImporterVersion}</version>
+ <version>1.4.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.healthmarketscience.jackcess</groupId>
<artifactId>jackcess</artifactId>
- <version>${jackcessVersion}</version>
+ <version>1.2.14.3</version>
</dependency>
<!-- librairie des lutins-->
@@ -211,13 +206,13 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-decorator</artifactId>
- <version>3.0-alpha-1</version>
+ <version>3.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-validator</artifactId>
- <version>3.0-alpha-1</version>
+ <version>3.0-alpha-2</version>
</dependency>
<dependency>
@@ -278,7 +273,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
- <version>${hibernateVersion}</version>
+ <version>4.2.5.Final</version>
</dependency>
<!-- base postgres -->
@@ -408,7 +403,7 @@
<plugin>
<groupId>org.nuiton.eugene</groupId>
<artifactId>eugene-maven-plugin</artifactId>
- <version>${eugenePluginVersion}</version>
+ <version>2.7.1</version>
</plugin>
<plugin>
1
0
Author: tchemit
Date: 2013-11-01 14:55:16 +0100 (Fri, 01 Nov 2013)
New Revision: 878
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/878
Log:
fixes #3666: Updates somes plugins
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-01 06:16:42 UTC (rev 877)
+++ trunk/pom.xml 2013-11-01 13:55:16 UTC (rev 878)
@@ -139,10 +139,10 @@
<!-- libraries version -->
- <eugenePluginVersion>2.7.1</eugenePluginVersion>
+ <eugenePluginVersion>2.7.2</eugenePluginVersion>
<topiaVersion>3.0-alpha-3.1</topiaVersion>
<nuitonUtilsVersion>2.7</nuitonUtilsVersion>
- <nuitonI18nVersion>2.5.1</nuitonI18nVersion>
+ <nuitonI18nVersion>2.5.2</nuitonI18nVersion>
<nuitonWebVersion>1.14</nuitonWebVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
<struts2Version>2.3.15.3</struts2Version>
1
0
Author: tchemit
Date: 2013-11-01 07:16:42 +0100 (Fri, 01 Nov 2013)
New Revision: 877
Url: http://forge.codelutin.com/projects/echobase/repository/revisions/877
Log:
refs #3665: Updates mavenpom to 4.2
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-10-31 23:22:48 UTC (rev 876)
+++ trunk/pom.xml 2013-11-01 06:16:42 UTC (rev 877)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>4.1</version>
+ <version>4.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer</groupId>
1
0