Author: chatellier Date: 2011-02-01 13:19:15 +0000 (Tue, 01 Feb 2011) New Revision: 632 Log: Add facadeid. Manage quelity advertisment in form submit. Added: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data-input.jsp Modified: trunk/changelog.txt trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java trunk/coser-business/src/test/resources/webzones.csv trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp trunk/coser-web/src/main/webapp/js/coser.js trunk/coser-web/src/main/webapp/styles/coser.css Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/changelog.txt 2011-02-01 13:19:15 UTC (rev 632) @@ -4,6 +4,7 @@ 1.0.0-beta3 ----------- + * Improve quality advertisement checkbox with form submit * Add top anchor on survey description page * Fix pdf generation containing non escaped html entities * List projects names sorted alphabetically Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-02-01 13:19:15 UTC (rev 632) @@ -42,6 +42,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -221,13 +222,13 @@ public String getZoneFullName(String zoneId) throws CoserBusinessException { DataStorage localZoneMap = getZonesMap(); String resultName = null; - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" int zoneIndex = localZoneMap.indexOf(zoneId); if (zoneIndex != -1) { - resultName = localZoneMap.get(zoneIndex)[1]; - resultName += " - " + localZoneMap.get(zoneIndex)[2]; + resultName = localZoneMap.get(zoneIndex)[2]; resultName += " - " + localZoneMap.get(zoneIndex)[3]; resultName += " - " + localZoneMap.get(zoneIndex)[4]; + resultName += " - " + localZoneMap.get(zoneIndex)[5]; } return resultName; } @@ -1017,14 +1018,14 @@ * @throws CoserBusinessException */ public Map<String, String> getFacades() throws CoserBusinessException { - Map<String, String> facades = new HashMap<String, String>(); - // "id";"facade";"zone";"periode";"serie";"comment";"map" + Map<String, String> facades = new LinkedHashMap<String, String>(); + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" DataStorage zonesMap = getZonesMap(); Iterator<String[]> itZone = zonesMap.iterator(true); while (itZone.hasNext()) { String[] tuple = itZone.next(); // on a pas d'id pour les facades - facades.put(tuple[1], tuple[1]); + facades.put(tuple[1], tuple[2]); } return facades; } @@ -1045,7 +1046,7 @@ Collection<String> subZones = new ArrayList<String>(); Iterator<String[]> itZone = getZonesMap().iterator(true); while (itZone.hasNext()) { - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" String[] tuple = itZone.next(); if (tuple[1].equals(facade)) { subZones.add(tuple[0]); @@ -1080,10 +1081,10 @@ if (subZones.contains(resultZoneId)) { String zoneid = resultZoneId; // get zone name - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" int zoneIndex = getZonesMap().indexOf(zoneid); String[] zoneData = getZonesMap().get(zoneIndex); - String zoneName = zoneData[2] + " - " + zoneData[3] + " - " + zoneData[4]; + String zoneName = zoneData[3] + " - " + zoneData[4] + " - " + zoneData[5]; zonesForFacade.put(zoneid, zoneName); } @@ -1115,11 +1116,11 @@ // get subzone for main zone Iterator<String[]> itZone = getZonesMap().iterator(true); while (itZone.hasNext()) { - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" String[] tuple = itZone.next(); if (tuple[1].equals(facade)) { - if (!surveyForFacade.containsKey(tuple[4])) { - surveyForFacade.put(tuple[4], tuple[4]); + if (!surveyForFacade.containsKey(tuple[5])) { + surveyForFacade.put(tuple[5], tuple[5]); } } } @@ -1138,9 +1139,9 @@ Iterator<String[]> itZone = getZonesMap().iterator(true); while (itZone.hasNext()) { - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" String[] tuple = itZone.next(); - result.put(tuple[0], tuple[6]); + result.put(tuple[0], tuple[7]); } return result; @@ -1157,9 +1158,9 @@ Iterator<String[]> itZone = getZonesMap().iterator(true); while (itZone.hasNext()) { - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" String[] tuple = itZone.next(); - result.put(tuple[0], tuple[5]); + result.put(tuple[0], tuple[6]); } return result; @@ -1265,10 +1266,10 @@ boolean zoneRSufiResult = false; Iterator<String[]> itZone = getZonesMap().iterator(true); while (itZone.hasNext()) { - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" String[] tuple = itZone.next(); - if (tuple[4].equals(survey) && rsufiResult.getZone().equals(tuple[0])) { + if (tuple[5].equals(survey) && rsufiResult.getZone().equals(tuple[0])) { zoneRSufiResult = true; } } @@ -1713,10 +1714,10 @@ boolean zoneRSufiResult = false; Iterator<String[]> itZone = getZonesMap().iterator(true); while (itZone.hasNext()) { - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" String[] tuple = itZone.next(); - if (tuple[4].equals(survey) && rsufiResult.getZone().equals(tuple[0])) { + if (tuple[5].equals(survey) && rsufiResult.getZone().equals(tuple[0])) { zoneRSufiResult = true; } } Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2011-02-01 13:19:15 UTC (rev 632) @@ -99,7 +99,7 @@ @Test public void testGetZones() throws CoserBusinessException { DataStorage zones = webService.getZonesMap(); - Assert.assertEquals(17, zones.size()); + Assert.assertEquals(21, zones.size()); } /** Modified: trunk/coser-business/src/test/resources/webzones.csv =================================================================== --- trunk/coser-business/src/test/resources/webzones.csv 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-business/src/test/resources/webzones.csv 2011-02-01 13:19:15 UTC (rev 632) @@ -1,19 +1,21 @@ -"id";"zone";"subzone";"periode";"serie";"comment";"map" -"ciem4b4c";"Mer du Nord";"CIEM 4b - 4c";"1983";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4b-4c.jpg" -"ciem4c";"Mer du Nord";"CIEM 4c";"1983";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4c.jpg" -"ciem4ce7d";"Mer du Nord";"CIEM 4c - Est 7d";"2007";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4c-E7d.jpg" -"ciem4c4e7d";"Mer du Nord";"CIEM 4c4 - Est 7d";"2007";"IBTS";"- Détroit du Pas-de-Calais\n- D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4c4-E7d.jpg" -"cieme7d";"Manche orientale";"Est de 1° 15' O";"1988 ";"CGFS";;"C_Ciem-E7d.jpg" -"ciem7d";"Manche orientale";"Ensemble Manche orientale";"1990";"CGFS";"Correspond à l'ensemble de la zone VIId du CIEM";"C_Ciem-7d.jpg" -"noursom";"Manche orientale";"Baie de Somme";"1994";"Noursom";;"C_Noursom.jpg" -"noursein";"Manche orientale";"Baie de Seine";"1995 - 2010";"Noursein";"Série arrêtée en 2010";"C_Noursein.jpg" -"crustaflam";"Manche occidentale";"Abords du cap de Flamanville";"1986";"Crustaflam";;"C_Crustaflam.jpg" -"gdgmc";"Atlantique";"Golfe de Gascogne + mer Celtique";"1997";"Evhoe";"Ensemble de la couverture Evhoe";"C_GdG-MC.jpg" -"mcech";"Atlantique";"Mer Celtique (strates d'échantillonnage)";"1997";"Evhoe";;"C_MC-Ech.jpg" -"mcciem7";"Atlantique";"Mer Celtique (zone VII du CIEM)";"1997";"Evhoe";"La limite sud de la zone VII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"C_MC-Ciem-7.jpg" -"gdgech";"Atlantique";"Golfe de Gascogne (strates d'échantillonnage)";"1987";"Evhoe";;"C_GdG-Ech.jpg" -"gdgciem7";"Atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"1987";"Evhoe";"La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"C_GdG-Ciem-7.jpg" -"gdl";"Méditerranée";"Golfe du Lion";"1994";"Medits";;"C_GdL.jpg" -"ecorse";"Méditerranée";"Est-Corse";"1994";"Medits";"1997 exclue (couverture incomplète)";"C_E-Corse.jpg" - - +"id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" +"northibts";"merdunord";"Mer du Nord";"Toutes zones IBTS au sud de 57° 30' N";"1983 >";"IBTS";"Application prioritaire : cartes de distribution des espèces";"C_Ciem-4b-4c-E7d.png" +"northibts2";"merdunord";"Mer du Nord";"Toutes zones IBTS au sud de 57° 30' N";"2007 >";"IBTS";"Application prioritaire : cartes de distribution des espèces";"C_Ciem-4b-4c.png" +"ciem4b4c";"merdunord";"Mer du Nord";"CIEM 4b - 4c";"1983 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4b-4c.png" +"ciem4c";"merdunord";"Mer du Nord";"CIEM 4c";"1983 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4c.png" +"ciem4ce7d";"merdunord";"Mer du Nord";"CIEM 4c - Est 7d";"2007 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4c-E7d.png" +"ciem4c4e7d";"merdunord";"Mer du Nord";"CIEM 4c4 - Est 7d";"2007 >";"IBTS";"- Détroit du Pas-de-Calais\n- D'après données internationales extraites de la base Datras du CIEM";"C_Ciem-4c4-E7d.png" +"cieme7d";"mancheorientale";"Manche orientale";"Est de 1° 15' O";"1988 >";"CGFS";;"C_Ciem-E7d.png" +"ciem7d";"mancheorientale";"Manche orientale";"Ensemble Manche orientale";"1990 >";"CGFS";"Correspond à l'ensemble de la zone VIId du CIEM";"C_Ciem-7d.png" +"noursom";"mancheorientale";"Manche orientale";"Baie de Somme";"1994 >";"Noursom";;"C_Noursom.png" +"noursein";"mancheorientale";"Manche orientale";"Baie de Seine";"1995 - 2010";"Noursein";"Série arrêtée en 2010";"C_Noursein.png" +"crustaflam";"mancheoccidentale";"Manche occidentale";"Abords du cap de Flamanville";"1986 >";"Crustaflam";;"C_Crustaflam.png" +"gdgmc";"atlantique";"Atlantique";"Golfe de Gascogne + mer Celtique";"1997 >";"Evhoe";"Ensemble de la couverture Evhoe";"C_GdG-MC.png" +"mcech";"atlantique";"Atlantique";"Mer Celtique (strates d'échantillonnage)";"1997 >";"Evhoe";;"C_MC-Ech.png" +"mcciem7";"atlantique";"Atlantique";"Mer Celtique (zone VII du CIEM)";"1997 >";"Evhoe";"La limite sud de la zone VII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"C_MC-Ciem-7.png" +"gdgech";"atlantique";"Atlantique";"Golfe de Gascogne (strates d'échantillonnage)";"1987 >";"Evhoe";;"C_GdG-Ech.png" +"gdgech2";"atlantique";"Atlantique";"Golfe de Gascogne (strates d'échantillonnage)";"1992 >";"Evhoe";"Plus d'espèces mesurées à partir de 1992";"C_GdG-Ech.png" +"gdgciem7";"atlantique";"Atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"1987 >";"Evhoe";"La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"C_GdG-Ciem-7.png" +"gdgciem72";"atlantique";"Atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"1992 >";"Evhoe";"- La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM\n- Plus d'espèces mesurées à partir de 1992";"C_GdG-Ciem-7.png" +"gdl";"mediteranee";"Méditerranée";"Golfe du Lion";"1994 >";"Medits";;"C_GdL.png" +"ecorse";"mediteranee";"Méditerranée";"Est-Corse";"1994 >";"Medits";"1997 exclue (couverture incomplète)";"C_E-Corse.png" Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-02-01 13:19:15 UTC (rev 632) @@ -64,7 +64,7 @@ @Override public Object getElementAt(int index) { - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" // +1 for header return zonesMap.get(index + 1)[0]; } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-02-01 13:19:15 UTC (rev 632) @@ -49,14 +49,14 @@ String zoneId = (String)value; ZoneComboBoxModel model = (ZoneComboBoxModel)list.getModel(); - // "id";"facade";"zone";"periode";"serie";"comment";"map" + // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map" String[] zoneData = model.getZone(zoneId); String zoneName = null; if (zoneData != null) { // le surveyName ne sert à rien // mais est la a titre d'information par rapport // à l'affichage cote web - zoneName = zoneData[1] + " - " + zoneData[2] + " - " + zoneData[3] + " - " + zoneData[4]; + zoneName = zoneData[2] + " - " + zoneData[3] + " - " + zoneData[4] + " - " + zoneData[5]; } else { zoneName = zoneId; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2011-02-01 13:19:15 UTC (rev 632) @@ -67,11 +67,22 @@ public String getSpecies() { return species; } - + public void setSpecies(String species) { this.species = species; } - + + public String getFacadeDisplayName() { + WebService webService = ServiceFactory.getWebService(); + String displayName = null; + try { + displayName = webService.getFacades().get(facade); + } catch (CoserBusinessException ex) { + throw new CoserWebException("Can't get species display name", ex); + } + return displayName; + } + public String getSpeciesDisplayName() { WebService webService = ServiceFactory.getWebService(); String displayName = null; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2011-02-01 13:19:15 UTC (rev 632) @@ -55,6 +55,8 @@ protected String zone; + protected boolean accepted; + public String getZone() { return zone; } @@ -63,6 +65,19 @@ this.zone = zone; } + public void setAccepted(boolean accepted) { + this.accepted = accepted; + } + + @Override + public void validate() { + + if (!accepted) { + addFieldError("accepted", getText("message.quality.notaccepted")); + } + + } + @Action(results= {@Result(type="stream", params={"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})}) public String execute() { return SUCCESS; Added: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data-input.jsp =================================================================== --- trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data-input.jsp (rev 0) +++ trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data-input.jsp 2011-02-01 13:19:15 UTC (rev 632) @@ -0,0 +1,55 @@ +<!-- + #%L + Coser :: Web + + $Id$ + $HeadURL$ + %% + Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric + %% + 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 language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<%@taglib uri="/struts-tags" prefix="s" %> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title><s:text name="message.source.title" /></title> + </head> + <body> + + <h2><s:text name="message.source.title" /></h2> + + <h3><s:text name="message.quality.title" /></h3> + + <p><s:text name="message.quality.paragraph1" /></p> + <ul> + <li><s:text name="message.quality.paragraph2" /></li> + <li><s:text name="message.quality.paragraph3" /></li> + <li><s:text name="message.quality.paragraph4" /></li> + </ul> + <p> + <s:text name="message.quality.paragraph5"> + <s:param><a href="mailto:<s:property value='adminEmail' />"><s:property value='adminEmail' /></a></s:param> + </s:text> + </p> + + <s:form action="source-data"> + <s:hidden name="zone" property="zone"/> + <s:checkbox name="accepted" fieldValue="true" label="%{getText('message.quality.acceptance')}"/> + <s:submit value="%{getText('message.source.download')}"></s:submit> + </s:form> + </body> +</html> \ No newline at end of file Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp =================================================================== --- trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp 2011-02-01 13:19:15 UTC (rev 632) @@ -46,14 +46,10 @@ </s:text> </p> - <p> - <input type="checkbox" id="coserResultCondition" /> - <s:text name="message.quality.acceptance" /> - </p> - - <s:a action="source-data" onclick="return coserCheckConditionAcceptance('coserResultCondition', '%{getText('message.quality.notaccepted')}')"> - <s:param name="zone" value="%{zone}" /> - <s:text name="message.source.download"></s:text> - </s:a>. + <s:form action="source-data"> + <s:hidden name="zone" property="zone"/> + <s:checkbox name="accepted" fieldValue="true" label="%{getText('message.quality.acceptance')}"/> + <s:submit value="%{getText('message.source.download')}"></s:submit> + </s:form> </body> </html> \ No newline at end of file Modified: trunk/coser-web/src/main/webapp/js/coser.js =================================================================== --- trunk/coser-web/src/main/webapp/js/coser.js 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-web/src/main/webapp/js/coser.js 2011-02-01 13:19:15 UTC (rev 632) @@ -5,13 +5,3 @@ // affiche la carte selectionnee $('#' + prefix + $(select).val()).show(); } - -// affiche un message si l'utilsateur n'a pas validé les conditions -function coserCheckConditionAcceptance(checkboxid, message) { - var result = true; - if (!$('#' + checkboxid).attr('checked')) { - window.alert(message); - result = false; - } - return result; -} \ No newline at end of file Modified: trunk/coser-web/src/main/webapp/styles/coser.css =================================================================== --- trunk/coser-web/src/main/webapp/styles/coser.css 2011-02-01 10:18:04 UTC (rev 631) +++ trunk/coser-web/src/main/webapp/styles/coser.css 2011-02-01 13:19:15 UTC (rev 632) @@ -693,3 +693,7 @@ background-color: #fff; border: 1px solid #ccc; }*/ + +.errorMessage { + color:red; +}