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

Commits:

14 changed files:

Changes:

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUIOpenExecutor.java
    ... ... @@ -42,24 +42,30 @@ public class ContentEditUIOpenExecutor<D extends EditableDto, U extends ContentE
    42 42
         @Override
    
    43 43
         public void loadContent(U ui) {
    
    44 44
     
    
    45
    -        // suppression des messages de validation
    
    46
    -        ContentUIHandler.removeAllMessages(ui);
    
    47
    -
    
    48 45
             ContentEditUIHandler<D, U> handler = ui.getHandler();
    
    49 46
             handler.getContentOpen().resetCoordinateEditors();
    
    50 47
             //FIXME chemit 20100913 : il vaudrait le faire uniquement lors de l'édition
    
    51 48
             // chaque arrive sur un écran invalide le cache de validation
    
    52 49
             getClientValidationContext().reset();
    
    53 50
     
    
    54
    -        ContentEditUIModel<D> model = ui.getModel();
    
    55
    -        Form<D> form = model.openForm(handler, model.getStates().getSelectedId());
    
    56
    -        handler.getContentOpen().onOpenForm(form);
    
    57
    -        handler.onOpenAfterOpenModel();
    
    51
    +        // suppression des messages de validation
    
    52
    +        ContentUIHandler.removeAllMessages(ui);
    
    53
    +
    
    54
    +        openModel(ui);
    
    58 55
     
    
    59 56
             handler.fixFormSize();
    
    60 57
             handler.onEndOpenUI();
    
    61 58
         }
    
    62 59
     
    
    60
    +    public void openModel(U ui) {
    
    61
    +        ContentEditUIModel<D> model = ui.getModel();
    
    62
    +        String selectedId = model.getStates().getSelectedId();
    
    63
    +        ContentEditUIHandler<D, U> handler = ui.getHandler();
    
    64
    +        Form<D> form = model.openForm(handler, selectedId);
    
    65
    +        handler.getContentOpen().onOpenForm(form);
    
    66
    +        handler.onOpenAfterOpenModel();
    
    67
    +    }
    
    68
    +
    
    63 69
         @Override
    
    64 70
         public void startEdit(U ui) {
    
    65 71
             ContentEditUIModel<D> model = ui.getModel();
    
    ... ... @@ -67,6 +73,7 @@ public class ContentEditUIOpenExecutor<D extends EditableDto, U extends ContentE
    67 73
             handler.getContentOpen().prepareValidationContext();
    
    68 74
             handler.getContentOpen().installValidators(model.getStates().getBean());
    
    69 75
             ui.getHandler().getContentOpen().startEditTabUIModel();
    
    76
    +
    
    70 77
             model.getStates().setModified(model.getStates().isCreatingMode());
    
    71 78
         }
    
    72 79
     
    

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/RootSelectionTreeNodeProvider.java
    ... ... @@ -23,7 +23,11 @@ package fr.ird.observe.client.datasource.editor.api.content.selection;
    23 23
      */
    
    24 24
     
    
    25 25
     import fr.ird.observe.client.configuration.NavigationTreeConfig;
    
    26
    +import fr.ird.observe.client.datasource.editor.api.content.referential.ReferentialHomeUINavigationNode;
    
    26 27
     import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode;
    
    28
    +import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode;
    
    29
    +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode;
    
    30
    +import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
    
    27 31
     import fr.ird.observe.dto.decoration.DecoratorService;
    
    28 32
     import fr.ird.observe.dto.referential.common.ProgramReference;
    
    29 33
     import fr.ird.observe.services.service.data.SelectionResult;
    
    ... ... @@ -31,7 +35,7 @@ import fr.ird.observe.spi.module.BusinessModule;
    31 35
     import fr.ird.observe.spi.module.BusinessProject;
    
    32 36
     import fr.ird.observe.spi.module.ObserveBusinessModule;
    
    33 37
     
    
    34
    -import java.util.Locale;
    
    38
    +import java.util.List;
    
    35 39
     import java.util.Objects;
    
    36 40
     
    
    37 41
     /**
    
    ... ... @@ -45,18 +49,26 @@ public abstract class RootSelectionTreeNodeProvider {
    45 49
         private final BusinessModule module;
    
    46 50
         private final int priority;
    
    47 51
     
    
    48
    -    public static String getIconSuffix(BusinessModule module) {
    
    49
    -        return module.getName().equals("common") ? "" : ("_" + module.getName());
    
    50
    -    }
    
    51
    -
    
    52 52
         protected RootSelectionTreeNodeProvider(BusinessProject project, BusinessModule module) {
    
    53 53
             this.module = Objects.requireNonNull(module);
    
    54 54
             this.priority = Objects.requireNonNull(project).getModulePriority(module);
    
    55 55
         }
    
    56 56
     
    
    57
    -    public abstract void initRootDataNode(DecoratorService decoratorService, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode);
    
    57
    +    public void initRootDataNode(DecoratorService decoratorService, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) {
    
    58
    +        // by default no data
    
    59
    +    }
    
    58 60
     
    
    59
    -    public abstract void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode);
    
    61
    +    public final void initRootReferentialNode(NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) {
    
    62
    +        if (!config.isLoadReferential()) {
    
    63
    +            return;
    
    64
    +        }
    
    65
    +        List<Class<? extends NavigationNode>> referentialHomes = RootNavigationTreeNodeProvider.referentialHomes(getModule());
    
    66
    +        for (Class<? extends NavigationNode> referentialHome : referentialHomes) {
    
    67
    +            @SuppressWarnings("unchecked") Class<? extends ReferentialHomeUINavigationNode> nodeType = (Class<? extends ReferentialHomeUINavigationNode>) referentialHome;
    
    68
    +            ReferentialHomeUINavigationNode node = ReferentialHomeUINavigationNode.create(nodeType, navigationResult.getReferentialCountMap());
    
    69
    +            rootNode.add(new ReferentialListSelectionTreeNode(node));
    
    70
    +        }
    
    71
    +    }
    
    60 72
     
    
    61 73
         public int priority() {
    
    62 74
             return priority;
    

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/SelectionTreeModel.java
    ... ... @@ -179,12 +179,8 @@ public class SelectionTreeModel extends DefaultTreeModel implements WithClientCo
    179 179
             SelectionResult navigationResult = navigationService.getSelection(config.isLoadPsModule(), config.isLoadLlModule(), config.isLoadReferential());
    
    180 180
     
    
    181 181
             RootSelectionTreeNode root = new RootSelectionTreeNode();
    
    182
    -
    
    183 182
             root.initRootNode(config, decoratorService, navigationResult);
    
    184
    -
    
    185
    -        if (config.isLoadReferential()) {
    
    186
    -            root.initRootReferentialNode(config, navigationResult, getClientConfig().getLocale());
    
    187
    -        }
    
    183
    +        root.initRootReferentialNode(config, navigationResult);
    
    188 184
             setRoot(root);
    
    189 185
         }
    
    190 186
     
    

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/nodes/RootSelectionTreeNode.java
    ... ... @@ -33,7 +33,6 @@ import java.util.Comparator;
    33 33
     import java.util.Enumeration;
    
    34 34
     import java.util.LinkedList;
    
    35 35
     import java.util.List;
    
    36
    -import java.util.Locale;
    
    37 36
     import java.util.ServiceLoader;
    
    38 37
     
    
    39 38
     /**
    
    ... ... @@ -114,9 +113,9 @@ public class RootSelectionTreeNode extends SelectionTreeNodeSupport<Void> {
    114 113
             }
    
    115 114
         }
    
    116 115
     
    
    117
    -    public void initRootReferentialNode(NavigationTreeConfig config, SelectionResult navigationResult, Locale locale) {
    
    116
    +    public void initRootReferentialNode(NavigationTreeConfig config, SelectionResult navigationResult) {
    
    118 117
             for (RootSelectionTreeNodeProvider rootNodeProvider : rootNodeProviders) {
    
    119
    -            rootNodeProvider.initRootReferentialNode(locale, config, navigationResult, this);
    
    118
    +            rootNodeProvider.initRootReferentialNode(config, navigationResult, this);
    
    120 119
             }
    
    121 120
         }
    
    122 121
     }

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java
    ... ... @@ -28,11 +28,15 @@ import fr.ird.observe.client.configuration.NavigationTreeConfig;
    28 28
     import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUINavigationNode;
    
    29 29
     import fr.ird.observe.client.datasource.editor.api.content.referential.ReferentialHomeUINavigationNode;
    
    30 30
     import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode;
    
    31
    +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationScope;
    
    32
    +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationScopes;
    
    31 33
     import fr.ird.observe.dto.reference.DtoReference;
    
    32 34
     import fr.ird.observe.dto.referential.ReferentialDto;
    
    33 35
     import fr.ird.observe.dto.referential.common.ProgramReference;
    
    34 36
     import fr.ird.observe.services.service.data.NavigationResult;
    
    37
    +import fr.ird.observe.spi.module.BusinessModule;
    
    35 38
     import fr.ird.observe.spi.module.BusinessProject;
    
    39
    +import fr.ird.observe.spi.module.BusinessSubModule;
    
    36 40
     import fr.ird.observe.spi.module.ObserveBusinessModule;
    
    37 41
     
    
    38 42
     import java.util.Comparator;
    
    ... ... @@ -66,9 +70,35 @@ public abstract class RootNavigationTreeNodeProvider<B extends fr.ird.observe.sp
    66 70
             return PROVIDERS;
    
    67 71
         }
    
    68 72
     
    
    69
    -    protected RootNavigationTreeNodeProvider(BusinessProject project, B module, ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes, Class<? extends DtoReference> acceptedType) {
    
    73
    +    public static List<Class<? extends NavigationNode>> referentialHomes(BusinessModule module) {
    
    74
    +        ImmutableMap.Builder<Class<?>, Integer> priorityBuilder = ImmutableMap.builder();
    
    75
    +        for (BusinessSubModule subModule : module.getSubModules()) {
    
    76
    +            priorityBuilder.put(subModule.getClass(), module.getSubModulePriority(subModule));
    
    77
    +        }
    
    78
    +        ImmutableMap<Class<?>, Integer> priority = priorityBuilder.build();
    
    79
    +        return NavigationScopes.get().getScopes().values().stream()
    
    80
    +                .filter(s -> Objects.equals(module.getClass(), s.getModuleType())
    
    81
    +                        && ReferentialHomeUINavigationNode.class.isAssignableFrom(s.getNodeType())
    
    82
    +                )
    
    83
    +                .sorted(Comparator.comparingInt(s -> priority.get(s.getSubModuleType())))
    
    84
    +                .map(NavigationScope::getNodeType)
    
    85
    +                .collect(Collectors.toList());
    
    86
    +    }
    
    87
    +
    
    88
    +
    
    89
    +    protected RootNavigationTreeNodeProvider(BusinessProject project, B module) {
    
    90
    +        this(project, module, null, null);
    
    91
    +    }
    
    92
    +
    
    93
    +    protected RootNavigationTreeNodeProvider(BusinessProject project, B module, Class<? extends NavigationNode> acceptedEntryPointNode, Class<? extends DtoReference> acceptedType) {
    
    70 94
             this.module = Objects.requireNonNull(module);
    
    71
    -        this.acceptedNodeTypes = acceptedNodeTypes;
    
    95
    +        ImmutableList.Builder<Class<? extends NavigationNode>> acceptedNodeTypes = ImmutableList.builder();
    
    96
    +        if (acceptedEntryPointNode != null) {
    
    97
    +            acceptedNodeTypes.add(acceptedEntryPointNode);
    
    98
    +        }
    
    99
    +        List<Class<? extends NavigationNode>> referentialHomes = referentialHomes(module);
    
    100
    +        acceptedNodeTypes.addAll(referentialHomes);
    
    101
    +        this.acceptedNodeTypes = acceptedNodeTypes.build();
    
    72 102
             this.acceptedType = acceptedType;
    
    73 103
             this.priority = Objects.requireNonNull(project).getModulePriority(module);
    
    74 104
         }
    

  • client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java
    ... ... @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.common;
    23 23
      */
    
    24 24
     
    
    25 25
     import com.google.auto.service.AutoService;
    
    26
    -import com.google.common.collect.ImmutableList;
    
    27 26
     import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
    
    28 27
     import fr.ird.observe.spi.module.ObserveBusinessProject;
    
    29 28
     import fr.ird.observe.spi.module.common.BusinessModule;
    
    ... ... @@ -36,8 +35,7 @@ import fr.ird.observe.spi.module.common.BusinessModule;
    36 35
     public class CommonRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> {
    
    37 36
     
    
    38 37
         public CommonRootNavigationTreeNodeProvider() {
    
    39
    -        super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule(),
    
    40
    -              ImmutableList.of(fr.ird.observe.client.datasource.editor.common.referential.common.ReferentialHomeUINavigationNode.class), null);
    
    38
    +        super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule());
    
    41 39
         }
    
    42 40
     
    
    43 41
     }

  • client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootSelectionTreeNodeProvider.java
    ... ... @@ -23,16 +23,9 @@ package fr.ird.observe.client.datasource.editor.common;
    23 23
      */
    
    24 24
     
    
    25 25
     import com.google.auto.service.AutoService;
    
    26
    -import fr.ird.observe.client.configuration.NavigationTreeConfig;
    
    27 26
     import fr.ird.observe.client.datasource.editor.api.content.selection.RootSelectionTreeNodeProvider;
    
    28
    -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode;
    
    29
    -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode;
    
    30
    -import fr.ird.observe.dto.decoration.DecoratorService;
    
    31
    -import fr.ird.observe.services.service.data.SelectionResult;
    
    32 27
     import fr.ird.observe.spi.module.ObserveBusinessProject;
    
    33 28
     
    
    34
    -import java.util.Locale;
    
    35
    -
    
    36 29
     /**
    
    37 30
      * Created on 06/10/2020.
    
    38 31
      *
    
    ... ... @@ -45,13 +38,4 @@ public class CommonRootSelectionTreeNodeProvider extends RootSelectionTreeNodePr
    45 38
         public CommonRootSelectionTreeNodeProvider() {
    
    46 39
             super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule());
    
    47 40
         }
    
    48
    -
    
    49
    -    @Override
    
    50
    -    public void initRootDataNode(DecoratorService decoratorService, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) {
    
    51
    -    }
    
    52
    -
    
    53
    -    @Override
    
    54
    -    public void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) {
    
    55
    -        rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.common.referential.common.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap())));
    
    56
    -    }
    
    57
    -}
    41
    +}
    \ No newline at end of file

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java
    ... ... @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.ll;
    23 23
      */
    
    24 24
     
    
    25 25
     import com.google.auto.service.AutoService;
    
    26
    -import com.google.common.collect.ImmutableList;
    
    27 26
     import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationNode;
    
    28 27
     import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
    
    29 28
     import fr.ird.observe.client.datasource.editor.ll.data.common.TripListUINavigationNode;
    
    ... ... @@ -40,10 +39,11 @@ public class LlRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProv
    40 39
     
    
    41 40
         public LlRootNavigationTreeNodeProvider() {
    
    42 41
             super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getLlBusinessModule(),
    
    43
    -              ImmutableList.of(TripListUINavigationNode.class,
    
    44
    -                               fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.class,
    
    45
    -                               fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.class,
    
    46
    -                               fr.ird.observe.client.datasource.editor.ll.referential.observation.ReferentialHomeUINavigationNode.class),
    
    42
    +//              ImmutableList.of(
    
    43
    +              TripListUINavigationNode.class,
    
    44
    +//                               fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.class,
    
    45
    +//                               fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.class,
    
    46
    +//                               fr.ird.observe.client.datasource.editor.ll.referential.observation.ReferentialHomeUINavigationNode.class),
    
    47 47
                   ProgramReference.class);
    
    48 48
         }
    
    49 49
     
    

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootSelectionTreeNodeProvider.java
    ... ... @@ -29,7 +29,6 @@ import fr.ird.observe.client.configuration.NavigationTreeConfig;
    29 29
     import fr.ird.observe.client.datasource.editor.api.content.selection.RootSelectionTreeNodeProvider;
    
    30 30
     import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ProgramSelectionTreeNode;
    
    31 31
     import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode;
    
    32
    -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode;
    
    33 32
     import fr.ird.observe.client.datasource.editor.ll.data.common.TripListUINavigationNode;
    
    34 33
     import fr.ird.observe.client.datasource.editor.ll.data.common.TripSelectionTreeNode;
    
    35 34
     import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode;
    
    ... ... @@ -43,7 +42,6 @@ import fr.ird.observe.spi.module.ObserveBusinessProject;
    43 42
     import javax.swing.Icon;
    
    44 43
     import java.util.Collection;
    
    45 44
     import java.util.Collections;
    
    46
    -import java.util.Locale;
    
    47 45
     import java.util.Map;
    
    48 46
     
    
    49 47
     /**
    
    ... ... @@ -80,11 +78,4 @@ public class LlRootSelectionTreeNodeProvider extends RootSelectionTreeNodeProvid
    80 78
                 }
    
    81 79
             }
    
    82 80
         }
    
    83
    -
    
    84
    -    @Override
    
    85
    -    public void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) {
    
    86
    -        rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap())));
    
    87
    -        rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap())));
    
    88
    -        rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ll.referential.observation.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap())));
    
    89
    -    }
    
    90 81
     }

  • client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java
    ... ... @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.ps;
    23 23
      */
    
    24 24
     
    
    25 25
     import com.google.auto.service.AutoService;
    
    26
    -import com.google.common.collect.ImmutableList;
    
    27 26
     import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationNode;
    
    28 27
     import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
    
    29 28
     import fr.ird.observe.client.datasource.editor.ps.data.common.TripListUINavigationNode;
    
    ... ... @@ -40,9 +39,10 @@ public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProv
    40 39
     
    
    41 40
         public PsRootNavigationTreeNodeProvider() {
    
    42 41
             super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getPsBusinessModule(),
    
    43
    -              ImmutableList.of(TripListUINavigationNode.class,
    
    44
    -                               fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.class,
    
    45
    -                               fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.class),
    
    42
    +//              ImmutableList.of(
    
    43
    +              TripListUINavigationNode.class,
    
    44
    +//                               fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.class,
    
    45
    +//                               fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.class),
    
    46 46
                   ProgramReference.class);
    
    47 47
         }
    
    48 48
     
    

  • client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootSelectionTreeNodeProvider.java
    ... ... @@ -29,7 +29,6 @@ import fr.ird.observe.client.configuration.NavigationTreeConfig;
    29 29
     import fr.ird.observe.client.datasource.editor.api.content.selection.RootSelectionTreeNodeProvider;
    
    30 30
     import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ProgramSelectionTreeNode;
    
    31 31
     import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode;
    
    32
    -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode;
    
    33 32
     import fr.ird.observe.client.datasource.editor.ps.data.common.TripListUINavigationNode;
    
    34 33
     import fr.ird.observe.client.datasource.editor.ps.data.common.TripSelectionTreeNode;
    
    35 34
     import fr.ird.observe.client.datasource.editor.ps.data.common.TripUINavigationNode;
    
    ... ... @@ -43,7 +42,6 @@ import fr.ird.observe.spi.module.ObserveBusinessProject;
    43 42
     import javax.swing.Icon;
    
    44 43
     import java.util.Collection;
    
    45 44
     import java.util.Collections;
    
    46
    -import java.util.Locale;
    
    47 45
     import java.util.Map;
    
    48 46
     
    
    49 47
     /**
    
    ... ... @@ -80,10 +78,4 @@ public class PsRootSelectionTreeNodeProvider extends RootSelectionTreeNodeProvid
    80 78
                 }
    
    81 79
             }
    
    82 80
         }
    
    83
    -
    
    84
    -    @Override
    
    85
    -    public void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) {
    
    86
    -        rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap())));
    
    87
    -        rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap())));
    
    88
    -    }
    
    89 81
     }

  • pom.xml
    ... ... @@ -151,7 +151,7 @@
    151 151
         <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
    
    152 152
         <buildDate>${maven.build.timestamp}</buildDate>
    
    153 153
     
    
    154
    -    <toolkit.version>5.0.13</toolkit.version>
    
    154
    +    <toolkit.version>5.0.14</toolkit.version>
    
    155 155
     
    
    156 156
         <lib.version.ognl>3.1.28</lib.version.ognl>
    
    157 157
         <!--can't use 1.4.197 (date has changed + blob also)-->
    

  • services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/EditableDataServiceLocalSupport.java
    ... ... @@ -50,18 +50,25 @@ public abstract class EditableDataServiceLocalSupport<PE extends Entity, D exten
    50 50
         protected final DataDtoEntityContext<D, R, E, T> spi;
    
    51 51
         protected final DtoEntityContext<?, ?, PE, ?> parentSpi;
    
    52 52
         protected final String propertyName;
    
    53
    +    protected final boolean multiple;
    
    53 54
     
    
    54 55
         protected EditableDataServiceLocalSupport(DtoEntityContext<?, ?, PE, ?> parentSpi, DataDtoEntityContext<D, R, E, T> spi, String propertyName) {
    
    55 56
             this.parentSpi = parentSpi;
    
    56 57
             this.spi = spi;
    
    57 58
             this.propertyName = propertyName;
    
    59
    +        this.multiple = parentSpi.isMultipleProperty(propertyName);
    
    58 60
         }
    
    59 61
     
    
    60 62
         protected abstract void onPreCreate(PE parent, E preCreated);
    
    61 63
     
    
    64
    +    @SuppressWarnings({"unchecked", "rawtypes"})
    
    62 65
         protected SaveResultDto onSave(PE parent, E entity, D dto) {
    
    63 66
             if (dto.isNotPersisted()) {
    
    64
    -            parent.set(propertyName, entity);
    
    67
    +            if (multiple) {
    
    68
    +                ((Collection)parent.get(propertyName)).add( entity);
    
    69
    +            }else {
    
    70
    +                parent.set(propertyName, entity);
    
    71
    +            }
    
    65 72
             }
    
    66 73
             return saveEntity(spi, entity);
    
    67 74
         }
    
    ... ... @@ -81,7 +88,11 @@ public abstract class EditableDataServiceLocalSupport<PE extends Entity, D exten
    81 88
     
    
    82 89
         @Override
    
    83 90
         public boolean delete(String id) {
    
    84
    -        deleteSingleAssociation(id, spi, parentSpi, propertyName);
    
    91
    +        if (multiple) {
    
    92
    +            deleteMultipleAssociation(parentSpi, propertyName, spi, id);
    
    93
    +        } else {
    
    94
    +            deleteSingleAssociation(id, spi, parentSpi, propertyName);
    
    95
    +        }
    
    85 96
             return false;
    
    86 97
         }
    
    87 98
     
    
    ... ... @@ -155,8 +166,15 @@ public abstract class EditableDataServiceLocalSupport<PE extends Entity, D exten
    155 166
             return spi.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), id);
    
    156 167
         }
    
    157 168
     
    
    158
    -    protected PE getParent(String id) {
    
    159
    -        return getSingleAssociationParent(parentSpi, propertyName, id);
    
    169
    +    protected final PE getParent(String id) {
    
    170
    +        if (multiple) {
    
    171
    +            return getParent(parentSpi, propertyName, id);
    
    172
    +        } else {
    
    173
    +            return getSingleAssociationParent(parentSpi, propertyName, id);
    
    174
    +        }
    
    160 175
         }
    
    161 176
     
    
    177
    +    public boolean isMultiple() {
    
    178
    +        return multiple;
    
    179
    +    }
    
    162 180
     }

  • services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/FloatingObjectServiceLocalSupport.java
    ... ... @@ -46,10 +46,10 @@ import fr.ird.observe.entities.referential.common.Country;
    46 46
     import fr.ird.observe.entities.referential.common.Vessel;
    
    47 47
     import fr.ird.observe.entities.referential.ps.common.ObjectMaterial;
    
    48 48
     import fr.ird.observe.entities.referential.ps.common.ObjectOperation;
    
    49
    +import fr.ird.observe.entities.referential.ps.common.ObservedSystem;
    
    49 50
     import fr.ird.observe.entities.referential.ps.common.TransmittingBuoyOperation;
    
    50 51
     import fr.ird.observe.entities.referential.ps.common.TransmittingBuoyOwnership;
    
    51 52
     import fr.ird.observe.entities.referential.ps.common.TransmittingBuoyType;
    
    52
    -import fr.ird.observe.entities.referential.ps.common.ObservedSystem;
    
    53 53
     import fr.ird.observe.services.local.service.data.EditableDataServiceLocalSupport;
    
    54 54
     import fr.ird.observe.services.service.data.ps.observation.FloatingObjectService;
    
    55 55
     import org.apache.logging.log4j.LogManager;
    
    ... ... @@ -129,11 +129,6 @@ class FloatingObjectServiceLocalSupport extends EditableDataServiceLocalSupport<
    129 129
             return entityToForm(entity);
    
    130 130
         }
    
    131 131
     
    
    132
    -    @Override
    
    133
    -    protected Activity getParent(String id) {
    
    134
    -        return getParent(parentSpi, propertyName, id);
    
    135
    -    }
    
    136
    -
    
    137 132
         @Override
    
    138 133
         protected void onPreCreate(Activity parent, FloatingObject preCreated) {
    
    139 134
     
    
    ... ... @@ -142,9 +137,6 @@ class FloatingObjectServiceLocalSupport extends EditableDataServiceLocalSupport<
    142 137
         @Override
    
    143 138
         protected SaveResultDto onSave(Activity parent, FloatingObject entity, FloatingObjectDto dto) {
    
    144 139
             log.info(String.format("Will persist %d part(s).", entity.getFloatingObjectPartSize()));
    
    145
    -        if (dto.isNotPersisted()) {
    
    146
    -            parent.addFloatingObject(entity);
    
    147
    -        }
    
    148 140
             boolean addFobObservedSystem = !ProtectedIdsPs.PS_OBSERVATION_FOB_OBSERVED_SYSTEM_EXCLUDE_OPERATIONS.contains(dto.getObjectOperation().getId())
    
    149 141
                     && !parent.getObservedSystemTopiaIds().contains(ProtectedIdsPs.PS_OBSERVATION_FOB_OBSERVED_SYSTEM);
    
    150 142
             if (addFobObservedSystem) {
    
    ... ... @@ -152,13 +144,7 @@ class FloatingObjectServiceLocalSupport extends EditableDataServiceLocalSupport<
    152 144
                 ObservedSystem observedSystem = ObservedSystem.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), ProtectedIdsPs.PS_OBSERVATION_FOB_OBSERVED_SYSTEM);
    
    153 145
                 parent.addObservedSystem(observedSystem);
    
    154 146
             }
    
    155
    -        return saveEntity(spi, entity);
    
    156
    -    }
    
    157
    -
    
    158
    -    @Override
    
    159
    -    public boolean delete(String floatingObjectId) {
    
    160
    -        deleteMultipleAssociation(Activity.SPI, Activity.PROPERTY_FLOATING_OBJECT, FloatingObject.SPI, floatingObjectId);
    
    161
    -        return false;
    
    147
    +        return super.onSave(parent, entity, dto);
    
    162 148
         }
    
    163 149
     
    
    164 150
         private List<ObjectMaterialHierarchyDto> getObjectMaterialHierarchyDtos(List<ObjectMaterial> objectMaterials) {