This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See http://git.codelutin.com/echobase.git commit 17f20f0a79bdb831f02d9a2bd7e4f6b860335a72 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Jan 15 13:59:29 2015 +0100 fixes #6271 + #6457 --- .../ui/actions/spatial/ComputeSpatialData.java | 2 +- .../ifremer/echobase/ui/actions/spatial/Show.java | 42 +++--- .../echobase/ui/actions/spatial/ShowVoyageMap.java | 162 ++++++++++++++++++++- .../src/main/resources/config/struts-spatial.xml | 13 +- .../resources/i18n/echobase-ui_en_GB.properties | 3 +- .../resources/i18n/echobase-ui_fr_FR.properties | 3 +- .../src/main/webapp/WEB-INF/jsp/spatial/show.jsp | 44 ++++-- .../webapp/WEB-INF/jsp/spatial/showVoyageMap.jsp | 106 ++++++++++++++ 8 files changed, 331 insertions(+), 44 deletions(-) diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ComputeSpatialData.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ComputeSpatialData.java index 39a3134..c57d7e1 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ComputeSpatialData.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ComputeSpatialData.java @@ -44,7 +44,7 @@ public class ComputeSpatialData extends EchoBaseActionSupport { if (spatialDataService.isSpatialDataToComputeExist()) { - spatialDataService.updatePostgisData(); + spatialDataService.computespatialData(); } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/Show.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/Show.java index bb71d80..2b01163 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/Show.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/Show.java @@ -22,7 +22,9 @@ package fr.ifremer.echobase.ui.actions.spatial; */ import fr.ifremer.echobase.entities.EchoBaseUserPersistenceContext; +import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.persistence.JdbcConfiguration; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; import fr.ifremer.echobase.services.service.spatial.GisService; import fr.ifremer.echobase.services.service.spatial.SpatialDataService; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; @@ -30,6 +32,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.inject.Inject; +import java.util.Map; /** * To configure and show spatial datas. @@ -52,6 +55,9 @@ public class Show extends EchoBaseActionSupport { @Inject protected transient EchoBaseUserPersistenceContext userPersistenceContext; + @Inject + private transient UserDbPersistenceService persistenceService; + /** * Is current db support spatial data? Means db is pg. */ @@ -68,18 +74,11 @@ public class Show extends EchoBaseActionSupport { protected boolean gisSupport; /** - * Is there some spatial data to compute + * Is there some spatial data to compute? */ protected boolean spatialDataToComputeExists; - /** - * Url to access to gis. - */ - protected String lizmapUrl; - - public String getLizmapUrl() { - return lizmapUrl; - } + protected Map<String, String> voyages; public boolean isSpatialStructureFound() { return spatialStructureFound; @@ -97,6 +96,10 @@ public class Show extends EchoBaseActionSupport { return gisSupport; } + public Map<String, String> getVoyages() { + return voyages; + } + @Override public String execute() throws Exception { @@ -107,7 +110,7 @@ public class Show extends EchoBaseActionSupport { if (log.isInfoEnabled()) { log.info("Db has spatial supports"); } - + spatialStructureFound = userPersistenceContext.isSpatialStructureFound(); if (spatialStructureFound) { @@ -119,7 +122,7 @@ public class Show extends EchoBaseActionSupport { spatialDataToComputeExists = spatialDataService.isSpatialDataToComputeExist(); if (log.isInfoEnabled()) { - log.info("Is there some spatial data to compute? "+ spatialDataToComputeExists); + log.info("Is there some spatial data to compute? " + spatialDataToComputeExists); } gisSupport = getEchoBaseApplicationContext().isGisSupport(); @@ -130,15 +133,8 @@ public class Show extends EchoBaseActionSupport { JdbcConfiguration dbConf = getEchoBaseSession().getWorkingDbConfiguration(); - // generate or update gis data - gisService.generateMaps(dbConf); - - // get gis data access url - lizmapUrl = gisService.getRepositoryUrl(dbConf); - - if (log.isInfoEnabled()) { - log.info("Gis url access: " + lizmapUrl); - } + // update lizmap configuration + gisService.registerWorkingDb(dbConf); } else { @@ -156,6 +152,12 @@ public class Show extends EchoBaseActionSupport { } } + if (gisSupport && spatialSupport && spatialStructureFound && !spatialDataToComputeExists) { + + // Show voyages + voyages = persistenceService.loadSortAndDecorate(Voyage.class); + } + return SUCCESS; } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowVoyageMap.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowVoyageMap.java index ddf5e61..bf85966 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowVoyageMap.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/spatial/ShowVoyageMap.java @@ -1,10 +1,168 @@ package fr.ifremer.echobase.ui.actions.spatial; +import fr.ifremer.echobase.entities.EchoBaseUserPersistenceContext; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.persistence.JdbcConfiguration; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.spatial.GisService; +import fr.ifremer.echobase.services.service.spatial.SpatialDataService; +import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.inject.Inject; + /** * Created on 1/14/15. * * @author Tony Chemit - chemit@codelutin.com - * @since XXX + * @since 2.8 */ -public class ShowVoyageMap { +public class ShowVoyageMap extends EchoBaseActionSupport { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(ShowVoyageMap.class); + + @Inject + protected transient GisService gisService; + + @Inject + protected transient SpatialDataService spatialDataService; + + @Inject + protected transient EchoBaseUserPersistenceContext userPersistenceContext; + + @Inject + private transient UserDbPersistenceService persistenceService; + + /** + * Id of voyage to display. + */ + protected String voyageId; + + /** + * Is current db support spatial data? Means db is pg. + */ + protected boolean spatialSupport; + + /** + * Is current db has spatial structures filled ? + */ + protected boolean spatialStructureFound; + + /** + * Is application has gis support? Means lizmap is installed. + */ + protected boolean gisSupport; + + /** + * Is there some spatial data to compute? + */ + protected boolean spatialDataToComputeExists; + + /** + * Url to access to gis. + */ + protected String lizmapUrl; + + protected Voyage voyage; + + public String getVoyageId() { + return voyageId; + } + + public void setVoyageId(String voyageId) { + this.voyageId = voyageId; + } + + public String getLizmapUrl() { + return lizmapUrl; + } + + public boolean isSpatialStructureFound() { + return spatialStructureFound; + } + + public boolean isSpatialSupport() { + return spatialSupport; + } + + public boolean isSpatialDataToComputeExists() { + return spatialDataToComputeExists; + } + + public boolean isGisSupport() { + return gisSupport; + } + + public Voyage getVoyage() { + return voyage; + } + + @Override + public String execute() throws Exception { + + // Get Voyage to display + voyage = persistenceService.getVoyage(voyageId); + + spatialSupport = userPersistenceContext.isSpatialSupport(); + + if (spatialSupport) { + + if (log.isInfoEnabled()) { + log.info("Db has spatial supports"); + } + + spatialStructureFound = userPersistenceContext.isSpatialStructureFound(); + + if (spatialStructureFound) { + + if (log.isInfoEnabled()) { + log.info("Spatial structure found."); + } + + spatialDataToComputeExists = spatialDataService.isSpatialDataToComputeExist(); + + if (log.isInfoEnabled()) { + log.info("Is there some spatial data to compute? " + spatialDataToComputeExists); + } + + gisSupport = getEchoBaseApplicationContext().isGisSupport(); + + if (gisSupport) { + + JdbcConfiguration dbConf = getEchoBaseSession().getWorkingDbConfiguration(); + + // generate if required the maps configuration for this voyage + + gisService.generateMap(dbConf, voyage); + + // get gis data access url + lizmapUrl = gisService.getVoyageMapUrl(dbConf, voyage); + + if (log.isInfoEnabled()) { + log.info("Gis url access: " + lizmapUrl); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Application does not support gis features."); + } + + } + + } + } else { + + if (log.isInfoEnabled()) { + log.info("Db has no spatial support."); + } + } + + return SUCCESS; + + } } diff --git a/echobase-ui/src/main/resources/config/struts-spatial.xml b/echobase-ui/src/main/resources/config/struts-spatial.xml index 3c85db1..d4f2072 100644 --- a/echobase-ui/src/main/resources/config/struts-spatial.xml +++ b/echobase-ui/src/main/resources/config/struts-spatial.xml @@ -32,6 +32,13 @@ <result>/WEB-INF/jsp/spatial/show.jsp</result> </action> + <!-- Show spatial data page --> + <action name="showVoyageMap" + class="fr.ifremer.echobase.ui.actions.spatial.ShowVoyageMap"> + <interceptor-ref name="basicStackLogguedWithdb"/> + <result>/WEB-INF/jsp/spatial/showVoyageMap.jsp</result> + </action> + <!-- Add echobase spatial tables, functions and triggers to working db --> <action name="addSpatial" class="fr.ifremer.echobase.ui.actions.workingDb.AddSpatial"> @@ -41,9 +48,9 @@ </result> </action> - <!-- Refresh echobase spatial views --> - <action name="refreshSpatialViews" - class="fr.ifremer.echobase.ui.actions.spatial.RefreshSpatialViews"> + <!-- Compute missing spatial data and refresh views --> + <action name="computeSpatialData" + class="fr.ifremer.echobase.ui.actions.spatial.ComputeSpatialData"> <result type="redirectAction"> <param name="namespace">/spatial</param> <param name="actionName">show</param> diff --git a/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties b/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties index ead8c9b..ac10a36 100644 --- a/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties +++ b/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties @@ -2,6 +2,7 @@ echobase.action.backToImportLogs=Back to import logs echobase.action.backToUserList=Back to users list echobase.action.cancel=Cancel echobase.action.clone=Clone +echobase.action.computeSpatialData=Compute spatial data echobase.action.configureImport=Import configuration echobase.action.connectToWorkingDb=Connect echobase.action.create=Create @@ -29,7 +30,6 @@ echobase.action.login=Connect echobase.action.logout=Disconnect echobase.action.newQuery=New query echobase.action.newWorkingDbContiguration=New working database configuration -echobase.action.reloadSpatialData=Reload spatial data echobase.action.reloadSqlQuery=Cancel changes echobase.action.reset=Cancel echobase.action.return=Back @@ -427,6 +427,7 @@ echobase.title.newLibreOfficeQuery=Translate a SQL query from Libre Office echobase.title.removeDataProgress=Remove import data echobase.title.removeDataResult=Result of remove import data echobase.title.show.spatial=Show spatial data +echobase.title.show.spatial.for.voyage=Spatial data for voyage %s echobase.title.users=Administrate users echobase.title.voyage.detail=Voyage detail echobase.title.welcome=Welcome to Echobase diff --git a/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties b/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties index 1bc5e2a..a63dd69 100644 --- a/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties +++ b/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties @@ -2,6 +2,7 @@ echobase.action.backToImportLogs=Retour à la liste des imports echobase.action.backToUserList=Retour à la liste des utilisateurs echobase.action.cancel=Annuler echobase.action.clone=Cloner +echobase.action.computeSpatialData=Calculer les données spatiales echobase.action.configureImport=Configurer l'import echobase.action.connectToWorkingDb=Se connecter echobase.action.create=Créer @@ -29,7 +30,6 @@ echobase.action.login=Connexion echobase.action.logout=Déconnexion echobase.action.newQuery=Nouvelle requête echobase.action.newWorkingDbContiguration=Nouvelle configuration de base de travail -echobase.action.reloadSpatialData=Recharger les données spatiales echobase.action.reloadSqlQuery=Annuler les modifications echobase.action.reset=Annuler echobase.action.return=Retour @@ -430,6 +430,7 @@ echobase.title.newLibreOfficeQuery=Traduire une requête SQL issue de Libre Offi echobase.title.removeDataProgress=Suppression d'un import en cours... echobase.title.removeDataResult=Résultat de la suppression d'un import echobase.title.show.spatial=Visualisation des données +echobase.title.show.spatial.for.voyage=Données spatiales de la campagne %s echobase.title.users=Administration des utilisateurs echobase.title.voyage.detail=Détail de la campagne echobase.title.welcome=Bienvenue dans EchoBase diff --git a/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/show.jsp b/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/show.jsp index 3e5bd0e..693014e 100644 --- a/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/show.jsp +++ b/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/show.jsp @@ -41,32 +41,44 @@ <div class="toolbar"> <ul class="toolbar floatRight"> <li> - <s:submit action='refreshSpatialViews' key="echobase.action.reloadSpatialData"/> + <s:submit action='computeSpatialData' key="echobase.action.computeSpatialData"/> </li> </ul> </div> </s:form> </s:if> + <s:else> - <s:if test="gisSupport"> + <s:if test="gisSupport"> + + <fieldset> + <legend><s:text name="echobase.title.voyage.detail"/></legend> + <ul> + <s:iterator value="voyages" var="voyage"> + <li> + <s:a action="showVoyageMap"> + <s:param name="voyageId" value="%{key}"/> + <s:property value="value"/> + </s:a> + </li> + </s:iterator> + </ul> + </fieldset> - <p> - TODO Show voyage links to lizmap - </p> - <%-- Application has gis support --%> - <%--<iframe id="spatialViewContent" src="${lizmapUrl}"></iframe>--%> + </s:if> + <s:else> - </s:if> - <s:else> + <%-- Application has no gis support --%> + <p class="fontsize11"> + <s:text name="echobase.message.application.no.gis.support"/> + <s:a href="%{getDocumentation('install.html', 'Visualisation_des_donnes_spatialises')}" + target='#doc'> + <s:text name="echobase.message.gis.install"/> + </s:a> + </p> - <%-- Application has no gis support --%> - <p class="fontsize11"> - <s:text name="echobase.message.application.no.gis.support"/> - <s:a href="%{getDocumentation('install.html', 'Visualisation_des_donnes_spatialises')}" target='#doc'> - <s:text name="echobase.message.gis.install"/> - </s:a> - </p> + </s:else> </s:else> diff --git a/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/showVoyageMap.jsp b/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/showVoyageMap.jsp index e69de29..4636027 100644 --- a/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/showVoyageMap.jsp +++ b/echobase-ui/src/main/webapp/WEB-INF/jsp/spatial/showVoyageMap.jsp @@ -0,0 +1,106 @@ +<%-- + #%L + EchoBase :: UI + %% + 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% + --%> +<%@page contentType="text/html" pageEncoding="UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="sj" uri="/struts-jquery-tags" %> +<title> + <s:text name="echobase.title.show.spatial.for.voyage"> + <s:param value="%{voyage.name}"/> + </s:text> +</title> + +<s:if test="spatialSupport"> + + <%--Db supports spatial features --%> + + <s:if test="spatialStructureFound"> + + <%-- db has spatial structures --%> + + <s:if test="spatialDataToComputeExists"> + + <%-- there is some postigs data to compute --%> + + <s:form namespace="/spatial"> + <div class="toolbar"> + <ul class="toolbar floatRight"> + <li> + <s:submit action='computeSpatialData' key="echobase.action.computeSpatialData"/> + </li> + </ul> + </div> + </s:form> + + </s:if> + <s:else> + + <s:if test="gisSupport"> + + <%-- Application has gis support and we can see maps! --%> + <iframe id="spatialViewContent" src="${lizmapUrl}"></iframe> + + </s:if> + <s:else> + + <%-- Application has no gis support --%> + <p class="fontsize11"> + <s:text name="echobase.message.application.no.gis.support"/> + <s:a href="%{getDocumentation('install.html', 'Visualisation_des_donnes_spatialises')}" + target='#doc'> + <s:text name="echobase.message.gis.install"/> + </s:a> + </p> + + </s:else> + + </s:else> + + </s:if> + <s:else> + + <%--db is not spatialized--%> + <p> + <s:text name="echobase.message.db.no.spatial.structure"/> + </p> + + <br/> + <s:form namespace="/spatial"> + <div class="toolbar"> + <ul class="toolbar floatRight"> + <li> + <s:submit action='addSpatial' key="echobase.action.workingDbconfiguration.addSpatial"/> + </li> + </ul> + </div> + </s:form> + + </s:else> + +</s:if> +<s:else> + + <%--Db has no spatial support --%> + <p> + <s:text name="echobase.message.db.no.spatial.support"/> + </p> + + +</s:else> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.