[Suiviobsmer-commits] r1153 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/test/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/pages
Author: bleny Date: 2011-04-07 08:43:29 +0000 (Thu, 07 Apr 2011) New Revision: 1153 Log: move ObsDeb sampleRow validation to servic - WiP Added: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java Added: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java (rev 0) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java 2011-04-07 08:43:29 UTC (rev 1153) @@ -0,0 +1,13 @@ +package fr.ifremer.wao.bean; + +import org.apache.commons.lang.builder.ToStringBuilder; + +public class ValidationResultImpl extends ValidationResult { + + @Override + public String toString() { + String toString = ToStringBuilder.reflectionToString(this); + return toString; + } + +} 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-04-06 18:33:05 UTC (rev 1152) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-04-07 08:43:29 UTC (rev 1153) @@ -47,6 +47,7 @@ import fr.ifremer.wao.bean.SamplingStrategy; import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.bean.ValidationResult; +import fr.ifremer.wao.bean.ValidationResultImpl; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyDAO; @@ -124,6 +125,8 @@ import java.util.LinkedList; import java.util.List; +import static org.nuiton.i18n.I18n.n_; + /** * ServiceSamplingImpl * @@ -1452,7 +1455,44 @@ } @Override - protected ValidationResult executeValidateSampleRow(TopiaContext transaction, SampleRow sampleRow) { - throw new UnsupportedOperationException("not yet implemented"); + protected ValidationResult executeValidateSampleRow(TopiaContext transaction, SampleRow sampleRow) throws TopiaException { + + ValidationResult validationResult = new ValidationResultImpl(); + validationResult.setSuccess(true); + + if (ObsProgram.OBSDEB == sampleRow.getObsProgram()) { + + if (sampleRow.getObservers() != null && sampleRow.getDay() != null) { + + // let's find a conflict, is there another sample-row + // declaring the this observer should be anywhere on the + // same day + + SamplingFilter samplingFilter = new SamplingFilterImpl(); + samplingFilter.setObsProgram(ObsProgram.OBSDEB); + samplingFilter.setPeriod(new PeriodDates(sampleRow.getDay(), sampleRow.getDay())); + + String message = ""; + + for (WaoUser observer : sampleRow.getObservers()) { + + samplingFilter.setObserver(observer); + List<SampleRow> conflictingSampleRows = executeGetSampleRowsByFilter(transaction, samplingFilter); + + if ( ! conflictingSampleRows.isEmpty()) { + validationResult.setSuccess(false); + message += WaoUtils.translate(n_("wao.validation.sampleRow.conflictOnObserver"), + observer.getFullName(), sampleRow.getCode(), conflictingSampleRows.get(0).getCode()); + } + } + + validationResult.setMessage(message); + } + + } else { + throw new UnsupportedOperationException("not supported (yet)"); + } + + return validationResult; } } Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-04-06 18:33:05 UTC (rev 1152) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-04-07 08:43:29 UTC (rev 1153) @@ -30,6 +30,7 @@ import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterValues; import fr.ifremer.wao.bean.UserRole; +import fr.ifremer.wao.bean.ValidationResult; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyImpl; import fr.ifremer.wao.entity.SampleRow; @@ -322,8 +323,35 @@ Assert.assertTrue("added observer is mentioned in the log", logEntry.contains(josh().getFullName())); } + /** + * We want to check that the coordinator is not able to create a bad sampling + * plan by sending a same observer on two different place the same day + */ @Test @Ignore("not yet implemented") + public void coordinatorCannotBreakSamplingPlan() throws IOException, WaoBusinessException { + coordinatorCanAddObserversViaImport(); + + ServiceSampling serviceSampling = manager.getServiceSampling(); + + // josh cannot be affected to this row, because on the same day + // he is to be elsewhere + SampleRow row2011_891 = serviceSampling.getSampleRowByCode(joshAsCoordinator(), "2011_891"); + row2011_891.addObservers(josh()); + + ValidationResult validationResult = serviceSampling.validateSampleRow(row2011_891); + + if (log.isDebugEnabled()) { + log.debug("validation result is " + validationResult.toString()); + } + + Assert.assertFalse("validation must fail", validationResult.isSuccess()); + Assert.assertTrue("message mentions sample row in conflict", + validationResult.getMessage().contains("2011_890")); + } + + @Test + @Ignore("not yet implemented") public void observerCanReadSamplingPlan() throws IOException, WaoBusinessException { // first, the coordinator must add observers coordinatorCanAddObserversViaImport(); Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-04-06 18:33:05 UTC (rev 1152) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-04-07 08:43:29 UTC (rev 1153) @@ -662,40 +662,13 @@ saveProgram(); } - protected ValidationResult validateSampleRow(SampleRow sampleRow) { - ValidationResult validationResult = new ValidationResultImpl(); - - if (ObsProgram.OBSDEB == sampleRow.getObsProgram()) { - - if (sampleRow.getObservers() != null && sampleRow.getDay() != null) { - for (WaoUser observer : sampleRow.getObservers()) { - - // let's find a conflict, is there another sample-row - // declaring the this observer should be anywhere on the - // same day - - // SampleRowDAO sampleRowDAO = WaoDAOHelper.getSampleRowDAO(transaction); - // Map<String, Object> properties = new HashMap<String, Object>(); - // properties.put(SampleRow.PROPERTY_OBS_PROGRAM_ORDINAL, sampleRow.getObsProgram().ordinal()); - // properties.put(SampleRow.PROPERTY_DAY, sampleRow.getDay()); - // addInObservers - } - } - - } else { - throw new UnsupportedOperationException("not supported (yet)"); - } - - return validationResult; - } - @Log void onValidateFormFromSampleRowForm() throws WaoException { sampleRowForm.clearErrors(); if (ObsProgram.OBSDEB == getSampleRow().getObsProgram()) { - ValidationResult validationResult = validateSampleRow(getSampleRow()); + ValidationResult validationResult = serviceSampling.validateSampleRow(getSampleRow()); if ( ! validationResult.isSuccess()) { sampleRowForm.recordError(validationResult.getMessage());
participants (1)
-
bleny@users.labs.libre-entreprise.org