Author: fdesbois
Date: 2010-02-01 14:54:29 +0000 (Mon, 01 Feb 2010)
New Revision: 304
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/FacadeRowImpl.java
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
Log:
- Improve sampleRow order using a new FacadeRow bean
- Change dateFormat for input datefield
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/FacadeRowImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/FacadeRowImpl.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/FacadeRowImpl.java 2010-02-01 14:54:29 UTC (rev 304)
@@ -0,0 +1,61 @@
+
+package fr.ifremer.suiviobsmer.bean;
+
+import fr.ifremer.suiviobsmer.entity.SampleRow;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * FacadeRowImpl
+ *
+ * Created: 1 févr. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class FacadeRowImpl extends FacadeRow {
+
+ @Override
+ public Map<String, Map<String, List<SampleRow>>> getData() {
+ if (data == null) {
+ data = new LinkedHashMap<String, Map<String, List<SampleRow>>>();
+ }
+ return data;
+ }
+
+ @Override
+ public void addRow(SampleRow row) {
+ String facade = row.getFacade();
+ String sectors = row.getSectors();
+ // Prepare sectors Map
+ Map<String, List<SampleRow>> sectorMap = getData().get(facade);
+ if (sectorMap == null) {
+ sectorMap = new LinkedHashMap<String, List<SampleRow>>();
+ getData().put(facade, sectorMap);
+ }
+ // Prepare list of rows for the sectors of the SampleRow in argument
+ List<SampleRow> rows = sectorMap.get(sectors);
+ if (rows == null) {
+ rows = new ArrayList<SampleRow>();
+ sectorMap.put(sectors, rows);
+ }
+ // Add the row to the list
+ rows.add(row);
+ }
+
+ @Override
+ public List<SampleRow> getValues() {
+ List<SampleRow> results = new ArrayList<SampleRow>();
+ for (Map<String, List<SampleRow>> sector : getData().values()) {
+ for (List<SampleRow> rows : sector.values()) {
+ results.addAll(rows);
+ }
+ }
+ return results;
+ }
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/FacadeRowImpl.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-02-01 10:43:47 UTC (rev 303)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-02-01 14:54:29 UTC (rev 304)
@@ -30,6 +30,8 @@
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
+import fr.ifremer.suiviobsmer.bean.FacadeRow;
+import fr.ifremer.suiviobsmer.bean.FacadeRowImpl;
import fr.ifremer.suiviobsmer.bean.ImportResults;
import fr.ifremer.suiviobsmer.bean.ImportResultsImpl;
import fr.ifremer.suiviobsmer.bean.SamplingFilter;
@@ -271,9 +273,9 @@
// }
@Override
- public List<SampleRow> getSampleRowsOrderedByFishingZone(PeriodDates period, Company company) throws SuiviObsmerException {
+ public FacadeRow getSampleRowsOrderedByFishingZone(PeriodDates period, Company company) throws SuiviObsmerException {
TopiaContext transaction = null;
- List<SampleRow> results = new ArrayList<SampleRow>();
+ FacadeRow result = new FacadeRowImpl();
try {
if (period.getFromDate() == null || period.getThruDate() == null) {
throw new IllegalArgumentException("PeriodBegin date and/or PeriodEnd date can't be null !");
@@ -304,17 +306,19 @@
log.debug("Query : " + query);
}
- // FIXME-FD20100129 Problem with order, need a
- // Map<facadeName, Map<sectorName, List<sampleRow>>>
+ List<SampleRow> results = query.executeToEntityList();
- results = query.executeToEntityList();
+ for (SampleRow row : results) {
+ // use FacadeRow to complete ordering using maps
+ result.addRow(row);
+ }
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
"Impossible de récupérer la liste des lignes du plan d'échantillonnage", eee);
}
- return results;
+ return result;
}
@Override
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-02-01 10:43:47 UTC (rev 303)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-02-01 14:54:29 UTC (rev 304)
@@ -29,6 +29,7 @@
import fr.ifremer.suiviobsmer.bean.SamplingFilter;
import fr.ifremer.suiviobsmer.bean.SamplingFilterImpl;
import fr.ifremer.suiviobsmer.SuiviObsmerRunnerTest;
+import fr.ifremer.suiviobsmer.bean.FacadeRow;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.CompanyDAO;
@@ -210,12 +211,16 @@
row1.setProgramName("DPMA-2009");
row1.setPeriod(period1);
+ log.info(row1.getCode() + " :: " + row1.getFacade() + " :: " + row1.getSectors());
+
SampleRow row2 = dao.create();
row2.setCode("2010_0002");
row2.addFishingZone(zones.get(0));
row2.setProgramName("DPMA-2009");
row2.setPeriod(period1);
+ log.info(row2.getCode() + " :: " + row2.getFacade() + " :: " + row2.getSectors());
+
SampleRow row3 = dao.create();
row3.setCode("2010_0003");
row3.addFishingZone(zones.get(1));
@@ -224,12 +229,16 @@
row3.setProgramName("PPDA-2008");
row3.setPeriod(period2);
+ log.info(row3.getCode() + " :: " + row3.getFacade() + " :: " + row3.getSectors());
+
SampleRow row4 = dao.create();
row4.setCode("2010_0004");
- row4.addFishingZone(zones.get(0));
+ row4.addFishingZone(zones.get(0)); // Mer du Nord :: Manche
row4.setProgramName("DPMA-2009");
row4.setPeriod(period1);
+ log.info(row4.getCode() + " :: " + row4.getFacade() + " :: " + row4.getSectors());
+
transaction.commitTransaction();
/** EXEC service method **/
@@ -241,24 +250,26 @@
Calendar begin = new GregorianCalendar(2000, 0, 1, 0, 0, 0);
Calendar end = new GregorianCalendar(2020, 11, 31, 0, 0, 0);
PeriodDates period = new PeriodDates(begin, end);
- List<SampleRow> rows = service.getSampleRowsOrderedByFishingZone(period, null);
+ // RESULT : [2010_0002, 2010_0004, 2010_0001, 2010_0003]
+ FacadeRow facade = service.getSampleRowsOrderedByFishingZone(period, null);
+ List<SampleRow> rows = facade.getValues();
assertEquals(4, rows.size());
SampleRow resultRow0 = rows.get(0);
assertEquals("2010_0002", resultRow0.getCode());
SampleRow resultRow1 = rows.get(1);
- assertEquals("2010_0003", resultRow1.getCode());
+ assertEquals("2010_0004", resultRow1.getCode());
- List<FishingZone> zoneRow1 = resultRow1.getFishingZone();
- assertEquals(3, zoneRow1.size());
- FishingZone resultZone0 = zoneRow1.get(0);
- assertEquals("VIIb", resultZone0.getDistrictCode());
- FishingZone resultZone1 = zoneRow1.get(1);
- assertEquals("VI", resultZone1.getDistrictCode());
- FishingZone resultZone2 = zoneRow1.get(2);
- assertEquals("V", resultZone2.getDistrictCode());
+// List<FishingZone> zoneRow1 = resultRow1.getFishingZone();
+// assertEquals(3, zoneRow1.size());
+// FishingZone resultZone0 = zoneRow1.get(0);
+// assertEquals("VIIb", resultZone0.getDistrictCode());
+// FishingZone resultZone1 = zoneRow1.get(1);
+// assertEquals("VI", resultZone1.getDistrictCode());
+// FishingZone resultZone2 = zoneRow1.get(2);
+// assertEquals("V", resultZone2.getDistrictCode());
SampleRow resultRow2 = rows.get(2);
- assertEquals("2010_0004", resultRow2.getCode());
+ assertEquals("2010_0003", resultRow2.getCode());
SampleRow resultRow3 = rows.get(3);
assertEquals("2010_0001", resultRow3.getCode());
@@ -269,7 +280,9 @@
begin = new GregorianCalendar(2009, 0, 1, 0, 0, 0);
end = new GregorianCalendar(2020, 11, 31, 0, 0, 0);
period = new PeriodDates(begin, end);
- rows = service.getSampleRowsOrderedByFishingZone(period, null);
+ // RESULT : [2010_0002, 2010_0004, 2010_0001]
+ facade = service.getSampleRowsOrderedByFishingZone(period, null);
+ rows = facade.getValues();
assertEquals(3, rows.size());
resultRow0 = rows.get(0);
assertEquals("2010_0002", resultRow0.getCode());
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-02-01 10:43:47 UTC (rev 303)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-02-01 14:54:29 UTC (rev 304)
@@ -24,6 +24,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.bean.FacadeRow;
import fr.ifremer.suiviobsmer.bean.ImportResults;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.FishingZone;
@@ -184,7 +185,8 @@
if (!user.getAdmin()) {
company = user.getCompany();
}
- data = serviceSampling.getSampleRowsOrderedByFishingZone(getPeriod(), company);
+ FacadeRow facade = serviceSampling.getSampleRowsOrderedByFishingZone(getPeriod(), company);
+ data = facade.getValues();
}
return data;
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-02-01 10:43:47 UTC (rev 303)
+++ trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-02-01 14:54:29 UTC (rev 304)
@@ -19,8 +19,8 @@
<div class="fleft">
<h1>Plan d'échantillonnage</h1>
<form t:type="form" t:id="periodForm">
- <t:label t:for="periodBegin" /> : <input t:type="datefield" t:id="periodBegin" />
- <t:label t:for="periodEnd" /> : <input t:type="datefield" t:id="periodEnd" />
+ <t:label t:for="periodBegin" /> : <input t:type="datefield" class="width70" t:id="periodBegin" t:format="MM/yyyy" />
+ <t:label t:for="periodEnd" /> : <input t:type="datefield" class="width70" t:id="periodEnd" t:format="MM/yyyy" />
<input t:type="submit" class="ico search" value="Search" t:title="Affichage des lignes du plan couvertes par la période sélectionnée" />
</form>
</div>
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-01 10:43:47 UTC (rev 303)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-01 14:54:29 UTC (rev 304)
@@ -54,9 +54,9 @@
<div class="filterRow">
<label>Période: </label>
<t:label t:for="periodBegin" />:
- <input t:type="datefield" class="width70" t:id="periodBegin" t:value="period.fromDate" />
+ <input t:type="datefield" class="width70" t:id="periodBegin" t:value="period.fromDate" t:format="MM/yyyy"/>
<t:label t:for="periodEnd" />:
- <input t:type="datefield" class="width70" t:id="periodEnd" t:value="period.thruDate" />
+ <input t:type="datefield" class="width70" t:id="periodEnd" t:value="period.thruDate" t:format="MM/yyyy" />
</div>
<div>
<t:if t:test="user.admin">