Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
324f44c1
by Tony Chemit at 2021-03-20T18:22:37+01:00
-
9957c389
by Tony Chemit at 2021-03-20T23:45:47+01:00
-
dabdc097
by Tony Chemit at 2021-03-20T23:49:25+01:00
-
38cc77f6
by Tony Chemit at 2021-03-20T23:49:29+01:00
14 changed files:
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUIOpenExecutor.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/RootSelectionTreeNodeProvider.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/SelectionTreeModel.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/nodes/RootSelectionTreeNode.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java
- client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java
- client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootSelectionTreeNodeProvider.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootSelectionTreeNodeProvider.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootSelectionTreeNodeProvider.java
- pom.xml
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/EditableDataServiceLocalSupport.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/FloatingObjectServiceLocalSupport.java
Changes:
| ... | ... | @@ -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 |
|
| ... | ... | @@ -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;
|
| ... | ... | @@ -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 |
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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 |
| ... | ... | @@ -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 |
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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 |
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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)-->
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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) {
|