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">