Tony CHEMIT pushed to branch develop-9.0.x at ultreiaio / ird-observe

Commits:

16 changed files:

Changes:

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUINavigationInitializer.java
    ... ... @@ -135,9 +135,4 @@ public final class ContentOpenableUINavigationInitializer extends NavigationInit
    135 135
             }
    
    136 136
             getEditNode().setId(id);
    
    137 137
         }
    
    138
    -
    
    139
    -    public DataDtoReference updateReference(ContentOpenableUINavigationContext context, String id) {
    
    140
    -        this.reference = context.getReference(getReference().getReferenceType(), id, decorator);
    
    141
    -        return getReference();
    
    142
    -    }
    
    143 138
     }

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUINavigationNode.java
    ... ... @@ -79,13 +79,13 @@ public abstract class ContentOpenableUINavigationNode extends NavigationNode {
    79 79
             boolean notPersisted = getInitializer().isNotPersisted();
    
    80 80
             NavigationNode parent = getParent();
    
    81 81
             int oldPosition = parent.getIndex(this);
    
    82
    -        DataDtoReference reference = getInitializer().updateReference(getContext(), id);
    
    83 82
             if (notPersisted) {
    
    84 83
                 getInitializer().updateEditNodeId(id);
    
    85 84
                 getInitializer().updateSelectNodeId(id);
    
    86 85
             }
    
    87 86
             // reload node data
    
    88 87
             reloadNodeData();
    
    88
    +        DataDtoReference reference = getInitializer().getReference();
    
    89 89
     
    
    90 90
             if (notPersisted) {
    
    91 91
                 dirty();
    

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUIHandler.java
    ... ... @@ -29,6 +29,7 @@ import fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpen
    29 29
     import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.SaveContentOpenableUIAdapter;
    
    30 30
     import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree;
    
    31 31
     import fr.ird.observe.dto.data.ll.logbook.ActivityDto;
    
    32
    +import fr.ird.observe.dto.data.ll.logbook.ActivityReference;
    
    32 33
     
    
    33 34
     /**
    
    34 35
      * Created on 8/29/14.
    
    ... ... @@ -46,7 +47,9 @@ class ActivityUIHandler extends GeneratedActivityUIHandler {
    46 47
                     .then(new SaveContentOpenableUIAdapter<>(ActivityDto::isSetEnabled, ActivityUI::getAddSet) {
    
    47 48
                         @Override
    
    48 49
                         protected void afterNodeUpdated(DataSourceEditor dataSourceEditor, ActivityUI ui, NavigationTree tree, ContentOpenableUINavigationNode node, boolean notPersisted, ActivityDto bean) {
    
    49
    -                        ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    50
    +                        ActivityReference reference = (ActivityReference) node.getReference();
    
    51
    +                        bean.setStatistics(reference.statistics());
    
    52
    +                        ActivityUINavigationCapability.fillAfterBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    50 53
                             super.afterNodeUpdated(dataSourceEditor, ui, tree, node, notPersisted, bean);
    
    51 54
                         }
    
    52 55
                     })
    

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUISavePredicate.java
    ... ... @@ -51,7 +51,7 @@ public class ActivityUISavePredicate extends SavePredicateSupport<ActivityUIMode
    51 51
         }
    
    52 52
     
    
    53 53
         public List<String> generateText(ActivityDto originalBean, ActivityDto editBean) {
    
    54
    -        return ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean))
    
    54
    +        return ActivityUINavigationCapability.fillBeforeBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean))
    
    55 55
                     .getMessagesForNodesToRemove();
    
    56 56
         }
    
    57 57
     }

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/ActivityUIHandler.java
    ... ... @@ -29,6 +29,7 @@ import fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpen
    29 29
     import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.SaveContentOpenableUIAdapter;
    
    30 30
     import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree;
    
    31 31
     import fr.ird.observe.dto.data.ll.observation.ActivityDto;
    
    32
    +import fr.ird.observe.dto.data.ll.observation.ActivityReference;
    
    32 33
     
    
    33 34
     /**
    
    34 35
      * Created on 8/29/14.
    
    ... ... @@ -47,7 +48,9 @@ class ActivityUIHandler extends GeneratedActivityUIHandler {
    47 48
                     .then(new SaveContentOpenableUIAdapter<>(ActivityDto::isSetEnabled, ActivityUI::getAddSet) {
    
    48 49
                         @Override
    
    49 50
                         protected void afterNodeUpdated(DataSourceEditor dataSourceEditor, ActivityUI ui, NavigationTree tree, ContentOpenableUINavigationNode node, boolean notPersisted, ActivityDto bean) {
    
    50
    -                        ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    51
    +                        ActivityReference reference = (ActivityReference) node.getReference();
    
    52
    +                        bean.setStatistics(reference.statistics());
    
    53
    +                        ActivityUINavigationCapability.fillAfterBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    51 54
                             super.afterNodeUpdated(dataSourceEditor, ui, tree, node, notPersisted, bean);
    
    52 55
                         }
    
    53 56
                     })
    

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/ActivityUISavePredicate.java
    ... ... @@ -51,7 +51,7 @@ public class ActivityUISavePredicate extends SavePredicateSupport<ActivityUIMode
    51 51
         }
    
    52 52
     
    
    53 53
         public List<String> generateText(ActivityDto originalBean, ActivityDto editBean) {
    
    54
    -        return ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean)).getMessagesForNodesToRemove();
    
    54
    +        return ActivityUINavigationCapability.fillBeforeBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean)).getMessagesForNodesToRemove();
    
    55 55
         }
    
    56 56
     
    
    57 57
     }

  • client/datasource/editor/ps/src/main/capabilities/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUI.capabilities
    1
    -0_setEnabled??=fr.ird.observe.client.datasource.editor.ps.data.logbook.ActivityCatchUINavigationNode
    
    1
    +0_catchesEnabled??=fr.ird.observe.client.datasource.editor.ps.data.logbook.ActivityCatchUINavigationNode
    
    2 2
     1*=fr.ird.observe.client.datasource.editor.ps.data.logbook.FloatingObjectUINavigationNode
    \ No newline at end of file

  • client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUIHandler.java
    ... ... @@ -30,6 +30,7 @@ import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.Sav
    30 30
     import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree;
    
    31 31
     import fr.ird.observe.client.datasource.editor.ps.ObservePsKeyStrokes;
    
    32 32
     import fr.ird.observe.dto.data.ps.logbook.ActivityDto;
    
    33
    +import fr.ird.observe.dto.data.ps.logbook.ActivityReference;
    
    33 34
     import fr.ird.observe.dto.referential.ps.common.VesselActivityReference;
    
    34 35
     import io.ultreia.java4all.i18n.I18n;
    
    35 36
     
    
    ... ... @@ -57,7 +58,9 @@ class ActivityUIHandler extends GeneratedActivityUIHandler {
    57 58
     
    
    58 59
                         @Override
    
    59 60
                         protected void afterNodeUpdated(DataSourceEditor dataSourceEditor, ActivityUI ui, NavigationTree tree, ContentOpenableUINavigationNode node, boolean notPersisted, ActivityDto bean) {
    
    60
    -                        ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    61
    +                        ActivityReference reference = (ActivityReference) node.getReference();
    
    62
    +                        bean.setStatistics(reference.statistics());
    
    63
    +                        ActivityUINavigationCapability.fillAfterBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    61 64
                             super.afterNodeUpdated(dataSourceEditor, ui, tree, node, notPersisted, bean);
    
    62 65
                         }
    
    63 66
                     })
    

  • client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUISavePredicate.java
    ... ... @@ -52,7 +52,7 @@ public class ActivityUISavePredicate extends SavePredicateSupport<ActivityUIMode
    52 52
         }
    
    53 53
     
    
    54 54
         public List<String> generateText(ActivityDto originalBean, ActivityDto editBean) {
    
    55
    -        return ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean))
    
    55
    +        return ActivityUINavigationCapability.fillBeforeBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean))
    
    56 56
                     .getMessagesForNodesToRemove();
    
    57 57
         }
    
    58 58
     }

  • client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/ActivityUIHandler.java
    ... ... @@ -29,6 +29,7 @@ import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.Sav
    29 29
     import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree;
    
    30 30
     import fr.ird.observe.dto.ProtectedIdsPs;
    
    31 31
     import fr.ird.observe.dto.data.ps.observation.ActivityDto;
    
    32
    +import fr.ird.observe.dto.data.ps.observation.ActivityReference;
    
    32 33
     import fr.ird.observe.dto.referential.ps.common.VesselActivityReference;
    
    33 34
     
    
    34 35
     import javax.swing.JLabel;
    
    ... ... @@ -83,7 +84,9 @@ public class ActivityUIHandler extends GeneratedActivityUIHandler {
    83 84
                     .then(new SaveContentOpenableUIAdapter<>(ActivityDto::isStrongSetOperation, ActivityUI::getAddSet) {
    
    84 85
                         @Override
    
    85 86
                         protected void afterNodeUpdated(DataSourceEditor dataSourceEditor, ActivityUI ui, NavigationTree tree, ContentOpenableUINavigationNode node, boolean notPersisted, ActivityDto bean) {
    
    86
    -                        ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    87
    +                        ActivityReference reference = (ActivityReference) node.getReference();
    
    88
    +                        bean.setStatistics(reference.statistics());
    
    89
    +                        ActivityUINavigationCapability.fillAfterBuilder(NodeChildrenUpdate.afterUpdate(node, bean)).update();
    
    87 90
                             super.afterNodeUpdated(dataSourceEditor, ui, tree, node, notPersisted, bean);
    
    88 91
                         }
    
    89 92
                     })
    

  • client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/ActivityUISavePredicate.java
    ... ... @@ -52,7 +52,7 @@ public class ActivityUISavePredicate extends SavePredicateSupport<ActivityUIMode
    52 52
         }
    
    53 53
     
    
    54 54
         public List<String> generateText(ActivityDto originalBean, ActivityDto editBean) {
    
    55
    -        return ActivityUINavigationCapability.fillBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean))
    
    55
    +        return ActivityUINavigationCapability.fillBeforeBuilder(NodeChildrenUpdate.beforeUpdate(states.source(), originalBean, editBean))
    
    56 56
                     .getMessagesForNodesToRemove();
    
    57 57
         }
    
    58 58
     }

  • client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/CapabilityDescriptor.java
    ... ... @@ -367,7 +367,7 @@ public class CapabilityDescriptor {
    367 367
         }
    
    368 368
     
    
    369 369
     
    
    370
    -    public String generateCapabilityUpdateNodeMethod(Class<?> mainDtoType, Set<String> availableProperties) {
    
    370
    +    public String generateCapabilityOnBeanToUpdateUpdateNodeMethod(Class<?> mainDtoType, Set<String> availableProperties) {
    
    371 371
             switch (capacityNodeType) {
    
    372 372
                 case STATIC_WITH_PREDICATE: {
    
    373 373
                     String beanPropertyName = getOptionalPredicate().orElseThrow();
    
    ... ... @@ -384,6 +384,23 @@ public class CapabilityDescriptor {
    384 384
                     return null;
    
    385 385
             }
    
    386 386
         }
    
    387
    +    public String generateCapabilityOnUpdatedBeanNodeUpdateNodeMethod(Class<?> mainDtoType, Set<String> availableProperties) {
    
    388
    +        switch (capacityNodeType) {
    
    389
    +            case STATIC_WITH_PREDICATE: {
    
    390
    +                String beanPropertyName = getOptionalPredicate().orElseThrow();
    
    391
    +                return String.format("                .onPredicate(d-> d.is%1$s() && d.get%2$sStatValue() > 0, %3$s.class)\n", beanPropertyName, Strings.removeEnd(beanPropertyName,"Enabled"), getNodeTypeSimpleName());
    
    392
    +            }
    
    393
    +            case REFERENCE_LIST:
    
    394
    +            case REFERENCE: {
    
    395
    +                String beanPropertyName = methodName.replace("UINavigationNode", "Enabled");
    
    396
    +                if (availableProperties.contains(Introspector.decapitalize(beanPropertyName))) {
    
    397
    +                    return String.format("                .onPredicate(d-> d.is%1$s() && d.get%2$sStatValue() > 0, %3$s.class)\n", beanPropertyName, Strings.removeEnd(beanPropertyName,"Enabled"), getNodeTypeSimpleName());
    
    398
    +                }
    
    399
    +            }
    
    400
    +            default:
    
    401
    +                return null;
    
    402
    +        }
    
    403
    +    }
    
    387 404
     
    
    388 405
         protected String getOptionalReferenceTypePackage() {
    
    389 406
             return optionalReferenceType.getPackage().getName();
    

  • client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUINavigationCapabilityHelper.java
    ... ... @@ -55,8 +55,14 @@ public class ContentUINavigationCapabilityHelper extends ContentUIHelperSupport
    55 55
                 "        super(node);\n" +
    
    56 56
                 "    }\n\n" +
    
    57 57
                 "}\n";
    
    58
    -    public static final String UPDATE_NODE_METHOD = "" +
    
    59
    -            "    public static NodeChildrenUpdate fillBuilder(NodeChildrenUpdate.BuilderStepAddPredicate<%1$s> builder) {\n" +
    
    58
    +    public static final String ON_BEAN_TO_UPDATE_NODE_METHOD = "" +
    
    59
    +            "    public static NodeChildrenUpdate fillBeforeBuilder(NodeChildrenUpdate.BuilderOnBeanToUpdate<%1$s> builder) {\n" +
    
    60
    +            "        return builder\n" +
    
    61
    +            "%2$s" +
    
    62
    +            "                .build();\n" +
    
    63
    +            "    }\n\n";
    
    64
    +    public static final String ON_UPDATED_BEAN_NODE_METHOD = "" +
    
    65
    +            "    public static NodeChildrenUpdate fillAfterBuilder(NodeChildrenUpdate.BuilderOnUpdatedBean<%1$s> builder) {\n" +
    
    60 66
                 "        return builder\n" +
    
    61 67
                 "%2$s" +
    
    62 68
                 "                .build();\n" +
    
    ... ... @@ -139,7 +145,32 @@ public class ContentUINavigationCapabilityHelper extends ContentUIHelperSupport
    139 145
             return String.format(template, generator.cleanClassName, createChildrenMethodBuilder);
    
    140 146
         }
    
    141 147
     
    
    142
    -    public static String generateNodeUpdaterMethod(GenerateJavaFileSupport generator, List<String> imports) {
    
    148
    +    public static String generateOnBeanToUpdateNodeUpdaterMethod(GenerateJavaFileSupport generator, List<String> imports) {
    
    149
    +        if (generator.capabilitiesDescriptor == null) {
    
    150
    +            return "";
    
    151
    +        }
    
    152
    +        Class<? extends BusinessDto> dtoType = generator.scopeBuilder.dtoType;
    
    153
    +        StringBuilder createChildrenMethodBuilder = new StringBuilder();
    
    154
    +        JavaBeanDefinition javaBeanDefinition = JavaBeanDefinitionStore.getDefinition(dtoType).orElseThrow();
    
    155
    +        Set<String> availableProperties = javaBeanDefinition.readProperties().map(JavaBeanPropertyDefinition::propertyName).collect(Collectors.toSet());
    
    156
    +        boolean used = false;
    
    157
    +        for (CapabilityDescriptor capabilityDescriptor : generator.capabilitiesDescriptor) {
    
    158
    +            String addNodeMethod = capabilityDescriptor.generateCapabilityOnBeanToUpdateUpdateNodeMethod(dtoType, availableProperties);
    
    159
    +            if (addNodeMethod != null) {
    
    160
    +                used = true;
    
    161
    +                createChildrenMethodBuilder.append(addNodeMethod);
    
    162
    +            }
    
    163
    +        }
    
    164
    +        if (used) {
    
    165
    +            imports.add(NodeChildrenUpdate.class.getName());
    
    166
    +            imports.add(dtoType.getName());
    
    167
    +            return String.format(ON_BEAN_TO_UPDATE_NODE_METHOD, dtoType.getSimpleName(), createChildrenMethodBuilder);
    
    168
    +
    
    169
    +        }
    
    170
    +        return "";
    
    171
    +    }
    
    172
    +
    
    173
    +    public static String generateOnUpdatedBeanNodeUpdaterMethod(GenerateJavaFileSupport generator, List<String> imports) {
    
    143 174
             if (generator.capabilitiesDescriptor == null) {
    
    144 175
                 return "";
    
    145 176
             }
    
    ... ... @@ -149,7 +180,7 @@ public class ContentUINavigationCapabilityHelper extends ContentUIHelperSupport
    149 180
             Set<String> availableProperties = javaBeanDefinition.readProperties().map(JavaBeanPropertyDefinition::propertyName).collect(Collectors.toSet());
    
    150 181
             boolean used = false;
    
    151 182
             for (CapabilityDescriptor capabilityDescriptor : generator.capabilitiesDescriptor) {
    
    152
    -            String addNodeMethod = capabilityDescriptor.generateCapabilityUpdateNodeMethod(dtoType, availableProperties);
    
    183
    +            String addNodeMethod = capabilityDescriptor.generateCapabilityOnUpdatedBeanNodeUpdateNodeMethod(dtoType, availableProperties);
    
    153 184
                 if (addNodeMethod != null) {
    
    154 185
                     used = true;
    
    155 186
                     createChildrenMethodBuilder.append(addNodeMethod);
    
    ... ... @@ -158,7 +189,7 @@ public class ContentUINavigationCapabilityHelper extends ContentUIHelperSupport
    158 189
             if (used) {
    
    159 190
                 imports.add(NodeChildrenUpdate.class.getName());
    
    160 191
                 imports.add(dtoType.getName());
    
    161
    -            return String.format(UPDATE_NODE_METHOD, dtoType.getSimpleName(), createChildrenMethodBuilder);
    
    192
    +            return String.format(ON_UPDATED_BEAN_NODE_METHOD, dtoType.getSimpleName(), createChildrenMethodBuilder);
    
    162 193
     
    
    163 194
             }
    
    164 195
             return "";
    
    ... ... @@ -214,7 +245,7 @@ public class ContentUINavigationCapabilityHelper extends ContentUIHelperSupport
    214 245
         }
    
    215 246
     
    
    216 247
         public String generateNodeUpdaterMethod(List<String> imports) {
    
    217
    -        return generateNodeUpdaterMethod(generator, imports);
    
    248
    +        return generateOnBeanToUpdateNodeUpdaterMethod(generator, imports) + generateOnUpdatedBeanNodeUpdaterMethod(generator, imports);
    
    218 249
         }
    
    219 250
     
    
    220 251
         public String generateGetModel() {
    

  • core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/logbook/ActivitySpi.java
    ... ... @@ -33,6 +33,7 @@ import fr.ird.observe.dto.referential.ReferentialLocale;
    33 33
     import fr.ird.observe.entities.data.ll.common.Trip;
    
    34 34
     import fr.ird.observe.entities.referential.common.DataQuality;
    
    35 35
     import fr.ird.observe.entities.referential.common.Species;
    
    36
    +import fr.ird.observe.spi.decoration.DecoratorService;
    
    36 37
     import fr.ird.observe.spi.service.ServiceContext;
    
    37 38
     import io.ultreia.java4all.util.Dates;
    
    38 39
     import org.apache.logging.log4j.LogManager;
    
    ... ... @@ -40,7 +41,6 @@ import org.apache.logging.log4j.Logger;
    40 41
     
    
    41 42
     import java.util.Calendar;
    
    42 43
     import java.util.Date;
    
    43
    -import java.util.function.BiConsumer;
    
    44 44
     import java.util.stream.Collectors;
    
    45 45
     
    
    46 46
     /**
    
    ... ... @@ -68,6 +68,15 @@ public class ActivitySpi extends GeneratedActivitySpi {
    68 68
             }
    
    69 69
         }
    
    70 70
     
    
    71
    +    @Override
    
    72
    +    public ActivityReference toReference(ReferentialLocale referentialLocale, Activity entity, String classifier) {
    
    73
    +        ActivityReference reference = super.toReference(referentialLocale, entity, classifier);
    
    74
    +        if (entity != null && DecoratorService.WITH_STATS_CLASSIFIER.equals(classifier) && reference.getSet() != null) {
    
    75
    +            entity.getSet().buildStatistics(reference.getSet());
    
    76
    +        }
    
    77
    +        return reference;
    
    78
    +    }
    
    79
    +
    
    71 80
         @Override
    
    72 81
         public Form<ActivityDto> preCreate(ServiceContext context, Trip parent, Activity preCreated) {
    
    73 82
             Activity lastActivity = Iterables.getLast(parent.getActivityLogbook(), null);
    
    ... ... @@ -102,13 +111,4 @@ public class ActivitySpi extends GeneratedActivitySpi {
    102 111
             }
    
    103 112
             super.onSave(context, parent, entity, dto, needCopy);
    
    104 113
         }
    
    105
    -
    
    106
    -    @Override
    
    107
    -    protected BiConsumer<Activity, ActivityReference> getChildrenExtraConsumer(Trip parent) {
    
    108
    -        return (e, r) -> {
    
    109
    -            if (r.getSet() != null) {
    
    110
    -                e.getSet().buildStatistics(r.getSet());
    
    111
    -            }
    
    112
    -        };
    
    113
    -    }
    
    114 114
     }

  • core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/observation/ActivitySpi.java
    ... ... @@ -26,14 +26,15 @@ import com.google.common.collect.Iterables;
    26 26
     import fr.ird.observe.dto.data.ll.observation.ActivityDto;
    
    27 27
     import fr.ird.observe.dto.data.ll.observation.ActivityReference;
    
    28 28
     import fr.ird.observe.dto.form.Form;
    
    29
    +import fr.ird.observe.dto.referential.ReferentialLocale;
    
    29 30
     import fr.ird.observe.entities.data.ll.common.Trip;
    
    31
    +import fr.ird.observe.spi.decoration.DecoratorService;
    
    30 32
     import fr.ird.observe.spi.service.ServiceContext;
    
    31 33
     import org.apache.logging.log4j.LogManager;
    
    32 34
     import org.apache.logging.log4j.Logger;
    
    33 35
     
    
    34 36
     import java.util.Calendar;
    
    35 37
     import java.util.Date;
    
    36
    -import java.util.function.BiConsumer;
    
    37 38
     
    
    38 39
     /**
    
    39 40
      * Created on 10/05/2021.
    
    ... ... @@ -44,6 +45,15 @@ import java.util.function.BiConsumer;
    44 45
     public class ActivitySpi extends GeneratedActivitySpi {
    
    45 46
         private static final Logger log = LogManager.getLogger(ActivitySpi.class);
    
    46 47
     
    
    48
    +    @Override
    
    49
    +    public ActivityReference toReference(ReferentialLocale referentialLocale, Activity entity, String classifier) {
    
    50
    +        ActivityReference reference = super.toReference(referentialLocale, entity, classifier);
    
    51
    +        if (entity != null && DecoratorService.WITH_STATS_CLASSIFIER.equals(classifier) && reference.getSet() != null) {
    
    52
    +            entity.getSet().buildStatistics(reference.getSet());
    
    53
    +        }
    
    54
    +        return reference;
    
    55
    +    }
    
    56
    +
    
    47 57
         @Override
    
    48 58
         public Form<ActivityDto> preCreate(ServiceContext context, Trip parent, Activity preCreated) {
    
    49 59
             Activity lastActivity = Iterables.getLast(parent.getActivityObs(), null);
    
    ... ... @@ -76,12 +86,4 @@ public class ActivitySpi extends GeneratedActivitySpi {
    76 86
             super.onSave(context, parent, entity, dto, needCopy);
    
    77 87
         }
    
    78 88
     
    
    79
    -    @Override
    
    80
    -    protected BiConsumer<Activity, ActivityReference> getChildrenExtraConsumer(Trip parent) {
    
    81
    -        return (e, r) -> {
    
    82
    -            if (r.getSet() != null) {
    
    83
    -                e.getSet().buildStatistics(r.getSet());
    
    84
    -            }
    
    85
    -        };
    
    86
    -    }
    
    87 89
     }

  • core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/observation/ActivitySpi.java
    ... ... @@ -30,6 +30,7 @@ import fr.ird.observe.dto.referential.ReferentialLocale;
    30 30
     import fr.ird.observe.dto.referential.common.SpeciesReference;
    
    31 31
     import fr.ird.observe.entities.referential.common.FpaZone;
    
    32 32
     import fr.ird.observe.entities.referential.common.Species;
    
    33
    +import fr.ird.observe.spi.decoration.DecoratorService;
    
    33 34
     import fr.ird.observe.spi.service.ServiceContext;
    
    34 35
     import io.ultreia.java4all.util.Dates;
    
    35 36
     import org.apache.logging.log4j.LogManager;
    
    ... ... @@ -67,6 +68,9 @@ public class ActivitySpi extends GeneratedActivitySpi {
    67 68
             if (entity != null && entity.isFloatingObjectNotEmpty()) {
    
    68 69
                 reference.setFloatingObject(FloatingObject.SPI.toReferenceSet(referentialLocale, entity.getFloatingObject(), new Date(), classifier).toList());
    
    69 70
             }
    
    71
    +        if (entity != null && DecoratorService.WITH_STATS_CLASSIFIER.equals(classifier) && reference.getSet() != null) {
    
    72
    +            entity.getSet().buildStatistics(reference.getSet());
    
    73
    +        }
    
    70 74
             return reference;
    
    71 75
         }
    
    72 76
     
    
    ... ... @@ -111,9 +115,9 @@ public class ActivitySpi extends GeneratedActivitySpi {
    111 115
         protected BiConsumer<Activity, ActivityReference> getChildrenExtraConsumer(Route parent) {
    
    112 116
             return (entity, reference) -> {
    
    113 117
                 reference.setDate(parent.getDate());
    
    114
    -            if (reference.getSet() != null) {
    
    115
    -                entity.getSet().buildStatistics(reference.getSet());
    
    116
    -            }
    
    118
    +//            if (reference.getSet() != null) {
    
    119
    +//                entity.getSet().buildStatistics(reference.getSet());
    
    120
    +//            }
    
    117 121
             };
    
    118 122
         }
    
    119 123