r1718 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service wao-services/src/main/java/fr/ifremer/wao/services/service/administration wao-services/src/test/java/fr/ifremer/wao/services/service wao-services/src/test/java/fr/ifremer/wao/services/service/administration wao-web/src/main/java/fr/ifremer/wao/web/action wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer wao-web/src/ma
Author: bleny Date: 2014-03-12 14:39:15 +0100 (Wed, 12 Mar 2014) New Revision: 1718 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1718 Log: refs #4483 in edit-sample-row form add observation effort and program Added: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/administration/ReferentialServiceTest.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/MonthConverter.java trunk/wao-web/src/main/resources/fr/ trunk/wao-web/src/main/resources/fr/ifremer/ trunk/wao-web/src/main/resources/fr/ifremer/wao/ trunk/wao-web/src/main/resources/fr/ifremer/wao/entity/ trunk/wao-web/src/main/resources/fr/ifremer/wao/entity/SampleRow-conversion.properties Removed: trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ReferentialServiceTest.java Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleMonthImpl.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/UpdateSampleRowCommand.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditSampleRowAction.java trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-sample-row-input.jsp Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -3,6 +3,7 @@ import fr.ifremer.wao.entity.ObsProgram; import java.text.DateFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Pattern; @@ -38,7 +39,13 @@ return dateFormat.format(date); } + public static Date parseMonth(String monthYear) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat(MONTH_PATTERN); + return dateFormat.parse(monthYear); + } + public static Pattern getSampleRowCodePattern(ObsProgram obsProgram) { return Pattern.compile("^(\\d{4})_" + obsProgram.getShortCode() + "(\\d{4})$"); } + } Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleMonthImpl.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleMonthImpl.java 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleMonthImpl.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -24,6 +24,7 @@ package fr.ifremer.wao.entity; +import com.google.common.base.Objects; import fr.ifremer.wao.WaoUtils; import java.util.Date; @@ -43,4 +44,9 @@ return periodDatesContains; } + @Override + public String toString() { + String toString = Objects.toStringHelper(this).add(PROPERTY_PERIOD_DATE, WaoUtils.formatMonth(periodDate)).toString(); + return toString; + } } Added: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java (rev 0) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -0,0 +1,18 @@ +package fr.ifremer.wao.entity; + +import com.google.common.base.Optional; +import com.google.common.collect.ImmutableMap; + +public class SampleRowTopiaDao extends AbstractSampleRowTopiaDao<SampleRow> { + + public Optional<String> findMaxSampleRowCode(String sampleRowCodePrefix) { + String hql = "select max(sr.code) " + + newFromClause("sr") + + " where sr.code like :sampleRowCodePattern"; + ImmutableMap<String, String> hqlParameters = + ImmutableMap.of("sampleRowCodePattern", sampleRowCodePrefix + "%"); + Optional<String> optionalMaxSampleRowCode = tryFindUnique(hql, (ImmutableMap) hqlParameters); + return optionalMaxSampleRowCode; + } + +} Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -15,6 +15,8 @@ import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.ProfessionImpl; import fr.ifremer.wao.entity.SampleMonth; +import fr.ifremer.wao.entity.SampleMonthImpl; +import fr.ifremer.wao.entity.SampleMonthTopiaDao; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowImpl; import fr.ifremer.wao.entity.SampleRowLog; @@ -28,11 +30,14 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntities; +import java.text.ParseException; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.GregorianCalendar; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; public class ObsMerSamplingPlanService extends WaoServiceSupport { @@ -163,8 +168,6 @@ public void preValidate(AuthenticatedWaoUser authenticatedWaoUser, UpdateSampleRowCommand updateSampleRowCommand) { - // TODO brendan 10/03/14 mettre à jour les codes DCF5 - String elligibleBoatImmatriculations = updateSampleRowCommand.getElligibleBoatImmatriculations(); List<Boat> elligibleBoats = getReferentialService().getBoatsFromImmatriculations(elligibleBoatImmatriculations); @@ -202,6 +205,51 @@ sampleRow.cleardCF5Code(); sampleRow.addAlldCF5Code(getReferentialService().getDcf5Codes(dcf5Codes)); + SampleMonthTopiaDao sampleMonthDao = getSampleMonthDao(); + + Set<SampleMonth> sampleMonthsToRemove = new HashSet<>(sampleRow.getSampleMonth()); + Map<String, Integer> expectedObservationsByMonths = updateSampleRowCommand.getExpectedObservationsByMonths(); + for (Map.Entry<String, Integer> entry : expectedObservationsByMonths.entrySet()) { + Date month; + try { + month = updateSampleRowCommand.monthFormat.parse(entry.getKey()); + } catch (ParseException e) { + throw new IllegalArgumentException(expectedObservationsByMonths.toString(), e); + } + SampleMonth sampleMonth = sampleRow.getSampleMonth(month); + Integer expectedObservations = entry.getValue(); + if (expectedObservations == null) { + if (sampleMonth != null) { + // rien à faire, il va être supprimé + } + } else { + if (sampleMonth == null) { + sampleMonth = new SampleMonthImpl(); + sampleMonth.setPeriodDate(month); + sampleRow.addSampleMonth(sampleMonth); + sampleMonthDao.create(sampleMonth); + if (log.isTraceEnabled()) { + log.trace("created sample month " + sampleMonth); + } + } else { + sampleMonthsToRemove.remove(sampleMonth); + if (log.isTraceEnabled()) { + log.trace("will keep " + sampleMonth); + } + } + sampleMonth.setExpectedTidesValue(expectedObservations); + sampleMonthDao.update(sampleMonth); + } + } + + for (SampleMonth sampleMonth : sampleMonthsToRemove) { + if (log.isTraceEnabled()) { + log.trace("will remove " + sampleMonth); + } + sampleRow.removeSampleMonth(sampleMonth); + sampleMonthDao.delete(sampleMonth); + } + } public void save(UpdateSampleRowCommand updateSampleRowCommand) { Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/UpdateSampleRowCommand.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/UpdateSampleRowCommand.java 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/UpdateSampleRowCommand.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -6,16 +6,25 @@ import com.google.common.collect.Sets; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.FishingZone; +import fr.ifremer.wao.entity.SampleMonth; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowLog; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.nuiton.topia.persistence.TopiaEntities; +import org.nuiton.util.PeriodDates; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.Set; public class UpdateSampleRowCommand { + protected DateFormat monthFormat = new SimpleDateFormat("YYYYMM"); + protected boolean creation; protected SampleRow sampleRow; @@ -30,6 +39,32 @@ protected String dcf5Codes; + /** + * La clé est un mois au format YYYY-MM + */ + protected Map<String, Integer> expectedObservationsByMonths; + + public Map<String, Integer> getExpectedObservationsByMonths() { + if (expectedObservationsByMonths == null) { + expectedObservationsByMonths = new LinkedHashMap<>(); + Date periodBegin = sampleRow.getPeriodBegin(); + Date periodEnd = sampleRow.getPeriodEnd(); + for (Date month : new PeriodDates(periodBegin, periodEnd).getMonths()) { + SampleMonth sampleMonth = sampleRow.getSampleMonth(month); + Integer expectedObservations = null; + if (sampleMonth != null) { + expectedObservations = sampleMonth.getExpectedTidesValue(); + } + expectedObservationsByMonths.put(monthFormat.format(month), expectedObservations); + } + } + return expectedObservationsByMonths; + } + + public void setExpectedObservationsByMonths(Map<String, Integer> expectedObservationsByMonths) { + this.expectedObservationsByMonths = expectedObservationsByMonths; + } + public String getCompanyId() { String companyId = null; if (sampleRow.getCompany() != null) { Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -27,7 +27,6 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import fr.ifremer.wao.WaoTechnicalException; import fr.ifremer.wao.entity.Boat; @@ -1027,7 +1026,7 @@ if (StringUtils.isNotBlank(joinedDcf5Codes)) { - String[] splitCodes = joinedDcf5Codes.split("\\s?"); + Iterable<String> splitCodes = Splitter.onPattern("\\s+").split(joinedDcf5Codes); for (String code : splitCodes) { @@ -1039,11 +1038,9 @@ targetSpeciesDCF = getTargetSpeciesDCFDao().forCodeEquals(codeParts[1]).findUnique(); } - ImmutableMap<String, Object> properties = - ImmutableMap.of( - DCF5Code.PROPERTY_FISHING_GEAR_DCF, (Object) fishingGearDCF, - DCF5Code.PROPERTY_TARGET_SPECIES_DCF, targetSpeciesDCF - ); + Map<String, Object> properties = new HashMap<>(); + properties.put(DCF5Code.PROPERTY_FISHING_GEAR_DCF, fishingGearDCF); + properties.put(DCF5Code.PROPERTY_TARGET_SPECIES_DCF, targetSpeciesDCF); Optional<DCF5Code> optionalDcf5Code = dao.forProperties(properties).tryFindUnique(); Deleted: trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ReferentialServiceTest.java =================================================================== --- trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ReferentialServiceTest.java 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ReferentialServiceTest.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -1,154 +0,0 @@ -package fr.ifremer.wao.services.service; - -import fr.ifremer.wao.entity.Boat; -import fr.ifremer.wao.services.AbstractWaoServiceTest; -import fr.ifremer.wao.services.service.administration.ReferentialService; -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.io.InputStream; -import java.util.Collection; -import java.util.Date; - -public class ReferentialServiceTest extends AbstractWaoServiceTest { - - private static final Log log = LogFactory.getLog(ReferentialServiceTest.class); - - protected ReferentialService service; - - @Before - public void setUp() { - getServiceContext().setDate(new Date(1393607049651l)); - service = newService(ReferentialService.class); - } - - @Test - public void testImportFishingZones() { - InputStream input = null; - try { - input = getClass().getResourceAsStream("/import/zonesPeche.csv"); - service.importFishingZones(input); - } catch (ImportErrorException e) { - if (log.isDebugEnabled()) { - log.debug("unexpected exception raised", e); - } - Assert.fail("exception should not be raised"); - } finally { - IOUtils.closeQuietly(input); - } - } - - @Test - public void testImportTerrestrialLocations() { - InputStream input = null; - try { - input = getClass().getResourceAsStream("/terrestrialLocations.csv"); - service.importTerrestrialLocations(input); - } catch (ImportErrorException e) { - if (log.isDebugEnabled()) { - log.debug("unexpected exception raised", e); - } - Assert.fail("exception should not be raised"); - } finally { - IOUtils.closeQuietly(input); - } - } - - @Test - public void testImportContactStateMotives() { - testImportTerrestrialLocations(); - InputStream input = null; - try { - input = getClass().getResourceAsStream("/motifs.csv"); - service.importContactStateMotives(input); - } catch (ImportErrorException e) { - if (log.isDebugEnabled()) { - log.debug("unexpected exception raised", e); - } - Assert.fail("exception should not be raised"); - } finally { - IOUtils.closeQuietly(input); - } - } - - @Test - public void testImportTerrestrialDivisions() { - testImportTerrestrialLocations(); - InputStream input = null; - try { - input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv"); - service.importTerrestrialDivisions(input); - } catch (ImportErrorException e) { - if (log.isDebugEnabled()) { - log.debug("unexpected exception raised", e); - } - Assert.fail("exception should not be raised"); - } finally { - IOUtils.closeQuietly(input); - } - } - - @Test - public void testImportObsDebCodes() { - testImportTerrestrialLocations(); - InputStream input = null; - try { - input = getClass().getResourceAsStream("/obsDebCodes.csv"); - service.importObsDebCodes(input); - } catch (ImportErrorException e) { - if (log.isDebugEnabled()) { - log.debug("unexpected exception raised", e); - } - Assert.fail("exception should not be raised"); - } finally { - IOUtils.closeQuietly(input); - } - } - - @Test - public void testImportBoats() { - testImportTerrestrialLocations(); - InputStream input = null; - try { - input = getClass().getResourceAsStream("/import/navires.csv"); - service.importBoats(input); - } catch (ImportErrorException e) { - if (log.isDebugEnabled()) { - log.debug("unexpected exception raised", e); - } - Assert.fail("exception should not be raised"); - } finally { - IOUtils.closeQuietly(input); - } - } - - @Test - public void testImportBoatGroups() { - testImportBoats(); - InputStream input = null; - try { - input = getClass().getResourceAsStream("/import/strates.csv"); - service.importBoatGroups(input); - } catch (ImportErrorException e) { - if (log.isDebugEnabled()) { - log.debug("unexpected exception raised", e); - } - Assert.fail("exception should not be raised"); - } finally { - IOUtils.closeQuietly(input); - } - } - - @Test - public void testGetBoatsByImmatriculations() { - testImportBoats(); - Collection<Boat> boats = service.getBoatsFromImmatriculations("174258, 284595 978419"); - Assert.assertEquals(3, boats.size()); - boats = service.getBoatsFromImmatriculations(" "); - Assert.assertTrue(boats.isEmpty()); - } -} Copied: trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/administration/ReferentialServiceTest.java (from rev 1716, trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ReferentialServiceTest.java) =================================================================== --- trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/administration/ReferentialServiceTest.java (rev 0) +++ trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/administration/ReferentialServiceTest.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -0,0 +1,170 @@ +package fr.ifremer.wao.services.service.administration; + +import fr.ifremer.wao.entity.Boat; +import fr.ifremer.wao.entity.DCF5Code; +import fr.ifremer.wao.services.AbstractWaoServiceTest; +import fr.ifremer.wao.services.service.ImportErrorException; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.InputStream; +import java.util.Collection; +import java.util.Date; + +public class ReferentialServiceTest extends AbstractWaoServiceTest { + + private static final Log log = LogFactory.getLog(ReferentialServiceTest.class); + + protected ReferentialService service; + + @Before + public void setUp() { + getServiceContext().setDate(new Date(1393607049651l)); + service = newService(ReferentialService.class); + } + + @Test + public void testImportFishingZones() { + InputStream input = null; + try { + input = getClass().getResourceAsStream("/import/zonesPeche.csv"); + service.importFishingZones(input); + } catch (ImportErrorException e) { + if (log.isDebugEnabled()) { + log.debug("unexpected exception raised", e); + } + Assert.fail("exception should not be raised"); + } finally { + IOUtils.closeQuietly(input); + } + } + + @Test + public void testImportTerrestrialLocations() { + InputStream input = null; + try { + input = getClass().getResourceAsStream("/terrestrialLocations.csv"); + service.importTerrestrialLocations(input); + } catch (ImportErrorException e) { + if (log.isDebugEnabled()) { + log.debug("unexpected exception raised", e); + } + Assert.fail("exception should not be raised"); + } finally { + IOUtils.closeQuietly(input); + } + } + + @Test + public void testImportContactStateMotives() { + testImportTerrestrialLocations(); + InputStream input = null; + try { + input = getClass().getResourceAsStream("/motifs.csv"); + service.importContactStateMotives(input); + } catch (ImportErrorException e) { + if (log.isDebugEnabled()) { + log.debug("unexpected exception raised", e); + } + Assert.fail("exception should not be raised"); + } finally { + IOUtils.closeQuietly(input); + } + } + + @Test + public void testImportTerrestrialDivisions() { + testImportTerrestrialLocations(); + InputStream input = null; + try { + input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv"); + service.importTerrestrialDivisions(input); + } catch (ImportErrorException e) { + if (log.isDebugEnabled()) { + log.debug("unexpected exception raised", e); + } + Assert.fail("exception should not be raised"); + } finally { + IOUtils.closeQuietly(input); + } + } + + @Test + public void testImportObsDebCodes() { + testImportTerrestrialLocations(); + InputStream input = null; + try { + input = getClass().getResourceAsStream("/obsDebCodes.csv"); + service.importObsDebCodes(input); + } catch (ImportErrorException e) { + if (log.isDebugEnabled()) { + log.debug("unexpected exception raised", e); + } + Assert.fail("exception should not be raised"); + } finally { + IOUtils.closeQuietly(input); + } + } + + @Test + public void testImportBoats() { + testImportTerrestrialLocations(); + InputStream input = null; + try { + input = getClass().getResourceAsStream("/import/navires.csv"); + service.importBoats(input); + } catch (ImportErrorException e) { + if (log.isDebugEnabled()) { + log.debug("unexpected exception raised", e); + } + Assert.fail("exception should not be raised"); + } finally { + IOUtils.closeQuietly(input); + } + } + + @Test + public void testImportBoatGroups() { + testImportBoats(); + InputStream input = null; + try { + input = getClass().getResourceAsStream("/import/strates.csv"); + service.importBoatGroups(input); + } catch (ImportErrorException e) { + if (log.isDebugEnabled()) { + log.debug("unexpected exception raised", e); + } + Assert.fail("exception should not be raised"); + } finally { + IOUtils.closeQuietly(input); + } + } + + @Test + public void testGetBoatsByImmatriculations() { + testImportBoats(); + Collection<Boat> boats = service.getBoatsFromImmatriculations("174258, 284595 978419"); + Assert.assertEquals(3, boats.size()); + boats = service.getBoatsFromImmatriculations(" "); + Assert.assertTrue(boats.isEmpty()); + } + + @Test + public void testGetDcf5Codes() { + + service.initialDCF5CodesImport(); + + Collection<DCF5Code> dcf5Codes = service.getDcf5Codes("OTT_DWS OTB_DEF OTB OTT_DEF"); + + Assert.assertEquals(4, dcf5Codes.size()); + + for (DCF5Code dcf5Code : dcf5Codes) { + Assert.assertTrue(dcf5Code.isPersisted()); + } + + } +} Added: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/MonthConverter.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/MonthConverter.java (rev 0) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/MonthConverter.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -0,0 +1,71 @@ +package fr.ifremer.wao.web.action; + +import com.opensymphony.xwork2.conversion.TypeConversionException; +import fr.ifremer.wao.WaoUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.struts2.util.StrutsTypeConverter; + +import java.text.ParseException; +import java.util.Arrays; +import java.util.Date; +import java.util.Map; + +public class MonthConverter extends StrutsTypeConverter { + + @Override + public Date convertFromString(Map map, String[] strings, Class aClass) { + + if (strings.length == 1) { + + String string = strings[0]; + + Date parsedValue; + + if (StringUtils.isEmpty(string)) { + + parsedValue = null; + + } else { + + try { + parsedValue = WaoUtils.parseMonth(string); + } catch (ParseException e) { + throw new TypeConversionException("strings=" + Arrays.toString(strings)); + } + + } + + return parsedValue; + + } else { + throw new TypeConversionException("strings=" + Arrays.toString(strings)); + } + + } + + @Override + public String convertToString(Map map, Object o) { + + String str; + + if (o == null) { + + str = StringUtils.EMPTY; + + } else { + + if (o instanceof Date) { + + Date date = (Date) o; + + str = WaoUtils.formatMonth(date); + + } else { + throw new UnsupportedOperationException("cannot convert to month " + o); + } + } + + return str; + + } +} Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditSampleRowAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditSampleRowAction.java 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditSampleRowAction.java 2014-03-12 13:39:15 UTC (rev 1718) @@ -15,6 +15,8 @@ import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; +import java.util.Map; + @Results({ @Result(name="success", type="redirectAction", params = { "actionName", "sampling-plan" }) }) @@ -110,4 +112,12 @@ return updateSampleRowCommand; } + public Map<String, Integer> getExpectedObservationsByMonths() { + return getUpdateSampleRowCommand().getExpectedObservationsByMonths(); + } + + public void setExpectedObservationsByMonths(Map<String, Integer> expectedObservationsByMonths) { + getUpdateSampleRowCommand().setExpectedObservationsByMonths(expectedObservationsByMonths); + } + } \ No newline at end of file Added: trunk/wao-web/src/main/resources/fr/ifremer/wao/entity/SampleRow-conversion.properties =================================================================== --- trunk/wao-web/src/main/resources/fr/ifremer/wao/entity/SampleRow-conversion.properties (rev 0) +++ trunk/wao-web/src/main/resources/fr/ifremer/wao/entity/SampleRow-conversion.properties 2014-03-12 13:39:15 UTC (rev 1718) @@ -0,0 +1,2 @@ +periodBegin=fr.ifremer.wao.web.action.MonthConverter +periodEnd=fr.ifremer.wao.web.action.MonthConverter Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-sample-row-input.jsp =================================================================== --- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-sample-row-input.jsp 2014-03-11 13:44:08 UTC (rev 1717) +++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-sample-row-input.jsp 2014-03-12 13:39:15 UTC (rev 1718) @@ -66,6 +66,16 @@ <legend><s:text name="wao.ui.form.SampleRow.program" /></legend> + <s:textfield name="updateSampleRowCommand.sampleRow.programName" label="%{getText('wao.ui.field.SampleRow.programName')}" /> + <s:textfield name="updateSampleRowCommand.sampleRow.periodBegin" label="%{getText('wao.ui.field.SampleRow.periodBegin')}" cssClass="input-small" /> + <s:textfield name="updateSampleRowCommand.sampleRow.periodEnd" label="%{getText('wao.ui.field.SampleRow.periodEnd')}" cssClass="input-small" /> + + <s:iterator value="expectedObservationsByMonths" var="month"> + + <s:textfield type="number" name="expectedObservationsByMonths['%{#month.key}']" label="%{#month.key}" cssClass="input-small" /> + + </s:iterator> + </fieldset> <fieldset>
participants (1)
-
bleny@users.forge.codelutin.com