Author: bleny Date: 2011-03-10 15:48:59 +0000 (Thu, 10 Mar 2011) New Revision: 1058 Log: ObsVente : cutting sampling plan on fishing zones, like ObsMer Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java trunk/wao-business/src/test/resources/log4j.properties trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java trunk/wao-ui/src/main/webapp/SamplingPlan.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java 2011-03-10 15:48:59 UTC (rev 1058) @@ -50,17 +50,8 @@ @Override public void addRow(SampleRow row) { - String facade = null; - String sectors = null; - if (row.getObsProgram() == ObsProgram.OBSMER) { - facade = row.getFacade(); - sectors = row.getSectors(); - } else if (row.getObsProgram() == ObsProgram.OBSVENTE) { - facade = row.getTerrestrialLocation().getCoastFAOName(); - sectors = row.getTerrestrialLocation().getCountryName(); - } else { - throw new IllegalArgumentException("obsProgram " + row.getObsProgram()); - } + String facade = row.getFacade(); + String sectors = row.getSectors(); // Prepare sectors Map Map<String, List<SampleRow>> sectorMap = getData().get(facade); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-03-10 15:48:59 UTC (rev 1058) @@ -22,7 +22,6 @@ import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.bean.LocationType; -import org.apache.commons.lang.ObjectUtils; import static org.nuiton.i18n.I18n.n_; @@ -53,18 +52,10 @@ @Override public boolean isDistrict() { - boolean isDistrict = getLocationType() == null - && getDistrictCode() != null; + boolean isDistrict = getLocationType() == null; return isDistrict; } - @Override - public boolean isRegion() { - boolean isRegion = getLocationType() == null - && getDistrictCode() == null; - return isRegion; - } - /** Get a description of the location like « Maracaibo (Port, Venezuela) » * */ @@ -75,6 +66,8 @@ } else { description.append(getName()).append(" (") .append(getLocationType()).append(", "); + // add the port name only if it's different of the name + // because most of the time it's redundant if (getPortName() != null && ! getPortName().equals(getName())) { description.append(getPortName()).append(", "); } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-03-10 15:48:59 UTC (rev 1058) @@ -384,6 +384,7 @@ district.setSeaboardName(null); district.setCoastFAOCode(null); district.setCoastFAOName(null); + district.setDistrictCode(null); } // now, we have the 'district' object we want to have in the Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-10 15:48:59 UTC (rev 1058) @@ -294,6 +294,16 @@ dao.create(row); } else { + // check that code is not already used in another program + if ( ! row.getObsProgram().equals(oldRow.getObsProgram())) { + if (log.isDebugEnabled()) { + log.error("Unable to save sample row. Code " + row.getCode() + + " is already used in program " + oldRow.getObsProgram()); + } + throw new IllegalArgumentException("code " + row.getCode() + + " is already used in program " + oldRow.getObsProgram()); + } + // it's the modification of a row, we must compute the // difference between before and after add this to the // sample row historic @@ -561,14 +571,11 @@ WaoQueryHelper.FishingZoneProperty fishingZoneProperty = builder.getFishingZoneProperty(); - // Depending on the program, the sampling plan is not organised // the same way. In Obsmer, lines are cut by Facade, sector // In ObsVente, it's by terrestrial location - if (filter.getObsProgram() == ObsProgram.OBSMER) { - - query.setSelect(sampleRowProperty.$alias(), + query.setSelect(sampleRowProperty.$alias(), fishingZoneProperty.facadeName(), fishingZoneProperty.sectorName(), fishingZoneProperty.districtCode()). @@ -579,23 +586,12 @@ fishingZoneProperty.sectorName(), fishingZoneProperty.districtCode(), sampleRowProperty.code()); - } else if (filter.getObsProgram() == ObsProgram.OBSVENTE) { + + if (filter.getObsProgram() == ObsProgram.OBSVENTE) { WaoQueryHelper.TerrestrialLocationProperty terrestrialLocationProperty = WaoQueryHelper.newTerrestrialLocationProperty(); - query.setSelect(sampleRowProperty.$alias(), - terrestrialLocationProperty.coastFAOName(), - terrestrialLocationProperty.countryName()). - // we still need to join to fishing zone for filters - addLeftJoin(sampleRowProperty.fishingZone(), fishingZoneProperty.$alias(), false). - addLeftJoin(sampleRowProperty.terrestrialLocation(), terrestrialLocationProperty.$alias(), false). - addLeftJoin(sampleRowProperty.dCF5Code(), dcf5CodeProperty.$alias(), false). - // Order By terrestrial location - addOrder(terrestrialLocationProperty.coastFAOName(), - terrestrialLocationProperty.countryName(), - sampleRowProperty.code()); - } else { - throw new IllegalArgumentException("obsProgram " + filter.getObsProgram()); + query.addLeftJoin(sampleRowProperty.terrestrialLocation(), terrestrialLocationProperty.$alias(), false); } if (log.isDebugEnabled()) { @@ -607,7 +603,11 @@ List<SampleRow> results = dao.findAllByQuery(query); for (SampleRow row : results) { - row.sizeSampleRowLog(); // force load + // force load + row.sizeSampleRowLog(); + if (row.getObsProgram().equals(ObsProgram.OBSVENTE)) { + row.getTerrestrialLocation(); + } // use FacadeRow to complete ordering using maps result.addRow(row); @@ -1130,7 +1130,7 @@ String code = ImportHelper.readSampleRowCode(reader); //reader.get(SAMPLING.PLAN_CODE.name()).trim(); if (StringUtils.isEmpty(code)) { - continue; + code = executeGetNewSampleRowCode(transaction, context.getCurrentDate()); } errorArgs.set(0, currRow); Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2011-03-10 15:48:59 UTC (rev 1058) @@ -700,10 +700,15 @@ filter.setObsProgram(ObsProgram.OBSDEB); List<SampleRow> samplingPlan = serviceSampling.getSampleRowsByFilter(filter); for (SampleRow sampleRow : samplingPlan) { + + if (log.isDebugEnabled()) { + log.debug("sample row has code " + sampleRow.getCode()); + } + Assert.assertNotNull("all sample rows must have a code", sampleRow.getCode()); Assert.assertNotNull("all sample rows must have a day", sampleRow.getDay()); Assert.assertNotNull("all sample rows must have a location", sampleRow.getObservationUnit()); - Assert.assertNotNull("all sample rows must be attached to a port", sampleRow.getObservationUnit().getPort()); + Assert.assertNotNull("all sample rows must be attached to a port", sampleRow.getObservationUnit().isObservationUnit()); } Assert.assertEquals("there is two line to import", 2, samplingPlan.size()); Modified: trunk/wao-business/src/test/resources/log4j.properties =================================================================== --- trunk/wao-business/src/test/resources/log4j.properties 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-business/src/test/resources/log4j.properties 2011-03-10 15:48:59 UTC (rev 1058) @@ -31,6 +31,6 @@ log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%p] %c{2} %m%n -log4j.logger.fr.ifremer.wao=INFO +log4j.logger.fr.ifremer.wao=DEBUG log4j.logger.org.nuiton.util=INFO log4j.logger.org.nuiton.util.beans.BinderProvider=ERROR Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2011-03-10 15:48:59 UTC (rev 1058) @@ -326,18 +326,9 @@ @Log public boolean isFacadeChanged() { boolean facadeChanged = false; - if (row.getObsProgram().equals(ObsProgram.OBSMER)) { - if (!row.getFacade().equals(currentFacadeName)) { - currentFacadeName = row.getFacade(); - facadeChanged = true; - } - } else if (row.getObsProgram().equals(ObsProgram.OBSVENTE)) { - if (!row.getTerrestrialLocation().getCoastFAOName().equals(currentFacadeName)) { - currentFacadeName = row.getTerrestrialLocation().getCoastFAOName(); - facadeChanged = true; - } - } else { - throw new IllegalArgumentException("obsProgram " + row.getObsProgram()); + if (!row.getFacade().equals(currentFacadeName)) { + currentFacadeName = row.getFacade(); + facadeChanged = true; } if (facadeChanged) { @@ -352,18 +343,9 @@ @Log public boolean isSectorChanged() { boolean sectorChanged = false; - if (row.getObsProgram().equals(ObsProgram.OBSMER)) { - if (!row.getSectors().equals(currentSectorName)) { - currentSectorName = row.getSectors(); - sectorChanged = true; - } - } else if (row.getObsProgram().equals(ObsProgram.OBSVENTE)) { - if (!row.getTerrestrialLocation().getCountryName().equals(currentSectorName)) { - currentSectorName = row.getTerrestrialLocation().getCountryName(); - sectorChanged = true; - } - } else { - throw new IllegalArgumentException("obsProgram " + row.getObsProgram()); + if (!row.getSectors().equals(currentSectorName)) { + currentSectorName = row.getSectors(); + sectorChanged = true; } return sectorChanged; } Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-10 11:06:23 UTC (rev 1057) +++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-10 15:48:59 UTC (rev 1058) @@ -243,9 +243,11 @@ <td>${row.fishingZonesInfos}</td> <t:if test="user.obsVente"> <td> - <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear"> - ${row.terrestrialLocation.districtName} - </span> + <t:if test="row.terrestrialLocation"> + <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear"> + ${row.terrestrialLocation.districtName} + </span> + </t:if> </td> <td> ${row.terrestrialLocationInfos} @@ -273,9 +275,11 @@ </td> <t:if test="user.obsVente"> <td> - <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear"> - ${row.terrestrialLocation.districtName} - </span> + <t:if test="row.terrestrialLocation"> + <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear"> + ${row.terrestrialLocation.districtName} + </span> + </t:if> </td> <td> ${row.terrestrialLocationInfos}