Observe-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
December 2020
- 1 participants
- 96 discussions
[Git][ultreiaio/ird-observe][develop] 5 commits: When reset on an empty table ui, then do not block user when leaving the form
by Tony CHEMIT 04 Dec '20
by Tony CHEMIT 04 Dec '20
04 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
a86b18c8 by Tony Chemit at 2020-12-03T22:52:29+01:00
When reset on an empty table ui, then do not block user when leaving the form
- - - - -
889cbecb by Tony Chemit at 2020-12-04T04:47:27+01:00
Add nice method to get type simple name prefixed bu his sub module
- - - - -
b25d2333 by Tony Chemit at 2020-12-04T04:48:16+01:00
Review create data actions, now everything is quite smooth, nearly no human interaction.
- - - - -
25dce5ad by Tony Chemit at 2020-12-04T05:45:04+01:00
Improve navigation context actions popup :
* actions are now organized by purpose
* actions can keep original accelerator (feel cooler like this)
* add missing action : ChangeMode
- - - - -
30a99d6c by Tony Chemit at 2020-12-04T06:06:16+01:00
Champs avec needcomment=true - Closes #1620
- - - - -
30 changed files:
- client/datasource/editor/api/src/main/i18n/getters/java.getter
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/create/CreateNewContentTableUIEntry.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/actions/AddEditable.java → client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/create/CreateNewEditable.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/create/CreateNewOpenableUI.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/TripActionHelper.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/list/ContentListUI.jaxx
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/list/ContentListUI.jcss
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/list/ContentListUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUI.jaxx
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUI.jcss
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUILayoutFocusTraversalPolicy.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUI.jaxx
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUI.jcss
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIFocus.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIModelStates.java
- − client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/NewTableEntry.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/ResetEntry.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/SaveAndNewEntry.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/ContentUIMenuAction.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/NavigationTreeShowPopupHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/LlTripActionHelper.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/landing/LandingUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUI.jaxx
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUI.jcss
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUIHandler.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/fb640b84faa41874e6b8d447…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/fb640b84faa41874e6b8d447…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Let's generate create actions (Open one are now ok, need to finish it for edit...
by Tony CHEMIT 03 Dec '20
by Tony CHEMIT 03 Dec '20
03 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
fb640b84 by Tony Chemit at 2020-12-03T20:17:25+01:00
Let's generate create actions (Open one are now ok, need to finish it for edit and table one) : generation is always better than runtime code...
- - - - -
20 changed files:
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/InsertMenuAction.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/CreateNewContentTableUIEntry.java → client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/create/CreateNewContentTableUIEntry.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/actions/CreateNewOpenable.java → client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/create/CreateNewOpenableUI.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/mode/ChangeMode.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/mode/ChangeModeExecutor.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUINavigationNode.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/list/ContentListUIHandler.java
- − client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/list/actions/CreateNew.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/NavigationHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/NavigationNode.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/LlTripActionHelper.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivitySampleUIMoveTreeAdapter.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/PsTripActionHelper.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripUIHandler.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteUIHandler.java
- client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/CapabilityDescriptor.java
- client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/ContentNodeType.java
- client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java
Changes:
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
=====================================
@@ -30,10 +30,10 @@ import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
import fr.ird.observe.client.datasource.editor.api.DataSourceEditor;
import fr.ird.observe.client.datasource.editor.api.content.actions.ContentUIActionSupport;
import fr.ird.observe.client.datasource.editor.api.content.actions.ResetForm;
+import fr.ird.observe.client.datasource.editor.api.content.actions.create.CreateNewContentTableUIEntry;
import fr.ird.observe.client.datasource.editor.api.content.actions.open.ContentOpen;
import fr.ird.observe.client.datasource.editor.api.content.data.table.ContentTableUI;
import fr.ird.observe.client.datasource.editor.api.content.data.table.ContentTableUIModel;
-import fr.ird.observe.client.datasource.editor.api.content.data.table.actions.CreateNewContentTableUIEntry;
import fr.ird.observe.client.datasource.editor.api.content.referential.ContentReferentialUII18nHelper;
import fr.ird.observe.client.datasource.editor.api.content.spi.ContentUIReferenceCache;
import fr.ird.observe.client.datasource.editor.api.content.spi.ReferentialReferencesFilter;
@@ -124,7 +124,7 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe
private final Map<ContentTableUI<?, ?, ?>, JPanel> subUiMap = new LinkedHashMap<>();
protected String prefix;
protected U ui;
- protected ImmutableSet<CreateNewContentTableUIEntry<?, ?>> newContentTableUIEntries;
+ protected ImmutableSet<CreateNewContentTableUIEntry<?>> newContentTableUIEntries;
private ObserveLayoutFocusTraversalPolicy<U> focusTraversalPolicy;
private boolean init;
private JTabbedPaneValidator tabbedPaneValidator;
@@ -308,6 +308,18 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe
installChangeModeAction();
NodeCapability<?> capability = ui.getModel().getSource().getCapability();
if (capability instanceof ContainerCapability) {
+// newContentOpenableUIEntries = CreateNewOpenableUI.installOpenableCreateActions(ui, (ContainerCapability<?>) capability);
+// if (newContentOpenableUIEntries != null) {
+// getModel().getStates().addPropertyChangeListener(evt -> {
+// String propertyName = evt.getPropertyName();
+// if (propertyName.equals(ContentUIModelStates.PROPERTY_UPDATING_MODE) ||
+// propertyName.equals(ContentUIModelStates.PROPERTY_MODIFIED)) {
+// ContentUIModelStates source = (ContentUIModelStates) evt.getSource();
+// boolean enabled = source.isUpdatingMode() && !source.isModified();
+// source.firePropertyChange(CreateNewOpenableUI.PROPERTY_NAME_UPDATING_MODE_AND_NOT_MODIFIED, enabled);
+// }
+// });
+// }
newContentTableUIEntries = CreateNewContentTableUIEntry.installTableCreateActions(ui, (ContainerCapability<?>) capability);
if (newContentTableUIEntries != null) {
getModel().getStates().addPropertyChangeListener(evt -> {
@@ -320,6 +332,7 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe
}
});
}
+
}
// if (ui.getConfigurePopup().getSubElements().length == 0) {
// ui.getToggleConfigure().setEnabled(false);
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/InsertMenuAction.java
=====================================
@@ -34,6 +34,7 @@ import javax.swing.JPopupMenu;
* @since 8.0.1
*/
public interface InsertMenuAction<U extends ContentUI> extends MenuAction {
+ String PROPERTY_NAME_UPDATING_MODE_AND_NOT_MODIFIED = "updatingModeAndNotModified";
U getUi();
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/CreateNewContentTableUIEntry.java → client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/create/CreateNewContentTableUIEntry.java
=====================================
@@ -1,4 +1,4 @@
-package fr.ird.observe.client.datasource.editor.api.content.data.table.actions;
+package fr.ird.observe.client.datasource.editor.api.content.actions.create;
/*-
* #%L
@@ -47,26 +47,26 @@ import java.awt.event.ActionEvent;
import java.util.function.Function;
/**
- * To create a new entry from the outised world.
+ * To create a new table data entry from the outside world.
* <p>
* Created on 26/11/2020.
*
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0.1
*/
-public class CreateNewContentTableUIEntry<N extends ContentTableUINavigationNode, U extends ContentUI> extends ContentUIActionSupport<U> implements InsertMenuAction<U> {
- public static final String PROPERTY_NAME_UPDATING_MODE_AND_NOT_MODIFIED = "updatingModeAndNotModified";
+public class CreateNewContentTableUIEntry<U extends ContentUI> extends ContentUIActionSupport<U> implements InsertMenuAction<U> {
+
private static final Logger log = LogManager.getLogger(CreateNewContentTableUIEntry.class);
- private final Function<NavigationNode, N> getNode;
+ private final Function<NavigationNode, NavigationNode> getNode;
- public static <N extends ContentTableUINavigationNode, U extends ContentUI> CreateNewContentTableUIEntry<N, U> installAction(U ui, AbstractButton editor, SimpleDtoServiceContext<?, ?> spi, Function<NavigationNode, N> getNode) {
- CreateNewContentTableUIEntry<N, U> action = new CreateNewContentTableUIEntry<>(spi, getNode);
+ public static <U extends ContentUI> CreateNewContentTableUIEntry<U> installAction(U ui, AbstractButton editor, SimpleDtoServiceContext<?, ?> spi, Function<NavigationNode, NavigationNode> getNode) {
+ CreateNewContentTableUIEntry<U> action = new CreateNewContentTableUIEntry<>(spi, getNode);
init(ui, editor, action);
return action;
}
- public static ImmutableSet<CreateNewContentTableUIEntry<?, ?>> installTableCreateActions(ContentUI ui, ContainerCapability<?> capability) {
- ImmutableSet.Builder<CreateNewContentTableUIEntry<?, ?>> builder = ImmutableSet.builder();
+ public static ImmutableSet<CreateNewContentTableUIEntry<?>> installTableCreateActions(ContentUI ui, ContainerCapability<?> capability) {
+ ImmutableSet.Builder<CreateNewContentTableUIEntry<?>> builder = ImmutableSet.builder();
for (Class<? extends NavigationNode> acceptedNodeType : capability.getAcceptedNodeTypes()) {
if (ContentTableUINavigationNode.class.isAssignableFrom(acceptedNodeType)) {
@SuppressWarnings("unchecked") Class<? extends ContentTableUINavigationNode> nodeType = (Class<? extends ContentTableUINavigationNode>) acceptedNodeType;
@@ -85,7 +85,7 @@ public class CreateNewContentTableUIEntry<N extends ContentTableUINavigationNode
return builder.build();
}
- public CreateNewContentTableUIEntry(SimpleDtoServiceContext<?, ?> spi, Function<NavigationNode, N> getNode) {
+ public CreateNewContentTableUIEntry(SimpleDtoServiceContext<?, ?> spi, Function<NavigationNode, NavigationNode> getNode) {
super(null, null, "add", null);
this.getNode = getNode;
Class<? extends DataDto> dtoType = spi.getDtoType();
@@ -97,7 +97,7 @@ public class CreateNewContentTableUIEntry<N extends ContentTableUINavigationNode
@Override
protected void doActionPerformed(ActionEvent e, U ui) {
NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree();
- N selectedNode = getNode.apply(tree.getSelectedNode());
+ NavigationNode selectedNode = getNode.apply(tree.getSelectedNode());
tree.selectSafeNode(selectedNode);
ContentTableUI<?, ?, ?> newContentUI = (ContentTableUI<?, ?, ?>) getDataSourceEditor().getContentUIManager().getSelectedContentUI();
newContentUI.getNewEntry().doClick();
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/actions/CreateNewOpenable.java → client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/create/CreateNewOpenableUI.java
=====================================
@@ -1,4 +1,4 @@
-package fr.ird.observe.client.datasource.editor.api.content.data.open.actions;
+package fr.ird.observe.client.datasource.editor.api.content.actions.create;
/*-
* #%L
@@ -22,16 +22,24 @@ package fr.ird.observe.client.datasource.editor.api.content.data.open.actions;
* #L%
*/
+import com.google.common.collect.ImmutableSet;
import fr.ird.observe.client.datasource.editor.api.DataSourceEditor;
+import fr.ird.observe.client.datasource.editor.api.content.ContentUI;
+import fr.ird.observe.client.datasource.editor.api.content.actions.ContentUIActionSupport;
import fr.ird.observe.client.datasource.editor.api.content.actions.InsertMenuAction;
import fr.ird.observe.client.datasource.editor.api.content.actions.mode.ChangeMode;
+import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUI;
import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUII18nHelper;
import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUINavigationNode;
import fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpenableUI;
import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree;
import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode;
+import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationScope;
+import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationScopes;
+import fr.ird.observe.client.datasource.editor.api.navigation.tree.capability.ContainerCapability;
import fr.ird.observe.client.datasource.editor.api.navigation.tree.capability.ReferenceContainerCapability;
import fr.ird.observe.client.util.DtoIconHelper;
+import fr.ird.observe.dto.IdDto;
import fr.ird.observe.dto.data.DataDto;
import fr.ird.observe.dto.reference.DataDtoReference;
import fr.ird.observe.spi.context.OpenableDtoServiceContext;
@@ -41,30 +49,86 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.swing.AbstractButton;
+import javax.swing.JMenuItem;
import java.awt.event.ActionEvent;
-import java.util.Objects;
import java.util.function.Function;
+import java.util.function.Predicate;
/**
- * Created on 11/11/16.
+ * To create a new openable data from the outside world.
+ * Created on 03/12/2020.
*
* @author Tony Chemit - dev(a)tchemit.fr
- * @since 6.0
+ * @since 8.0.1
*/
-public final class CreateNewOpenable<R extends DataDtoReference, D extends DataDto, U extends ContentOpenableUI<D, U>> extends ContentOpenableUIActionSupport<D, U> implements InsertMenuAction<U> {
+public class CreateNewOpenableUI<D extends DataDto, U extends ContentUI> extends ContentUIActionSupport<U> implements InsertMenuAction<U> {
- private static final Logger log = LogManager.getLogger(CreateNewOpenable.class);
+ private static final Logger log = LogManager.getLogger(CreateNewOpenableUI.class);
+ private final OpenableDtoServiceContext<D, ?, ?> spi;
+ private final Function<NavigationNode, NavigationNode> getNode;
+ private final Predicate<Class<D>> typePredicate;
- private final OpenableDtoServiceContext<?, R, ?> spi;
- private final Function<NavigationNode, NavigationNode> beforeNodeFunction;
+ public static ImmutableSet<CreateNewOpenableUI<?, ?>> installOpenableCreateActions(ContentUI ui, ContainerCapability<?> capability) {
+ ImmutableSet.Builder<CreateNewOpenableUI<?, ?>> builder = ImmutableSet.builder();
+ for (Class<? extends NavigationNode> acceptedNodeType : capability.getAcceptedNodeTypes()) {
+ if (ContentListUINavigationNode.class.isAssignableFrom(acceptedNodeType)) {
+ JMenuItem editor = new JMenuItem();
+ NavigationScope navigationScope = NavigationScopes.getNavigationScope(acceptedNodeType);
+ @SuppressWarnings("unchecked") Class<? extends ContentListUINavigationNode> nodeType = (Class<? extends ContentListUINavigationNode>) acceptedNodeType;
+ OpenableDtoServiceContext<?, ?, ?> spi = navigationScope.computeOpenSpi();
+ String fieldName = "add" + acceptedNodeType.getSimpleName().replace("UINavigationNode", "");
+ editor.setName(fieldName);
+ ui.getModel().getStates().addPropertyChangeListener(PROPERTY_NAME_UPDATING_MODE_AND_NOT_MODIFIED, evt -> editor.setEnabled((Boolean) evt.getNewValue()));
+ log.debug("Create new action: " + fieldName);
+ ui.get$objectMap().put(editor.getName(), editor);
+ Function<NavigationNode, NavigationNode> getNode = n -> n.findChildByType(nodeType);
+ builder.add(installAction(ui, editor, spi, getNode));
+ }
+ }
+ return builder.build();
+ }
+
+ public static <D extends DataDto, U extends ContentOpenableUI< ?, ?>> CreateNewOpenableUI<D, U> installAction2(U ui, Class<? extends NavigationNode> acceptedNodeType, Class<D> dtoType, Predicate<Class<D>> typePredicate) {
+ JMenuItem editor = new JMenuItem();
+ NavigationScope navigationScope = NavigationScopes.getNavigationScope(acceptedNodeType);
+ @SuppressWarnings("unchecked") Class<? extends ContentListUINavigationNode> nodeType = (Class<? extends ContentListUINavigationNode>) acceptedNodeType;
+ OpenableDtoServiceContext<D, ?, ?> spi = navigationScope.computeOpenSpi();
+ String fieldName = "add" + acceptedNodeType.getSimpleName().replace("UINavigationNode", "");
+ editor.setName(fieldName);
+ ui.getModel().getStates().addPropertyChangeListener(PROPERTY_NAME_UPDATING_MODE_AND_NOT_MODIFIED, evt -> editor.setEnabled((Boolean) evt.getNewValue()));
+ log.debug("Create new action: " + fieldName);
+ ui.get$objectMap().put(editor.getName(), editor);
+ Function<NavigationNode, NavigationNode> getNode = n -> n.findChildByType(nodeType);
+
+ CreateNewOpenableUI<D, U> action = new CreateNewOpenableUI<>(spi, getNode, typePredicate);
+ init(ui, ui.getCreate(), action);
+ return action;
+ }
+
+ public static <D extends DataDto, U extends ContentListUI<?, ?, ?>> CreateNewOpenableUI<D, U> installAction(U ui, Predicate<Class<D>> typePredicate) {
+ CreateNewOpenableUI<D, U> action = new CreateNewOpenableUI<>(ui.getModel().getScope().computeOpenSpi(), Function.identity(), typePredicate);
+ init(ui, ui.getCreate(), action);
+ return action;
+ }
- public static <D extends DataDto, U extends ContentOpenableUI<D, U>> void installAction(U ui) {
- installAction(ui, ui.getCreate(), ui.getModel().getSource().getSpi(), t -> t);
+ public static <D extends DataDto, U extends ContentOpenableUI<D, U>> CreateNewOpenableUI<D, U> installAction(U ui, Predicate<Class<D>> typePredicate) {
+ CreateNewOpenableUI<D, U> action = new CreateNewOpenableUI<>(ui.getModel().getScope().computeOpenSpi(), Function.identity(), typePredicate);
+ init(ui, ui.getCreate(), action);
+ return action;
}
- public static <R extends DataDtoReference, D extends DataDto, U extends ContentOpenableUI<D, U>> void installAction(U ui, AbstractButton editor, OpenableDtoServiceContext<?, R, ?> spi, Function<NavigationNode, NavigationNode> beforeNodeFunction) {
- CreateNewOpenable<R, D, U> action = new CreateNewOpenable<>(ui.getModel().getSource().getScope().getMainType(), spi, beforeNodeFunction);
+ public static <D extends DataDto, U extends ContentOpenableUI<D, U>> CreateNewOpenableUI<D, U> installAction(U ui) {
+ return installAction(ui, t -> true);
+ }
+
+ public static <D extends DataDto, U extends ContentListUI<?, ?, ?>> CreateNewOpenableUI<D, U> installAction(U ui) {
+ return installAction(ui, t -> true);
+ }
+
+ public static <D extends DataDto, U extends ContentUI> CreateNewOpenableUI<D, U> installAction(U ui, AbstractButton editor, OpenableDtoServiceContext<D, ?, ?> spi, Function<NavigationNode, NavigationNode> getNode) {
+ CreateNewOpenableUI<D, U> action = new CreateNewOpenableUI<>(spi, getNode, t -> true);
init(ui, editor, action);
+ return action;
}
public static void closeAndCreate(DataSourceEditor dataSourceEditor, NavigationNode parentNode, NavigationTree tree, EditNode<?> editNode, DataDtoReference reference) {
@@ -79,24 +143,28 @@ public final class CreateNewOpenable<R extends DataDtoReference, D extends DataD
}
}
- public CreateNewOpenable(Class<D> dataType, OpenableDtoServiceContext<?, R, ?> spi, Function<NavigationNode, NavigationNode> beforeNodeFunction) {
- super(dataType, null, null, null, null);
- this.spi = Objects.requireNonNull(spi);
- this.beforeNodeFunction = Objects.requireNonNull(beforeNodeFunction);
+ public CreateNewOpenableUI(OpenableDtoServiceContext<D, ?, ?> spi, Function<NavigationNode, NavigationNode> getNode, Predicate<Class<D>> typePredicate) {
+ super(null, null, "add", null);
+ this.spi = spi;
+ this.getNode = getNode;
+ this.typePredicate = typePredicate;
Class<? extends DataDto> dtoType = spi.getDtoType();
setIcon(DtoIconHelper.getIcon(dtoType));
setText(ContentListUII18nHelper.getListActionCreate(dtoType));
- setTooltipText(ContentListUII18nHelper.getListActionCreateTip(dtoType));
+ setTooltipText(ContentListUII18nHelper.getListActionCreate(dtoType));
}
@Override
- protected void doActionPerformed(ActionEvent event, U ui) {
- NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree();
- NavigationNode selectedNode = beforeNodeFunction.apply(tree.getSelectedNode());
- Class<? extends DataDtoReference> referenceType = selectedNode.getScope().getMainReferenceType();
- ContentListUINavigationNode parentNode = (ContentListUINavigationNode) selectedNode.upToReferenceContainerNode(referenceType);
- DataDtoReference newReference = spi.newReference(ui.getModel().getClientUIContext().getDecoratorService().getReferentialLocale());
- closeAndCreate(getDataSourceEditor(), parentNode, tree, selectedNode.getInitializer().getEditNode(), newReference);
+ protected boolean canExecuteAction(ActionEvent e) {
+ return super.canExecuteAction(e) && (typePredicate == null || typePredicate.test(spi.getDtoType()));
}
+ @Override
+ protected void doActionPerformed(ActionEvent e, U ui) {
+ NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree();
+ NavigationNode parentNode = getNode.apply(tree.getSelectedNode());
+ EditNode<? extends IdDto> editNode = parentNode.getInitializer().getEditNode();
+ DataDtoReference newReference = spi.newReference(parentNode.getInitializer().getReferentialLocale());
+ closeAndCreate(getDataSourceEditor(), parentNode, tree, editNode, newReference);
+ }
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/mode/ChangeMode.java
=====================================
@@ -79,7 +79,7 @@ public class ChangeMode<U extends ContentUI> extends ContentUIActionSupport<U> {
}
public static void closeData(DataSourceEditor dataSourceEditor, EditNode<?> nodeToClose) throws CloseEditNodeVetoException {
- if (nodeToClose.isDisabled()) {
+ if (Objects.requireNonNull(nodeToClose).isDisabled()) {
return;
}
ClientUIContext clientUIContext = ClientUIContextApplicationComponent.value();
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/mode/ChangeModeExecutor.java
=====================================
@@ -57,62 +57,45 @@ public class ChangeModeExecutor<U extends ContentUI> {
protected void doClose(U ui, DataSourceEditor dataSourceEditor, ChangeModeRequest request) {
try {
- EditNode<?> editNode = ui.getModel().getSource().getInitializer().getEditNode();
+ SelectNode<?> selectedNode = request.getSelectNode(ui);
+ EditNode<?> editNode = request.getEditNode(ui);
+ String id = request.getSelectedId(ui, selectedNode);
+ log.info(String.format("Will close: %s → (select: %s - edit: %s)", id, selectedNode, editNode));
ChangeMode.closeData(dataSourceEditor, editNode);
if (ui.getModel().getStates().isUpdatingMode()) {
ui.stopEdit();
}
afterClose(ui, dataSourceEditor);
- //FIXME See what does it means ?
-// getMainUI().getHandler().updateContentSize();
} catch (CloseEditNodeVetoException e1) {
log.error("Could not close data from callback", e1);
-// UIHelper.handlingError(e1);
}
}
protected void doOpen(U ui, DataSourceEditor dataSourceEditor, ChangeModeRequest request) {
-
- SelectNode<?> selectedNode = request.getSelectNode(ui);
- EditNode<?> editNode = request.getEditNode(ui);
- String id = request.getSelectedId(ui, selectedNode);
- log.info(String.format("Will open: %s → %s", id, selectedNode));
- NavigationTree tree = dataSourceEditor.getNavigationUI().getTree();
- NavigationNode previousOpenedNode = editNode.isEnabled() ? tree.getRootNode().findNode(editNode) : null;
try {
+ SelectNode<?> selectedNode = request.getSelectNode(ui);
+ EditNode<?> editNode = request.getEditNode(ui);
+ String id = request.getSelectedId(ui, selectedNode);
+ log.info(String.format("Will open: %s → (select: %s - edit: %s)", id, selectedNode, editNode));
+ NavigationTree tree = dataSourceEditor.getNavigationUI().getTree();
+ NavigationNode previousOpenedNode = editNode.isEnabled() ? tree.getRootNode().findNode(editNode) : null;
ChangeMode.openData(editNode, selectedNode, id);
afterOpen(dataSourceEditor, previousOpenedNode, id);
} catch (CloseEditNodeVetoException e1) {
log.error("Could not close data from callback", e1);
- //UIHelper.handlingError(e1);
}
}
protected void afterClose(U ui, DataSourceEditor dataSourceEditor) {
-
-// ContentOpenableUIModel<D> model = ui.getModel();
-// D bean = model.getStates().getBean();
-
ui.stopEdit();
-
-// model.setMode(ContentMode.READ);
-// removeAllMessages(ui);
-// String closeMessage = ContentOpenableUII18nHelper.getMessageNotOpen(model.getScope().getMainType());
-// ContentUIHandler.addMessage(ui, NuitonValidatorScope.INFO, ContentOpenableUII18nHelper.getType(bean.getClass()), closeMessage);
-
NavigationTree tree = dataSourceEditor.getNavigationUI().getTree();
-
NavigationNode node = tree.getSelectedNode();
node.getParent().refreshToRoot();
node.nodeChangedDeep();
-// if (node.getLevel() > 1) {
-// tree.selectSafeNode(node.getParent());
-// }
+
log.info("Will reselect node: " + node);
SwingUtilities.invokeLater(() -> tree.reSelectSafeNode(node));
-// ui.getHandler().updateActions();
-
//FIXME Focus forcing!!!
// ui.getHandler().grabFocusOnForm();
@@ -120,12 +103,6 @@ public class ChangeModeExecutor<U extends ContentUI> {
protected void afterOpen(DataSourceEditor dataSourceEditor, NavigationNode previousOpenedNode, String id) {
-// ui.stopEdit();
-// ui.getModel().setMode(ContentMode.UPDATE);
-//
-// // On charge les ensembles de références utilisées dans les combobox
-// ui.getModel().updateUiWithReferenceSetsFromModel();
-
// on repaint le parent (le program devient alors ouvert)
NavigationTree tree = dataSourceEditor.getNavigationUI().getTree();
@@ -137,19 +114,12 @@ public class ChangeModeExecutor<U extends ContentUI> {
if (previousOpenedNode == null || !Objects.equals(previousOpenedNode.getParent(), selectedNode.getParent())) {
selectedNode.getParent().refreshToRoot();
}
+ selectedNode.reloadNodeData();
selectedNode.nodeChangedDeep();
-// if (selectedNode.getLevel() > 1) {
-// tree.selectSafeNode(selectedNode.getParent());
-// }
- afterOpenReselectNode(tree, id);
-// ContentUIHandler.removeAllMessages(ui);
-//
-// // on lance l'édition
-// ui.startEdit();
+ afterOpenReselectNode(tree, selectedNode, id);
}
- protected void afterOpenReselectNode(NavigationTree tree, String id) {
- NavigationNode selectedNode = tree.getSelectedNode();
+ protected void afterOpenReselectNode(NavigationTree tree, NavigationNode selectedNode, String id) {
log.info("Will reselect node: " + selectedNode);
SwingUtilities.invokeLater(() -> tree.reSelectSafeNode(selectedNode));
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUINavigationNode.java
=====================================
@@ -90,12 +90,14 @@ public abstract class ContentEditUINavigationNode extends NavigationNode {
if (notPersisted) {
getInitializer().updateSelectNodeId(id);
}
- if (notPersisted) {
+ // reload node data first
+ reloadNodeData();
+
+ if (notPersisted && isContainer()) {
+ // can now load children if any
dirty();
populateChildrenIfNotLoaded();
}
- // reload node data
- reloadNodeData();
ReferenceContainerCapability<?> capability = (ReferenceContainerCapability<?>) parent.getCapability();
int newPosition = capability.getNodePosition(reference);
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/list/ContentListUIHandler.java
=====================================
@@ -125,8 +125,7 @@ public abstract class ContentListUIHandler<D extends DataDto, R extends DataDtoR
ChangeModeRequest request = ui.getModel().toChangeModeRequest();
ChangeModeExecutor<U> executor = new ChangeModeExecutor<U>() {
@Override
- protected void afterOpenReselectNode(NavigationTree tree, String id) {
- NavigationNode selectedNode = tree.getSelectedNode();
+ protected void afterOpenReselectNode(NavigationTree tree, NavigationNode selectedNode, String id) {
Class<? extends DataDtoReference> referenceType = ui.getModel().getSource().getScope().getMainReferenceType();
NavigationNode referenceNode = tree.getSelectedNode().downToReferenceNode(referenceType, id);
log.info(String.format("Will reselect node: %s", selectedNode));
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/list/actions/CreateNew.java deleted
=====================================
@@ -1,80 +0,0 @@
-package fr.ird.observe.client.datasource.editor.api.content.data.list.actions;
-
-/*-
- * #%L
- * ObServe Client :: DataSource :: Editor :: API
- * %%
- * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.client.datasource.editor.api.content.actions.InsertMenuAction;
-import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUI;
-import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUII18nHelper;
-import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUIModel;
-import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUINavigationNode;
-import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.CreateNewOpenable;
-import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree;
-import fr.ird.observe.client.util.DtoIconHelper;
-import fr.ird.observe.dto.data.DataDto;
-import fr.ird.observe.dto.reference.DataDtoReference;
-
-import java.awt.event.ActionEvent;
-import java.util.Objects;
-import java.util.function.Predicate;
-
-/**
- * Created on 11/11/16.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 6.0
- */
-public final class CreateNew<D extends DataDto, R extends DataDtoReference, U extends ContentListUI<D, R, U>> extends ContentListUIActionSupport<D, R, U> implements InsertMenuAction<U> {
-
- private final Predicate<Class<D>> typePredicate;
-
- public static <D extends DataDto, R extends DataDtoReference, U extends ContentListUI<D, R, U>> void installAction(U ui) {
- installAction(ui, t -> true);
- }
-
- public static <D extends DataDto, R extends DataDtoReference, U extends ContentListUI<D, R, U>> void installAction(U ui, Predicate<Class<D>> typePredicate) {
- CreateNew<D, R, U> action = new CreateNew<>(ui.getModel().getSource().getScope().getMainType(), typePredicate);
- init(ui, Objects.requireNonNull(ui).getCreate(), action);
- }
-
- protected CreateNew(Class<D> dataType, Predicate<Class<D>> typePredicate) {
- super(dataType, null, null, "add", null);
- this.typePredicate = typePredicate;
- setText(ContentListUII18nHelper.getListActionCreate(dataType));
- setTooltipText(ContentListUII18nHelper.getListActionCreateTip(dataType));
- setIcon(DtoIconHelper.getIcon(dataType));
- }
-
- @Override
- protected boolean canExecuteAction(ActionEvent e) {
- return super.canExecuteAction(e) && (typePredicate == null || typePredicate.test(getDataType()));
- }
-
- @Override
- protected void doActionPerformed(ActionEvent e, U ui) {
- NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree();
- ContentListUIModel<D, R> model = ui.getModel();
- ContentListUINavigationNode parentNode = (ContentListUINavigationNode) tree.getSelectedNode();
- DataDtoReference newReference = parentNode.getSpi().newReference(parentNode.getInitializer().getReferentialLocale());
- CreateNewOpenable.closeAndCreate(getDataSourceEditor(), parentNode, tree, model.getSource().getInitializer().getEditNode(), newReference);
- }
-}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUIHandler.java
=====================================
@@ -26,7 +26,6 @@ import fr.ird.observe.client.datasource.editor.api.content.actions.ResetForm;
import fr.ird.observe.client.datasource.editor.api.content.actions.id.ShowTechnicalInformations;
import fr.ird.observe.client.datasource.editor.api.content.actions.mode.ChangeMode;
import fr.ird.observe.client.datasource.editor.api.content.actions.open.ContentOpen;
-import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.CreateNewOpenable;
import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.DeleteOpenable;
import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.SaveOpenable;
import fr.ird.observe.dto.data.DataDto;
@@ -40,6 +39,8 @@ public abstract class ContentOpenableUIHandler<D extends DataDto, U extends Cont
protected abstract void installMoveAction();
+ protected abstract void installCreateNewAction();
+
@Override
public ContentOpenableUIModel<D> getModel() {
return ui.getModel();
@@ -62,7 +63,7 @@ public abstract class ContentOpenableUIHandler<D extends DataDto, U extends Cont
@Override
protected void initActions() {
- installCreateAction();
+ installCreateNewAction();
installResetAction();
installSaveAction();
installMoveAction();
@@ -75,10 +76,6 @@ public abstract class ContentOpenableUIHandler<D extends DataDto, U extends Cont
ChangeMode.installAction(ui);
}
- protected void installCreateAction() {
- CreateNewOpenable.installAction(ui);
- }
-
protected void installSaveAction() {
SaveOpenable.installAction(ui);
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/NavigationHandler.java
=====================================
@@ -86,17 +86,26 @@ public abstract class NavigationHandler<N extends NavigationNode> {
return getIcon(getNode().getScope().isSubNode());
}
+ /**
+ * @return {@code true} if this node can build some children
+ */
public boolean canBuildChildren() {
- return getNode().isNotLoaded() && getNode().isContainer();
+ return getNode().isContainer();
}
+ /**
+ * @return {@code true} if this node can load his children while opening
+ */
public boolean canLoadChildrenOnOpen() {
- // by default no sub loading
- return getNode().isContainer() && getNode().getRoot().getHandler().canLoadChildrenOnOpen();
+ // by default no sub loading except if loadChildrenOnOpen configuration property is on
+ return canBuildChildren() && getNode().getRoot().getHandler().canLoadChildrenOnOpen();
}
public void open() {
N node = getNode();
+ // We can't predicate if structure was modified, so let's always refresh internal states
+ //FIXME Find a way to make this more smooth (listen datasource modification API (to create!!!))
+ node.dirtyStructure();
node.getContext().open();
if (node.isLoaded()) {
// already loaded, nothing more to do
@@ -107,7 +116,7 @@ public abstract class NavigationHandler<N extends NavigationNode> {
}
node.loaded();
- if (canLoadChildrenOnOpen()) {
+ if (node.isRoot() || canLoadChildrenOnOpen()) {
Enumeration<?> children = getNode().children();
while (children.hasMoreElements()) {
NavigationNode childrenNode = (NavigationNode) children.nextElement();
@@ -126,13 +135,6 @@ public abstract class NavigationHandler<N extends NavigationNode> {
return getNode().getChildCount();
}
-// public void init() {
- // nothing to do by default
-// if (getNode().getScope().isAutoLoad()) {
-// getNode().loaded();
-// }
-// }
-
public final Icon getIcon(boolean small) {
String iconPath = getNode().getScope().getIconPath();
return DtoIconHelper.getIcon(Objects.requireNonNull(iconPath), small);
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/NavigationNode.java
=====================================
@@ -180,8 +180,16 @@ public abstract class NavigationNode extends DefaultMutableTreeNode implements W
}
public final void dirty() {
+ if (isNotLoaded()) {
+ // Avoid re-entrant code
+ return;
+ }
loaded = false;
log.info(String.format("%s Make dirty node %s", getInitializer().getLogPrefix(), this));
+ dirtyStructure();
+ }
+
+ public void dirtyStructure() {
withPrevious.clear();
withNext.clear();
previous.clear();
@@ -189,6 +197,10 @@ public abstract class NavigationNode extends DefaultMutableTreeNode implements W
}
public final void loaded() {
+ if (isLoaded()) {
+ // Avoid re-entrant code
+ return;
+ }
loaded = true;
// when node is loaded, refresh ui
getTreeModel().ifPresent(t -> nodeChanged());
@@ -309,6 +321,7 @@ public abstract class NavigationNode extends DefaultMutableTreeNode implements W
}
public final void reloadNodeData() {
+ dirty();
Object userObject = getContext().reload();
setUserObject(userObject);
loaded();
@@ -327,9 +340,9 @@ public abstract class NavigationNode extends DefaultMutableTreeNode implements W
//--------------------------------------------------------------------------------------------
public final void updateNode() {
- dirty();
reloadNodeData();
removeAllChildren();
+ dirty();
populateChildrenIfNotLoaded();
loaded();
}
@@ -366,22 +379,6 @@ public abstract class NavigationNode extends DefaultMutableTreeNode implements W
}
}
- //--------------------------------------------------------------------------------------------
- // Modify structure methods
- //--------------------------------------------------------------------------------------------
-
- public boolean isAdjusting() {
- return adjusting;
- }
-
- public void adjusting() {
- this.adjusting = true;
- }
-
- public void unAdjusting() {
- this.adjusting = false;
- }
-
public final void refreshToRoot() {
if (!isRoot()) {
log.info(String.format("Refresh to Root node: %s", this));
@@ -398,6 +395,22 @@ public abstract class NavigationNode extends DefaultMutableTreeNode implements W
}
}
+ //--------------------------------------------------------------------------------------------
+ // Modify structure methods
+ //--------------------------------------------------------------------------------------------
+
+ public boolean isAdjusting() {
+ return adjusting;
+ }
+
+ public void adjusting() {
+ this.adjusting = true;
+ }
+
+ public void unAdjusting() {
+ this.adjusting = false;
+ }
+
@Override
public void insert(MutableTreeNode newChild, int childIndex) {
Optional<NavigationTreeModel> treeModel = getTreeModel();
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/LlTripActionHelper.java
=====================================
@@ -24,7 +24,6 @@ package fr.ird.observe.client.datasource.editor.ll.data;
import fr.ird.observe.client.datasource.editor.api.content.ContentUI;
import fr.ird.observe.client.datasource.editor.api.content.data.TripActionHelper;
-import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUI;
import fr.ird.observe.dto.data.DataDto;
import fr.ird.observe.dto.data.ll.common.TripReference;
@@ -38,15 +37,15 @@ import java.util.function.Predicate;
*/
public class LlTripActionHelper extends TripActionHelper {
- public static <D extends DataDto> Predicate<Class<D>> createNewLandingActionPredicate(ContentListUI<D, ?, ?> ui) {
+ public static <D extends DataDto> Predicate<Class<D>> createNewLandingActionPredicate(ContentUI ui) {
return (Class<D> r) -> new LlTripActionHelper(ui).gotoTripLogbookTab();
}
- public static <D extends DataDto> Predicate<Class<D>> createNewLogbookActionPredicate(ContentListUI<D, ?, ?> ui) {
+ public static <D extends DataDto> Predicate<Class<D>> createNewLogbookActionPredicate(ContentUI ui) {
return (Class<D> r) -> new LlTripActionHelper(ui).gotoTripLogbookTab();
}
- public static <D extends DataDto> Predicate<Class<D>> createNewObservationActionPredicate(ContentListUI<D, ?, ?> ui) {
+ public static <D extends DataDto> Predicate<Class<D>> createNewObservationActionPredicate(ContentUI ui) {
return (Class<D> r) -> new LlTripActionHelper(ui).gotoTripObservationTab();
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivitySampleUIMoveTreeAdapter.java
=====================================
@@ -38,7 +38,7 @@ public class ActivitySampleUIMoveTreeAdapter extends DefaultSingleMoveTreeAdapte
public static void moveFromActivityToActivity(NavigationTree tree, ActivitySampleUINavigationNode referenceNode, String activityId) {
ActivityUINavigationNode newContainerNode = referenceNode.getParent().getParent()
.getActivityUINavigationNode(activityId);
- newContainerNode.refreshToRoot();
+ newContainerNode.updateNode();
ActivitySampleUINavigationNode node = newContainerNode.getActivitySampleUINavigationNode();
tree.selectSafeNode(node);
}
@@ -46,7 +46,7 @@ public class ActivitySampleUIMoveTreeAdapter extends DefaultSingleMoveTreeAdapte
public static void moveFromTripToActivity(NavigationTree tree, SampleUINavigationNode referenceNode, String activityId) {
ActivityUINavigationNode newContainerNode = referenceNode.getParent().getParent()
.getLogbookActivityListUINavigationNode().getActivityUINavigationNode(activityId);
- newContainerNode.reloadNodeData();
+ newContainerNode.updateNode();
ActivitySampleUINavigationNode node = newContainerNode.getActivitySampleUINavigationNode();
tree.selectSafeNode(node);
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/PsTripActionHelper.java
=====================================
@@ -24,7 +24,6 @@ package fr.ird.observe.client.datasource.editor.ps.data;
import fr.ird.observe.client.datasource.editor.api.content.ContentUI;
import fr.ird.observe.client.datasource.editor.api.content.data.TripActionHelper;
-import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUI;
import fr.ird.observe.dto.data.DataDto;
import fr.ird.observe.dto.data.ps.common.TripReference;
@@ -40,11 +39,11 @@ public class PsTripActionHelper extends TripActionHelper {
// Ready for v9
@SuppressWarnings("unused")
- public static <D extends DataDto> Predicate<Class<D>> createNewLogbookActionPredicate(ContentListUI<D, ?, ?> ui) {
+ public static <D extends DataDto> Predicate<Class<D>> createNewLogbookActionPredicate(ContentUI ui) {
return (Class<D> r) -> new PsTripActionHelper(ui).gotoTripLogbookTab();
}
- public static <D extends DataDto> Predicate<Class<D>> createNewObservationActionPredicate(ContentListUI<D, ?, ?> ui) {
+ public static <D extends DataDto> Predicate<Class<D>> createNewObservationActionPredicate(ContentUI ui) {
return (Class<D> r) -> new PsTripActionHelper(ui).gotoTripObservationTab();
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripUIHandler.java
=====================================
@@ -21,12 +21,11 @@
*/
package fr.ird.observe.client.datasource.editor.ps.data.common;
+import fr.ird.observe.client.datasource.editor.api.content.actions.create.CreateNewOpenableUI;
import fr.ird.observe.client.datasource.editor.api.content.data.TripUIHelper;
import fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpenableUILayoutFocusTraversalPolicy;
-import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.CreateNewOpenable;
import fr.ird.observe.client.datasource.editor.api.content.spi.ContentUIReferenceCache;
import fr.ird.observe.client.datasource.editor.ps.data.observation.ActivityUINavigationNode;
-import fr.ird.observe.client.datasource.editor.ps.data.observation.RouteUINavigationNode;
import fr.ird.observe.dto.data.ps.common.TripDto;
import fr.ird.observe.dto.form.Form;
@@ -61,16 +60,12 @@ class TripUIHandler extends GeneratedTripUIHandler {
}
@Override
- protected void installCreateAction() {
- super.installCreateAction();
- CreateNewOpenable.installAction(ui,
- ui.getAddRoute(),
- RouteUINavigationNode.SPI,
- n -> ((TripUINavigationNode) n).getRouteListUINavigationNode());
- CreateNewOpenable.installAction(ui,
- ui.getAddActivity(),
- ActivityUINavigationNode.SPI,
- n -> ((TripUINavigationNode) n).getRouteListUINavigationNode().getRouteUINavigationNode(ui.getModel().getClientUIContext().getObserveEditModel().getPs().getObservationRoute().getId()).getActivityListUINavigationNode());
+ protected void installCreateNewAction() {
+ super.installCreateNewAction();
+ CreateNewOpenableUI.installAction(ui,
+ ui.getAddActivity(),
+ ActivityUINavigationNode.SPI,
+ n -> ((TripUINavigationNode) n).getRouteListUINavigationNode().getRouteUINavigationNode(ui.getModel().getClientUIContext().getObserveEditModel().getPs().getObservationRoute().getId()).getActivityListUINavigationNode());
}
@Override
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteUIHandler.java
=====================================
@@ -22,7 +22,6 @@
package fr.ird.observe.client.datasource.editor.ps.data.observation;
import fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpenableUILayoutFocusTraversalPolicy;
-import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.CreateNewOpenable;
import java.awt.Component;
import java.awt.Container;
@@ -51,13 +50,4 @@ class RouteUIHandler extends GeneratedRouteUIHandler {
}
};
}
-
- @Override
- protected void installCreateAction() {
- super.installCreateAction();
- CreateNewOpenable.installAction(ui,
- ui.getAddActivity(),
- ActivityUINavigationNode.SPI,
- n -> ((RouteUINavigationNode) n).getActivityListUINavigationNode());
- }
}
=====================================
client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/CapabilityDescriptor.java
=====================================
@@ -22,9 +22,13 @@ package fr.ird.observe.client.datasource.editor.spi.content;
* #L%
*/
+import fr.ird.observe.dto.IdDto;
import fr.ird.observe.dto.reference.DtoReference;
import fr.ird.observe.spi.module.BusinessProject;
+import fr.ird.observe.toolkit.dto.navigation.edit.EditNode;
+import org.apache.commons.lang3.StringUtils;
+import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -100,10 +104,19 @@ public class CapabilityDescriptor {
" if (reference instanceof %1$s.%2$sReference) {\n" +
" return actualPosition + getNode().getChildrenPosition((%1$s.%2$sReference) reference, %3$s);\n" +
" }\n";
+ public static final String INSTALL_CREATE_NEW_ACTION = "" +
+ " CreateNewOpenableUI.installAction(ui);\n";
+ public static final String INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE = "" +
+ " CreateNewOpenableUI.installAction(ui, %1$s.%2$s(ui));\n";
+ public static final String INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE2 = "" +
+ " CreateNewOpenableUI.installAction2(ui, %1$s.class, %2$s.class, %3$s.%4$s(ui));\n";
+ public static final String INSTALL_CREATE_NEW_ACTION2 = "" +
+ " CreateNewOpenableUI.installAction2(ui, %1$s.class, %2$s.class, t-> true);\n";
private final ContentNodeType contentNodeType;
private final CapacityNodeType capacityNodeType;
private final String nodeTypeName;
private final String optionalPredicate;
+ private final Class<? extends IdDto> optionalDtoType;
private final Class<? extends DtoReference> optionalReferenceType;
private final String nodeTypePackage;
private final String nodeTypeSimpleName;
@@ -113,13 +126,46 @@ public class CapabilityDescriptor {
CapacityNodeType capacityNodeType = CapacityNodeType.parseKey(key);
String optionalPredicate = capacityNodeType.getPredicate(key);
Class<? extends DtoReference> optionalReferenceType = capacityNodeType.getReference(businessProject, nodeTypeName);
- return new CapabilityDescriptor(contentNodeType, capacityNodeType, nodeTypeName, optionalPredicate, optionalReferenceType);
+ Class<? extends IdDto> optionalDtoType = contentNodeType.getDto(businessProject, nodeTypeName);
+ return new CapabilityDescriptor(contentNodeType, capacityNodeType, nodeTypeName, optionalPredicate, optionalDtoType, optionalReferenceType);
}
- public CapabilityDescriptor(ContentNodeType contentNodeType, CapacityNodeType capacityNodeType, String nodeTypeName, String optionalPredicate, Class<? extends DtoReference> optionalReferenceType) {
+ public static String generateCapabilityAddNewOpenAction(CapacityNodeType capacityNodeType, ContentNodeType contentNodeType, String nodeTypeName, List<String> imports, EditNode<?> editNode, String packageName, boolean notMainNode) {
+ if (contentNodeType == ContentNodeType.OPEN) {
+ if (notMainNode) {
+ if (editNode.getLevel() == 2) {
+ String predicateMethodName = String.format("createNew%sActionPredicate", StringUtils.capitalize(editNode.getSubModule().getName().toLowerCase()));
+ String helperName = StringUtils.capitalize(editNode.getModule().getName().toLowerCase()) + "TripActionHelper";
+ imports.add(packageName.substring(0, packageName.lastIndexOf(".") + 1) + helperName);
+ return String.format(INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE2, nodeTypeName, editNode.getType().getName(), helperName, predicateMethodName);
+ }
+ return String.format(INSTALL_CREATE_NEW_ACTION2, nodeTypeName, editNode.getType().getName());
+ }
+ return INSTALL_CREATE_NEW_ACTION;
+ }
+ if (contentNodeType == ContentNodeType.LIST) {
+ if (editNode.getLevel() == 2) {
+ String predicateMethodName = String.format("createNew%sActionPredicate", StringUtils.capitalize(editNode.getSubModule().getName().toLowerCase()));
+ String helperName = StringUtils.capitalize(editNode.getModule().getName().toLowerCase()) + "TripActionHelper";
+ imports.add(packageName.substring(0, packageName.lastIndexOf(".") + 1) + helperName);
+ if (notMainNode) {
+ return String.format(INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE2, nodeTypeName, editNode.getType().getName(), helperName, predicateMethodName);
+ }
+ return String.format(INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE, helperName, predicateMethodName);
+ }
+ if (notMainNode) {
+ return String.format(INSTALL_CREATE_NEW_ACTION2, nodeTypeName, editNode.getType().getName());
+ }
+ return INSTALL_CREATE_NEW_ACTION;
+ }
+ return "";
+ }
+
+ public CapabilityDescriptor(ContentNodeType contentNodeType, CapacityNodeType capacityNodeType, String nodeTypeName, String optionalPredicate, Class<? extends IdDto> optionalDtoType, Class<? extends DtoReference> optionalReferenceType) {
this.contentNodeType = Objects.requireNonNull(contentNodeType);
this.capacityNodeType = Objects.requireNonNull(capacityNodeType);
this.nodeTypeName = Objects.requireNonNull(nodeTypeName);
+ this.optionalDtoType = optionalDtoType;
int lastIndex = nodeTypeName.lastIndexOf(".");
nodeTypePackage = nodeTypeName.substring(0, lastIndex);
nodeTypeSimpleName = nodeTypeName.substring(lastIndex + 1);
@@ -160,6 +206,10 @@ public class CapabilityDescriptor {
return optionalReferenceType;
}
+ public Class<? extends IdDto> getOptionalDtoType() {
+ return optionalDtoType;
+ }
+
public String getOptionalReferenceTypeCleanSimpleName() {
return optionalReferenceType.getSimpleName().replace("Reference", "");
}
@@ -291,6 +341,10 @@ public class CapabilityDescriptor {
}
}
+ public String generateCapabilityAddNewOpenAction(List<String> imports, EditNode<?> editNode, String packageName, boolean notMainNode) {
+ return generateCapabilityAddNewOpenAction(capacityNodeType, contentNodeType, nodeTypeName, imports, editNode, packageName, notMainNode);
+ }
+
protected String getOptionalReferenceTypePackage() {
return optionalReferenceType.getPackage().getName();
}
=====================================
client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/ContentNodeType.java
=====================================
@@ -49,6 +49,10 @@ import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNod
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationContext;
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationNode;
import fr.ird.observe.client.datasource.editor.spi.DetectContentFiles;
+import fr.ird.observe.dto.IdDto;
+import fr.ird.observe.spi.module.BusinessModule;
+import fr.ird.observe.spi.module.BusinessProject;
+import io.ultreia.java4all.lang.Objects2;
/**
* Created on 15/11/2020.
@@ -86,12 +90,22 @@ public enum ContentNodeType {
public boolean accept(DetectContentFiles detectContentFiles, String jaxxUiPath) {
return detectContentFiles.isContentOpenableUI(jaxxUiPath);
}
+
+ @Override
+ public Class<? extends IdDto> getDto(BusinessProject businessProject, String nodeTypeName) {
+ return getDto0(businessProject, nodeTypeName);
+ }
},
LIST(ContentListUINavigationNode.class, ContentListUINavigationContext.class, ContentListUIModel.class) {
@Override
public boolean accept(DetectContentFiles detectContentFiles, String jaxxUiPath) {
return detectContentFiles.isContentListUI(jaxxUiPath);
}
+
+ @Override
+ public Class<? extends IdDto> getDto(BusinessProject businessProject, String nodeTypeName) {
+ return getDto0(businessProject, nodeTypeName);
+ }
},
REFERENTIAL_HOME(ReferentialHomeUINavigationNode.class, ReferentialHomeUINavigationContext.class, ReferentialHomeUIModel.class) {
@Override
@@ -139,4 +153,29 @@ public enum ContentNodeType {
public Class<? extends ContentUIModel> getUiModelType() {
return uiModelType;
}
+
+
+ public Class<? extends IdDto> getDto(BusinessProject businessProject, String nodeTypeName) {
+ return null;
+ }
+
+ Class<? extends IdDto> getDto0(BusinessProject businessProject, String nodeTypeName) {
+ String nodeTypePackage = nodeTypeName.substring(0, nodeTypeName.lastIndexOf("."));
+ BusinessModule childBusinessModule = businessProject.getBusinessModule(nodeTypePackage);
+ String childReferenceName = nodeTypeName
+ .replace("ListUI", "UI")
+ .replace("UINavigationNode", "")
+ .replace("fr.ird.observe.client.datasource.editor", "fr.ird.observe.dto")
+ .replace(childBusinessModule.getName() + ".", "")
+ .replace("referential.", "referential." + childBusinessModule.getName() + ".")
+ .replace("data.", "data." + childBusinessModule.getName() + ".");
+
+ String referenceTypePackage = childReferenceName.substring(0, childReferenceName.lastIndexOf('.'));
+ String referenceTypeSimpleName = childReferenceName.substring(childReferenceName.lastIndexOf('.') + 1) + "Dto";
+ if (referenceTypeSimpleName.startsWith("Activity") && !referenceTypeSimpleName.startsWith("ActivityD")) {
+ referenceTypeSimpleName = referenceTypeSimpleName.substring("Activity".length());
+ }
+ return Objects2.forName(referenceTypePackage + "." + referenceTypeSimpleName);
+ }
+
}
=====================================
client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java
=====================================
@@ -22,10 +22,15 @@ package fr.ird.observe.client.datasource.editor.spi.content.helper;
* #L%
*/
-import fr.ird.observe.client.datasource.editor.api.content.data.list.actions.CreateNew;
+import fr.ird.observe.client.datasource.editor.api.content.actions.create.CreateNewOpenableUI;
import fr.ird.observe.client.datasource.editor.api.content.data.list.actions.MoveMultiple;
import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.MoveOpenable;
+import fr.ird.observe.client.datasource.editor.spi.content.CapabilityDescriptor;
+import fr.ird.observe.client.datasource.editor.spi.content.CapacityNodeType;
+import fr.ird.observe.client.datasource.editor.spi.content.ContentNodeType;
import fr.ird.observe.client.datasource.editor.spi.content.GenerateContentUISupport;
+import fr.ird.observe.client.datasource.editor.spi.content.GenerateJavaFileSupport;
+import fr.ird.observe.dto.IdDto;
import fr.ird.observe.toolkit.dto.navigation.edit.EditNode;
import fr.ird.observe.toolkit.dto.navigation.select.SelectNode;
import org.apache.commons.lang3.StringUtils;
@@ -63,15 +68,10 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport {
" protected void installMoveAction() {\n" +
" MoveMultiple.installMoveAction(ui, ui.getModel().getParentService()::%1$s);\n" +
" }\n\n";
- public static final String INSTALL_CREATE_NEW_ACTION = "" +
+ public static final String INSTALL_CREATE_NEW_ACTION_METHOD = "" +
" @Override\n" +
" protected void installCreateNewAction() {\n" +
- " CreateNew.installAction(ui);\n" +
- " }\n\n";
- public static final String INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE = "" +
- " @Override\n" +
- " protected void installCreateNewAction() {\n" +
- " CreateNew.installAction(ui, %1$s.%2$s(ui));\n" +
+ "%2$s" +
" }\n\n";
public static final String ON_END_OPEN_UI = "" +
" @Override\n" +
@@ -80,6 +80,39 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport {
" super.onEndOpenUI();\n" +
" }\n\n";
+
+ public static String generateCreateNewAction(List<String> imports, GenerateJavaFileSupport generator, EditNode<?> editNode) {
+ StringBuilder createChildrenMethodBuilder = new StringBuilder();
+ String mainMethod = CapabilityDescriptor.generateCapabilityAddNewOpenAction(CapacityNodeType.REFERENCE, ContentNodeType.OPEN, generator.scopeBuilder.nodeType, imports, editNode, generator.packageName, false);
+ createChildrenMethodBuilder.append(mainMethod);
+ if (generator.capabilitiesDescriptor != null) {
+ for (CapabilityDescriptor capabilityDescriptor : generator.capabilitiesDescriptor) {
+ Class<? extends IdDto> dtoType = capabilityDescriptor.getOptionalDtoType();
+ if (dtoType == null) {
+ continue;
+ }
+ EditNode<?> childEditNode = generator.editModel.forDtoType(dtoType).orElse(null);
+ if (childEditNode != null) {
+ String addNodeMethod = capabilityDescriptor.generateCapabilityAddNewOpenAction(imports, childEditNode, generator.packageName, true);
+ createChildrenMethodBuilder.append(addNodeMethod);
+ }
+ }
+ }
+ return String.format(INSTALL_CREATE_NEW_ACTION_METHOD, generator.cleanClassName, createChildrenMethodBuilder.toString());
+ }
+
+ public static String generateListCreateNewAction(List<String> imports, GenerateJavaFileSupport generator, EditNode<?> editNode) {
+ StringBuilder createChildrenMethodBuilder = new StringBuilder();
+ String mainMethod = CapabilityDescriptor.generateCapabilityAddNewOpenAction(CapacityNodeType.REFERENCE, ContentNodeType.OPEN, generator.scopeBuilder.nodeChildType, imports, editNode, generator.packageName, false);
+ createChildrenMethodBuilder.append(mainMethod);
+// for (CapabilityDescriptor capabilityDescriptor : generator.capabilitiesDescriptor) {
+// capabilityDescriptor.getOptionalReferenceType()
+// String addNodeMethod = capabilityDescriptor.generateCapabilityAddNewOpenAction(imports, editNode, generator.packageName, true);
+// createChildrenMethodBuilder.append(addNodeMethod);
+// }
+ return String.format(INSTALL_CREATE_NEW_ACTION_METHOD, generator.cleanClassName, createChildrenMethodBuilder.toString());
+ }
+
public ContentUIHandlerHelper(GenerateContentUISupport generator) {
super(generator);
}
@@ -101,7 +134,9 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport {
if (editNode.getLevel() == 1) {
methodName = "getParentBrothers";
}
+ imports.add(CreateNewOpenableUI.class.getName());
extraMethods += String.format(INSTALL_MOVE_SIMPLE_ACTION, methodName);
+ extraMethods += generateCreateNewAction(imports, generator, editNode);
}
return generate(ContentUIHandlerHelper.UI_HANDLER_GENERATED, imports, generator.cleanClassName, uiHandler, dtoType, extraMethods);
}
@@ -110,20 +145,12 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport {
String helperName = StringUtils.capitalize(editNode.getModule().getName().toLowerCase()) + "TripActionHelper";
imports.add(generator.packageName.substring(0, generator.packageName.lastIndexOf(".") + 1) + helperName);
imports.add(MoveMultiple.class.getName());
- imports.add(CreateNew.class.getName());
- switch (editNode.getLevel()) {
- case 1:
- extraMethods += String.format(ON_END_OPEN_UI, helperName);
- extraMethods += INSTALL_CREATE_NEW_ACTION;
- methodName = "getParentBrothers";
- break;
- case 2:
- String predicateMethodName = String.format("createNew%sActionPredicate", StringUtils.capitalize(editNode.getSubModule().getName().toLowerCase()));
- extraMethods += String.format(INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE, helperName, predicateMethodName);
- break;
- default:
- extraMethods += INSTALL_CREATE_NEW_ACTION;
+ imports.add(CreateNewOpenableUI.class.getName());
+ if (editNode.getLevel() == 1) {
+ extraMethods += String.format(ON_END_OPEN_UI, helperName);
+ methodName = "getParentBrothers";
}
+ extraMethods += generateListCreateNewAction(imports, generator, editNode);
extraMethods += String.format(INSTALL_MOVE_ACTION, methodName);
return generate(ContentUIHandlerHelper.UI_HANDLER_GENERATED2, imports, generator.cleanClassName, uiHandler, dtoType, extraType, extraMethods);
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fb640b84faa41874e6b8d447f…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fb640b84faa41874e6b8d447f…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 2 commits: Change navigation actions accelerators
by Tony CHEMIT 03 Dec '20
by Tony CHEMIT 03 Dec '20
03 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
9f494e6a by Tony Chemit at 2020-12-03T09:41:35+01:00
Change navigation actions accelerators
- - - - -
e27e8a10 by Tony Chemit at 2020-12-03T11:41:36+01:00
Improve keystrokes placeholders.
- - - - -
30 changed files:
- client/core/src/main/java/fr/ird/observe/client/util/ObserveKeyStrokesSupport.java
- + client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/ObserveKeyStrokesActions.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/actions/Cancel.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/actions/Close.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/actions/CopyToClipBoard.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/actions/NextStep.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/actions/PreviousStep.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/ConfigModel.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/SelectDataUIHandler.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/ChooseFileReport.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/ChooseBackupDirectory.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/SelectDoBackup.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/DataSourceInformation.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/RegisterCopy.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/RegisterDelete.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/actions/CollapseAll.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/actions/DataSourceInformation.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/actions/ExpandAll.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/actions/SelectAll.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/actions/UnselectAll.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/validate/actions/ChooseValidationReportFile.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/validate/actions/GenerateValidationReport.java
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/validate/actions/SaveReport.java
- + client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/actions/ChangeEditorFocus.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/ResetForm.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/ToggleConfigure.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/ToggleInsert.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/mode/ChangeMode.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/actions/DeleteEdit.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/014fc593bfe01cd2878b6636…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/014fc593bfe01cd2878b6636…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Clean Sample move code (one more service removed)
by Tony CHEMIT 02 Dec '20
by Tony CHEMIT 02 Dec '20
02 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
014fc593 by Tony Chemit at 2020-12-02T11:12:38+01:00
Clean Sample move code (one more service removed)
- - - - -
8 changed files:
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivitySampleUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/SampleListUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/SampleUIHandler.java
- server/core/src/main/filtered-resources/mapping
- services/api/src/main/java/fr/ird/observe/services/service/data/ll/logbook/ActivitySampleService.java
- − services/api/src/main/java/fr/ird/observe/services/service/data/ll/logbook/SampleService.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivitySampleServiceLocal.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/SampleServiceLocal.java
Changes:
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivitySampleUIHandler.java
=====================================
@@ -34,8 +34,6 @@ import org.nuiton.jaxx.runtime.context.JAXXContextEntryDef;
import java.awt.Component;
import java.awt.Container;
-import static fr.ird.observe.client.datasource.editor.ll.data.logbook.SampleUIHandler.toTrip;
-
/**
* Created on 12/5/14.
*
@@ -88,7 +86,7 @@ public class ActivitySampleUIHandler extends GeneratedActivitySampleUIHandler {
.setAskNewParentMessage(I18n.t("observe.data.ll.logbook.Sample.action.move.choose.parent.activity.message"))
.setParentCandidates(this.getLlLogbookActivityService()::getBrothers);
},
- r -> toTrip(r) ? getLlLogbookActivitySampleService()::moveToTrip : getLlLogbookActivitySampleService()::move,
+ r -> getLlLogbookActivitySampleService()::move,
r -> new ActivitySampleUIMoveTreeAdapter());
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/SampleListUIHandler.java
=====================================
@@ -37,7 +37,7 @@ class SampleListUIHandler extends GeneratedSampleListUIHandler {
protected void installMoveAction() {
MoveMultiple.installMoveAction(ui,
SampleUIHandler.newSupplier(this, getModel()::toMoveRequest),
- r -> SampleUIHandler.toTrip(r) ? getLlLogbookSampleService()::move : getLlLogbookSampleService()::moveToActivity,
+ r -> getLlLogbookSampleService()::move,
r -> SampleUIHandler.toTrip(r) ? new DefaultMultipleMoveTreeAdapter() : new ActivitySampleUIMoveTreeAdapter());
}
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/SampleUIHandler.java
=====================================
@@ -118,7 +118,7 @@ class SampleUIHandler extends GeneratedSampleUIHandler {
protected void installMoveAction() {
MoveOpenable.installAction(ui,
newSupplier(this, getModel()::toMoveRequest),
- r -> toTrip(r) ? getLlLogbookSampleService()::move : getLlLogbookSampleService()::moveToActivity,
+ r -> getLlLogbookSampleService()::move,
r -> toTrip(r) ? new DefaultSingleMoveTreeAdapter() : new ActivitySampleUIMoveTreeAdapter());
}
=====================================
server/core/src/main/filtered-resources/mapping
=====================================
@@ -128,7 +128,6 @@ GET /api/v1/data/ll/logbook/ActivitySampleService/loadDto
GET /api/v1/data/ll/logbook/ActivitySampleService/loadForm v1.data.ll.logbook.ActivitySampleServiceRestApi.loadForm
GET /api/v1/data/ll/logbook/ActivitySampleService/loadReferenceToRead v1.data.ll.logbook.ActivitySampleServiceRestApi.loadReferenceToRead
POST /api/v1/data/ll/logbook/ActivitySampleService/move v1.data.ll.logbook.ActivitySampleServiceRestApi.move
-POST /api/v1/data/ll/logbook/ActivitySampleService/moveToTrip v1.data.ll.logbook.ActivitySampleServiceRestApi.moveToTrip
GET /api/v1/data/ll/logbook/ActivitySampleService/preCreate v1.data.ll.logbook.ActivitySampleServiceRestApi.preCreate
POST /api/v1/data/ll/logbook/ActivitySampleService/save v1.data.ll.logbook.ActivitySampleServiceRestApi.save
DELETE /api/v1/data/ll/logbook/ActivityService/delete v1.data.ll.logbook.ActivityServiceRestApi.delete
@@ -149,7 +148,6 @@ GET /api/v1/data/ll/logbook/SampleService/loadDto
GET /api/v1/data/ll/logbook/SampleService/loadForm v1.data.ll.logbook.SampleServiceRestApi.loadForm
GET /api/v1/data/ll/logbook/SampleService/loadReferenceToRead v1.data.ll.logbook.SampleServiceRestApi.loadReferenceToRead
POST /api/v1/data/ll/logbook/SampleService/move v1.data.ll.logbook.SampleServiceRestApi.move
-POST /api/v1/data/ll/logbook/SampleService/moveToActivity v1.data.ll.logbook.SampleServiceRestApi.moveToActivity
GET /api/v1/data/ll/logbook/SampleService/preCreate v1.data.ll.logbook.SampleServiceRestApi.preCreate
POST /api/v1/data/ll/logbook/SampleService/save v1.data.ll.logbook.SampleServiceRestApi.save
GET /api/v1/data/ll/logbook/SetCatchService/getCatchSpecies v1.data.ll.logbook.SetCatchServiceRestApi.getCatchSpecies
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ll/logbook/ActivitySampleService.java
=====================================
@@ -43,10 +43,5 @@ public interface ActivitySampleService extends GeneratedActivitySampleService {
@Write
@Post
@MethodCredential(Permission.WRITE_DATA)
- void moveToTrip(String newTripId, ImmutableSet<String> sampleIds);
-
- @Write
- @Post
- @MethodCredential(Permission.WRITE_DATA)
- void move(String newActivityId, ImmutableSet<String> sampleIds);
+ void move(String newParentId, ImmutableSet<String> sampleIds);
}
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ll/logbook/SampleService.java deleted
=====================================
@@ -1,40 +0,0 @@
-package fr.ird.observe.services.service.data.ll.logbook;
-
-/*
- * #%L
- * ObServe Services :: API
- * %%
- * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.ImmutableSet;
-import fr.ird.observe.security.Permission;
-import fr.ird.observe.services.spi.MethodCredential;
-import fr.ird.observe.services.spi.Write;
-import io.ultreia.java4all.http.spi.Post;
-
-/**
- * @author Tony Chemit - dev(a)tchemit.fr
- */
-public interface SampleService extends GeneratedSampleService {
-
- @MethodCredential(Permission.WRITE_DATA)
- @Write
- @Post
- void moveToActivity(String newActivityId, ImmutableSet<String> sampleIds);
-}
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivitySampleServiceLocal.java
=====================================
@@ -29,6 +29,7 @@ import fr.ird.observe.dto.data.ll.logbook.SampleReference;
import fr.ird.observe.dto.reference.DataDtoReferenceSet;
import fr.ird.observe.dto.result.SaveResultDto;
import fr.ird.observe.entities.DataNotFoundException;
+import fr.ird.observe.entities.Entity;
import fr.ird.observe.entities.data.ll.common.Trip;
import fr.ird.observe.entities.data.ll.logbook.Activity;
import fr.ird.observe.entities.data.ll.logbook.Sample;
@@ -71,37 +72,44 @@ public class ActivitySampleServiceLocal extends EditableDataServiceLocalSupport<
}
@Override
- public void moveToTrip(String newTripId, ImmutableSet<String> sampleIds) {
- //FIXME Manage fields to remove like associated observed activity
+ public void move(String newParentId, ImmutableSet<String> sampleIds) {
+ Entity entity = loadEntity0(newParentId);
+ if (entity instanceof Activity) {
+ moveToActivity((Activity) entity, sampleIds);
+ } else {
+ moveToTrip((Trip) entity, sampleIds);
+ }
+ }
+
+ private void moveToActivity(Activity newActivity, ImmutableSet<String> sampleIds) {
String sampleLogbookId = sampleIds.iterator().next();
+ //FIXME Manage fields to remove like associated observed activity
Activity oldActivity = getActivityLonglineLogbook(sampleLogbookId);
Sample sample = oldActivity.getSample();
if (!sampleLogbookId.equals(sample.getTopiaId())) {
throw new DataNotFoundException(getApplicationLocale(), SampleDto.class, sampleLogbookId);
}
- Trip oldTrip = getParent(Trip.SPI, Trip.PROPERTY_ACTIVITY_LOGBOOK, oldActivity.getTopiaId());
- Trip newTrip = Trip.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), newTripId);
oldActivity.setSample(null);
- newTrip.addSample(sample);
- TripServiceLocal.copyTripLogbookMetaData(oldTrip, newTrip);
+ newActivity.setSample(sample);
saveEntity(Activity.SPI, oldActivity);
- saveEntity(Trip.SPI, newTrip);
+ saveEntity(Activity.SPI, newActivity);
}
- @Override
- public void move(String newActivityId, ImmutableSet<String> sampleIds) {
- String sampleLogbookId = sampleIds.iterator().next();
+ private void moveToTrip(Trip newTrip, ImmutableSet<String> sampleIds) {
//FIXME Manage fields to remove like associated observed activity
+ String sampleLogbookId = sampleIds.iterator().next();
Activity oldActivity = getActivityLonglineLogbook(sampleLogbookId);
- Activity newActivity = Activity.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), newActivityId);
Sample sample = oldActivity.getSample();
if (!sampleLogbookId.equals(sample.getTopiaId())) {
throw new DataNotFoundException(getApplicationLocale(), SampleDto.class, sampleLogbookId);
}
+ Trip oldTrip = getParent(Trip.SPI, Trip.PROPERTY_ACTIVITY_LOGBOOK, oldActivity.getTopiaId());
+
oldActivity.setSample(null);
- newActivity.setSample(sample);
+ newTrip.addSample(sample);
+ TripServiceLocal.copyTripLogbookMetaData(oldTrip, newTrip);
saveEntity(Activity.SPI, oldActivity);
- saveEntity(Activity.SPI, newActivity);
+ saveEntity(Trip.SPI, newTrip);
}
private Activity getActivityLonglineLogbook(String sampleLogbookId) {
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/SampleServiceLocal.java
=====================================
@@ -27,6 +27,7 @@ import com.google.common.collect.Iterables;
import fr.ird.observe.dto.data.ll.logbook.SampleDto;
import fr.ird.observe.dto.data.ll.logbook.SampleReference;
import fr.ird.observe.dto.result.SaveResultDto;
+import fr.ird.observe.entities.Entity;
import fr.ird.observe.entities.data.ll.common.Trip;
import fr.ird.observe.entities.data.ll.logbook.Activity;
import fr.ird.observe.entities.data.ll.logbook.Sample;
@@ -73,13 +74,22 @@ public class SampleServiceLocal extends OpenableDataServiceLocalSupport<Trip, Sa
}
@Override
- public void moveToActivity(String newActivityId, ImmutableSet<String> sampleIds) {
+ public void move(String newParentId, ImmutableSet<String> ids) {
+ Entity entity = loadEntity0(newParentId);
+ if (entity instanceof Activity) {
+ moveToActivity((Activity) entity, ids);
+ } else {
+ // default behaviour
+ super.move(newParentId, ids);
+ }
+ }
+
+ private void moveToActivity(Activity newActivity, ImmutableSet<String> sampleIds) {
String sampleLogbookId = sampleIds.iterator().next();
Trip oldTrip = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Trip.class, Trip.PROPERTY_SAMPLE, sampleLogbookId);
- Trip newTrip = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Trip.class, Trip.PROPERTY_ACTIVITY_LOGBOOK, newActivityId);
+ Trip newTrip = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Trip.class, Trip.PROPERTY_ACTIVITY_LOGBOOK, newActivity.getTopiaId());
Sample sample = Sample.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), sampleLogbookId);
oldTrip.removeSample(sample);
- Activity newActivity = Activity.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), newActivityId);
//WARNING need to recreate entity, but ids are not changed :)
newActivity.setSample(getTopiaPersistenceContext().getLlLogbookSampleDao().create(sample));
if (TripServiceLocal.copyTripLogbookMetaData(oldTrip, newTrip)) {
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/014fc593bfe01cd2878b6636e…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/014fc593bfe01cd2878b6636e…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 5 commits: Move generateHomeId to DataSourceService, and then can now delete TripService...
by Tony CHEMIT 02 Dec '20
by Tony CHEMIT 02 Dec '20
02 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
c2a5a240 by Tony Chemit at 2020-12-02T10:30:47+01:00
Move generateHomeId to DataSourceService, and then can now delete TripService and let toolkit generates it for us.
- - - - -
d6a73b1b by Tony Chemit at 2020-12-02T10:39:13+01:00
Review TargetSampleAwareService and clean dedicated services
- - - - -
1923b958 by Tony Chemit at 2020-12-02T10:40:27+01:00
Review LonglineCompositionDto and remove the service methods
- - - - -
de883bd1 by Tony Chemit at 2020-12-02T10:40:38+01:00
Remove generated service
- - - - -
1420acb5 by Tony Chemit at 2020-12-02T10:40:51+01:00
Clean some code
- - - - -
30 changed files:
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/actions/TripUIGenerateHomeId.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/BranchlineUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/LonglinePositionHelper.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/actions/SetDetailCompositionUIDeleteAll.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUINavigationContext.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUINavigationContext.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUINavigationContext.java
- models/dto/src/main/java/fr/ird/observe/dto/data/ll/observation/LonglineCompositionDto.java
- models/dto/src/main/models/Observe-30-data-ll-observation.model
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetImpl.java
- server/core/src/main/filtered-resources/mapping
- − services/api/src/main/java/fr/ird/observe/services/service/data/ll/common/TripService.java
- − services/api/src/main/java/fr/ird/observe/services/service/data/ll/observation/SetDetailCompositionService.java
- − services/api/src/main/java/fr/ird/observe/services/service/data/ps/common/TripService.java
- − services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/DiscardedTargetSampleService.java
- services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/NonTargetSampleService.java
- − services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/SetService.java
- services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/TargetSampleAwareService.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/common/TripServiceLocal.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/SetDetailCompositionServiceLocal.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/NonTargetSampleServiceLocal.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/TargetSampleServiceLocalSupport.java
- services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ps/observation/DiscardedTargetSampleServiceLocalTest.java
- services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ps/observation/KeptTargetSampleServiceLocalTest.java
- services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/KeptTargetSampleService.java → services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ps/observation/NonTargetSampleServiceLocalTest.java
- toolkit/service/src/main/java/fr/ird/observe/services/service/DataSourceService.java
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/service/OpenableServiceTransformer.java
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/service/SimpleServiceTransformer.java
Changes:
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/actions/TripUIGenerateHomeId.java
=====================================
@@ -43,7 +43,7 @@ public class TripUIGenerateHomeId extends ContentUIActionSupport<TripUI> {
@Override
protected void doActionPerformed(ActionEvent e, TripUI ui) {
- String homeId = getDataSource().getLlCommonTripService().generateHomeId();
+ String homeId = getDataSource().getDataSourceService().generateHomeId();
ui.getModel().getStates().getBean().setHomeId(homeId);
}
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/BranchlineUIHandler.java
=====================================
@@ -25,6 +25,7 @@ package fr.ird.observe.client.datasource.editor.ll.data.observation;
import fr.ird.observe.client.ClientUIContext;
import fr.ird.observe.client.datasource.editor.api.content.actions.ResetForm;
import fr.ird.observe.client.datasource.editor.api.content.actions.reset.DefaultResetAdapter;
+import fr.ird.observe.client.datasource.editor.api.content.data.simple.ContentSimpleUIModelStates;
import fr.ird.observe.client.datasource.editor.api.content.ui.ObserveLayoutFocusTraversalPolicy;
import fr.ird.observe.client.util.UIHelper;
import fr.ird.observe.dto.data.ll.observation.BranchlineDto;
@@ -67,8 +68,7 @@ public class BranchlineUIHandler extends GeneratedBranchlineUIHandler {
} else {
beanToSave.setTimeSinceContact(null);
}
-
- log.info("Time since contact: " + beanToSave.getTimeSinceContact());
+ log.info(String.format("Time since contact: %d", beanToSave.getTimeSinceContact()));
// for external models
ui.getModel().fireSaved();
@@ -83,7 +83,7 @@ public class BranchlineUIHandler extends GeneratedBranchlineUIHandler {
ui.getModel().setResetEdit(true);
try {
BranchlineDto branchline = ui.getModel().getBranchline();
- // on arrete l'edition
+ // on arrête l'édition
stopEditUI();
// on re-ouvre l'écran d'édition
try {
@@ -186,14 +186,15 @@ public class BranchlineUIHandler extends GeneratedBranchlineUIHandler {
// oldBranchline.removePropertyChangeListener(BranchlineDto.PROPERTY_TIMER, timerChanged);
// }
model.setBranchline(branchline);
+ ContentSimpleUIModelStates<BranchlineDto> states = model.getStates();
if (branchline == null) {
- model.getStates().getBean().clear();
+ states.getBean().clear();
Date timeSinceContactDate = DateUtil.createDate(0, 0, 0, 0, 0, 0);
model.setTimeSinceContact(timeSinceContactDate);
// stop edit
stopEditUI();
} else {
- branchline.copy(model.getStates().getBean());
+ branchline.copy(states.getBean());
if (Objects.equals(true, branchline.getTimer())) {
Long timeSinceContact = branchline.getTimeSinceContact();
if (timeSinceContact != null) {
@@ -204,7 +205,7 @@ public class BranchlineUIHandler extends GeneratedBranchlineUIHandler {
Date timeSinceContactDate = DateUtil.createDate(0, 0, 0, 0, 0, 0);
model.setTimeSinceContact(timeSinceContactDate);
}
- if (model.getStates().isEnabled() && !model.getStates().isEditing()) {
+ if (states.isEnabled() && !states.isEditing()) {
startEditUI();
}
}
@@ -214,9 +215,10 @@ public class BranchlineUIHandler extends GeneratedBranchlineUIHandler {
public boolean tryToQuit() {
boolean canContinue;
BranchlineUIModel model = getModel();
- if (model.getStates().isEditing() && model.getStates().isModified()) {
+ ContentSimpleUIModelStates<BranchlineDto> states = model.getStates();
+ if (states.isEditing() && states.isModified()) {
canContinue = false;
- if (model.getStates().isValid()) {
+ if (states.isValid()) {
// le formulaire est valide, on demande a l'utilisateur s'il
// veut la sauvegarder
int response = ClientUIContext.askUser(
@@ -236,7 +238,7 @@ public class BranchlineUIHandler extends GeneratedBranchlineUIHandler {
case 0:
// will save ui
// sauvegarde des modifications
- doSave(ui, model.getStates().getBean());
+ doSave(ui, states.getBean());
canContinue = true;
break;
case 1:
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/LonglinePositionHelper.java
=====================================
@@ -46,35 +46,26 @@ import java.util.stream.Collectors;
public class LonglinePositionHelper<D extends LonglinePositionAwareDto> {
protected final JaxxComboBox<SectionReference> uiSection;
-
protected final JaxxComboBox<BasketReference> uiBasket;
-
protected final JaxxComboBox<BranchlineReference> uiBranchline;
// To avoid any propagation when doing some works on locations
protected boolean locationIsAdjusting;
-
protected Collection<SectionReference> sectionUniverse;
-
protected Collection<BasketReference> basketUniverse;
-
protected Collection<BranchlineReference> branchlineUniverse;
public LonglinePositionHelper(JaxxComboBox<SectionReference> uiSection,
JaxxComboBox<BasketReference> uiBasket,
JaxxComboBox<BranchlineReference> uiBranchline,
D tableEditBean) {
-
this.uiSection = uiSection;
this.uiBasket = uiBasket;
this.uiBranchline = uiBranchline;
-
@SuppressWarnings("unchecked") PropertyChangeListener sectionChanged = evt -> onSectionChanged((SectionReference) evt.getNewValue(), (D) evt.getSource());
tableEditBean.addPropertyChangeListener(CatchDto.PROPERTY_SECTION, sectionChanged);
-
@SuppressWarnings("unchecked") PropertyChangeListener basketChanged = evt -> onBasketChanged((BasketReference) evt.getNewValue(), (D) evt.getSource());
tableEditBean.addPropertyChangeListener(CatchDto.PROPERTY_BASKET, basketChanged);
-
// tri par virage
uiSection.getIndexes().setSelectedButton(1);
// tri par virage
@@ -88,65 +79,44 @@ public class LonglinePositionHelper<D extends LonglinePositionAwareDto> {
this.sectionUniverse = positionSetDto.getSections();
this.basketUniverse = positionSetDto.getBaskets();
this.branchlineUniverse = positionSetDto.getBranchlines();
-
for (D dto : dtos) {
-
BranchlineReference branchline = dto.getBranchline();
-
if (branchline != null) {
-
BasketReference basket = getBasket(branchline);
dto.setBasket(basket);
-
}
-
BasketReference basket = dto.getBasket();
-
if (basket != null) {
-
SectionReference section = getSection(basket);
dto.setSection(section);
-
}
}
uiSection.setData(getSections());
}
public void resetPosition(D dto) {
-
SectionReference section = dto.getSection();
BasketReference basket = dto.getBasket();
BranchlineReference branchline = dto.getBranchline();
-
uiBranchline.setSelectedItem(null);
uiSection.setSelectedItem(null);
uiBasket.setSelectedItem(null);
-
if (section != null) {
-
// reload section (basket and branchlines universe will then changed)
uiSection.setSelectedItem(section);
-
}
-
if (basket != null) {
-
// reload basket (branchlines universe will then changed)
uiBasket.setSelectedItem(basket);
-
}
-
if (branchline != null) {
-
// reload branchline
uiBranchline.setSelectedItem(branchline);
-
}
-
}
- public void savePosition(List<D> dtos) {
- for (D dto : dtos) {
+ public void savePosition(List<D> dtoList) {
+ for (D dto : dtoList) {
if (dto.getBasket() != null) {
// remove section
dto.setSection(null);
@@ -159,107 +129,66 @@ public class LonglinePositionHelper<D extends LonglinePositionAwareDto> {
}
public List<SectionReference> getSections() {
-
List<SectionReference> sections = new ArrayList<>();
-
if (sectionUniverse != null) {
-
sections.addAll(sectionUniverse);
-
}
-
return sections;
}
protected void onSectionChanged(SectionReference newValue, D dto) {
-
locationIsAdjusting = true;
-
try {
-
BasketReference basket = dto.getBasket();
BranchlineReference branchline = dto.getBranchline();
-
- // on deselectionne le panier
+ // on désélectionne le panier
dto.setBasket(null);
-
- // on deselectionne l'avançon
+ // on désélectionne l'avançon
dto.setBranchline(null);
-
// on vide l'ensemble des paniers
uiBasket.setData(Collections.emptyList());
-
// on vide l'ensemble des avançons
uiBranchline.setData(Collections.emptyList());
-
if (newValue != null) {
-
// une section est sélectionnée
-
// on remplit uniquement les paniers de cette section
List<BasketReference> baskets = getBaskets(newValue);
uiBasket.setData(new ArrayList<>(baskets));
-
if (basket != null && baskets.contains(basket)) {
-
// un panier est sélectionné
-
- // on repmlit uniquement les avançons du panier
+ // on remplit uniquement les avançons du panier
List<BranchlineReference> branchlines = getBranchlines(basket);
uiBranchline.setData(new ArrayList<>(branchlines));
dto.setBasket(basket);
-
if (branchline != null && branchlines.contains(branchline)) {
-
// un avançon est sélectionné
dto.setBranchline(branchline);
-
}
-
}
-
}
-
} finally {
-
locationIsAdjusting = false;
-
}
-
}
protected void onBasketChanged(BasketReference newValue, D dto) {
-
if (!locationIsAdjusting) {
-
BranchlineReference branchline = dto.getBranchline();
-
- // on deselectionne l'avançon
+ // on désélectionne l'avançon
dto.setBranchline(null);
-
// on vide l'ensemble des avançons
uiBranchline.setData(Collections.emptyList());
-
if (newValue != null) {
-
- // un panier est selectionne
-
+ // un panier est sélectionné
// on remplit uniquement les avançons des paniers
List<BranchlineReference> branchlines = getBranchlines(newValue);
uiBranchline.setData(branchlines);
-
-
if (branchline != null && branchlines.contains(branchline)) {
-
// un avançon est sélectionné
dto.setBranchline(branchline);
-
}
-
}
-
}
-
}
private SectionReference getSection(BasketReference basket) {
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUIHandler.java
=====================================
@@ -946,19 +946,19 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition
public boolean canDeleteSection(SectionDto section) {
- return section.isNotPersisted() || getLlObservationSetDetailCompositionService().canDeleteSection(section.getId());
+ return section.isNotPersisted() || section.isNotUsed();
}
private boolean canDeleteBasket(BasketDto basket) {
- return basket.isNotPersisted() || getLlObservationSetDetailCompositionService().canDeleteBasket(basket.getId());
+ return basket.isNotPersisted() || basket.isNotUsed();
}
private boolean canDeleteBranchline(BranchlineDto branchline) {
- return branchline.isNotPersisted() || getLlObservationSetDetailCompositionService().canDeleteBranchline(branchline.getId());
+ return branchline.isNotPersisted() || branchline.isNotUsed();
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/actions/SetDetailCompositionUIDeleteAll.java
=====================================
@@ -50,7 +50,8 @@ public class SetDetailCompositionUIDeleteAll extends ContentUIActionSupport<SetD
private static final Logger log = LogManager.getLogger(SetDetailCompositionUIDeleteAll.class);
public SetDetailCompositionUIDeleteAll() {
- super(t("observe.data.ll.observation.SetDetailComposition.action.deleteAllSections"), t("observe.data.ll.observation.SetDetailComposition.action.deleteAllSections.tip"), "delete", ObserveLLKeyStrokes.KEY_STROKE_DELETE_DATA_GLOBAL);
+ super(t("observe.data.ll.observation.SetDetailComposition.action.deleteAllSections"), t("observe.data.ll.observation.SetDetailComposition.action.deleteAllSections.tip"), null, ObserveLLKeyStrokes.KEY_STROKE_DELETE_DATA_GLOBAL);
+ setIcon(getContentScaledImage("delete"));
}
@Override
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUINavigationContext.java
=====================================
@@ -34,6 +34,6 @@ public class DiscardedTargetSampleUINavigationContext extends GeneratedDiscarded
@Override
protected boolean computeShowSata(ContentTableUINavigationInitializer initializer) {
- return getService().canUseTargetSample(initializer.getSelectedId());
+ return getService().canUseSample(initializer.getSelectedId());
}
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUINavigationContext.java
=====================================
@@ -34,6 +34,6 @@ public class KeptTargetSampleUINavigationContext extends GeneratedKeptTargetSamp
@Override
protected boolean computeShowSata(ContentTableUINavigationInitializer initializer) {
- return getService().canUseTargetSample(initializer.getSelectedId());
+ return getService().canUseSample(initializer.getSelectedId());
}
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUINavigationContext.java
=====================================
@@ -34,6 +34,6 @@ public class NonTargetSampleUINavigationContext extends GeneratedNonTargetSample
@Override
protected boolean computeShowSata(ContentTableUINavigationInitializer initializer) {
- return getService().canUseNonTargetSample(initializer.getSelectedId());
+ return getService().canUseSample(initializer.getSelectedId());
}
}
=====================================
models/dto/src/main/java/fr/ird/observe/dto/data/ll/observation/LonglineCompositionDto.java
=====================================
@@ -40,4 +40,5 @@ public interface LonglineCompositionDto extends DtoParentAware {
Integer getHaulingIdentifier();
+ boolean isNotUsed();
}
=====================================
models/dto/src/main/models/Observe-30-data-ll-observation.model
=====================================
@@ -43,6 +43,7 @@ floatline1Length + {*:1} Float | positiveNumber
floatline2Length + {*:1} Float | positiveNumber
branchline + {*} data.ll.observation.Branchline | ordered unique
parentId + {*:1} String
+notUsed + {*:1} boolean
data.ll.observation.Branchline > data.Simple >> data.ll.observation.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier,parentId
settingIdentifier + {*:1} Integer
@@ -68,6 +69,7 @@ tracelineType {*:0..1} fr.ird.observe.dto.referential.ll.common.LineTypeReferenc
topType {*:0..1} fr.ird.observe.dto.referential.ll.common.LineTypeReference | mayNotNull
baitType {*:0..1} fr.ird.observe.dto.referential.ll.common.BaitTypeReference
parentId + {*:1} String
+notUsed + {*:1} boolean
data.ll.observation.BranchlinesComposition > data.Data | references=topTypeLabel,tracelineTypeLabel,length,proportion
length + {*:1} Float | notNull positiveNumber
@@ -125,6 +127,7 @@ settingIdentifier + {*:1} Integer | notNull positiveNumber
haulingIdentifier + {*:1} Integer | positiveNumber
basket + {*} data.ll.observation.Basket | ordered unique
parentId + {*:1} String
+notUsed + {*:1} boolean
data.ll.observation.SensorUsed > data.Data >> data.WithDataFile | references=sensorTypeLabel
hasData + {*:1} boolean
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetImpl.java
=====================================
@@ -22,6 +22,8 @@ package fr.ird.observe.entities.data.ll.observation;
* #L%
*/
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
import fr.ird.observe.dto.CoordinateHelper;
import fr.ird.observe.dto.data.DataDto;
import fr.ird.observe.dto.data.ll.observation.BasketReference;
@@ -301,13 +303,26 @@ public class SetImpl extends SetAbstract {
}
private void loadDtoParents(SetDetailCompositionDto dto) {
+ //FIXME If not performant, let's used an optimized dao query
+ ImmutableMap<String, Section> sectionsById = Maps.uniqueIndex(getSection(), Section::getTopiaId);
dto.getSection().forEach(section -> {
section.setParentId(dto.getId());
String sectionId = section.getTopiaId();
+ Section entitySection = sectionsById.get(sectionId);
+ ImmutableMap<String, Basket> basketsById = Maps.uniqueIndex(entitySection.getBasket(), Basket::getTopiaId);
+ section.setNotUsed(entitySection.isNotUsed());
section.getBasket().forEach(basket -> {
basket.setParentId(sectionId);
String basketId = basket.getTopiaId();
- basket.getBranchline().forEach(branchline -> branchline.setParentId(basketId));
+ Basket entityBasket = basketsById.get(basketId);
+ basket.setNotUsed(entityBasket.isNotUsed());
+ ImmutableMap<String, Branchline> branchlinesById = Maps.uniqueIndex(entityBasket.getBranchline(), Branchline::getTopiaId);
+ basket.getBranchline().forEach(branchline -> {
+ String branchlineId = branchline.getId();
+ Branchline entityBranchline = branchlinesById.get(branchlineId);
+ branchline.setParentId(basketId);
+ branchline.setNotUsed(entityBranchline.isNotUsed());
+ });
});
});
}
=====================================
server/core/src/main/filtered-resources/mapping
=====================================
@@ -60,6 +60,7 @@ GET /api/v1/DataSourceService/checkCanConnectOrBeEmpty
GET /api/v1/DataSourceService/close v1.DataSourceServiceRestApi.close
GET /api/v1/DataSourceService/create v1.DataSourceServiceRestApi.create
GET /api/v1/DataSourceService/destroy v1.DataSourceServiceRestApi.destroy
+GET /api/v1/DataSourceService/generateHomeId v1.DataSourceServiceRestApi.generateHomeId
GET /api/v1/DataSourceService/getUsers v1.DataSourceServiceRestApi.getUsers
GET /api/v1/DataSourceService/isIdValid v1.DataSourceServiceRestApi.isIdValid
GET /api/v1/DataSourceService/migrateData v1.DataSourceServiceRestApi.migrateData
@@ -97,7 +98,6 @@ GET /api/v1/data/ll/common/TripGearUseFeaturesService/loadForm
POST /api/v1/data/ll/common/TripGearUseFeaturesService/save v1.data.ll.common.TripGearUseFeaturesServiceRestApi.save
DELETE /api/v1/data/ll/common/TripService/delete v1.data.ll.common.TripServiceRestApi.delete
GET /api/v1/data/ll/common/TripService/exists v1.data.ll.common.TripServiceRestApi.exists
-GET /api/v1/data/ll/common/TripService/generateHomeId v1.data.ll.common.TripServiceRestApi.generateHomeId
GET /api/v1/data/ll/common/TripService/getAllTrip v1.data.ll.common.TripServiceRestApi.getAllTrip
GET /api/v1/data/ll/common/TripService/getBrothers v1.data.ll.common.TripServiceRestApi.getBrothers
GET /api/v1/data/ll/common/TripService/getChildren v1.data.ll.common.TripServiceRestApi.getChildren
@@ -183,9 +183,6 @@ GET /api/v1/data/ll/observation/BranchlineService/loadForm
POST /api/v1/data/ll/observation/BranchlineService/save v1.data.ll.observation.BranchlineServiceRestApi.save
GET /api/v1/data/ll/observation/SetCatchService/loadForm v1.data.ll.observation.SetCatchServiceRestApi.loadForm
POST /api/v1/data/ll/observation/SetCatchService/save v1.data.ll.observation.SetCatchServiceRestApi.save
-GET /api/v1/data/ll/observation/SetDetailCompositionService/canDeleteBasket v1.data.ll.observation.SetDetailCompositionServiceRestApi.canDeleteBasket
-GET /api/v1/data/ll/observation/SetDetailCompositionService/canDeleteBranchline v1.data.ll.observation.SetDetailCompositionServiceRestApi.canDeleteBranchline
-GET /api/v1/data/ll/observation/SetDetailCompositionService/canDeleteSection v1.data.ll.observation.SetDetailCompositionServiceRestApi.canDeleteSection
GET /api/v1/data/ll/observation/SetDetailCompositionService/loadForm v1.data.ll.observation.SetDetailCompositionServiceRestApi.loadForm
POST /api/v1/data/ll/observation/SetDetailCompositionService/save v1.data.ll.observation.SetDetailCompositionServiceRestApi.save
GET /api/v1/data/ll/observation/SetGlobalCompositionService/loadForm v1.data.ll.observation.SetGlobalCompositionServiceRestApi.loadForm
@@ -229,7 +226,7 @@ GET /api/v1/data/ps/observation/ActivityService/loadReferenceToRead
POST /api/v1/data/ps/observation/ActivityService/move v1.data.ps.observation.ActivityServiceRestApi.move
GET /api/v1/data/ps/observation/ActivityService/preCreate v1.data.ps.observation.ActivityServiceRestApi.preCreate
POST /api/v1/data/ps/observation/ActivityService/save v1.data.ps.observation.ActivityServiceRestApi.save
-GET /api/v1/data/ps/observation/DiscardedTargetSampleService/canUseTargetSample v1.data.ps.observation.DiscardedTargetSampleServiceRestApi.canUseTargetSample
+GET /api/v1/data/ps/observation/DiscardedTargetSampleService/canUseSample v1.data.ps.observation.DiscardedTargetSampleServiceRestApi.canUseSample
GET /api/v1/data/ps/observation/DiscardedTargetSampleService/getSampleSpecies v1.data.ps.observation.DiscardedTargetSampleServiceRestApi.getSampleSpecies
GET /api/v1/data/ps/observation/DiscardedTargetSampleService/loadForm v1.data.ps.observation.DiscardedTargetSampleServiceRestApi.loadForm
POST /api/v1/data/ps/observation/DiscardedTargetSampleService/save v1.data.ps.observation.DiscardedTargetSampleServiceRestApi.save
@@ -247,11 +244,11 @@ GET /api/v1/data/ps/observation/FloatingObjectService/loadReferenceToRead
GET /api/v1/data/ps/observation/FloatingObjectService/preCreate v1.data.ps.observation.FloatingObjectServiceRestApi.preCreate
GET /api/v1/data/ps/observation/FloatingObjectService/preCreate v1.data.ps.observation.FloatingObjectServiceRestApi.preCreate
POST /api/v1/data/ps/observation/FloatingObjectService/save v1.data.ps.observation.FloatingObjectServiceRestApi.save
-GET /api/v1/data/ps/observation/KeptTargetSampleService/canUseTargetSample v1.data.ps.observation.KeptTargetSampleServiceRestApi.canUseTargetSample
+GET /api/v1/data/ps/observation/KeptTargetSampleService/canUseSample v1.data.ps.observation.KeptTargetSampleServiceRestApi.canUseSample
GET /api/v1/data/ps/observation/KeptTargetSampleService/getSampleSpecies v1.data.ps.observation.KeptTargetSampleServiceRestApi.getSampleSpecies
GET /api/v1/data/ps/observation/KeptTargetSampleService/loadForm v1.data.ps.observation.KeptTargetSampleServiceRestApi.loadForm
POST /api/v1/data/ps/observation/KeptTargetSampleService/save v1.data.ps.observation.KeptTargetSampleServiceRestApi.save
-GET /api/v1/data/ps/observation/NonTargetSampleService/canUseNonTargetSample v1.data.ps.observation.NonTargetSampleServiceRestApi.canUseNonTargetSample
+GET /api/v1/data/ps/observation/NonTargetSampleService/canUseSample v1.data.ps.observation.NonTargetSampleServiceRestApi.canUseSample
GET /api/v1/data/ps/observation/NonTargetSampleService/getSampleSpecies v1.data.ps.observation.NonTargetSampleServiceRestApi.getSampleSpecies
GET /api/v1/data/ps/observation/NonTargetSampleService/getSampleSpeciesFate v1.data.ps.observation.NonTargetSampleServiceRestApi.getSampleSpeciesFate
GET /api/v1/data/ps/observation/NonTargetSampleService/loadForm v1.data.ps.observation.NonTargetSampleServiceRestApi.loadForm
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ll/common/TripService.java deleted
=====================================
@@ -1,37 +0,0 @@
-package fr.ird.observe.services.service.data.ll.common;
-
-/*
- * #%L
- * ObServe Services :: API
- * %%
- * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.dto.data.ll.common.TripReference;
-import fr.ird.observe.services.service.data.TripAwareService;
-import io.ultreia.java4all.http.spi.Get;
-
-/**
- * @author Tony Chemit - dev(a)tchemit.fr
- */
-public interface TripService extends GeneratedTripService, TripAwareService<TripReference> {
-
- @Get
- String generateHomeId();
-
-}
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ll/observation/SetDetailCompositionService.java deleted
=====================================
@@ -1,49 +0,0 @@
-package fr.ird.observe.services.service.data.ll.observation;
-
-/*
- * #%L
- * ObServe Services :: API
- * %%
- * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.security.Permission;
-import fr.ird.observe.services.spi.MethodCredential;
-import io.ultreia.java4all.http.spi.Get;
-
-/**
- * @author Tony Chemit - dev(a)tchemit.fr
- */
-public interface SetDetailCompositionService extends GeneratedSetDetailCompositionService {
-
- //FIXME Remove this, add a field in dto containing all elements used, ca after no need to call service
- @Get
- @MethodCredential(Permission.WRITE_DATA)
- boolean canDeleteSection(String sectionId);
-
- //FIXME Remove this, add a field in dto containing all elements used, ca after no need to call service
- @Get
- @MethodCredential(Permission.WRITE_DATA)
- boolean canDeleteBasket(String basketId);
-
- //FIXME Remove this, add a field in dto containing all elements used, ca after no need to call service
- @Get
- @MethodCredential(Permission.WRITE_DATA)
- boolean canDeleteBranchline(String branchlineId);
-
-}
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ps/common/TripService.java deleted
=====================================
@@ -1,33 +0,0 @@
-package fr.ird.observe.services.service.data.ps.common;
-
-/*
- * #%L
- * ObServe Services :: API
- * %%
- * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ird.observe.dto.data.ps.common.TripReference;
-import fr.ird.observe.services.service.data.TripAwareService;
-
-/**
- * @author Tony Chemit - dev(a)tchemit.fr
- */
-public interface TripService extends GeneratedTripService, TripAwareService<TripReference> {
-
-}
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/DiscardedTargetSampleService.java deleted
=====================================
@@ -1,33 +0,0 @@
-package fr.ird.observe.services.service.data.ps.observation;
-
-/*-
- * #%L
- * ObServe Services :: API
- * %%
- * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-/**
- * Created on 16/10/2020.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 8.0.1
- */
-public interface DiscardedTargetSampleService extends GeneratedDiscardedTargetSampleService, TargetSampleAwareService {
-
-}
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/NonTargetSampleService.java
=====================================
@@ -23,7 +23,6 @@ package fr.ird.observe.services.service.data.ps.observation;
*/
import fr.ird.observe.dto.reference.ReferentialDtoReferenceSet;
-import fr.ird.observe.dto.referential.common.SpeciesReference;
import fr.ird.observe.dto.referential.ps.common.SpeciesFateReference;
import fr.ird.observe.security.Permission;
import fr.ird.observe.services.spi.MethodCredential;
@@ -34,14 +33,6 @@ import io.ultreia.java4all.http.spi.Get;
*/
public interface NonTargetSampleService extends GeneratedNonTargetSampleService {
- @Get
- @MethodCredential(Permission.READ_DATA)
- boolean canUseNonTargetSample(String setId);
-
- @Get
- @MethodCredential(Permission.READ_DATA)
- ReferentialDtoReferenceSet<SpeciesReference> getSampleSpecies(String setId);
-
@Get
@MethodCredential(Permission.READ_DATA)
ReferentialDtoReferenceSet<SpeciesFateReference> getSampleSpeciesFate(String setId);
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/SetService.java deleted
=====================================
@@ -1,30 +0,0 @@
-package fr.ird.observe.services.service.data.ps.observation;
-
-/*
- * #%L
- * ObServe Services :: API
- * %%
- * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-/**
- * @author Tony Chemit - dev(a)tchemit.fr
- */
-public interface SetService extends GeneratedSetService {
-
-}
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/TargetSampleAwareService.java
=====================================
@@ -41,7 +41,7 @@ public interface TargetSampleAwareService extends ObserveService {
@Get
@MethodCredential(Permission.READ_DATA)
- boolean canUseTargetSample(String setId);
+ boolean canUseSample(String setId);
@Get
@MethodCredential(Permission.READ_DATA)
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
=====================================
@@ -54,6 +54,7 @@ import fr.ird.observe.spi.ObservePersistenceBusinessProject;
import fr.ird.observe.spi.context.DtoEntityContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.hashids.Hashids;
import org.nuiton.topia.persistence.jdbc.JdbcHelper;
import org.nuiton.topia.persistence.jdbc.JdbcPostgresHelper;
import org.nuiton.topia.persistence.script.TopiaSqlScript;
@@ -84,6 +85,7 @@ import static io.ultreia.java4all.i18n.I18n.l;
public class DataSourceServiceLocal extends ObserveServiceLocal implements DataSourceService {
private static final Logger log = LogManager.getLogger(DataSourceServiceLocal.class);
+ private static final Hashids ID_GENERATOR = new Hashids("ObServeHasSomeSalt", 8, "0123456789#abcdefghijklmnopqrestuvwxyz");
private static boolean canWrite(Set<?> privileges) {
return privileges != null &&
@@ -173,7 +175,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
return dataSourceInformation;
}
-
@Override
public ObserveDataSourceInformation checkCanConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException {
@@ -540,6 +541,11 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
return id != null && serviceContext.getTopiaPersistenceContext().isTopiaId(spi.toEntityType(), id);
}
+ @Override
+ public String generateHomeId() {
+ return ID_GENERATOR.encode(now().getTime());
+ }
+
private ObserveDataSourceConnectionTopia createDataSourceConnection(ObserveDataSourceInformation dataSourceInformation, String authenticationToken) {
return new ObserveDataSourceConnectionTopia(
authenticationToken,
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/common/TripServiceLocal.java
=====================================
@@ -31,7 +31,6 @@ import fr.ird.observe.services.local.service.data.TripServiceLocalSupport;
import fr.ird.observe.services.service.data.ll.common.TripService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.hashids.Hashids;
/**
* @author Tony Chemit - dev(a)tchemit.fr
@@ -39,11 +38,6 @@ import org.hashids.Hashids;
public class TripServiceLocal extends TripServiceLocalSupport<TripDto, TripReference, Trip, TripTopiaDao> implements TripService {
private static final Logger log = LogManager.getLogger(TripServiceLocal.class);
- private static final Hashids ID_GENERATOR = new Hashids("ObServeHasSomeSalt", 8, "0123456789#abcdefghijklmnopqrestuvwxyz");
-
- public TripServiceLocal() {
- super(Program.SPI, Trip.SPI, Trip.PROPERTY_PROGRAM);
- }
public static boolean copyTripLogbookMetaData(Trip oldTrip, Trip newTrip) {
if (!newTrip.isLogbookAvailability()) {
@@ -73,9 +67,8 @@ public class TripServiceLocal extends TripServiceLocalSupport<TripDto, TripRefer
return false;
}
- @Override
- public String generateHomeId() {
- return ID_GENERATOR.encode(now().getTime());
+ public TripServiceLocal() {
+ super(Program.SPI, Trip.SPI, Trip.PROPERTY_PROGRAM);
}
}
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/SetDetailCompositionServiceLocal.java
=====================================
@@ -23,9 +23,6 @@ package fr.ird.observe.services.local.service.data.ll.observation;
*/
import fr.ird.observe.dto.data.ll.observation.SetDetailCompositionDto;
-import fr.ird.observe.entities.data.ll.observation.Basket;
-import fr.ird.observe.entities.data.ll.observation.Branchline;
-import fr.ird.observe.entities.data.ll.observation.Section;
import fr.ird.observe.entities.data.ll.observation.Set;
import fr.ird.observe.services.local.service.data.Simple2DataServiceLocalSupport;
import fr.ird.observe.services.service.data.ll.observation.SetDetailCompositionService;
@@ -40,22 +37,4 @@ public class SetDetailCompositionServiceLocal extends Simple2DataServiceLocalSup
super(Set.SPI, Set.SET_DETAIL_COMPOSITION_SPI, null);
}
- @Override
- public boolean canDeleteSection(String sectionId) {
- Section entity = Section.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), sectionId);
- return entity.isNotUsed();
- }
-
- @Override
- public boolean canDeleteBasket(String basketId) {
- Basket entity = Basket.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), basketId);
- return entity.isNotUsed();
- }
-
- @Override
- public boolean canDeleteBranchline(String branchlineId) {
- Branchline entity = Branchline.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), branchlineId);
- return entity.isNotUsed();
- }
-
}
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/NonTargetSampleServiceLocal.java
=====================================
@@ -45,7 +45,7 @@ public class NonTargetSampleServiceLocal extends Simple3DataServiceLocalSupport<
}
@Override
- public boolean canUseNonTargetSample(String setId) {
+ public boolean canUseSample(String setId) {
Set parent = loadParentEntity(setId);
return parent.canUseNonTargetSample();
}
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/TargetSampleServiceLocalSupport.java
=====================================
@@ -50,7 +50,7 @@ public abstract class TargetSampleServiceLocalSupport<D extends DataDto & Target
this.discarded = discarded;
}
- public boolean canUseTargetSample(String setId) {
+ public boolean canUseSample(String setId) {
Set parent = loadParentEntity(setId);
return parent.canUseTargetSample(discarded);
}
=====================================
services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ps/observation/DiscardedTargetSampleServiceLocalTest.java
=====================================
@@ -31,7 +31,6 @@ import fr.ird.observe.test.ObserveFixtures;
import fr.ird.observe.test.spi.DatabaseNameConfiguration;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -49,13 +48,11 @@ public class DiscardedTargetSampleServiceLocalTest extends ServiceLocalTestSuppo
@Test
public void canUseTargetSampleTest() {
- Assert.assertFalse(service.canUseTargetSample(ObserveFixtures.SET_SEINE_ID));
+ Assert.assertFalse(service.canUseSample(ObserveFixtures.SET_SEINE_ID));
}
- @Ignore
@Test
public void loadForEditTest() {
-
//FIXME Get a discarded target sample in test database
Form<DiscardedTargetSampleDto> form = service.loadForm(ObserveFixtures.SET_SEINE_ID);
Assert.assertNotNull(form);
=====================================
services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ps/observation/KeptTargetSampleServiceLocalTest.java
=====================================
@@ -48,7 +48,7 @@ public class KeptTargetSampleServiceLocalTest extends ServiceLocalTestSupport {
@Test
public void canUseTargetSampleTest() {
- Assert.assertTrue(service.canUseTargetSample(ObserveFixtures.SET_SEINE_ID));
+ Assert.assertTrue(service.canUseSample(ObserveFixtures.SET_SEINE_ID));
}
@Test
=====================================
services/api/src/main/java/fr/ird/observe/services/service/data/ps/observation/KeptTargetSampleService.java → services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ps/observation/NonTargetSampleServiceLocalTest.java
=====================================
@@ -1,8 +1,8 @@
-package fr.ird.observe.services.service.data.ps.observation;
+package fr.ird.observe.services.local.service.data.ps.observation;
/*-
* #%L
- * ObServe Services :: API
+ * ObServe Services :: Local implementation
* %%
* Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
* %%
@@ -22,12 +22,46 @@ package fr.ird.observe.services.service.data.ps.observation;
* #L%
*/
+import fr.ird.observe.dto.data.ps.observation.NonTargetSampleDto;
+import fr.ird.observe.dto.form.Form;
+import fr.ird.observe.services.local.service.ServiceLocalTestSupport;
+import fr.ird.observe.services.service.data.ps.observation.NonTargetSampleService;
+import fr.ird.observe.test.DatabaseName;
+import fr.ird.observe.test.ObserveFixtures;
+import fr.ird.observe.test.spi.DatabaseNameConfiguration;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
/**
- * Created on 16/10/2020.
+ * Created on 02/12/2020.
*
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0.1
*/
-public interface KeptTargetSampleService extends GeneratedKeptTargetSampleService, TargetSampleAwareService {
-}
+(a)DatabaseNameConfiguration(DatabaseName.dataForTestSeine)
+public class NonTargetSampleServiceLocalTest extends ServiceLocalTestSupport {
+
+ protected NonTargetSampleService service;
+
+ @Before
+ public void setUp() throws Exception {
+ service = localTestMethodResource.newService(NonTargetSampleService.class);
+ }
+ @Test
+ public void canUseTargetSampleTest() {
+ Assert.assertFalse(service.canUseSample(ObserveFixtures.SET_SEINE_ID));
+ }
+
+ @Test
+ public void loadForEditTest() {
+ //FIXME Get a Non target sample in test database
+ Form<NonTargetSampleDto> form = service.loadForm(ObserveFixtures.SET_SEINE_ID);
+ Assert.assertNotNull(form);
+ NonTargetSampleDto dto = form.getObject();
+ Assert.assertNotNull(dto);
+ Assert.assertTrue(dto.isNonTargetLengthEmpty());
+ }
+
+}
=====================================
toolkit/service/src/main/java/fr/ird/observe/services/service/DataSourceService.java
=====================================
@@ -80,4 +80,7 @@ public interface DataSourceService extends ObserveService, Closeable {
@Get
<D extends IdDto> boolean isIdValid(Class<D> type, String id);
+ @Get
+ String generateHomeId();
+
}
=====================================
toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/service/OpenableServiceTransformer.java
=====================================
@@ -197,7 +197,10 @@ public class OpenableServiceTransformer extends ObjectModelTransformerToJava imp
addInterface(output, String.format("%s<%s, %s>", OpenableDataService.class.getName(), dtoName, referenceName));
addAnnotation(output, output, Internal.class);
-
+ if (referenceName.endsWith("TripReference")) {
+ // Add TripAwareService contract
+ addInterface(output, String.format("fr.ird.observe.services.service.data.TripAwareService<%s>", referenceName));
+ }
String spiClass = OpenableDtoServiceContext.class.getSimpleName();
addImport(output, OpenableDtoServiceContext.class);
addImport(output, packageName + "." + dtoName);
=====================================
toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/service/SimpleServiceTransformer.java
=====================================
@@ -202,7 +202,10 @@ public class SimpleServiceTransformer extends ObjectModelTransformerToJava imple
addInterface(output, String.format("%s<%s>", SimpleDataService.class.getName(), dtoName));
addAnnotation(output, output, Internal.class);
-
+ if (dtoName.contains(".ps.observation.") || dtoName.endsWith("SampleDto")) {
+ // Add TripAwareService contract
+ addInterface(output, "fr.ird.observe.services.service.data.ps.observation.TargetSampleAwareService");
+ }
String spiClass = SimpleDtoServiceContext.class.getSimpleName();
addImport(output, SimpleDtoServiceContext.class);
addImport(output, packageName + "." + dtoName);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3f3e0589002588d57981306a…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3f3e0589002588d57981306a…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 9 commits: Be able to override NavigationHandler classes
by Tony CHEMIT 02 Dec '20
by Tony CHEMIT 02 Dec '20
02 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
ad93f062 by Tony Chemit at 2020-12-02T06:30:47+01:00
Be able to override NavigationHandler classes
- - - - -
d87ade2b by Tony Chemit at 2020-12-02T06:31:58+01:00
Move two validation to dto module (not the best place, but better than in ui model...)
- - - - -
7442236b by Tony Chemit at 2020-12-02T06:32:49+01:00
init bean code moved in service layer
- - - - -
65d3e982 by Tony Chemit at 2020-12-02T06:35:27+01:00
Review and clean LL forms
- - - - -
19762beb by Tony Chemit at 2020-12-02T06:36:56+01:00
Review Save action
- - - - -
eb6fce8c by Tony Chemit at 2020-12-02T06:37:12+01:00
Review WithDataFile actions
- - - - -
9d8c5120 by Tony Chemit at 2020-12-02T08:39:49+01:00
Review and fix how to get select node from edit node (there is still an unsafe method getDtoType)
- - - - -
4b33051d by Tony Chemit at 2020-12-02T08:41:58+01:00
Add some new methods in action support, we should never call getUi() from code
- - - - -
3f3e0589 by Tony Chemit at 2020-12-02T08:59:09+01:00
Review DataFile API, make it neutral, this simplify quite a lot the code and permits us to remove two more specialized services.
- - - - -
30 changed files:
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/ContentUIActionSupport.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/save/SaveAdapter.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/save/SaveExecutor.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUINavigationNode.java
- 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/data/edit/actions/SaveEdit.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/actions/SaveEditUIAdapter.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUINavigationNode.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/ContentOpenableUIOpenExecutor.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/actions/SaveOpenable.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/open/actions/SaveOpenableUIAdapter.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/simple/ContentSimpleUIModelSupport.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/simple/ContentSimpleUIOpenExecutor.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/simple/actions/SaveSimple.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/simple/actions/SaveSimpleUIAdapter.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIOpenExecutor.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/ContentTableUIActionSupport.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/DeleteDataFile.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/ExportDataFile.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/ImportDataFile.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/SaveTable.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/SaveTableUIAdapter.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/actions/WithDataFileActionSupport.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/ContentReferentialUIOpenExecutor.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/actions/ReferentialSaveAdapter.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/actions/SaveReferential.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripGearUseFeaturesUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripUIHandler.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/53fbcb2762d4a0c9050b0849…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/53fbcb2762d4a0c9050b0849…
You're receiving this email because of your account on gitlab.com.
1
0