branch feature/7463-3 updated (c3adfe9 -> 5386018)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7463-3 in repository observe. See http://git.codelutin.com/observe.git from c3adfe9 Tout les objets transferables sur le web hérite de ObserveDto poour faclilité l'injection des paramètres (refs #7463) new 5386018 Test de generation des rapports en mode REST + correction Ajout des annotayions @PostRequest et @DeleteRequest pour utiliser les méthodes POST ou DELETE dans les requêtes REST (refs #7463) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 53860184823192f4c4ac206e7790e8ed268ed473 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 9 15:25:11 2015 +0200 Test de generation des rapports en mode REST + correction Ajout des annotayions @PostRequest et @DeleteRequest pour utiliser les méthodes POST ou DELETE dans les requêtes REST (refs #7463) Summary of changes: .../v1/actions/report/ReportServiceController.java | 12 +- .../src/main/filters/observe-reports.properties | 10 +- .../services/service/ReferentialService.java | 5 + .../consolidate/ConsolidateDataService.java | 2 + .../service/actions/report/ReportBuilder.java | 49 +-- .../service/actions/report/ReportService.java | 14 +- .../actions/report/model/ReportOperation.java | 107 ----- .../actions/report/model/ReportRequest.java | 407 ------------------- .../report/model/operations/ExecuteRequests.java | 120 ------ .../report/model/operations/GroupByLength.java | 111 ------ .../actions/report/model/operations/SumColumn.java | 129 ------ .../report/model/operations/SumIntColumn.java | 129 ------ .../actions/report/model/operations/SumIntRow.java | 129 ------ .../actions/report/model/operations/SumRow.java | 129 ------ .../service/actions/validate/ValidateService.java | 3 + .../longline/ActivityLongLineEncouterService.java | 2 + .../ActivityLongLineSensorUsedService.java | 2 + .../service/longline/ActivityLonglineService.java | 4 + .../longline/GearUseFeaturesLonglineService.java | 4 + .../service/longline/SetLonglineCatchService.java | 2 + .../SetLonglineDetailCompositionService.java | 2 + .../SetLonglineGlobalCompositionService.java | 2 + .../service/longline/SetLonglineService.java | 4 + .../services/service/longline/TdrService.java | 2 + .../service/longline/TripLonglineService.java | 4 + .../seine/ActivitySeineObservedSystemService.java | 2 + .../service/seine/ActivitySeineService.java | 4 + .../service/seine/FloatingObjectService.java | 4 + .../service/seine/GearUseFeaturesSeineService.java | 4 + .../service/seine/NonTargetCatchService.java | 2 + .../service/seine/NonTargetSampleService.java | 2 + .../seine/ObjectObservedSpeciesService.java | 2 + .../service/seine/ObjectSchoolEstimateService.java | 2 + .../services/service/seine/RouteService.java | 4 + .../service/seine/SchoolEstimateService.java | 2 + .../services/service/seine/SetSeineService.java | 4 + .../services/service/seine/TargetCatchService.java | 2 + .../service/seine/TargetSampleService.java | 2 + .../seine/TransmittingBuoyOperationService.java | 2 + .../services/service/seine/TripSeineService.java | 4 + .../spi/{Write.java => DeleteRequest.java} | 9 +- .../services/spi/{Write.java => PostRequest.java} | 9 +- .../service/actions/report/ReportBuilderTest.java | 11 +- .../services/dto/actions/report}/DataMatrix.java | 2 +- .../services/dto/actions/report}/Report.java | 2 +- .../dto/actions/report/ReportOperation.java | 17 +- .../services/dto/actions/report/ReportRequest.java | 187 +++++++++ .../dto/actions/report}/ReportVariable.java | 32 +- .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + .../services/dto/gson/ReportVariableAdapter.java | 55 +++ .../services/ObserveServiceFactoryRest.java | 11 +- .../report/AbstractReportServiceRestTest.java | 28 +- .../report/ReportAccessoryCatchRestTest.java | 9 +- .../service/actions/report/ReportServiceTopia.java | 441 ++++++++++++++++++++- .../report/AbstractReportServiceTopiaTest.java | 8 +- .../actions/report/ReportAccessoryCatch2Test.java | 2 +- .../report/ReportAccessoryCatchByGroup2Test.java | 2 +- .../report/ReportAccessoryCatchByGroupTest.java | 7 +- .../actions/report/ReportAccessoryCatchTest.java | 7 +- .../report/ReportActivityWithCommentTest.java | 6 +- .../actions/report/ReportAllActivitysTest.java | 7 +- .../actions/report/ReportDailySetAndCatchTest.java | 6 +- .../service/actions/report/ReportDcpUsageTest.java | 6 +- .../report/ReportSetByAssociation2Test.java | 2 +- .../actions/report/ReportSetByAssociationTest.java | 6 +- .../report/ReportTargetCatchByAssociationTest.java | 6 +- .../ReportTargetDiscardedByAssociationTest.java | 6 +- 67 files changed, 859 insertions(+), 1453 deletions(-) delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportOperation.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportRequest.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/ExecuteRequests.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/GroupByLength.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumColumn.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntColumn.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntRow.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumRow.java copy observe-services-api/src/main/java/fr/ird/observe/services/spi/{Write.java => DeleteRequest.java} (63%) copy observe-services-api/src/main/java/fr/ird/observe/services/spi/{Write.java => PostRequest.java} (63%) rename {observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model => observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report}/DataMatrix.java (99%) rename {observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model => observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report}/Report.java (98%) copy observe-business/src/main/java/fr/ird/observe/db/util/TopiaExecutor.java => observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportOperation.java (73%) create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportRequest.java rename {observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model => observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report}/ReportVariable.java (66%) create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReportVariableAdapter.java copy observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java => observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceRestTest.java (89%) copy observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java => observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchRestTest.java (95%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7463-3 in repository observe. See http://git.codelutin.com/observe.git commit 53860184823192f4c4ac206e7790e8ed268ed473 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 9 15:25:11 2015 +0200 Test de generation des rapports en mode REST + correction Ajout des annotayions @PostRequest et @DeleteRequest pour utiliser les méthodes POST ou DELETE dans les requêtes REST (refs #7463) --- .../v1/actions/report/ReportServiceController.java | 12 +- .../src/main/filters/observe-reports.properties | 10 +- .../services/service/ReferentialService.java | 5 + .../consolidate/ConsolidateDataService.java | 2 + .../service/actions/report/ReportBuilder.java | 49 +-- .../service/actions/report/ReportService.java | 14 +- .../actions/report/model/ReportOperation.java | 107 ----- .../actions/report/model/ReportRequest.java | 407 ------------------- .../report/model/operations/ExecuteRequests.java | 120 ------ .../report/model/operations/GroupByLength.java | 111 ------ .../actions/report/model/operations/SumColumn.java | 129 ------ .../report/model/operations/SumIntColumn.java | 129 ------ .../actions/report/model/operations/SumIntRow.java | 129 ------ .../actions/report/model/operations/SumRow.java | 129 ------ .../service/actions/validate/ValidateService.java | 3 + .../longline/ActivityLongLineEncouterService.java | 2 + .../ActivityLongLineSensorUsedService.java | 2 + .../service/longline/ActivityLonglineService.java | 4 + .../longline/GearUseFeaturesLonglineService.java | 4 + .../service/longline/SetLonglineCatchService.java | 2 + .../SetLonglineDetailCompositionService.java | 2 + .../SetLonglineGlobalCompositionService.java | 2 + .../service/longline/SetLonglineService.java | 4 + .../services/service/longline/TdrService.java | 2 + .../service/longline/TripLonglineService.java | 4 + .../seine/ActivitySeineObservedSystemService.java | 2 + .../service/seine/ActivitySeineService.java | 4 + .../service/seine/FloatingObjectService.java | 4 + .../service/seine/GearUseFeaturesSeineService.java | 4 + .../service/seine/NonTargetCatchService.java | 2 + .../service/seine/NonTargetSampleService.java | 2 + .../seine/ObjectObservedSpeciesService.java | 2 + .../service/seine/ObjectSchoolEstimateService.java | 2 + .../services/service/seine/RouteService.java | 4 + .../service/seine/SchoolEstimateService.java | 2 + .../services/service/seine/SetSeineService.java | 4 + .../services/service/seine/TargetCatchService.java | 2 + .../service/seine/TargetSampleService.java | 2 + .../seine/TransmittingBuoyOperationService.java | 2 + .../services/service/seine/TripSeineService.java | 4 + .../fr/ird/observe/services/spi/DeleteRequest.java | 14 + .../fr/ird/observe/services/spi/PostRequest.java | 14 + .../service/actions/report/ReportBuilderTest.java | 11 +- .../services/dto/actions/report}/DataMatrix.java | 2 +- .../services/dto/actions/report}/Report.java | 2 +- .../dto/actions/report/ReportOperation.java | 41 ++ .../services/dto/actions/report/ReportRequest.java | 187 +++++++++ .../dto/actions/report}/ReportVariable.java | 32 +- .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + .../services/dto/gson/ReportVariableAdapter.java | 55 +++ .../services/ObserveServiceFactoryRest.java | 11 +- .../report/AbstractReportServiceRestTest.java | 28 +- .../report/ReportAccessoryCatchRestTest.java | 9 +- .../service/actions/report/ReportServiceTopia.java | 441 ++++++++++++++++++++- .../report/AbstractReportServiceTopiaTest.java | 8 +- .../actions/report/ReportAccessoryCatch2Test.java | 2 +- .../report/ReportAccessoryCatchByGroup2Test.java | 2 +- .../report/ReportAccessoryCatchByGroupTest.java | 7 +- .../actions/report/ReportAccessoryCatchTest.java | 7 +- .../report/ReportActivityWithCommentTest.java | 6 +- .../actions/report/ReportAllActivitysTest.java | 7 +- .../actions/report/ReportDailySetAndCatchTest.java | 6 +- .../service/actions/report/ReportDcpUsageTest.java | 6 +- .../report/ReportSetByAssociation2Test.java | 2 +- .../actions/report/ReportSetByAssociationTest.java | 6 +- .../report/ReportTargetCatchByAssociationTest.java | 6 +- .../ReportTargetDiscardedByAssociationTest.java | 6 +- 67 files changed, 914 insertions(+), 1432 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/report/ReportServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/report/ReportServiceController.java index f41c17f..c93a58d 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/report/ReportServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/report/ReportServiceController.java @@ -1,12 +1,9 @@ package fr.ird.observe.application.web.controller.v1.actions.report; import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; - -import java.util.List; -import java.util.Map; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -26,9 +23,4 @@ public class ReportServiceController extends ObserveAuthenticatedServiceControll public DataMatrix executeReport(Report report, String tripId) { return service.executeReport(report, tripId); } - - @Override - public <R> List<R> executeRequest(String request, Map<String, Object> params) { - return service.executeRequest(request, params); - } } diff --git a/observe-services-api/src/main/filters/observe-reports.properties b/observe-services-api/src/main/filters/observe-reports.properties index 732b367..c39af69 100644 --- a/observe-services-api/src/main/filters/observe-reports.properties +++ b/observe-services-api/src/main/filters/observe-reports.properties @@ -682,7 +682,7 @@ report.nonTargetDistributionLengths.name=Distribution des tailles par esp\u00e8c report.nonTargetDistributionLengths.description=Afficher la nombre d'individus mesur\u00e9s par classe de taille pour les esp\u00e8ces non cibl\u00e9es report.nonTargetDistributionLengths.columns=Classe de taille,Effectif report.nonTargetDistributionLengths.operations.1=GroupByLength -report.nonTargetDistributionLengths.variable.speciesId=fr.ird.observe.entities.referentiel.Species|\ +report.nonTargetDistributionLengths.variable.speciesId=fr.ird.observe.services.dto.referential.SpeciesDto|\ Select distinct ntl.species \ From TripSeineImpl t \ Join t.route r \ @@ -710,7 +710,7 @@ report.targetStoredDistributionLengthsLD1.name=Distribution des tailles des capt report.targetStoredDistributionLengthsLD1.description=Afficher le nombre d'individus captur\u00e9s, mesur\u00e9s par classe de taille LD1 pour les esp\u00e8ces cibl\u00e9es report.targetStoredDistributionLengthsLD1.columns=Classe de taille,Effectif report.targetStoredDistributionLengthsLD1.operations.1=GroupByLength -report.targetStoredDistributionLengthsLD1.variable.speciesId=fr.ird.observe.entities.referentiel.Species|\ +report.targetStoredDistributionLengthsLD1.variable.speciesId=fr.ird.observe.services.dto.referential.SpeciesDto|\ Select distinct tl.species \ From TripSeineImpl t \ Join t.route r \ @@ -742,7 +742,7 @@ report.targetDiscardedDistributionLengthsLD1.name=Distribution des tailles des r report.targetDiscardedDistributionLengthsLD1.description=Afficher la nombre d'individus rejet\u00e9s, mesur\u00e9s par classe de taille LD1 pour les esp\u00e8ces cibl\u00e9es report.targetDiscardedDistributionLengthsLD1.columns=Classe de taille,Effectif report.targetDiscardedDistributionLengthsLD1.operations.1=GroupByLength -report.targetDiscardedDistributionLengthsLD1.variable.speciesId=fr.ird.observe.entities.referentiel.Species|\ +report.targetDiscardedDistributionLengthsLD1.variable.speciesId=fr.ird.observe.services.dto.referential.SpeciesDto|\ Select distinct tl.species \ From TripSeineImpl t \ Join t.route r \ @@ -774,7 +774,7 @@ report.targetStoredDistributionLengthsLF.name=Distribution des tailles des captu report.targetStoredDistributionLengthsLF.description=Afficher le nombre d'individus captur\u00e9s, mesur\u00e9s par classe de taille LF pour les esp\u00e8ces cibl\u00e9es report.targetStoredDistributionLengthsLF.columns=Classe de taille,Effectif report.targetStoredDistributionLengthsLF.operations.1=GroupByLength -report.targetStoredDistributionLengthsLF.variable.speciesId=fr.ird.observe.entities.referentiel.Species|\ +report.targetStoredDistributionLengthsLF.variable.speciesId=fr.ird.observe.services.dto.referential.SpeciesDto|\ Select distinct tl.species \ From TripSeineImpl t \ Join t.route r \ @@ -806,7 +806,7 @@ report.targetDiscardedDistributionLengthsLF.name=Distribution des tailles des re report.targetDiscardedDistributionLengthsLF.description=Afficher le nombre d'individus rejet\u00e9s, mesur\u00e9s par classe de taille LF pour les esp\u00e8ces cibl\u00e9es report.targetDiscardedDistributionLengthsLF.columns=Classe de taille,Effectif report.targetDiscardedDistributionLengthsLF.operations.1=GroupByLength -report.targetDiscardedDistributionLengthsLF.variable.speciesId=fr.ird.observe.entities.referentiel.Species|\ +report.targetDiscardedDistributionLengthsLF.variable.speciesId=fr.ird.observe.services.dto.referential.SpeciesDto|\ Select distinct tl.species \ From TripSeineImpl t \ Join t.route r \ diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java index f33f58c..53a957b 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadReferentialPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteReferentialPermission; @@ -31,14 +33,17 @@ public interface ReferentialService extends ObserveService { @WriteReferentialPermission @Write + @PostRequest <R extends ReferentialDto> String save(FormDto<R> form); @WriteReferentialPermission @Write + @DeleteRequest <R extends ReferentialDto> void delete(Class<R> type, String id) throws DataNotFoundException; @WriteReferentialPermission @Write + @DeleteRequest <R extends ReferentialDto> void delete(Class<R> type, Collection<String> ids) throws DataNotFoundException; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java index 861ba27..5390472 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java @@ -2,6 +2,7 @@ package fr.ird.observe.services.service.actions.consolidate; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.WriteDataPermission; @@ -24,6 +25,7 @@ public interface ConsolidateDataService extends ObserveService{ */ @ReadDataPermission @WriteDataPermission + @PostRequest ImmutableSet<ConsolidateTripSeineDataResult> consolidateTripSeines(ConsolidateTripSeineDataRequest consolidateTripSeineDataRequest); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportBuilder.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportBuilder.java index 55b40b3..8fb69de 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportBuilder.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportBuilder.java @@ -22,10 +22,10 @@ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; -import fr.ird.observe.services.service.actions.report.model.ReportVariable; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportOperation; +import fr.ird.observe.services.dto.actions.report.ReportRequest; +import fr.ird.observe.services.dto.actions.report.ReportVariable; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.SortedProperties; @@ -40,7 +40,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; -import java.util.ServiceLoader; import java.util.TreeMap; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -76,34 +75,6 @@ public class ReportBuilder { /** les operations connues par le système */ protected static Map<String, Class<?>> operations; - public static Map<String, Class<?>> getOperations() { - if (operations == null) { - operations = new TreeMap<String, Class<?>>(); - ServiceLoader<ReportOperation> loader = - ServiceLoader.load(ReportOperation.class); - for (ReportOperation op : loader) { - if (log.isInfoEnabled()) { - log.info("Detected operations : " + op.getOperationName()); - } - operations.put(op.getOperationName(), op.getClass()); - } - } - return operations; - } - - public static ReportOperation newOperation(String operationsName) { - Class<?> operationsType = getOperations().get(operationsName); - if (operationsType == null) { - throw new IllegalArgumentException("No such operations [" + operationsName + "], available operationss : " + getOperations().keySet()); - } - try { - Object result = operationsType.newInstance(); - return (ReportOperation) result; - } catch (Exception e) { - throw new IllegalStateException("Could not instanciate operations [" + operationsType + "]", e); - } - } - public List<String> getReportNames() { return reportNames; } @@ -354,7 +325,7 @@ public class ReportBuilder { String operationsDef = requestDico.get(id); - ReportOperation def = getOperation(operationsDef); + ReportOperation def = ReportOperation.valueOf(operationsDef); if (log.isInfoEnabled()) { log.info("Detects a operations : " + def); } @@ -457,16 +428,6 @@ public class ReportBuilder { return result.toArray(new ReportVariable[result.size()]); } - protected ReportOperation getOperation(String operationsDef) { - - // pour le moment, une operations n'a qu'une seule valeur : celle - // du lastName de l'opération - String operationsName = operationsDef; - - ReportOperation def = newOperation(operationsName); - return def; - } - protected String getValue(Map<String, String> dico, String key) { String value = dico.get(key); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportService.java index ac8ebeb..86df43f 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/ReportService.java @@ -1,14 +1,12 @@ package fr.ird.observe.services.service.actions.report; import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.ReadReferentialPermission; -import java.util.List; -import java.util.Map; - /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -16,13 +14,11 @@ public interface ReportService extends ObserveService { @ReadDataPermission @ReadReferentialPermission + @PostRequest Report populateVariables(Report report, String tripId); @ReadDataPermission @ReadReferentialPermission + @PostRequest DataMatrix executeReport(Report report, String tripId); - - @ReadDataPermission - @ReadReferentialPermission - <R> List<R> executeRequest(String request, Map<String, Object> params); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportOperation.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportOperation.java deleted file mode 100644 index c507bab..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportOperation.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.actions.report.model; - -import fr.ird.observe.services.dto.ObserveDto; -import fr.ird.observe.services.service.actions.report.ReportService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.Dimension; -import java.awt.Point; -import java.io.Serializable; - -/** - * Pour caractériser une opération à lancer dans un report. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 - */ -public abstract class ReportOperation implements Serializable, ObserveDto { - - private static final long serialVersionUID = 1L; - - /** Logger */ - private static final Log log = LogFactory.getLog(ReportOperation.class); - - public abstract String getOperationName(); - - /** - * Calcule la position où positionner le rsultat dans la matrice sortante. - * - * @param model le report - * @param incoming la matrice entrante - * @return la position de la première cellule - */ - protected abstract Point computeLocation(Report model, - DataMatrix incoming); - - /** - * Calcule la dimension du résultat de l'opération. - * - * @param model le report - * @param incoming la matrice entrante - * @return la dimension des données de l'opération - */ - protected abstract Dimension computeDimension(Report model, - DataMatrix incoming); - - /** - * Pour executer l'opération. - * - * @param reportService le service de raport - * @param model le modèle - * @param tripId l'identifiant du la maré - * @param incoming la matrice entrante - * @return la matrice sortante - * @pour toute erreur de manipulation de base - */ - public abstract DataMatrix execute(ReportService reportService, - Report model, - String tripId, - DataMatrix incoming); - - protected ReportOperation() { - } - - protected DataMatrix createTmpMatrix(Report model, DataMatrix incoming) { - - DataMatrix result = new DataMatrix(); - - // calcul de la position des résultats de l'opération - Point location = computeLocation(model, incoming); - result.setLocation(location); - - // calcul de la taille des résultats de l'opération - Dimension dim = computeDimension(model, incoming); - result.setDimension(dim); - - // creation de la matrice - result.createData(); - - if (log.isDebugEnabled()) { - log.debug("Operation [" + getOperationName() + "] tmp matrix : " + result); - } - return result; - } - -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportRequest.java deleted file mode 100644 index c25f584..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportRequest.java +++ /dev/null @@ -1,407 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.actions.report.model; - -import com.google.common.collect.Maps; -import fr.ird.observe.services.dto.ObserveDto; -import fr.ird.observe.services.service.actions.report.ReportService; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.Dimension; -import java.awt.Point; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Pour caractériser une requète à lancer dans un report. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 - */ -public class ReportRequest implements Serializable, ObserveDto { - - private static final long serialVersionUID = 1L; - - /** Logger. */ - private static final Log log = LogFactory.getLog(ReportRequest.class); - - public static final String TRIP_ID_VARIABLE = "tripId"; - - /** le layout de la requete. */ - public enum RequestLayout { - /** lorsque les résultats de la requète sont les lignes du résultat. */ - row, - /** lorsque les résultats de la requète sont les colonnes du résultat. */ - column - } - - /** Un repeater optionnel sur la requête. */ - public static class RequestRepeat implements Serializable, ObserveDto { - - protected final String variableName; - - protected final RequestLayout layout; - - private static final long serialVersionUID = 1L; - - public RequestRepeat(String variableName, RequestLayout layout) { - this.variableName = variableName; - this.layout = layout; - } - - public String getVariableName() { - return variableName; - } - - public RequestLayout getLayout() { - return layout; - } - - @Override - public String toString() { - ToStringBuilder builder = new ToStringBuilder(this); - builder.append("variableName", getVariableName()); - builder.append("layout", getLayout()); - return builder.toString(); - } - } - - /** layout de la requète. */ - protected final RequestLayout layout; - - /** la requète à exécuter. */ - protected final String request; - - /** la position de la requète. */ - protected final Point location; - - /** le repeater optionel. */ - protected final RequestRepeat repeat; - - public ReportRequest(RequestLayout layout, - int x, - int y, - String request, - RequestRepeat repeat) { - this.layout = layout; - this.request = request; - this.repeat = repeat; - location = new Point(x, y); - } - - public RequestLayout getLayout() { - return layout; - } - - public int getX() { - return (int) location.getX(); - } - - public int getY() { - return (int) location.getY(); - } - - public Point getLocation() { - return location; - } - - public String getRequest() { - return request; - } - - public RequestRepeat getRepeat() { - return repeat; - } - - public DataMatrix execute(ReportService reportService, - Report report, - String tripId, - ReportVariable repeatValues) { - - DataMatrix result = new DataMatrix(); - - Map<String, Object> params = extractParams(report, tripId); - - for (Object repeatValue : repeatValues.getValues()) { - params.put(repeat.getVariableName(), repeatValue); - DataMatrix tmp = execute(reportService, params); - if (result == null) { - - // premiere requete executee - result = tmp; - result.setX(0); - result.setY(0); - } else { - switch (repeat.getLayout()) { - - case row: - - // on ajoute le resultat a droite de celui deja present - tmp.setX(result.getX() + result.getWidth()); - tmp.setY(result.getY()); - break; - - case column: - - // on ajoute le resultat en dessous de celui deja present - tmp.setX(result.getX()); - tmp.setY(result.getY() + result.getHeight()); - break; - } - result = DataMatrix.merge(result, tmp); - } - } - result.setX(getX()); - result.setY(getY()); - if (log.isDebugEnabled()) { - log.debug("Result location : " + result.getLocation()); - log.debug("Result data :\n" + result.getClipbordContent(true, true)); - } - return result; - } - - public DataMatrix execute(ReportService reportService, - Report report, - String tripId) { - Map<String, Object> params = extractParams(report, tripId); - - DataMatrix dataMatrix = execute(reportService, params); - - return dataMatrix; - - - } - - public static Map<String, Object> extractParams(Report report, String tripId) { - - Map<String, Object> params = Maps.newHashMap(); - - params.put(TRIP_ID_VARIABLE, tripId); - - for (ReportVariable variable : report.getVariables()) { - - String name = variable.getName(); - - Object value = variable.getSelectedValue(); - - params.put(name, value); - - } - return params; - - } - - - protected DataMatrix execute(ReportService reportService, Map<String, Object> params) { - - // création des paramètres : couples (key, value) - if (log.isDebugEnabled()) { - log.debug("Request : " + request); - log.debug("Available params : " + params.keySet()); - log.debug("Params to use : " + params); - } - - // lancement de la requête - List<?> list = reportService.executeRequest(request, params); - if (log.isDebugEnabled()) { - log.debug("Result size : " + list.size()); - } - - // determination des dimensions du résultat - Dimension dimension = computeDimension(list); - if (log.isDebugEnabled()) { - log.debug("Result dimension : " + dimension); - } - - // construction du resultat - DataMatrix result = computeResult(dimension, list); - if (log.isDebugEnabled()) { - log.debug("Result location : " + result.getLocation()); - log.debug("Result data :\n" + result.getClipbordContent(true, true)); - } - return result; - } - - protected DataMatrix computeResult(Dimension dimension, List<?> list) { - - DataMatrix result = new DataMatrix(); - result.setDimension(dimension); - result.createData(); - - // le seul cas différent est le n-* (une ligne correspond à une colonne) - - int y = 0; - int x = 0; - - switch (layout) { - - case row: - - boolean uniqueColumn = result.getWidth() == 1; - - // les lignes du résultat sont les lignes du tableau - - for (Object row : list) { - - if (uniqueColumn) { - - // une seule colonne - result.setValue(0, y, row); - } else { - - x = 0; - Object[] cells = (Object[]) row; - for (Object cell : cells) { - result.setValue(x++, y, cell); - } - } - - // on passage a la ligne suivante - y++; - } - break; - case column: - - // les lignes du résultat sont les colonnes du tableau - - boolean uniqueRow = result.getHeight() == 1; - - for (Object col : list) { - - if (uniqueRow) { - - // une seule ligne - result.setValue(x, 0, col); - } else { - - y = 0; - Object[] cells = (Object[]) col; - for (Object cell : cells) { - result.setValue(x, y++, cell); - } - } - - // on passage a la colonne suivante - x++; - } - break; - } - - // on pousse la position du résultat - result.setX(getX()); - result.setY(getY()); - return result; - } - - protected Dimension computeDimension(List<?> list) { - - int height = 0; - int width = 0; - - switch (layout) { - - case row: - - // le count de result est le lastNamebre de lignes - height = list.size(); - - if (list.isEmpty()) { - - // vu qu'il n'y a pas de résultat, on ne peut rien dire - width = 0; - } else { - - Object o = list.get(0); - - if (o == null || !o.getClass().isArray()) { - - // une seule colonne - width = 1; - } else { - width = ((Object[]) o).length; - } - } - - break; - case column: - - // le count de result est le lastNamebre de colonnes - width = list.size(); - - if (list.isEmpty()) { - - // vu qu'il n'y a pas de résultat, on ne peut rien dire - height = 0; - } else { - - Object o = list.get(0); - - if (o == null || !o.getClass().isArray()) { - - // une seule ligne - height = 1; - } else { - height = ((Object[]) o).length; - } - } - - break; - } - return new Dimension(width, height); - } - - public static Object[] getParams(String request, Map<String, Object> params) { - - // on parcourt la liste de tous les paramètres pour savoir si on doit - // les inclure pour la requête donnée : - List<String> namesToUsed = new ArrayList<String>(); - for (String paramName : params.keySet()) { - if (request.contains(":" + paramName)) { - namesToUsed.add(paramName); - } - } - Object[] datas = new Object[namesToUsed.size() * 2]; - int index = 0; - for (String name : namesToUsed) { - Object value = params.get(name); - datas[index * 2] = name; - datas[index * 2 + 1] = value; - index++; - } - namesToUsed.clear(); - return datas; - } - - @Override - public String toString() { - ToStringBuilder builder = new ToStringBuilder(this); - builder.append("request", getRequest()); - builder.append("layout", getLayout()); - builder.append("location", getLocation()); - builder.append("repeatVariable", getRepeat()); - return builder.toString(); - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/ExecuteRequests.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/ExecuteRequests.java deleted file mode 100644 index 075a7c3..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/ExecuteRequests.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.actions.report.model.operations; - -import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; -import fr.ird.observe.services.service.actions.report.model.ReportVariable; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.Dimension; -import java.awt.Point; - -/** - * Opération pour lancer les requètes d'un report. - * <p/> - * Cette opération est toujours exécuter en premier lors de la construction - * du résultat d'un report. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 - */ -public class ExecuteRequests extends ReportOperation { - - /** Logger */ - private static final Log log = LogFactory.getLog(ExecuteRequests.class); - - private static final long serialVersionUID = 1L; - - public static final String OPERATION_NAME = "ExecuteRequests"; - - public ExecuteRequests() { - } - - public String getOperationName() { - return OPERATION_NAME; - } - - @Override - public DataMatrix execute(ReportService reportService, - Report report, - String tripId, - DataMatrix incoming) { - - if (log.isDebugEnabled()) { - log.debug("Launch " + this); - } - - ReportRequest[] requests = report.getRequests(); - - DataMatrix[] requestResults = new DataMatrix[requests.length]; - - int i = 0; - for (ReportRequest request : requests) { - - ReportRequest.RequestRepeat repeatVariable = request.getRepeat(); - - DataMatrix result; - - if (repeatVariable == null) { - - // requete simple sans repetition - result = request.execute(reportService, report, tripId); - } else { - - // on a une requete avec repetition - String repeatVariableName = repeatVariable.getVariableName(); - ReportVariable repeat = report.getRepeatVariable(repeatVariableName); - - - result = request.execute(reportService, report, tripId, repeat); - - - } - - requestResults[i++] = result; - } - - int rows = report.getRows(); - int columns = report.getColumns(); - - DataMatrix result = DataMatrix.merge(rows, columns, requestResults); - return result; - } - - @Override - protected Point computeLocation(Report model, DataMatrix incoming) { - Point result = new Point(0, 0); - return result; - } - - @Override - protected Dimension computeDimension(Report model, DataMatrix incoming) { - - Dimension result = new Dimension(0, 0); - return result; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/GroupByLength.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/GroupByLength.java deleted file mode 100644 index effca69..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/GroupByLength.java +++ /dev/null @@ -1,111 +0,0 @@ -package fr.ird.observe.services.service.actions.report.model.operations; - -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - - -import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import org.apache.commons.lang3.mutable.MutableInt; - -import java.awt.Dimension; -import java.awt.Point; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -/** - * To group by legnth (first column, second row is count). - * - * I don't know how to make this with hibernate the group by + sum does not work :(. - * - * Created on 5/23/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class GroupByLength extends ReportOperation { - - private static final long serialVersionUID = 1L; - - private static final String OPERATION_NAME = "GroupByLength"; - - @Override - public String getOperationName() { - return OPERATION_NAME; - } - - @Override - protected Point computeLocation(Report model, DataMatrix incoming) { - Point result = new Point(0, incoming.getHeight()); - return result; - } - - @Override - protected Dimension computeDimension(Report model, DataMatrix incoming) { - Set<String> lengths = new HashSet<String>(); - for (int i = 0; i < incoming.getHeight(); i++) { - lengths.add((String) incoming.getValue(0, i)); - } - Dimension result = new Dimension(incoming.getWidth(), lengths.size()); - return result; - } - - @Override - public DataMatrix execute(ReportService reportService, - Report report, - String tripId, - DataMatrix incoming) { - - // Première passe pour grouper par classe de taille - Map<String, MutableInt> data = new LinkedHashMap<String, MutableInt>(); - for (int i = 0, nbRows = incoming.getHeight(); i < nbRows; i++) { - - String length = (String) incoming.getValue(0, i); - Integer count = Integer.valueOf(incoming.getValue(1, i).toString()); - - MutableInt mutableInt = data.get(length); - if (mutableInt == null) { - mutableInt = new MutableInt(); - data.put(length, mutableInt); - } - mutableInt.add(count); - - } - - // Deuxième passe pour remplir la matrice - DataMatrix result = createTmpMatrix(report, incoming); - int row = 0; - for (Map.Entry<String, MutableInt> entry : data.entrySet()) { - String length = entry.getKey(); - MutableInt mutableInt = entry.getValue(); - result.setValue(0, row, length); - result.setValue(1, row, mutableInt.intValue()); - row++; - } - - return result; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumColumn.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumColumn.java deleted file mode 100644 index eb88fd2..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumColumn.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.actions.report.model.operations; - - -import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.Dimension; -import java.awt.Point; -import java.io.Serializable; - -/** - * Opération pour calculer la somme de toutes les cellules d'une colonne. - * <p/> - * Le résultat de l'opération vient se placer dans une nouvelle ligne en bas - * du tableau. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 - */ -public class SumColumn extends ReportOperation { - - /** Logger */ - private static final Log log = - LogFactory.getLog(SumColumn.class); - - private static final long serialVersionUID = 1L; - - private static final String OPERATION_NAME = "SumColumn"; - - - public SumColumn() { - } - - public String getOperationName() { - return OPERATION_NAME; - } - - @Override - public DataMatrix execute(ReportService reportService, - Report report, - String tripId, - DataMatrix incoming) { - - if (log.isDebugEnabled()) { - log.debug("Launch " + this); - } - - // construction du resultat - - DataMatrix tmpMatrix = createTmpMatrix(report, incoming); - - for (int i = 0, nbColumns = incoming.getWidth(); i < nbColumns; i++) { - - Object result = getColumnData(i, incoming); - tmpMatrix.setValue(i, 0, result); - if (log.isDebugEnabled()) { - log.debug("objectOperation [" + i + ",0] = " + result); - } - } - - DataMatrix result = DataMatrix.merge(incoming, tmpMatrix); - return result; - } - - protected Object getColumnData(int column, DataMatrix incoming) { - Double result = 0d; - - int nbRows = incoming.getHeight(); - - for (int row = 0; row < nbRows; row++) { - Serializable o = incoming.getValue(column, row); - - if (o == null || "null".equals(o)) { - o = 0; - } - Double d; - try { - d = Double.valueOf(o.toString()); - } catch (NumberFormatException e) { - // une des données de la colonne n'est pas un count - // on sort directement - if (log.isDebugEnabled()) { - log.debug("Could not convert " + o + " to number", e); - } - return "-"; - } - result += d; - } - - return result; - } - - @Override - protected Point computeLocation(Report model, DataMatrix incoming) { - Point result = new Point(0, incoming.getHeight()); - return result; - } - - @Override - protected Dimension computeDimension(Report model, DataMatrix incoming) { - Dimension result = new Dimension(incoming.getWidth(), 1); - return result; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntColumn.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntColumn.java deleted file mode 100644 index 364a07a..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntColumn.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.actions.report.model.operations; - - -import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.Dimension; -import java.awt.Point; -import java.io.Serializable; - -/** - * Opération pour calculer la somme entière de toutes les cellules d'une colonne. - * <p/> - * Le résultat de l'opération vient se placer dans une nouvelle ligne en bas - * du tableau. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 - */ -public class SumIntColumn extends ReportOperation { - - /** Logger */ - private static final Log log = - LogFactory.getLog(SumIntColumn.class); - - private static final long serialVersionUID = 1L; - - private static final String OPERATION_NAME = "SumIntColumn"; - - - public SumIntColumn() { - } - - public String getOperationName() { - return OPERATION_NAME; - } - - @Override - public DataMatrix execute(ReportService reportService, - Report report, - String tripId, - DataMatrix incoming) { - - if (log.isDebugEnabled()) { - log.debug("Launch " + this); - } - - // construction du resultat - - DataMatrix tmpMatrix = createTmpMatrix(report, incoming); - - for (int i = 0, nbColumns = incoming.getWidth(); i < nbColumns; i++) { - - Object result = getColumnData(i, incoming); - tmpMatrix.setValue(i, 0, result); - if (log.isDebugEnabled()) { - log.debug("objectOperation [" + i + ",0] = " + result); - } - } - - DataMatrix result = DataMatrix.merge(incoming, tmpMatrix); - return result; - } - - protected Object getColumnData(int column, DataMatrix incoming) { - Double result = 0d; - - int nbRows = incoming.getHeight(); - - for (int row = 0; row < nbRows; row++) { - Serializable o = incoming.getValue(column, row); - - if (o == null || "null".equals(o)) { - o = 0; - } - Double d; - try { - d = Double.valueOf(o.toString()); - } catch (NumberFormatException e) { - // une des données de la colonne n'est pas un count - // on sort directement - if (log.isDebugEnabled()) { - log.debug("Could not convert " + o + " to number", e); - } - return "-"; - } - result += d; - } - - return result.intValue(); - } - - @Override - protected Point computeLocation(Report model, DataMatrix incoming) { - Point result = new Point(0, incoming.getHeight()); - return result; - } - - @Override - protected Dimension computeDimension(Report model, DataMatrix incoming) { - Dimension result = new Dimension(incoming.getWidth(), 1); - return result; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntRow.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntRow.java deleted file mode 100644 index 66d2038..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumIntRow.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.actions.report.model.operations; - - -import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.Dimension; -import java.awt.Point; -import java.io.Serializable; - -/** - * Opération pour calculer la somme entière de toutes les cellules d'une ligne. - * <p/> - * Le résultat de l'opération vient se placer dans une nouvelle colonne à - * droite du tableau. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 - */ -public class SumIntRow extends ReportOperation { - - /** Logger */ - private static final Log log = LogFactory.getLog(SumIntRow.class); - - public static final String OPERATION_NAME = "SumIntRow"; - - private static final long serialVersionUID = 1L; - - public SumIntRow() { - } - - public String getOperationName() { - return OPERATION_NAME; - } - - @Override - public DataMatrix execute(ReportService reportService, - Report report, - String tripId, - DataMatrix incoming) { - if (log.isDebugEnabled()) { - log.debug("Launch " + this); - } - - // construction du result - - DataMatrix tmpMatrix = createTmpMatrix(report, incoming); - - for (int i = 0, nbRows = incoming.getHeight(); i < nbRows; i++) { - - Object result = getRowData(i, incoming); - tmpMatrix.setValue(0, i, result); - if (log.isDebugEnabled()) { - log.debug("objectOperation [0, " + i + "] = " + result); - } - } - - DataMatrix result = DataMatrix.merge(incoming, tmpMatrix); - return result; - } - - - protected Object getRowData(int row, DataMatrix incoming) { - - Double result = 0d; - - int nbColumns = incoming.getWidth(); - - for (int col = 0; col < nbColumns; col++) { - Serializable o = incoming.getValue(col, row); - - if (o == null || "null".equals(o)) { - o = 0; - } - Double d; - try { - d = Double.valueOf(o.toString()); - } catch (NumberFormatException e) { - // une des données de la colonne n'est pas un count - // on sort directement - if (log.isDebugEnabled()) { - log.debug("Could not convert " + o + " to number", e); - } - return "-"; - } - result += d; - } - - return result.intValue(); - } - - @Override - protected Point computeLocation(Report model, DataMatrix incoming) { - Point result = new Point(incoming.getWidth(), 0); - return result; - } - - @Override - protected Dimension computeDimension(Report model, DataMatrix incoming) { - - Dimension result = new Dimension(1, incoming.getHeight()); - return result; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumRow.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumRow.java deleted file mode 100644 index 438da89..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/operations/SumRow.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.service.actions.report.model.operations; - - -import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.Dimension; -import java.awt.Point; -import java.io.Serializable; - -/** - * Opération pour calculer la somme de toutes les cellules d'une ligne. - * <p/> - * Le résultat de l'opération vient se placer dans une nouvelle colonne à - * droite du tableau. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 - */ -public class SumRow extends ReportOperation { - - /** Logger */ - private static final Log log = LogFactory.getLog(SumRow.class); - - public static final String OPERATION_NAME = "SumRow"; - - private static final long serialVersionUID = 1L; - - public SumRow() { - } - - public String getOperationName() { - return OPERATION_NAME; - } - - @Override - public DataMatrix execute(ReportService reportService, - Report report, - String tripId, - DataMatrix incoming) { - if (log.isDebugEnabled()) { - log.debug("Launch " + this); - } - - // construction du result - - DataMatrix tmpMatrix = createTmpMatrix(report, incoming); - - for (int i = 0, nbRows = incoming.getHeight(); i < nbRows; i++) { - - Object result = getRowData(i, incoming); - tmpMatrix.setValue(0, i, result); - if (log.isDebugEnabled()) { - log.debug("objectOperation [0, " + i + "] = " + result); - } - } - - DataMatrix result = DataMatrix.merge(incoming, tmpMatrix); - return result; - } - - - protected Object getRowData(int row, DataMatrix incoming) { - - Double result = 0d; - - int nbColumns = incoming.getWidth(); - - for (int col = 0; col < nbColumns; col++) { - Serializable o = incoming.getValue(col, row); - - if (o == null || "null".equals(o)) { - o = 0; - } - Double d; - try { - d = Double.valueOf(o.toString()); - } catch (NumberFormatException e) { - // une des données de la colonne n'est pas un count - // on sort directement - if (log.isDebugEnabled()) { - log.debug("Could not convert " + o + " to number", e); - } - return "-"; - } - result += d; - } - - return result; - } - - @Override - protected Point computeLocation(Report model, DataMatrix incoming) { - Point result = new Point(incoming.getWidth(), 0); - return result; - } - - @Override - protected Dimension computeDimension(Report model, DataMatrix incoming) { - - Dimension result = new Dimension(1, incoming.getHeight()); - return result; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java index 29837f3..610c6e3 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.actions.validate; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.spi.NoDataAccess; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.ReadReferentialPermission; @@ -21,10 +22,12 @@ public interface ValidateService extends ObserveService { ImmutableSet<String> getAvailableContextNames(); @ReadReferentialPermission + @PostRequest ValidateReferentialsResult validateReferentials(ValidateReferentialsRequest request); @ReadDataPermission @ReadReferentialPermission + @PostRequest ValidateDataResult validateData(ValidateDataRequest request); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineEncouterService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineEncouterService.java index 722bc1b..51d14cd 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineEncouterService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineEncouterService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineEncouterDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface ActivityLongLineEncouterService extends ObserveService { @WriteDataPermission @Write + @PostRequest String save(FormDto<ActivityLonglineEncouterDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineSensorUsedService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineSensorUsedService.java index d370554..34d9b79 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineSensorUsedService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLongLineSensorUsedService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineSensorUsedDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface ActivityLongLineSensorUsedService extends ObserveService { @WriteDataPermission @Write + @PostRequest String save(FormDto<ActivityLonglineSensorUsedDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineService.java index 486153e..8fbce7c 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineService.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.ActivityLonglineStubDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -29,9 +31,11 @@ public interface ActivityLonglineService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String tripLonglineId, FormDto<ActivityLonglineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String tripLonglineId, String activityLonglineId); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/GearUseFeaturesLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/GearUseFeaturesLonglineService.java index e3e6bb9..52a57d9 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/GearUseFeaturesLonglineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/GearUseFeaturesLonglineService.java @@ -3,6 +3,8 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.GearUseFeaturesLonglineDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -28,10 +30,12 @@ public interface GearUseFeaturesLonglineService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String tripLonglineId, FormDto<GearUseFeaturesLonglineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String tripLonglineId, String gearUseFeaturesLonglineId); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java index 9788054..b233190 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface SetLonglineCatchService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<SetLonglineCatchDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionService.java index 266dc42..ed66781 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.SetLonglineDetailCompositionDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface SetLonglineDetailCompositionService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<SetLonglineDetailCompositionDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineGlobalCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineGlobalCompositionService.java index 6d21dc3..5e6a387 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineGlobalCompositionService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineGlobalCompositionService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.SetLonglineGlobalCompositionDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface SetLonglineGlobalCompositionService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<SetLonglineGlobalCompositionDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineService.java index ba67ee9..6d0f340 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineService.java @@ -3,6 +3,8 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -23,10 +25,12 @@ public interface SetLonglineService extends ObserveService { @WriteDataPermission @Write + @PostRequest String save(String activityLonglineId, FormDto<SetLonglineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String activityLonglineId, String setLonglineId); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TdrService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TdrService.java index 340b4f2..5138b61 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TdrService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TdrService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.SetLonglineTdrDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface TdrService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<SetLonglineTdrDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java index 2ad90f8..245acad 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineStubDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -29,10 +31,12 @@ public interface TripLonglineService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<TripLonglineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String tripLonglineId); } \ No newline at end of file diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineObservedSystemService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineObservedSystemService.java index 16b1e49..4f9a3bd 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineObservedSystemService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineObservedSystemService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.ActivitySeineObservedSystemDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface ActivitySeineObservedSystemService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<ActivitySeineObservedSystemDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java index d29d88c..a06b19c 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.ActivitySeineStubDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -29,9 +31,11 @@ public interface ActivitySeineService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String routeId, FormDto<ActivitySeineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String routeId, String activitySeineId); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/FloatingObjectService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/FloatingObjectService.java index ab63ca5..308445b 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/FloatingObjectService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/FloatingObjectService.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; import fr.ird.observe.services.dto.seine.FloatingObjectStubDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -29,10 +31,12 @@ public interface FloatingObjectService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String activitySeineId, FormDto<FloatingObjectDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String activitySeineId, String floatingObjectId); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java index 2f3a599..49e8b19 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java @@ -3,6 +3,8 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -28,10 +30,12 @@ public interface GearUseFeaturesSeineService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String tripSeineId, FormDto<GearUseFeaturesSeineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String tripSeineId, String gearUseFeaturesSeineId); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.java index 116fa1c..b4e28ea 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,5 +21,6 @@ public interface NonTargetCatchService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<SetSeineNonTargetCatchDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java index 2fdb72a..a56b570 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.NonTargetSampleDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -23,6 +24,7 @@ public interface NonTargetSampleService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String setSeineId, FormDto<NonTargetSampleDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectObservedSpeciesService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectObservedSpeciesService.java index 0a8aed5..493b9a1 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectObservedSpeciesService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectObservedSpeciesService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.FloatingObjectObservedSpeciesDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface ObjectObservedSpeciesService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<FloatingObjectObservedSpeciesDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectSchoolEstimateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectSchoolEstimateService.java index 145716d..2cc7ff5 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectSchoolEstimateService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ObjectSchoolEstimateService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.FloatingObjectSchoolEstimateDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,5 +21,6 @@ public interface ObjectSchoolEstimateService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<FloatingObjectSchoolEstimateDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.java index 0ce1a77..10c0e24 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.RouteStubDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -29,10 +31,12 @@ public interface RouteService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String tripSeineId, FormDto<RouteDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String tripSeineId, String routeId); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java index 8641d23..3b0f1a4 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface SchoolEstimateService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<SetSeineSchoolEstimateDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SetSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SetSeineService.java index 628d950..274095d 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SetSeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SetSeineService.java @@ -3,6 +3,8 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.SetSeineDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -23,10 +25,12 @@ public interface SetSeineService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String activitySeineId, FormDto<SetSeineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String activitySeineId, String setSeineId); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetCatchService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetCatchService.java index 5bcc92f..9c18783 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetCatchService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetCatchService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.SetSeineTargetCatchDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,5 +21,6 @@ public interface TargetCatchService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<SetSeineTargetCatchDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java index a6d7157..6afdec4 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.TargetSampleDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -23,6 +24,7 @@ public interface TargetSampleService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(String setSeineId, FormDto<TargetSampleDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TransmittingBuoyOperationService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TransmittingBuoyOperationService.java index f12399a..aff73a6 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TransmittingBuoyOperationService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TransmittingBuoyOperationService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.FloatingObjectTransmittingBuoyDto; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -20,6 +21,7 @@ public interface TransmittingBuoyOperationService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<FloatingObjectTransmittingBuoyDto> form); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java index ac71130..a5494bb 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.services.dto.seine.TripSeineStubDto; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -29,10 +31,12 @@ public interface TripSeineService extends ObserveService { @Write @WriteDataPermission + @PostRequest String save(FormDto<TripSeineDto> form); @Write @WriteDataPermission + @DeleteRequest void delete(String tripSeineId); } \ No newline at end of file diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/spi/DeleteRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/spi/DeleteRequest.java new file mode 100644 index 0000000..73f0c16 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/spi/DeleteRequest.java @@ -0,0 +1,14 @@ +package fr.ird.observe.services.spi; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface DeleteRequest { +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/spi/PostRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/spi/PostRequest.java new file mode 100644 index 0000000..440490b --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/spi/PostRequest.java @@ -0,0 +1,14 @@ +package fr.ird.observe.services.spi; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface PostRequest { +} diff --git a/observe-services-api/src/test/java/fr/ird/observe/services/service/actions/report/ReportBuilderTest.java b/observe-services-api/src/test/java/fr/ird/observe/services/service/actions/report/ReportBuilderTest.java index d63920f..2db2d0e 100644 --- a/observe-services-api/src/test/java/fr/ird/observe/services/service/actions/report/ReportBuilderTest.java +++ b/observe-services-api/src/test/java/fr/ird/observe/services/service/actions/report/ReportBuilderTest.java @@ -1,10 +1,10 @@ package fr.ird.observe.services.service.actions.report; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportOperation; +import fr.ird.observe.services.dto.actions.report.ReportRequest; +import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.dto.referential.SpeciesGroupDto; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; -import fr.ird.observe.services.service.actions.report.model.ReportVariable; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -99,8 +99,7 @@ public class ReportBuilderTest { Assert.assertEquals(1, report2.getOperations().length); ReportOperation operation = report2.getOperations()[0]; - Assert.assertNotNull(operation); - Assert.assertEquals("SumRow", operation.getOperationName()); + Assert.assertEquals(ReportOperation.SumRow, operation); Assert.assertEquals(2, report2.getRequests().length); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/DataMatrix.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/DataMatrix.java similarity index 99% rename from observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/DataMatrix.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/DataMatrix.java index a9599f4..05c32a6 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/DataMatrix.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/DataMatrix.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.services.service.actions.report.model; +package fr.ird.observe.services.dto.actions.report; import fr.ird.observe.services.dto.ObserveDto; import org.apache.commons.lang3.builder.ToStringBuilder; diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/Report.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/Report.java similarity index 98% rename from observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/Report.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/Report.java index d62d5e5..5e76144 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/Report.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/Report.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.services.service.actions.report.model; +package fr.ird.observe.services.dto.actions.report; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportOperation.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportOperation.java new file mode 100644 index 0000000..87a6499 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportOperation.java @@ -0,0 +1,41 @@ +/* + * #%L + * ObServe :: Business + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ird.observe.services.dto.actions.report; + +import fr.ird.observe.services.dto.ObserveDto; + +/** + * Pour caractériser une opération à lancer dans un report. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public enum ReportOperation implements ObserveDto { + + ExecuteRequests, + GroupByLength, + SumColumn, + SumIntColumn, + SumIntRow, + SumRow; + +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportRequest.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportRequest.java new file mode 100644 index 0000000..b21dfcf --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportRequest.java @@ -0,0 +1,187 @@ +/* + * #%L + * ObServe :: Business + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ird.observe.services.dto.actions.report; + +import com.google.common.collect.Maps; +import fr.ird.observe.services.dto.ObserveDto; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.Point; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Pour caractériser une requète à lancer dans un report. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public class ReportRequest implements Serializable, ObserveDto { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(ReportRequest.class); + + public static final String TRIP_ID_VARIABLE = "tripId"; + + /** le layout de la requete. */ + public enum RequestLayout { + /** lorsque les résultats de la requète sont les lignes du résultat. */ + row, + /** lorsque les résultats de la requète sont les colonnes du résultat. */ + column + } + + /** Un repeater optionnel sur la requête. */ + public static class RequestRepeat implements Serializable, ObserveDto { + + protected final String variableName; + + protected final RequestLayout layout; + + private static final long serialVersionUID = 1L; + + public RequestRepeat(String variableName, RequestLayout layout) { + this.variableName = variableName; + this.layout = layout; + } + + public String getVariableName() { + return variableName; + } + + public RequestLayout getLayout() { + return layout; + } + + @Override + public String toString() { + ToStringBuilder builder = new ToStringBuilder(this); + builder.append("variableName", getVariableName()); + builder.append("layout", getLayout()); + return builder.toString(); + } + } + + /** layout de la requète. */ + protected final RequestLayout layout; + + /** la requète à exécuter. */ + protected final String request; + + /** la position de la requète. */ + protected final Point location; + + /** le repeater optionel. */ + protected final RequestRepeat repeat; + + public ReportRequest(RequestLayout layout, + int x, + int y, + String request, + RequestRepeat repeat) { + this.layout = layout; + this.request = request; + this.repeat = repeat; + location = new Point(x, y); + } + + public RequestLayout getLayout() { + return layout; + } + + public int getX() { + return (int) location.getX(); + } + + public int getY() { + return (int) location.getY(); + } + + public Point getLocation() { + return location; + } + + public String getRequest() { + return request; + } + + public RequestRepeat getRepeat() { + return repeat; + } + + public static Map<String, Object> extractParams(Report report, String tripId) { + + Map<String, Object> params = Maps.newHashMap(); + + params.put(TRIP_ID_VARIABLE, tripId); + + for (ReportVariable variable : report.getVariables()) { + + String name = variable.getName(); + + Object value = variable.getSelectedValue(); + + params.put(name, value); + + } + return params; + + } + + public static Object[] getParams(String request, Map<String, Object> params) { + + // on parcourt la liste de tous les paramètres pour savoir si on doit + // les inclure pour la requête donnée : + List<String> namesToUsed = new ArrayList<String>(); + for (String paramName : params.keySet()) { + if (request.contains(":" + paramName)) { + namesToUsed.add(paramName); + } + } + Object[] datas = new Object[namesToUsed.size() * 2]; + int index = 0; + for (String name : namesToUsed) { + Object value = params.get(name); + datas[index * 2] = name; + datas[index * 2 + 1] = value; + index++; + } + namesToUsed.clear(); + return datas; + } + + @Override + public String toString() { + ToStringBuilder builder = new ToStringBuilder(this); + builder.append("request", getRequest()); + builder.append("layout", getLayout()); + builder.append("location", getLocation()); + builder.append("repeatVariable", getRepeat()); + return builder.toString(); + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportVariable.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportVariable.java similarity index 66% rename from observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportVariable.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportVariable.java index bce8e27..47747cd 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/report/model/ReportVariable.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/report/ReportVariable.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.services.service.actions.report.model; +package fr.ird.observe.services.dto.actions.report; import fr.ird.observe.services.dto.ObserveDto; @@ -32,21 +32,31 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 1.7 */ -public class ReportVariable implements Serializable, ObserveDto { +public class ReportVariable<V> implements Serializable, ObserveDto { + + public final static String PROPERTY_NAME = "name"; + + public final static String PROPERTY_TYPE = "type"; + + public final static String PROPERTY_REQUEST = "request"; + + public final static String PROPERTY_VALUES = "values"; + + public final static String PROPERTY_SELECTED_VALUE = "selectedValue"; private static final long serialVersionUID = 1L; protected String name; - protected Class type; + protected Class<V> type; protected String request; - protected Set values; + protected Set<V> values; - protected Object selectedValue; + protected V selectedValue; - public ReportVariable(String name, Class type, String request) { + public ReportVariable(String name, Class<V> type, String request) { this.name = name; this.type = type; this.request = request; @@ -56,7 +66,7 @@ public class ReportVariable implements Serializable, ObserveDto { return name; } - public Class<?> getType() { + public Class<V> getType() { return type; } @@ -64,19 +74,19 @@ public class ReportVariable implements Serializable, ObserveDto { return request; } - public Set getValues() { + public Set<V> getValues() { return values; } - public void setValues(Set values) { + public void setValues(Set<V> values) { this.values = values; } - public Object getSelectedValue() { + public V getSelectedValue() { return selectedValue; } - public void setSelectedValue(Object selectedValue) { + public void setSelectedValue(V selectedValue) { this.selectedValue = selectedValue; } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java index 426c9c7..b732268 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java @@ -7,6 +7,7 @@ import com.google.common.collect.ImmutableSet; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import java.sql.Timestamp; @@ -70,6 +71,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(ImmutableMap.class, new ImmutableMapAdapter()); gsonBuilder.registerTypeAdapter(ReferenceDto.class, new ReferenceDtoAdapter()); gsonBuilder.registerTypeAdapter(ReferentialReferenceDto.class, new ReferentialReferenceDtoAdapter()); + gsonBuilder.registerTypeAdapter(ReportVariable.class, new ReportVariableAdapter()); gsonBuilder.enableComplexMapKeySerialization(); } return gsonBuilder; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReportVariableAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReportVariableAdapter.java new file mode 100644 index 0000000..ad614ec --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReportVariableAdapter.java @@ -0,0 +1,55 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.common.collect.Sets; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.actions.report.ReportVariable; + +import java.lang.reflect.Type; +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ReportVariableAdapter implements JsonDeserializer<ReportVariable> { + + @Override + public ReportVariable deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + JsonObject reportVariableJson = json.getAsJsonObject(); + + String name = context.deserialize(reportVariableJson.get(ReportVariable.PROPERTY_NAME), String.class); + Class<?> type = context.deserialize(reportVariableJson.get(ReportVariable.PROPERTY_TYPE), Class.class); + String request = context.deserialize(reportVariableJson.get(ReportVariable.PROPERTY_REQUEST), String.class); + + ReportVariable reportVariable = new ReportVariable<>(name, type, request); + + Class valueType = type; + + if (IdDto.class.isAssignableFrom(type)) { + valueType = ReferenceDto.class; + } + + JsonElement valuesJson = reportVariableJson.get(ReportVariable.PROPERTY_VALUES); + + if (valuesJson != null) { + Set values = Sets.newHashSet(); + for (JsonElement valueJson : valuesJson.getAsJsonArray()) { + Object value = context.deserialize(valueJson, valueType); + values.add(value); + } + + reportVariable.setValues(values); + } + + Object selectedValue = context.deserialize(reportVariableJson.get(ReportVariable.PROPERTY_SELECTED_VALUE), valueType); + + reportVariable.setSelectedValue(selectedValue); + + return reportVariable; + } +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java index cb40777..79f6e21 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java @@ -21,7 +21,8 @@ import fr.ird.observe.services.http.ObserveRequestMethod; import fr.ird.observe.services.http.ObserveResponse; import fr.ird.observe.services.http.ObserveResponseBuilder; import fr.ird.observe.services.service.DataSourceService; -import fr.ird.observe.services.spi.Write; +import fr.ird.observe.services.spi.DeleteRequest; +import fr.ird.observe.services.spi.PostRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -246,10 +247,12 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl addParameters(requestBuilder, method, args); addHeaders(requestBuilder); - //FIXME On devrait utiliser des annotations POST, PUT et DELETE - boolean writeData = method.isAnnotationPresent(Write.class); - if (writeData) { + boolean post = method.isAnnotationPresent(PostRequest.class); + boolean delete = method.isAnnotationPresent(DeleteRequest.class); + if (post) { requestBuilder.setRequestMethod(ObserveRequestMethod.POST); + } else if (delete) { + requestBuilder.setRequestMethod(ObserveRequestMethod.DELETE); } else { requestBuilder.setRequestMethod(ObserveRequestMethod.GET); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceRestTest.java similarity index 89% copy from observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java copy to observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceRestTest.java index 302845c..826d10b 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceRestTest.java @@ -22,14 +22,13 @@ package fr.ird.observe.services.service.actions.report; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import fr.ird.observe.services.dto.ReferenceDtos; -import fr.ird.observe.services.service.AbstractServiceTopiaTest; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; -import fr.ird.observe.services.service.actions.report.model.ReportVariable; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; +import fr.ird.observe.services.dto.actions.report.ReportVariable; +import fr.ird.observe.services.service.AbstractServiceRestTest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -41,7 +40,6 @@ import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; /** * Classe abstraite de test d'un report. @@ -52,10 +50,10 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 1.9 */ -public abstract class AbstractReportServiceTopiaTest extends AbstractServiceTopiaTest { +public abstract class AbstractReportServiceRestTest extends AbstractServiceRestTest { /** Logger */ - private static final Log log = LogFactory.getLog(AbstractReportServiceTopiaTest.class); + private static final Log log = LogFactory.getLog(AbstractReportServiceRestTest.class); protected ReportService service; @@ -67,16 +65,6 @@ public abstract class AbstractReportServiceTopiaTest extends AbstractServiceTopi protected abstract String getReportId(); - @Override - public String getScriptName() { - return "dataForTestSeine"; - } - - @Override - public Set<String> getTestNamesChangeDataBase() { - return ImmutableSet.of(); - } - @Before public final void setUp() throws Exception { @@ -160,7 +148,7 @@ public abstract class AbstractReportServiceTopiaTest extends AbstractServiceTopi if (reports == null) { URL reportLocation = - AbstractReportServiceTopiaTest.class.getResource("/observe-reports.properties"); + AbstractReportServiceRestTest.class.getResource("/observe-reports.properties"); if (log.isInfoEnabled()) { log.info("Loading reports from " + reportLocation); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchRestTest.java similarity index 95% copy from observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java copy to observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchRestTest.java index dbfe11c..971a311 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchRestTest.java @@ -22,10 +22,9 @@ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.AbstractReportServiceTopiaTest; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** @@ -34,7 +33,7 @@ import org.junit.Assert; * @author Tony Chemit - chemit@codelutin.com * @since 1.9 */ -public class ReportAccessoryCatchTest extends AbstractReportServiceTopiaTest { +public class ReportAccessoryCatchRestTest extends AbstractReportServiceRestTest { @Override protected void testReportSyntax(Report report) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/report/ReportServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/report/ReportServiceTopia.java index 00a26de..a10871b 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/report/ReportServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/report/ReportServiceTopia.java @@ -6,19 +6,25 @@ import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ReferenceDto; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportOperation; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; -import fr.ird.observe.services.service.actions.report.model.ReportVariable; -import fr.ird.observe.services.service.actions.report.model.operations.ExecuteRequests; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportOperation; +import fr.ird.observe.services.dto.actions.report.ReportRequest; +import fr.ird.observe.services.dto.actions.report.ReportVariable; +import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; +import java.awt.Dimension; +import java.awt.Point; +import java.io.Serializable; +import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.TreeMap; /** @@ -103,13 +109,9 @@ public class ReportServiceTopia extends ObserveServiceTopia implements ReportSer } - - // creation de la première opération qui exécute les requètes - ReportOperation firstRequest = ReportBuilder.newOperation(ExecuteRequests.OPERATION_NAME); - // lancement de la première opération et la matrice de resultat - DataMatrix result = firstRequest.execute( - this, + DataMatrix result = executeReportOperation( + ReportOperation.ExecuteRequests, report, tripId, new DataMatrix()); @@ -121,8 +123,8 @@ public class ReportServiceTopia extends ObserveServiceTopia implements ReportSer if (log.isDebugEnabled()) { log.debug("Apply objectOperation " + objectOperation + " to " + tmp); } - result = objectOperation.execute( - this, + result = executeReportOperation( + objectOperation, report, tripId, tmp); @@ -133,8 +135,413 @@ public class ReportServiceTopia extends ObserveServiceTopia implements ReportSer return result; } - @Override - public <R> List<R> executeRequest(String request, Map<String, Object> params) { + private DataMatrix executeReportOperation(ReportOperation executeRequests, Report report, String tripId, DataMatrix incoming) { + + DataMatrix result = incoming; + + switch (executeRequests) { + case ExecuteRequests: { + + ReportRequest[] requests = report.getRequests(); + + DataMatrix[] requestResults = new DataMatrix[requests.length]; + + int i = 0; + for (ReportRequest request : requests) { + + ReportRequest.RequestRepeat repeatVariable = request.getRepeat(); + + if (repeatVariable == null) { + + // requete simple sans repetition + result = executeReportRequest(request, report, tripId); + } else { + + // on a une requete avec repetition + String repeatVariableName = repeatVariable.getVariableName(); + ReportVariable repeat = report.getRepeatVariable(repeatVariableName); + + + result = executeReportRequest(request, report, tripId, repeat); + + + } + + requestResults[i++] = result; + } + + int rows = report.getRows(); + int columns = report.getColumns(); + + result = DataMatrix.merge(rows, columns, requestResults); + } break; + + case GroupByLength: { + // Première passe pour grouper par classe de taille + Map<String, MutableInt> data = new LinkedHashMap<String, MutableInt>(); + for (int row = 0, nbRows = incoming.getHeight(); row < nbRows; row++) { + + String length = (String) incoming.getValue(0, row); + Integer count = Integer.valueOf(incoming.getValue(1, row).toString()); + + MutableInt mutableInt = data.get(length); + if (mutableInt == null) { + mutableInt = new MutableInt(); + data.put(length, mutableInt); + } + mutableInt.add(count); + + } + + // Deuxième passe pour remplir la matrice + Set<String> lengths = new HashSet<String>(); + for (int row = 0; row < incoming.getHeight(); row++) { + lengths.add((String) incoming.getValue(0, row)); + } + + result = createTmpMatrix(0, incoming.getHeight(), incoming.getWidth(), lengths.size()); + int row = 0; + for (Map.Entry<String, MutableInt> entry : data.entrySet()) { + String length = entry.getKey(); + MutableInt mutableInt = entry.getValue(); + result.setValue(0, row, length); + result.setValue(1, row, mutableInt.intValue()); + row++; + } + } break; + + case SumColumn: + case SumIntColumn: { + + DataMatrix tmpMatrix = createTmpMatrix(0, incoming.getHeight(), incoming.getWidth(), 1); + + for (int column = 0, nbColumns = incoming.getWidth(); column < nbColumns; column++) { + + Object sumColumn = getSumColumn(column, incoming); + if (ReportOperation.SumIntColumn.equals(executeRequests) && sumColumn instanceof Number) { + sumColumn = ((Number) sumColumn).intValue(); + } + tmpMatrix.setValue(column, 0, sumColumn); + if (log.isDebugEnabled()) { + log.debug("objectOperation [" + column + ",0] = " + sumColumn); + } + } + + result = DataMatrix.merge(incoming, tmpMatrix); + } break; + case SumRow: + case SumIntRow: { + + DataMatrix tmpMatrix = createTmpMatrix(incoming.getWidth(), 0, 1, incoming.getHeight()); + + for (int row = 0, nbRows = incoming.getHeight(); row < nbRows; row++) { + + Object sumRow = getSumRow(row, incoming); + if (ReportOperation.SumIntRow.equals(executeRequests) && sumRow instanceof Number) { + sumRow = ((Number) sumRow).intValue(); + } + tmpMatrix.setValue(0, row, sumRow); + if (log.isDebugEnabled()) { + log.debug("objectOperation [0, " + row + "] = " + sumRow); + } + } + + result = DataMatrix.merge(incoming, tmpMatrix); + + } break; + } + + return result; + } + + protected Object getSumColumn(int column, DataMatrix incoming) { + Double result = 0d; + + int nbRows = incoming.getHeight(); + + for (int row = 0; row < nbRows; row++) { + Serializable o = incoming.getValue(column, row); + + if (o == null || "null".equals(o)) { + o = 0; + } + Double d; + try { + d = Double.valueOf(o.toString()); + } catch (NumberFormatException e) { + // une des données de la colonne n'est pas un count + // on sort directement + if (log.isDebugEnabled()) { + log.debug("Could not convert " + o + " to number", e); + } + return "-"; + } + result += d; + } + + return result; + } + + protected Object getSumRow(int row, DataMatrix incoming) { + + Double result = 0d; + + int nbColumns = incoming.getWidth(); + + for (int col = 0; col < nbColumns; col++) { + Serializable o = incoming.getValue(col, row); + + if (o == null || "null".equals(o)) { + o = 0; + } + Double d; + try { + d = Double.valueOf(o.toString()); + } catch (NumberFormatException e) { + // une des données de la colonne n'est pas un count + // on sort directement + if (log.isDebugEnabled()) { + log.debug("Could not convert " + o + " to number", e); + } + return "-"; + } + result += d; + } + + return result; + } + + + private DataMatrix createTmpMatrix(int positionX, int positionY, int width, int height) { + + DataMatrix result = new DataMatrix(); + + // calcul de la position des résultats de l'opération + Point location = new Point(positionX, positionY); + result.setLocation(location); + + // calcul de la taille des résultats de l'opération + Dimension dim = new Dimension(width, height); + result.setDimension(dim); + + // creation de la matrice + result.createData(); + + return result; + } + + public DataMatrix executeReportRequest(ReportRequest request, Report report, String tripId, ReportVariable repeatValues) { + + DataMatrix result = new DataMatrix(); + + Map<String, Object> params = request.extractParams(report, tripId); + + for (Object repeatValue : repeatValues.getValues()) { + params.put(request.getRepeat().getVariableName(), repeatValue); + DataMatrix tmp = executeReportRequest(request, params); + if (result == null) { + + // premiere requete executee + result = tmp; + result.setX(0); + result.setY(0); + } else { + switch (request.getRepeat().getLayout()) { + + case row: + + // on ajoute le resultat a droite de celui deja present + tmp.setX(result.getX() + result.getWidth()); + tmp.setY(result.getY()); + break; + + case column: + + // on ajoute le resultat en dessous de celui deja present + tmp.setX(result.getX()); + tmp.setY(result.getY() + result.getHeight()); + break; + } + result = DataMatrix.merge(result, tmp); + } + } + result.setX(request.getX()); + result.setY(request.getY()); + if (log.isDebugEnabled()) { + log.debug("Result location : " + result.getLocation()); + log.debug("Result data :\n" + result.getClipbordContent(true, true)); + } + return result; + } + + public DataMatrix executeReportRequest(ReportRequest request, Report report, String tripId) { + Map<String, Object> params = request.extractParams(report, tripId); + + DataMatrix dataMatrix = executeReportRequest(request, params); + + return dataMatrix; + + } + + protected DataMatrix executeReportRequest(ReportRequest reportRequest, Map<String, Object> params) { + + // création des paramètres : couples (key, value) + if (log.isDebugEnabled()) { + log.debug("Request : " + reportRequest.getRequest()); + log.debug("Available params : " + params.keySet()); + log.debug("Params to use : " + params); + } + + // lancement de la requête + List<?> list = executeRequest(reportRequest.getRequest(), params); + if (log.isDebugEnabled()) { + log.debug("Result size : " + list.size()); + } + + // determination des dimensions du résultat + Dimension dimension = computeDimension(reportRequest, list); + if (log.isDebugEnabled()) { + log.debug("Result dimension : " + dimension); + } + + // construction du resultat + DataMatrix result = computeResult(reportRequest, dimension, list); + if (log.isDebugEnabled()) { + log.debug("Result location : " + result.getLocation()); + log.debug("Result data :\n" + result.getClipbordContent(true, true)); + } + return result; + } + + protected DataMatrix computeResult(ReportRequest request, Dimension dimension, List<?> list) { + + DataMatrix result = new DataMatrix(); + result.setDimension(dimension); + result.createData(); + + // le seul cas différent est le n-* (une ligne correspond à une colonne) + + int y = 0; + int x = 0; + + switch (request.getLayout()) { + + case row: + + boolean uniqueColumn = result.getWidth() == 1; + + // les lignes du résultat sont les lignes du tableau + + for (Object row : list) { + + if (uniqueColumn) { + + // une seule colonne + result.setValue(0, y, row); + } else { + + x = 0; + Object[] cells = (Object[]) row; + for (Object cell : cells) { + result.setValue(x++, y, cell); + } + } + + // on passage a la ligne suivante + y++; + } + break; + case column: + + // les lignes du résultat sont les colonnes du tableau + + boolean uniqueRow = result.getHeight() == 1; + + for (Object col : list) { + + if (uniqueRow) { + + // une seule ligne + result.setValue(x, 0, col); + } else { + + y = 0; + Object[] cells = (Object[]) col; + for (Object cell : cells) { + result.setValue(x, y++, cell); + } + } + + // on passage a la colonne suivante + x++; + } + break; + } + + // on pousse la position du résultat + result.setX(request.getX()); + result.setY(request.getY()); + return result; + } + + protected Dimension computeDimension(ReportRequest request, List<?> list) { + + int height = 0; + int width = 0; + + switch (request.getLayout()) { + + case row: + + // le count de result est le lastNamebre de lignes + height = list.size(); + + if (list.isEmpty()) { + + // vu qu'il n'y a pas de résultat, on ne peut rien dire + width = 0; + } else { + + Object o = list.get(0); + + if (o == null || !o.getClass().isArray()) { + + // une seule colonne + width = 1; + } else { + width = ((Object[]) o).length; + } + } + + break; + case column: + + // le count de result est le lastNamebre de colonnes + width = list.size(); + + if (list.isEmpty()) { + + // vu qu'il n'y a pas de résultat, on ne peut rien dire + height = 0; + } else { + + Object o = list.get(0); + + if (o == null || !o.getClass().isArray()) { + + // une seule ligne + height = 1; + } else { + height = ((Object[]) o).length; + } + } + + break; + } + return new Dimension(width, height); + } + + protected <R> List<R> executeRequest(String request, Map<String, Object> params) { // si il y a des references de DTO dans les valeur des paramètres on les remplace par leur id // on copie pour ne pas modifier le paramètre de la méthode @@ -200,8 +607,6 @@ public class ReportServiceTopia extends ObserveServiceTopia implements ReportSer variable.setValues(values); } - - } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java index 302845c..e250b36 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java @@ -25,11 +25,11 @@ package fr.ird.observe.services.service.actions.report; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import fr.ird.observe.services.dto.ReferenceDtos; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; +import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.service.AbstractServiceTopiaTest; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; -import fr.ird.observe.services.service.actions.report.model.ReportVariable; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatch2Test.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatch2Test.java index 0d821da..31c48b8 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatch2Test.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatch2Test.java @@ -22,7 +22,7 @@ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; +import fr.ird.observe.services.dto.actions.report.DataMatrix; /** * Test du report {@code discardedAccessoire}. diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroup2Test.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroup2Test.java index 09c5776..a0a5a4e 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroup2Test.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroup2Test.java @@ -22,7 +22,7 @@ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; +import fr.ird.observe.services.dto.actions.report.DataMatrix; /** * Pour tester le report {@code discardedAccessoireByGroup} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroupTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroupTest.java index 21fa2c1..2f9851c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroupTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchByGroupTest.java @@ -21,10 +21,9 @@ */ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.AbstractReportServiceTopiaTest; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java index dbfe11c..fc6c124 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAccessoryCatchTest.java @@ -22,10 +22,9 @@ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.AbstractReportServiceTopiaTest; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportActivityWithCommentTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportActivityWithCommentTest.java index 39e6e80..6547513 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportActivityWithCommentTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportActivityWithCommentTest.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAllActivitysTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAllActivitysTest.java index 969788f..435812e 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAllActivitysTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportAllActivitysTest.java @@ -22,10 +22,9 @@ package fr.ird.observe.services.service.actions.report; * #L% */ -import fr.ird.observe.services.service.actions.report.AbstractReportServiceTopiaTest; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDailySetAndCatchTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDailySetAndCatchTest.java index 0b07b83..e647329 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDailySetAndCatchTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDailySetAndCatchTest.java @@ -22,9 +22,9 @@ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDcpUsageTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDcpUsageTest.java index 530d467..82b1e7a 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDcpUsageTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportDcpUsageTest.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociation2Test.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociation2Test.java index 18c1b48..c20e07b 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociation2Test.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociation2Test.java @@ -22,7 +22,7 @@ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; +import fr.ird.observe.services.dto.actions.report.DataMatrix; import org.junit.Ignore; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociationTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociationTest.java index d29f976..0b9900e 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociationTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportSetByAssociationTest.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetCatchByAssociationTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetCatchByAssociationTest.java index e75dd69..c27a4ca 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetCatchByAssociationTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetCatchByAssociationTest.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetDiscardedByAssociationTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetDiscardedByAssociationTest.java index 7d1ca56..66c45b6 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetDiscardedByAssociationTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/ReportTargetDiscardedByAssociationTest.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.services.service.actions.report; -import fr.ird.observe.services.service.actions.report.model.DataMatrix; -import fr.ird.observe.services.service.actions.report.model.Report; -import fr.ird.observe.services.service.actions.report.model.ReportRequest; +import fr.ird.observe.services.dto.actions.report.DataMatrix; +import fr.ird.observe.services.dto.actions.report.Report; +import fr.ird.observe.services.dto.actions.report.ReportRequest; import org.junit.Assert; /** -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm