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
September 2019
- 1 participants
- 49 discussions
[Git][ultreiaio/ird-observe][develop] 3 commits: do not backup if backup not active in configuration
by Tony CHEMIT 30 Sep '19
by Tony CHEMIT 30 Sep '19
30 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
c5187e0e by tchemit at 2019-09-30T10:15:35Z
do not backup if backup not active in configuration
- - - - -
cc75c694 by tchemit at 2019-09-30T11:50:07Z
move ObserveResourceManager to client-configuration module and rename it.
- - - - -
56d9e19d by tchemit at 2019-09-30T12:55:32Z
Introduce client-admin module :)
- - - - -
30 changed files:
- client-core/.mvn/i18n/parse-java-enumerations → client-admin/.mvn/add-geotools-repository
- + client-admin/.mvn/i18n/parse-java
- + client-admin/.mvn/i18n/parse-java-enumerations
- + client-admin/.mvn/jaxx-generate
- + client-admin/.mvn/pom.gitflow.develop
- + client-admin/.mvn/pom.gitflow.master
- + client-admin/.mvn/pom.organizationId
- + client-admin/.mvn/pom.projectId
- + client-admin/.mvn/pom.stageId
- + client-admin/LICENSE.txt
- + client-admin/README.md
- + client-admin/pom.xml
- + client-admin/src/license/THIRD-PARTY.properties
- client-core/src/main/i18n/getters/java-enumeration.getter → client-admin/src/main/i18n/getters/java-enumeration.getter
- + client-admin/src/main/i18n/getters/java.getter
- + client-admin/src/main/i18n/getters/jaxx.getter
- client-core/src/main/java/fr/ird/observe/client/ObserveTextGenerator.java → client-admin/src/main/java/fr/ird/observe/client/ObserveTextGenerator.java
- + client-admin/src/main/java/fr/ird/observe/client/ui/ObserveCommon.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminActionModel.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminActionModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminActionWorker.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminActionWorker.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUI.jaxx → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUI.jcss → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jaxx → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jcss → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUILauncher.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminUILauncher.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUIModel.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/AdminUIModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/actions/AdminTabUIActionSupport.java → client-admin/src/main/java/fr/ird/observe/client/ui/admin/actions/AdminTabUIActionSupport.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/e2f0891dd427e6b3cafe033c2b…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/e2f0891dd427e6b3cafe033c2b…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Al last move contentUI api to client-db module
by Tony CHEMIT 29 Sep '19
by Tony CHEMIT 29 Sep '19
29 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
e2f0891d by tchemit at 2019-09-29T16:56:06Z
Al last move contentUI api to client-db module
- - - - -
30 changed files:
- client-core/pom.xml
- client-core/src/main/i18n/getters/java.getter
- client-core/src/main/java/fr/ird/observe/client/ObserveRunner.java
- client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java
- client-core/src/main/java/fr/ird/observe/client/ObserveTextGenerator.java
- client-core/src/main/java/fr/ird/observe/client/ui/ObserveActionContext.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/actions/AdminTabUIActionSupport.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/actions/RegisterTasksActionSupport.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/actions/Start.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateModel.java
- − client-core/src/main/java/fr/ird/observe/client/ui/content/api/package.html
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/ActivitySampleUIMove.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/ActivityUIChooseRelatedObservedActivity.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/TripSampleListUIMove.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/TripSampleUIMove.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/BranchlineUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/SetDetailCompositionUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/SetDetailCompositionUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/dcp/FloatingObjectUIInitializer.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/NonTargetCatchUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetCatchUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetDiscardCatchUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/ActivityUIAddFloatingObject.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/FloatingObjectUIAddFloatingObjectPreset.java
- client-core/src/main/java/fr/ird/observe/client/ui/main/ObserveMainUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java
- client-db/pom.xml
- client-db/src/main/i18n/getters/java.getter
- client-db/src/main/i18n/getters/jaxx.getter
- + client-db/src/main/java/fr/ird/observe/client/InitStorageModel.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/e2f0891dd427e6b3cafe033c2bc…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/e2f0891dd427e6b3cafe033c2bc…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 2 commits: [REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344
by Tony CHEMIT 28 Sep '19
by Tony CHEMIT 28 Sep '19
28 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
8aa658a1 by tchemit at 2019-09-28T11:50:48Z
[REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344
- - - - -
999fbb95 by tchemit at 2019-09-28T11:50:49Z
update toolkit
- - - - -
4 changed files:
- dto/src/main/i18n/getters/java.getter
- + dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java
- dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsObservationModelDecoratorInitializer.java
- pom.xml
Changes:
=====================================
dto/src/main/i18n/getters/java.getter
=====================================
@@ -17,6 +17,7 @@ observe.common.gps.activity
observe.common.gps.gpsPoint
observe.common.inconnu
observe.common.no.unit
+observe.common.nocode
observe.data.Data.baitHaulingStatus
observe.data.Data.captain
observe.data.Data.dataQuality
=====================================
dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java
=====================================
@@ -0,0 +1,45 @@
+package fr.ird.observe.dto.decoration.decorators;
+
+/*-
+ * #%L
+ * ObServe :: Dto
+ * %%
+ * Copyright (C) 2008 - 2019 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.referential.ReferentialDto;
+import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialReference;
+import org.apache.commons.jxpath.JXPathContext;
+
+import static io.ultreia.java4all.i18n.I18n.t;
+
+public class ObjectMaterialReferenceDecorator extends ReferentialReferenceDecorator<ObjectMaterialReference> {
+
+ public ObjectMaterialReferenceDecorator() {
+ super(ObjectMaterialReference.class, "${code}$s##${label}$s");
+ }
+
+ @Override
+ protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) {
+ Comparable<Comparable<?>> result = super.getTokenValue(jxcontext, token);
+ if (ReferentialDto.PROPERTY_CODE.equals(token) && (result == null || (result + "").isEmpty())) {
+ result = (Comparable) t("observe.common.nocode");
+ }
+ return result;
+ }
+}
=====================================
dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsObservationModelDecoratorInitializer.java
=====================================
@@ -23,6 +23,7 @@ package fr.ird.observe.dto.decoration.init;
*/
import fr.ird.observe.dto.decoration.DecoratorService;
+import fr.ird.observe.dto.decoration.decorators.ObjectMaterialReferenceDecorator;
import fr.ird.observe.dto.referential.ps.observation.DetectionModeDto;
import fr.ird.observe.dto.referential.ps.observation.DetectionModeReference;
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseConformityDto;
@@ -32,7 +33,6 @@ import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatus
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeDto;
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeReference;
import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialDto;
-import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialReference;
import fr.ird.observe.dto.referential.ps.observation.ObservedSystemDto;
import fr.ird.observe.dto.referential.ps.observation.ObservedSystemReference;
import fr.ird.observe.dto.referential.ps.observation.ReasonForDiscardDto;
@@ -76,7 +76,8 @@ public class ReferentialPsObservationModelDecoratorInitializer extends ModelDeco
@Override
public void initPsObservationObjectMaterialDto() {
- registerDefaultReferentialAndReferentialReferenceDecorator(ObjectMaterialDto.class, ObjectMaterialReference.class, libelle);
+ registerDecorator(new ObjectMaterialReferenceDecorator());
+ registerObserveDecorator(ObjectMaterialDto.class, "${code}$s##${" + libelle + "}$s", " ");
}
@Override
=====================================
pom.xml
=====================================
@@ -160,7 +160,7 @@
<maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
<buildDate>${maven.build.timestamp}</buildDate>
- <observeToolkitVersion>4.19-SNAPSHOT</observeToolkitVersion>
+ <observeToolkitVersion>4.19</observeToolkitVersion>
<lib.version.nuiton.validation>3.1</lib.version.nuiton.validation>
<!--can't use 1.4.197 (date has changed + blob also)-->
<lib.version.h2>1.4.196</lib.version.h2>
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/b6d1810eda87639b0faccb9056…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/b6d1810eda87639b0faccb9056…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 2 commits: [REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344
by Tony CHEMIT 28 Sep '19
by Tony CHEMIT 28 Sep '19
28 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
bcc8d80d by tchemit at 2019-09-28T10:52:01Z
[REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344
- - - - -
b6d1810e by tchemit at 2019-09-28T10:52:03Z
update toolkit
- - - - -
3 changed files:
- + dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java
- dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsObservationModelDecoratorInitializer.java
- pom.xml
Changes:
=====================================
dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java
=====================================
@@ -0,0 +1,45 @@
+package fr.ird.observe.dto.decoration.decorators;
+
+/*-
+ * #%L
+ * ObServe :: Dto
+ * %%
+ * Copyright (C) 2008 - 2019 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.referential.ReferentialDto;
+import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialReference;
+import org.apache.commons.jxpath.JXPathContext;
+
+import static io.ultreia.java4all.i18n.I18n.t;
+
+public class ObjectMaterialReferenceDecorator extends ReferentialReferenceDecorator<ObjectMaterialReference> {
+
+ public ObjectMaterialReferenceDecorator() {
+ super(ObjectMaterialReference.class, "${code}$s##${label}$s");
+ }
+
+ @Override
+ protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) {
+ Comparable<Comparable<?>> result = super.getTokenValue(jxcontext, token);
+ if (ReferentialDto.PROPERTY_CODE.equals(token) && (result == null || (result + "").isEmpty())) {
+ result = (Comparable) t("observe.common.nocode");
+ }
+ return result;
+ }
+}
=====================================
dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsObservationModelDecoratorInitializer.java
=====================================
@@ -23,6 +23,7 @@ package fr.ird.observe.dto.decoration.init;
*/
import fr.ird.observe.dto.decoration.DecoratorService;
+import fr.ird.observe.dto.decoration.decorators.ObjectMaterialReferenceDecorator;
import fr.ird.observe.dto.referential.ps.observation.DetectionModeDto;
import fr.ird.observe.dto.referential.ps.observation.DetectionModeReference;
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseConformityDto;
@@ -32,7 +33,6 @@ import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatus
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeDto;
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeReference;
import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialDto;
-import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialReference;
import fr.ird.observe.dto.referential.ps.observation.ObservedSystemDto;
import fr.ird.observe.dto.referential.ps.observation.ObservedSystemReference;
import fr.ird.observe.dto.referential.ps.observation.ReasonForDiscardDto;
@@ -76,7 +76,8 @@ public class ReferentialPsObservationModelDecoratorInitializer extends ModelDeco
@Override
public void initPsObservationObjectMaterialDto() {
- registerDefaultReferentialAndReferentialReferenceDecorator(ObjectMaterialDto.class, ObjectMaterialReference.class, libelle);
+ registerDecorator(new ObjectMaterialReferenceDecorator());
+ registerObserveDecorator(ObjectMaterialDto.class, "${code}$s##${" + libelle + "}$s", " ");
}
@Override
=====================================
pom.xml
=====================================
@@ -160,7 +160,7 @@
<maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
<buildDate>${maven.build.timestamp}</buildDate>
- <observeToolkitVersion>4.19-SNAPSHOT</observeToolkitVersion>
+ <observeToolkitVersion>4.19</observeToolkitVersion>
<lib.version.nuiton.validation>3.1</lib.version.nuiton.validation>
<!--can't use 1.4.197 (date has changed + blob also)-->
<lib.version.h2>1.4.196</lib.version.h2>
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/787fee60903ad914cf7dadb899…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/787fee60903ad914cf7dadb899…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] [REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344
by Tony CHEMIT 28 Sep '19
by Tony CHEMIT 28 Sep '19
28 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
787fee60 by tchemit at 2019-09-28T10:44:08Z
[REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344
- - - - -
2 changed files:
- + dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java
- dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsObservationModelDecoratorInitializer.java
Changes:
=====================================
dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java
=====================================
@@ -0,0 +1,45 @@
+package fr.ird.observe.dto.decoration.decorators;
+
+/*-
+ * #%L
+ * ObServe :: Dto
+ * %%
+ * Copyright (C) 2008 - 2019 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.referential.ReferentialDto;
+import fr.ird.observe.dto.referential.seine.ObjectMaterialReference;
+import org.apache.commons.jxpath.JXPathContext;
+
+import static io.ultreia.java4all.i18n.I18n.t;
+
+public class ObjectMaterialReferenceDecorator extends ReferentialReferenceDecorator<ObjectMaterialReference> {
+
+ public ObjectMaterialReferenceDecorator() {
+ super(ObjectMaterialReference.class, "${code}$s##${label}$s");
+ }
+
+ @Override
+ protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) {
+ Comparable<Comparable<?>> result = super.getTokenValue(jxcontext, token);
+ if (ReferentialDto.PROPERTY_CODE.equals(token) && (result == null || (result + "").isEmpty())) {
+ result = (Comparable) t("observe.common.nocode");
+ }
+ return result;
+ }
+}
=====================================
dto/src/main/java/fr/ird/observe/dto/decoration/init/ReferentialPsObservationModelDecoratorInitializer.java
=====================================
@@ -23,6 +23,7 @@ package fr.ird.observe.dto.decoration.init;
*/
import fr.ird.observe.dto.decoration.DecoratorService;
+import fr.ird.observe.dto.decoration.decorators.ObjectMaterialReferenceDecorator;
import fr.ird.observe.dto.referential.ps.observation.DetectionModeDto;
import fr.ird.observe.dto.referential.ps.observation.DetectionModeReference;
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseConformityDto;
@@ -32,7 +33,6 @@ import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatus
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeDto;
import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeReference;
import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialDto;
-import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialReference;
import fr.ird.observe.dto.referential.ps.observation.ObservedSystemDto;
import fr.ird.observe.dto.referential.ps.observation.ObservedSystemReference;
import fr.ird.observe.dto.referential.ps.observation.ReasonForDiscardDto;
@@ -76,7 +76,8 @@ public class ReferentialPsObservationModelDecoratorInitializer extends ModelDeco
@Override
public void initPsObservationObjectMaterialDto() {
- registerDefaultReferentialAndReferentialReferenceDecorator(ObjectMaterialDto.class, ObjectMaterialReference.class, libelle);
+ registerDecorator(new ObjectMaterialReferenceDecorator());
+ registerObserveDecorator(ObjectMaterialDto.class, "${code}$s##${" + libelle + "}$s", " ");
}
@Override
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/787fee60903ad914cf7dadb899d…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/787fee60903ad914cf7dadb899d…
You're receiving this email because of your account on gitlab.com.
1
0
28 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
b900b750 by tchemit at 2019-09-26T17:35:17Z
use last stable of jaxx
- - - - -
6d2de5b2 by tchemit at 2019-09-28T09:43:25Z
update pom
- - - - -
f92781f1 by tchemit at 2019-09-28T10:38:15Z
update i18n getter
- - - - -
2 changed files:
- client-core/src/main/i18n/getters/java.getter
- pom.xml
Changes:
=====================================
client-core/src/main/i18n/getters/java.getter
=====================================
@@ -882,6 +882,7 @@ observe.ui.tree.data.ll.trip.unsaved
observe.ui.tree.data.ps.activity.list
observe.ui.tree.data.ps.activity.unsaved
observe.ui.tree.data.ps.discardedTargetCatch
+observe.ui.tree.data.ps.discardedTargetSample
observe.ui.tree.data.ps.floatingObject.unsaved
observe.ui.tree.data.ps.keptTargetCatch
observe.ui.tree.data.ps.keptTargetSample
=====================================
pom.xml
=====================================
@@ -27,7 +27,7 @@
<parent>
<groupId>io.ultreia.maven</groupId>
<artifactId>pom</artifactId>
- <version>2019.8.30</version>
+ <version>2019.8.31</version>
</parent>
<groupId>fr.ird.observe</groupId>
@@ -167,7 +167,7 @@
<!--<lib.version.java4all.topia>1.12</lib.version.java4all.topia>-->
<!--<lib.version.java4all.eugene>3.0<-alpha-22</lib.version.java4all.eugene>-->
- <lib.version.java4all.jaxx>3.0-alpha-57-SNAPSHOT</lib.version.java4all.jaxx>
+ <lib.version.java4all.jaxx>3.0-alpha-57</lib.version.java4all.jaxx>
<!--<lib.version.java4all.i18n>4.0-beta-3-SNAPSHOT</lib.version.java4all.i18n>-->
<!--<lib.version.java4all.config>1.0.8-SNAPSHOT</lib.version.java4all.config>-->
<!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>-->
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/6c2b603c8c4d7807b21702f9ce…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/6c2b603c8c4d7807b21702f9ce…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Bouton 'Supprimer les marées par lot' ne fonctionne pas - Closes #1398
by Tony CHEMIT 26 Sep '19
by Tony CHEMIT 26 Sep '19
26 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
6c2b603c by tchemit at 2019-09-26T17:23:23Z
Bouton 'Supprimer les marées par lot' ne fonctionne pas - Closes #1398
- - - - -
24 changed files:
- client-core/src/main/i18n/getters/java.getter
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jcss
- + client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/actions/DeleteActionSupport.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/TripListUI.jaxx
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/actions/TripListUIDelete.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/LandingListUI.jaxx
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/actions/LandingListUIDelete.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/ActivityListUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/TripSampleListUI.jaxx
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/ActivityListUIDelete.java
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/TripSampleListUIDelete.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/ActivityListUI.jaxx
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/actions/ActivityListUIDelete.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/TripListUI.jaxx
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/actions/TripListUIDelete.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/ActivityListUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/RouteListUI.jaxx
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/ActivityListUIDelete.java
- + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/RouteListUIDelete.java
- client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java
- observe-i18n/src/main/i18n/translations/observe_en_GB.properties
- observe-i18n/src/main/i18n/translations/observe_es_ES.properties
- observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
Changes:
=====================================
client-core/src/main/i18n/getters/java.getter
=====================================
@@ -783,6 +783,7 @@ observe.message.db.loaded
observe.message.db.loading
observe.message.delete
observe.message.delete.directory
+observe.message.delete.list
observe.message.delete.new
observe.message.goto.site
observe.message.help.usage
@@ -881,7 +882,6 @@ observe.ui.tree.data.ll.trip.unsaved
observe.ui.tree.data.ps.activity.list
observe.ui.tree.data.ps.activity.unsaved
observe.ui.tree.data.ps.discardedTargetCatch
-observe.ui.tree.data.ps.discardedTargetSample
observe.ui.tree.data.ps.floatingObject.unsaved
observe.ui.tree.data.ps.keptTargetCatch
observe.ui.tree.data.ps.keptTargetSample
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jaxx
=====================================
@@ -86,11 +86,12 @@ public abstract ContentListUIHandler<E, C, R, U> getHandler();
</cell>
</row>
<row>
- <cell fill='both'>
- <JButton id='move'/>
- </cell>
- <cell>
- <JButton id='create'/>
+ <cell columns="3">
+ <JPanel layout="{new GridLayout(1, 0)}">
+ <JButton id='delete'/>
+ <JButton id='move'/>
+ <JButton id='create'/>
+ </JPanel>
</cell>
</row>
</Table>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jcss
=====================================
@@ -93,6 +93,10 @@
enabled:{model.isOneOrMoreSelectedData()};
}
+#delete {
+ enabled:{model.isOneOrMoreSelectedData()};
+}
+
#showTechnicalInformation {
enabled:{model.isOneSelectedData()};
}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/actions/DeleteActionSupport.java
=====================================
@@ -0,0 +1,120 @@
+package fr.ird.observe.client.ui.content.api.data.list.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.ObserveKeyStrokes;
+import fr.ird.observe.client.ui.content.api.actions.ContentUIActionSupport;
+import fr.ird.observe.client.ui.content.api.data.list.ContentListUI;
+import fr.ird.observe.client.ui.tree.navigation.NavigationTree;
+import fr.ird.observe.client.ui.util.UIHelper;
+import fr.ird.observe.dto.IdDto;
+import fr.ird.observe.dto.data.DataDto;
+import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper;
+import fr.ird.observe.dto.reference.DataDtoReference;
+import fr.ird.observe.dto.reference.DtoReference;
+import fr.ird.observe.navigation.model.edit.CloseEditNodeVetoException;
+import fr.ird.observe.navigation.model.edit.ObserveEditNode;
+import fr.ird.observe.navigation.tree.MultipleReferenceContainerNode;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import javax.swing.SwingUtilities;
+import javax.swing.tree.MutableTreeNode;
+import javax.swing.tree.TreeNode;
+import java.awt.event.ActionEvent;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static fr.ird.observe.client.ui.content.api.ContentUIHandler.getNavigationTree;
+import static io.ultreia.java4all.i18n.I18n.n;
+import static io.ultreia.java4all.i18n.I18n.t;
+
+public abstract class DeleteActionSupport<E extends IdDto, D extends DataDto, R extends DataDtoReference<D, R>, U extends ContentListUI<E, D, R, U>> extends ContentUIActionSupport<U> {
+
+ private static final Logger log = LogManager.getLogger(Close.class);
+
+ protected final String typeI18nKey;
+
+ protected abstract void doDelete(U ui, List<R> beanList);
+
+ public DeleteActionSupport(Class<D> beanType) {
+ super(
+ n("observe.action.delete"),
+ null,
+ "delete",
+ ObserveKeyStrokes.KEY_STROKE_DELETE_DATA_GLOBAL);
+ this.typeI18nKey = t(ObserveI18nDecoratorHelper.getTypeI18nKey(beanType));
+ setTooltipText(t("observe.action.delete.data.tip", typeI18nKey));
+ }
+
+ @Override
+ protected void doActionPerformed(ActionEvent event, U ui) {
+
+ List<R> selectedData = ui.getModel().getSelectedDatas();
+
+ ObserveEditNode editNode = ui.getModel().getEditNode();
+ try {
+ fr.ird.observe.client.ui.content.api.data.open.actions.Close.closeData(editNode);
+ } catch (CloseEditNodeVetoException e1) {
+ UIHelper.handlingError(e1);
+ return;
+ }
+ boolean canDelete = askToDelete(ui, selectedData);
+ if (canDelete) {
+ getMainUIModel().setBusy(true);
+ try {
+ doDelete(ui, selectedData);
+ } finally {
+ SwingUtilities.invokeLater(() -> afterDelete(selectedData));
+ }
+ }
+ }
+
+ private boolean askToDelete(U ui, List<R> bean) {
+ return UIHelper.confirmForEntityDelete(ui, ui.getModel().getReferenceType(), bean);
+ }
+
+ private void afterDelete(List<R> selectedData) {
+
+ try {
+
+ log.info("After delete: " + selectedData.stream().map(DtoReference::getId).collect(Collectors.joining()));
+ getDataSource().setModified(true);
+ NavigationTree tree = getNavigationTree();
+
+ MultipleReferenceContainerNode<D, R> parentNode = (MultipleReferenceContainerNode<D, R>) tree.getSelectedNode();
+ for (R selectedDatum : selectedData) {
+ int nodePosition = parentNode.getNodePosition(selectedDatum);
+ TreeNode nodeToDelete = parentNode.getChildAt(nodePosition);
+ tree.removeNode((MutableTreeNode) nodeToDelete);
+ }
+ tree.reloadNode(parentNode, false);
+ tree.selectSafeNode(parentNode.getParent());
+ tree.selectSafeNode(parentNode);
+ } finally {
+ getMainUIModel().setBusy(false);
+ }
+
+ }
+
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/TripListUI.jaxx
=====================================
@@ -41,4 +41,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/actions/TripListUIDelete.java
=====================================
@@ -0,0 +1,51 @@
+package fr.ird.observe.client.ui.content.data.ll.common.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ll.common.TripListUI;
+import fr.ird.observe.dto.data.ll.common.TripDto;
+import fr.ird.observe.dto.data.ll.common.TripReference;
+import fr.ird.observe.dto.referential.common.ProgramDto;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class TripListUIDelete extends DeleteActionSupport<ProgramDto, TripDto, TripReference, TripListUI> {
+
+ private static final Logger log = LogManager.getLogger(TripListUIDelete.class);
+
+ public TripListUIDelete() {
+ super(TripDto.class);
+ }
+
+ @Override
+ protected void doDelete(TripListUI ui, List<TripReference> beanList) {
+ for (TripReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getLlCommonTripService().delete(bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/LandingListUI.jaxx
=====================================
@@ -41,4 +41,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/actions/LandingListUIDelete.java
=====================================
@@ -0,0 +1,52 @@
+package fr.ird.observe.client.ui.content.data.ll.landing.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ll.landing.LandingListUI;
+import fr.ird.observe.dto.data.ll.common.TripDto;
+import fr.ird.observe.dto.data.ll.landing.LandingDto;
+import fr.ird.observe.dto.data.ll.landing.LandingReference;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class LandingListUIDelete extends DeleteActionSupport<TripDto, LandingDto, LandingReference, LandingListUI> {
+
+ private static final Logger log = LogManager.getLogger(LandingListUIDelete.class);
+
+ public LandingListUIDelete() {
+ super(LandingDto.class);
+ }
+
+ @Override
+ protected void doDelete(LandingListUI ui, List<LandingReference> beanList) {
+ for (LandingReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getLlLandingLandingService().delete(bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/ActivityListUI.jaxx
=====================================
@@ -42,4 +42,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/TripSampleListUI.jaxx
=====================================
@@ -42,4 +42,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/ActivityListUIDelete.java
=====================================
@@ -0,0 +1,52 @@
+package fr.ird.observe.client.ui.content.data.ll.logbook.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ll.logbook.ActivityListUI;
+import fr.ird.observe.dto.data.ll.common.TripDto;
+import fr.ird.observe.dto.data.ll.logbook.ActivityDto;
+import fr.ird.observe.dto.data.ll.logbook.ActivityReference;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class ActivityListUIDelete extends DeleteActionSupport<TripDto, ActivityDto, ActivityReference, ActivityListUI> {
+
+ private static final Logger log = LogManager.getLogger(ActivityListUIDelete.class);
+
+ public ActivityListUIDelete() {
+ super(ActivityDto.class);
+ }
+
+ @Override
+ protected void doDelete(ActivityListUI ui, List<ActivityReference> beanList) {
+ for (ActivityReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getLlLogbookActivityService().delete(bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/TripSampleListUIDelete.java
=====================================
@@ -0,0 +1,53 @@
+package fr.ird.observe.client.ui.content.data.ll.logbook.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ll.logbook.TripSampleListUI;
+import fr.ird.observe.dto.data.ll.common.TripDto;
+import fr.ird.observe.dto.data.ll.logbook.SampleDto;
+import fr.ird.observe.dto.data.ll.logbook.SampleReference;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class TripSampleListUIDelete extends DeleteActionSupport<TripDto, SampleDto, SampleReference, TripSampleListUI> {
+
+ private static final Logger log = LogManager.getLogger(TripSampleListUIDelete.class);
+
+ public TripSampleListUIDelete() {
+ super(SampleDto.class);
+ }
+
+ @Override
+ protected void doDelete(TripSampleListUI ui, List<SampleReference> beanList) {
+ String parentId = ui.getModel().getSelectedParentId();
+ for (SampleReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getLlLogbookTripSampleService().delete(parentId, bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/ActivityListUI.jaxx
=====================================
@@ -42,4 +42,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/actions/ActivityListUIDelete.java
=====================================
@@ -0,0 +1,52 @@
+package fr.ird.observe.client.ui.content.data.ll.observation.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ll.observation.ActivityListUI;
+import fr.ird.observe.dto.data.ll.common.TripDto;
+import fr.ird.observe.dto.data.ll.observation.ActivityDto;
+import fr.ird.observe.dto.data.ll.observation.ActivityReference;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class ActivityListUIDelete extends DeleteActionSupport<TripDto, ActivityDto, ActivityReference, ActivityListUI> {
+
+ private static final Logger log = LogManager.getLogger(ActivityListUIDelete.class);
+
+ public ActivityListUIDelete() {
+ super(ActivityDto.class);
+ }
+
+ @Override
+ protected void doDelete(ActivityListUI ui, List<ActivityReference> beanList) {
+ for (ActivityReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getLlObservationActivityService().delete(bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/TripListUI.jaxx
=====================================
@@ -43,4 +43,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/actions/TripListUIDelete.java
=====================================
@@ -0,0 +1,52 @@
+package fr.ird.observe.client.ui.content.data.ps.common.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ps.common.TripListUI;
+import fr.ird.observe.dto.data.ps.common.TripDto;
+import fr.ird.observe.dto.data.ps.common.TripReference;
+import fr.ird.observe.dto.referential.common.ProgramDto;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class TripListUIDelete extends DeleteActionSupport<ProgramDto, TripDto, TripReference, TripListUI> {
+
+ private static final Logger log = LogManager.getLogger(TripListUIDelete.class);
+
+ public TripListUIDelete() {
+ super(TripDto.class);
+ }
+
+ @Override
+ protected void doDelete(TripListUI ui, List<TripReference> beanList) {
+ for (TripReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getPsCommonTripService().delete(bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/ActivityListUI.jaxx
=====================================
@@ -42,4 +42,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/RouteListUI.jaxx
=====================================
@@ -43,5 +43,5 @@
<JButton id='close'/>
<JButton id='move'/>
<JButton id='create'/>
-
+ <JButton id='delete'/>
</fr.ird.observe.client.ui.content.api.data.list.ContentListUI>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/ActivityListUIDelete.java
=====================================
@@ -0,0 +1,52 @@
+package fr.ird.observe.client.ui.content.data.ps.observation.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ps.observation.ActivityListUI;
+import fr.ird.observe.dto.data.ps.observation.ActivityDto;
+import fr.ird.observe.dto.data.ps.observation.ActivityReference;
+import fr.ird.observe.dto.data.ps.observation.RouteDto;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class ActivityListUIDelete extends DeleteActionSupport<RouteDto, ActivityDto, ActivityReference, ActivityListUI> {
+
+ private static final Logger log = LogManager.getLogger(ActivityListUIDelete.class);
+
+ public ActivityListUIDelete() {
+ super(ActivityDto.class);
+ }
+
+ @Override
+ protected void doDelete(ActivityListUI ui, List<ActivityReference> beanList) {
+ for (ActivityReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getPsObservationActivityService().delete(bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/RouteListUIDelete.java
=====================================
@@ -0,0 +1,52 @@
+package fr.ird.observe.client.ui.content.data.ps.observation.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.content.api.data.list.actions.DeleteActionSupport;
+import fr.ird.observe.client.ui.content.data.ps.observation.RouteListUI;
+import fr.ird.observe.dto.data.ps.common.TripDto;
+import fr.ird.observe.dto.data.ps.observation.RouteDto;
+import fr.ird.observe.dto.data.ps.observation.RouteReference;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+public class RouteListUIDelete extends DeleteActionSupport<TripDto, RouteDto, RouteReference, RouteListUI> {
+
+ private static final Logger log = LogManager.getLogger(RouteListUIDelete.class);
+
+ public RouteListUIDelete() {
+ super(RouteDto.class);
+ }
+
+ @Override
+ protected void doDelete(RouteListUI ui, List<RouteReference> beanList) {
+ for (RouteReference bean : beanList) {
+ log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId()));
+ getServicesProvider().getPsObservationRouteService().delete(bean.getId());
+ log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId()));
+
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java
=====================================
@@ -69,6 +69,7 @@ import java.awt.event.ComponentEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeListener;
+import java.util.List;
import java.util.Objects;
import static io.ultreia.java4all.i18n.I18n.t;
@@ -323,6 +324,61 @@ public class UIHelper extends UIHelperSupport {
return response == 0;
}
+ public static <E extends IdDto> boolean confirmForEntityDelete(JAXXObject parent, Class<E> beanClass, List<E> beanList) {
+ return confirmForEntityDelete(parent, beanClass, beanList, null);
+ }
+
+ /**
+ * Ouvre une demande de confirmation, avant suppression d'une entité.
+ *
+ * @param <E> le type de l'entité à supprimer
+ * @param parent le component graphique demande l'action
+ * @param beanClass le tyê de l'entité à supprimer
+ * @param beanList la liste d'entité à supprimer
+ * @param extraMessage un message supplémentaire a ajouter
+ * @return {@code true} si l'utilisateur a confitmé la suppression,
+ * {@code false} sinon.
+ */
+ public static <E extends IdDto> boolean confirmForEntityDelete(JAXXObject parent, Class<E> beanClass, List<E> beanList, String extraMessage) {
+ JFrame mainUI = ObserveSwingApplicationContextSupport.get().getMainUI();
+
+ if (parent == null) {
+ // on cherche l'ui principale
+ parent = (JAXXObject) mainUI;
+ }
+
+ ObserveSwingApplicationContextSupport.get().getMainUIModel().setBusy(true);
+ int response;
+ try {
+ DecoratorService decoratorService = ObserveSwingApplicationContextSupport.get().getDecoratorService();
+ Decorator<E> decorator = decoratorService.getDecoratorByType(beanClass);
+ String messageDelete;
+ String type = ObserveI18nDecoratorHelper.getTypeI18nKey(beanClass);
+ type = t(type);
+
+ StringBuilder beanStr = new StringBuilder();
+ // delete existing entity
+ for (E e : beanList) {
+ beanStr.append("\n\t").append(decorator.toString(e));
+ }
+ messageDelete = t("observe.message.delete.list", type, beanStr.toString());
+
+ if (extraMessage != null) {
+ messageDelete += '\n' + extraMessage;
+ }
+
+ response = askUser((Component) parent,
+ t("observe.title.delete"),
+ messageDelete,
+ JOptionPane.WARNING_MESSAGE,
+ new Object[]{t("observe.choice.confirm.delete"),
+ t("observe.choice.cancel")},
+ 1);
+ } finally {
+ ObserveSwingApplicationContextSupport.get().getMainUIModel().setBusy(false);
+ }
+ return response == 0;
+ }
public static void handlingError(Exception e) {
handlingError(e.getMessage(), e);
=====================================
observe-i18n/src/main/i18n/translations/observe_en_GB.properties
=====================================
@@ -2302,6 +2302,7 @@ observe.message.db.none.loaded=< No data source loaded >
observe.message.db.none.loaded.tip=No data source loaded...
observe.message.delete=Confirm to delete object\:\n\n '%1$s' - '%2$s'\n
observe.message.delete.directory=Delete directory %1$s
+observe.message.delete.list=Confirm to delete object '%1$s'\:\n%2$s\n
observe.message.delete.new=Confirm to delete object\:\n\n '%1$s'\n
observe.message.goto.site=Go to ObServe site (%1$s)
observe.message.h2.server.login=Login
=====================================
observe-i18n/src/main/i18n/translations/observe_es_ES.properties
=====================================
@@ -2302,6 +2302,7 @@ observe.message.db.none.loaded=No hay fuente de datos cargada
observe.message.db.none.loaded.tip=No hay fuente de datos cargada...
observe.message.delete=Confirmar la eliminación del objeto \:\n\n '%1$s' - '%2$s'\n
observe.message.delete.directory=Eliminación del directorio %1$s
+observe.message.delete.list=Confirmar la eliminación del objeto '%1$s' \:\n%2$s\n
observe.message.delete.new=Confirme la eliminación del objeto \:\n\n '%1$s'\n
observe.message.goto.site=Acceder al sitio de d'Observe (%1$s)
observe.message.h2.server.login=Iniciar sesión
=====================================
observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
=====================================
@@ -2302,6 +2302,7 @@ observe.message.db.none.loaded=Aucune source de données chargée
observe.message.db.none.loaded.tip=Aucune source de données chargée...
observe.message.delete=Confirmer la suppression de l'objet \:\n\n '%1$s' - '%2$s'\n
observe.message.delete.directory=Suppresion du répertoire %1$s
+observe.message.delete.list=Confirmer la suppression des objets de type '%1$s' \:\n%2$s\n
observe.message.delete.new=Confirmer la suppression de l'objet \:\n\n '%1$s'\n
observe.message.goto.site=Accéder au site d'Observe (%1$s)
observe.message.h2.server.login=Identifiant
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6c2b603c8c4d7807b21702f9ce4…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6c2b603c8c4d7807b21702f9ce4…
You're receiving this email because of your account on gitlab.com.
1
0
26 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
8b001306 by tchemit at 2019-09-26T12:21:32Z
improve report admin action
- - - - -
9 changed files:
- client-core/src/main/i18n/getters/java.getter
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java
- observe-i18n/src/main/i18n/translations/observe_en_GB.properties
- observe-i18n/src/main/i18n/translations/observe_es_ES.properties
- observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
Changes:
=====================================
client-core/src/main/i18n/getters/java.getter
=====================================
@@ -262,6 +262,8 @@ observe.actions.validate.validator.message.header.tip
observe.actions.validate.validator.scope.header
observe.actions.validate.validator.scope.header.tip
observe.admin.report.description
+observe.admin.report.no.report.found
+observe.admin.report.report.count.found
observe.admin.report.title
observe.admin.report.title.tip
observe.admin.resume.no.operation.done
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx
=====================================
@@ -81,4 +81,9 @@ protected void finalize() throws Throwable {
<JButton id="chooseFileReport"/>
</cell>
</row>
+ <row>
+ <cell columns="3" anchor="west">
+ <JLabel id="reportsCountInformation" styleClass="information"/>
+ </cell>
+ </row>
</Table>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss
=====================================
@@ -48,3 +48,7 @@
text:{getStringValue(stepModel.getReportFile())};
}
+#reportsCountInformation {
+ text:{handler.updateReportsCountInformation(stepModel.getReports())};
+}
+
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java
=====================================
@@ -6,15 +6,15 @@
* %%
* 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
+ * 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
+ *
+ * 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%
@@ -74,7 +74,6 @@ public class ReportModel extends AdminActionModel {
public static final String VALID_PROPERTY_NAME = "valid";
- /** Logger. */
private static final Logger log = LogManager.getLogger(ReportModel.class);
/** Type de rapport à charger. */
@@ -155,10 +154,7 @@ public class ReportModel extends AdminActionModel {
public void setAutoCopyToClipboard(boolean autoCopyToClipboard) {
boolean oldValue = this.autoCopyToClipboard;
this.autoCopyToClipboard = autoCopyToClipboard;
- firePropertyChange(AUTO_COPY_TO_CLIPBOARD_PROPERTY_NAME,
- oldValue,
- autoCopyToClipboard
- );
+ firePropertyChange(AUTO_COPY_TO_CLIPBOARD_PROPERTY_NAME, oldValue, autoCopyToClipboard);
}
public boolean isCopyRowHeaders() {
@@ -168,10 +164,7 @@ public class ReportModel extends AdminActionModel {
public void setCopyRowHeaders(boolean copyRowHeaders) {
boolean oldValue = this.copyRowHeaders;
this.copyRowHeaders = copyRowHeaders;
- firePropertyChange(COPY_ROW_HEADERS_PROPERTY_NAME,
- oldValue,
- copyRowHeaders
- );
+ firePropertyChange(COPY_ROW_HEADERS_PROPERTY_NAME, oldValue, copyRowHeaders);
}
public boolean isCopyColumnHeaders() {
@@ -181,10 +174,7 @@ public class ReportModel extends AdminActionModel {
public void setCopyColumnHeaders(boolean copyColumnHeaders) {
boolean oldValue = this.copyColumnHeaders;
this.copyColumnHeaders = copyColumnHeaders;
- firePropertyChange(COPY_COLUMN_HEADERS_PROPERTY_NAME,
- oldValue,
- copyColumnHeaders
- );
+ firePropertyChange(COPY_COLUMN_HEADERS_PROPERTY_NAME, oldValue, copyColumnHeaders);
}
public ResultTableModel getResultModel() {
@@ -205,12 +195,9 @@ public class ReportModel extends AdminActionModel {
try {
URL resource = reportFile.toURI().toURL();
allReports = loadReports(resource);
- if (log.isDebugEnabled()) {
- log.debug("Add loaded " + allReports.size() + " report(s).");
- }
+ log.debug(String.format("Add loaded %d report(s).", allReports.size()));
} catch (IOException e) {
- throw new IllegalStateException(
- "Could not load reports definition file (" + reportFile + ").", e);
+ throw new IllegalStateException(String.format("Could not load reports definition file (%s).", reportFile), e);
}
}
return allReports;
@@ -278,14 +265,12 @@ public class ReportModel extends AdminActionModel {
public void updateReports() {
setSelectedReport(null);
- if (reportFile==null) {
+ if (reportFile == null) {
return;
}
reports = getAllReports().stream().filter(r -> modelType == r.getModelType()).collect(Collectors.toList());
firePropertyChange(REPORTS_PROPERTY_NAME, reports);
- if (log.isInfoEnabled()) {
- log.info("Detects " + (reports.size() - 1) + " report(s).");
- }
+ log.info(String.format("Detects %d report(s).", reports.size() - 1));
}
public void start(AdminUIModel uiModel) {
@@ -295,22 +280,17 @@ public class ReportModel extends AdminActionModel {
File reportFile = ObserveResourceManager.Resource.report.getFile(config.getReportDirectory());
if (reportFile.exists()) {
- if (log.isInfoEnabled()) {
- log.info("Will use report file : " + reportFile);
- }
+ log.info(String.format("Will use report file : %s", reportFile));
setReportFile(reportFile);
} else {
- if (log.isWarnEnabled())
- log.warn("Default report file " + reportFile + " does not exists.");
+ log.warn(String.format("Default report file %s does not exists.", reportFile));
}
// on ecoute la modification du modèle
PropertyChangeListener listenReportModified = evt -> {
ReportModel source = (ReportModel) evt.getSource();
- if (log.isDebugEnabled()) {
- log.debug("report model [" + source + "] changed on " + evt.getPropertyName() + ", new value = " + evt.getNewValue());
- }
+ log.debug(String.format("report model [%s] changed on %s, new value = %s", source, evt.getPropertyName(), evt.getNewValue()));
uiModel.validate();
};
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java
=====================================
@@ -26,6 +26,7 @@ import fr.ird.observe.client.ObserveSwingTechnicalException;
import fr.ird.observe.client.db.ObserveSwingDataSource;
import fr.ird.observe.client.ui.admin.AdminStep;
import fr.ird.observe.client.ui.admin.AdminTabUIHandler;
+import fr.ird.observe.client.ui.admin.AdminUIModel;
import fr.ird.observe.client.ui.admin.config.ConfigUI;
import fr.ird.observe.client.ui.admin.report.actions.CopyResultToClipboard;
import fr.ird.observe.client.ui.util.JaxxObjectInitializer;
@@ -107,13 +108,13 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
onReportsChanged(ui, reports);
} else if (ReportModel.SELECTED_REPORT_PROPERTY_NAME.equals(propertyName)) {
Report report = (Report) newValue;
- onSelectedReportChanged(ui, source, report);
+ onSelectedReportChanged(report);
} else if (ReportModel.VARIABLES_PROPERTY_NAME.equals(propertyName)) {
Map<String, Object> variables = (Map<String, Object>) newValue;
- onVariablesChanges(source, variables);
+ onVariablesChanges(variables);
} else if (ReportModel.VALID_PROPERTY_NAME.equals(propertyName)) {
final Boolean valid = (Boolean) newValue;
- SwingUtilities.invokeLater(() -> onValidChanged(source, valid != null && valid));
+ SwingUtilities.invokeLater(() -> onValidChanged(valid != null && valid));
}
});
@@ -204,6 +205,13 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
return t(report.getDescription());
}
+ String updateReportsCountInformation(List<Report> reports) {
+ if (reports == null || reports.size() < 2) {
+ return t("observe.admin.report.no.report.found");
+ }
+ return t("observe.admin.report.report.count.found", reports.size() - 1);
+ }
+
private void updateVariable(JComboBox combo, Object value) {
String variableName = (String) combo.getClientProperty(VARIABLE_NAME);
if (variableName == null) {
@@ -214,7 +222,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
}
private void onReportsChanged(ReportUI tabUI, List<?> newValue) {
- log.debug("New reports : " + newValue);
+ log.debug(String.format("New reports : %s", newValue));
// on ajoute toujours une premiere valeur null (pour ne rien selectionne)
newValue.add(0, null);
// on charge le nouveau modèle dans la liste déroulante
@@ -222,26 +230,28 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
}
@SuppressWarnings({"unchecked"})
- private void onSelectedReportChanged(ReportUI tabUI, ReportModel model, Report report) {
- log.info("New selected report [" + report + "]");
- ui.getModel().setBusy(true);
+ private void onSelectedReportChanged(Report report) {
+ log.info(String.format("New selected report [%s]", report));
+ AdminUIModel model = this.ui.getModel();
+ ReportModel stepModel = getStepModel();
+ model.setBusy(true);
try {
// on regénère l'ui de configuration des variables
- JPanel variablesPanel = tabUI.getReportVariableSelectorPanel();
+ JPanel variablesPanel = ui.getReportVariableSelectorPanel();
variablesPanel.removeAll();
// on utilise les variables uniquement si nécessaire
boolean useVariables = report != null && report.isVariableRequired();
- tabUI.getReportVariableSelectorPane().setVisible(useVariables);
+ ui.getReportVariableSelectorPane().setVisible(useVariables);
// calcul des données et contruction du tableau
- model.getResultModel().clear();
+ stepModel.getResultModel().clear();
if (report != null) {
try {
- ObserveSwingDataSource dataSource = ui.getModel().getConfigModel().getLocalSourceModel().getSafeSource(true);
+ ObserveSwingDataSource dataSource = model.getConfigModel().getLocalSourceModel().getSafeSource(true);
ReportService reportService = dataSource.getReportService();
- report = reportService.populateVariables(report, ui.getModel().getSelectDataModel().getSelectedTripIds());
+ report = reportService.populateVariables(report, model.getSelectDataModel().getSelectedTripIds());
} catch (Exception e) {
throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e);
}
@@ -291,35 +301,37 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
// on revalide la disposition de l'onglet
SwingUtilities.invokeLater(revalidateTabUI);
- Map<String, Object> variables = model.getVariables();
+ Map<String, Object> variables = stepModel.getVariables();
updateValidState(report, variables);
}
} finally {
- ui.getModel().setBusy(false);
+ model.setBusy(false);
}
}
- private void onVariablesChanges(ReportModel model, Map<String, Object> variables) {
- Report report = model.getSelectedReport();
+ private void onVariablesChanges(Map<String, Object> variables) {
+ Report report = getStepModel().getSelectedReport();
if (report != null) {
updateValidState(report, variables);
}
}
- private void onValidChanged(ReportModel model, boolean valid) {
+ private void onValidChanged(boolean valid) {
log.info("valid state changed to " + valid);
+ ReportModel stepModel = getStepModel();
if (!valid) {
// calcul des données et contruction du tableau
- model.getResultModel().clear();
+ stepModel.getResultModel().clear();
return;
}
- ui.getModel().setBusy(true);
+ AdminUIModel model = ui.getModel();
+ model.setBusy(true);
try {
- Report report = model.getSelectedReport();
- ImmutableSet<String> tripIds = ui.getModel().getSelectDataModel().getSelectedTripIds();
- DataDtoReference trip = ui.getModel().getSelectDataModel().getSelectedTrip();
+ Report report = stepModel.getSelectedReport();
+ ImmutableSet<String> tripIds = model.getSelectDataModel().getSelectedTripIds();
+ DataDtoReference trip = model.getSelectDataModel().getSelectedTrip();
log.info(String.format("Build result for report [%s] on %s", report.getName(), trip));
- Map<String, Object> variables = model.getVariables();
+ Map<String, Object> variables = stepModel.getVariables();
for (ReportVariable variable : report.getVariables()) {
Object value = variables.get(variable.getName());
variable.setSelectedValue(value);
@@ -327,7 +339,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
long startTime = TimeLog.getTime();
- ObserveSwingDataSource dataSource = ui.getModel().getConfigModel().getLocalSourceModel().getSafeSource(true);
+ ObserveSwingDataSource dataSource = model.getConfigModel().getLocalSourceModel().getSafeSource(true);
if (!dataSource.isOpen()) {
dataSource.open();
}
@@ -335,23 +347,20 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
ReportService reportService = dataSource.getReportService();
DataMatrix data = reportService.executeReport(report, tripIds);
timeLog.log(startTime, "execute", report.getName());
- log.info("Result to display:\n" + data.getClipboardContent(true, true, false, '\t'));
+ log.info(String.format("Result to display:\n%s", data.getClipboardContent(true, true, false, '\t')));
// calcul des données et contruction du tableau
- model.getResultModel().populate(report, data);
+ stepModel.getResultModel().populate(report, data);
// mise a jour du clipboard automatique si requis
- if (model.isAutoCopyToClipboard()) {
- CopyResultToClipboard.copyReportToClipBoard(report,
- model.getResultModel(),
- model.isCopyRowHeaders(),
- model.isCopyColumnHeaders());
+ if (stepModel.isAutoCopyToClipboard()) {
+ CopyResultToClipboard.copyReportToClipBoard(report, stepModel);
}
} catch (Exception e) {
UIHelper.handlingError("Could not obtain report data", e);
- model.getResultModel().clear();
+ stepModel.getResultModel().clear();
} finally {
- ui.getModel().setBusy(false);
+ model.setBusy(false);
}
}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java
=====================================
@@ -47,20 +47,16 @@ public class CopyResultToClipboard extends AdminTabUIActionSupport<ReportUI> {
protected void doActionPerformed(ActionEvent e, ReportUI ui) {
ReportModel stepModel = ui.getStepModel();
Report report = stepModel.getSelectedReport();
- ResultTableModel model = stepModel.getResultModel();
- copyReportToClipBoard(report, model, stepModel.isCopyRowHeaders(), stepModel.isCopyColumnHeaders());
+ copyReportToClipBoard(report, stepModel);
}
- public static void copyReportToClipBoard(Report report,
- ResultTableModel model,
- boolean copyRowHeaders,
- boolean copyColumnHeaders) {
+ public static void copyReportToClipBoard(Report report, ReportModel stepModel) {
if (report == null) {
return;
}
-
+ ResultTableModel model = stepModel.getResultModel();
log.info(String.format("Will copy result of report %s - result dimension : [%d,%d]", report.getName(), model.getRowCount(), model.getColumnCount()));
- String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders);
+ String content = model.getClipbordContent(stepModel.isCopyRowHeaders(), stepModel.isCopyColumnHeaders());
UIHelperSupport.copyToClipBoard(content);
}
}
=====================================
observe-i18n/src/main/i18n/translations/observe_en_GB.properties
=====================================
@@ -361,6 +361,8 @@ observe.admin.report.copy.row.headers=Copy row header
observe.admin.report.copy.row.headers.tip=Add in result row headers
observe.admin.report.description=Generate reports
observe.admin.report.model.type=Model type to use
+observe.admin.report.no.report.found=No report found.
+observe.admin.report.report.count.found=Found %s reports.
observe.admin.report.report.description=Description of selected report
observe.admin.report.result=Results
observe.admin.report.select=Select report
=====================================
observe-i18n/src/main/i18n/translations/observe_es_ES.properties
=====================================
@@ -361,6 +361,8 @@ observe.admin.report.copy.row.headers=Copiar las cabeceras de linea
observe.admin.report.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna)
observe.admin.report.description=Generar los cuadros de síntesis del informe de fin del embarque
observe.admin.report.model.type=Tipo de modelo a utilizar
+observe.admin.report.no.report.found=No report found. \#TODO
+observe.admin.report.report.count.found=Found %s reports. \#TODO
observe.admin.report.report.description=Descripción del informe seleccionado
observe.admin.report.result=Resultados del informe
observe.admin.report.select=Selección del informe
=====================================
observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
=====================================
@@ -361,6 +361,8 @@ observe.admin.report.copy.row.headers=Copier les entêtes de ligne
observe.admin.report.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne)
observe.admin.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement
observe.admin.report.model.type=Type de modèle à utiliser
+observe.admin.report.no.report.found=Aucun rapport trouvé.
+observe.admin.report.report.count.found=%s rapports détectés.
observe.admin.report.report.description=Description du rapport sélectionné
observe.admin.report.result=Résultats du rapport
observe.admin.report.select=Sélection du rapport
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/8b001306bcd5bfd2ee4e3da2cf8…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/8b001306bcd5bfd2ee4e3da2cf8…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 6 commits: Introduce new simple Jaxx Object initializer
by Tony CHEMIT 25 Sep '19
by Tony CHEMIT 25 Sep '19
25 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
9523f5d5 by tchemit at 2019-09-25T15:27:57Z
Introduce new simple Jaxx Object initializer
- - - - -
96301f64 by tchemit at 2019-09-25T15:28:04Z
fix a i18n
- - - - -
9e601963 by tchemit at 2019-09-25T15:28:39Z
reorder enumeration values since we now use it to add a key stroke in validation admin config ui
- - - - -
6461eabe by tchemit at 2019-09-25T15:29:09Z
let's listen JaxxObjectActionSupport (to have full trace of accepted/rejected actions)
- - - - -
6ef6650d by tchemit at 2019-09-25T15:29:49Z
Continue to improve admin actions using new jaxx api.
- - - - -
8c192060 by tchemit at 2019-09-25T15:30:18Z
use new api
- - - - -
30 changed files:
- client-configuration/src/main/java/fr/ird/observe/client/constants/ValidationModelMode.java
- client-configuration/src/main/resources/observe-log4j2.xml
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUILauncher.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUIModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/actions/SelectData.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/longline/pairing/ActivityLonglinePairingUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/ChooseFileReport.java
- + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/SelectModelType.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateConfigUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/actions/SelectValidationModelMode.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/actions/SelectValidationScope.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIHandler.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIInitializer.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToSubTab1.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToSubTab2.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToSubTab3.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToTab1.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToTab2.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToTab3.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/ebe457ca303b922f53224288b3…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/ebe457ca303b922f53224288b3…
You're receiving this email because of your account on gitlab.com.
1
0
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
ebe457ca by tchemit at 2019-09-25T09:29:37Z
Review Report action
- - - - -
18 changed files:
- client-core/src/main/i18n/getters/java.getter
- client-core/src/main/i18n/getters/jaxx.getter
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminActionModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIInitializer.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java
- + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/ChooseFileReport.java
- + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIInitializer.java
- client-db/src/main/java/fr/ird/observe/client/ui/util/UIHelperSupport.java
- observe-i18n/src/main/i18n/translations/observe_en_GB.properties
- observe-i18n/src/main/i18n/translations/observe_es_ES.properties
- observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
Changes:
=====================================
client-core/src/main/i18n/getters/java.getter
=====================================
@@ -46,6 +46,7 @@ observe.action.configuration.tip
observe.action.connexions
observe.action.connexions.tip
observe.action.continue
+observe.action.copy
observe.action.copy.to.clipBoard
observe.action.copyFloatingObjectPartToLeft
observe.action.copyFloatingObjectPartToLeft.tip
@@ -153,12 +154,10 @@ observe.actions.operation.message.needFix
observe.actions.operation.message.running
observe.actions.operation.message.successed
observe.actions.report
-observe.actions.report.description
-observe.actions.report.title
-observe.actions.report.title.tip
observe.actions.saveLocal
observe.actions.saveLocal.description
observe.actions.synchro.cancel.tip
+observe.actions.synchro.copy.tip
observe.actions.synchro.data
observe.actions.synchro.data.copyToLeft.tip
observe.actions.synchro.data.copyToRight.tip
@@ -262,6 +261,9 @@ observe.actions.validate.validator.message.header
observe.actions.validate.validator.message.header.tip
observe.actions.validate.validator.scope.header
observe.actions.validate.validator.scope.header.tip
+observe.admin.report.description
+observe.admin.report.title
+observe.admin.report.title.tip
observe.admin.resume.no.operation.done
observe.admin.resume.operation.canceled
observe.admin.resume.operation.done
=====================================
client-core/src/main/i18n/getters/jaxx.getter
=====================================
@@ -9,15 +9,8 @@ observe.Id.species
observe.Id.weightMeasureType
observe.Id.whenArriving
observe.Id.whenLeaving
-observe.action.auto.copy.to.clipboard
-observe.action.auto.copy.to.clipboard.tip
observe.action.configuration
observe.action.connexions
-observe.action.copy
-observe.action.copy.column.headers
-observe.action.copy.column.headers.tip
-observe.action.copy.row.headers
-observe.action.copy.row.headers.tip
observe.action.create
observe.action.delete
observe.action.floatingObjectPresets
@@ -27,16 +20,6 @@ observe.action.save.all.tip
observe.actions.longline.pairing.config
observe.actions.operation.configuration
observe.actions.operations
-observe.actions.report.config
-observe.actions.report.copy.options
-observe.actions.report.model.type
-observe.actions.report.report.description
-observe.actions.report.result
-observe.actions.report.select
-observe.actions.report.select.file
-observe.actions.report.select.file.tip
-observe.actions.report.variables
-observe.actions.synchro.copy.tip
observe.actions.synchro.data.actionsToPerform
observe.actions.synchro.referential.config.mode
observe.actions.synchro.referential.obsolete.entities.list
@@ -51,6 +34,21 @@ observe.actions.validate.select.mode
observe.actions.validate.select.mode.tip
observe.actions.validate.select.scope
observe.actions.validate.select.scope.tip
+observe.admin.report.auto.copy.to.clipboard
+observe.admin.report.auto.copy.to.clipboard.tip
+observe.admin.report.config
+observe.admin.report.copy.column.headers
+observe.admin.report.copy.column.headers.tip
+observe.admin.report.copy.options
+observe.admin.report.copy.row.headers
+observe.admin.report.copy.row.headers.tip
+observe.admin.report.model.type
+observe.admin.report.report.description
+observe.admin.report.result
+observe.admin.report.select
+observe.admin.report.select.file
+observe.admin.report.select.file.tip
+observe.admin.report.variables
observe.common.directory
observe.common.file
observe.common.global.progression.description
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminActionModel.java
=====================================
@@ -6,21 +6,24 @@
* %%
* 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
+ * 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
+ *
+ * You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
package fr.ird.observe.client.ui.admin;
+import io.ultreia.java4all.bean.JavaBean;
+import io.ultreia.java4all.bean.definition.JavaBeanDefinition;
+import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore;
import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardExtStepModel;
/**
@@ -29,10 +32,23 @@ import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardExtStepModel;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.4
*/
-public abstract class AdminActionModel extends WizardExtStepModel<AdminStep> {
+public abstract class AdminActionModel extends WizardExtStepModel<AdminStep> implements JavaBean {
+ /**
+ * Lazy helper class that manages all java bean operations.
+ *
+ * @see #javaBeanDefinition()
+ */
+ private transient JavaBeanDefinition javaBeanDefinition;
protected AdminActionModel(AdminStep objectOperation) {
super(objectOperation);
}
+ @Override
+ public final JavaBeanDefinition javaBeanDefinition() {
+ return javaBeanDefinition == null
+ ? javaBeanDefinition = JavaBeanDefinitionStore.getDefinition(getClass()).orElseThrow(() -> new NullPointerException("Can't find JavaBeanDefinition for " + getClass()))
+ : javaBeanDefinition;
+ }
+
}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
=====================================
@@ -197,11 +197,11 @@ public enum AdminStep implements WizardExtStep {
/** pour lancer la generation des rapports */
REPORT(
- n("observe.actions.report.title"),
- n("observe.actions.report.title.tip"),
+ n("observe.admin.report.title"),
+ n("observe.admin.report.title.tip"),
"report",
n("observe.actions.report"),
- n("observe.actions.report.description"),
+ n("observe.admin.report.description"),
ReportModel.class,
ReportUI.class,
false,
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIInitializer.java
=====================================
@@ -25,7 +25,9 @@ package fr.ird.observe.client.ui.admin;
import com.google.common.collect.ImmutableMap;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.ui.content.api.ContentUIInitializer;
+import fr.ird.observe.client.ui.util.BeanCheckBox;
import fr.ird.observe.client.ui.util.UIHelper;
+import fr.ird.observe.client.ui.util.UIHelperSupport;
import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.dto.decoration.DecoratorService;
import org.apache.commons.lang3.BooleanUtils;
@@ -80,7 +82,6 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> {
private static final String CLIENT_PROPERTY_NOT_BLOCKING = "notBlocking";
- /** Logger. */
private static final Logger log = LogManager.getLogger(AdminTabUIInitializer.class);
protected final UI ui;
@@ -115,6 +116,10 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> {
// init((JComponent) o, doNotBlockComponentIds);
// }
+ if (o instanceof BeanCheckBox) {
+ init((BeanCheckBox) o);
+ }
+
if (o instanceof AbstractButton) {
init((AbstractButton) o);
continue;
@@ -191,6 +196,15 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> {
}
}
+ protected void init(BeanCheckBox editor) {
+ log.debug("init simple boolean editor " + editor.getName());
+ String propertyName = editor.getProperty();
+ if (StringUtils.isEmpty(propertyName)) {
+ editor.setProperty(editor.getName());
+ }
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
+ }
+
@SuppressWarnings("unchecked")
protected void init(BeanComboBox beanComboBox) {
if (log.isDebugEnabled()) {
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx
=====================================
@@ -59,10 +59,7 @@ protected void finalize() throws Throwable {
<JLabel id='modelTypeLabel'/>
</cell>
<cell weightx='1' fill="horizontal" columns="2">
- <EnumEditor id="modelType"
- genericType='ObserveModelType'
- constructorParams='ObserveModelType.class'
- onItemStateChanged='getHandler().setModelTypeFromEvent(event)'/>
+ <EnumEditor id="modelType" genericType='ObserveModelType' constructorParams='ObserveModelType.class' onItemStateChanged='getHandler().setModelTypeFromEvent(event)'/>
</cell>
</row>
<row>
@@ -70,11 +67,10 @@ protected void finalize() throws Throwable {
<JLabel id='reportFileLabel'/>
</cell>
<cell weightx='1' fill="horizontal">
- <JTextField id="reportFile"
- onKeyReleased='stepModel.setReportFile(new File(((JTextField)event.getSource()).getText()))'/>
+ <JTextField id="reportFile" onKeyReleased='stepModel.setReportFile(new File(((JTextField)event.getSource()).getText()))'/>
</cell>
<cell anchor="east">
- <JButton id="reportFileChooserAction" onActionPerformed="getHandler().chooseReportFile()"/>
+ <JButton id="chooseFileReport"/>
</cell>
</row>
</Table>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss
=====================================
@@ -21,11 +21,11 @@
*/
#reportConfig {
- border:{new TitledBorder(t("observe.actions.report.config"))};
+ border:{new TitledBorder(t("observe.admin.report.config"))};
}
#modelTypeLabel {
- text:"observe.actions.report.model.type";
+ text:"observe.admin.report.model.type";
}
#modelType {
@@ -33,15 +33,11 @@
}
#reportFileLabel {
- text:"observe.actions.report.select.file";
- toolTipText:"observe.actions.report.select.file.tip";
+ text:"observe.admin.report.select.file";
+ toolTipText:"observe.admin.report.select.file.tip";
}
#reportFile {
text:{getStringValue(stepModel.getReportFile())};
}
-#reportFileChooserAction {
- actionIcon:"fileChooser";
-}
-
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java
=====================================
@@ -32,8 +32,9 @@ import fr.ird.observe.client.ui.tree.selection.SelectionTreeModel;
import fr.ird.observe.dto.ObserveModelType;
import fr.ird.observe.services.service.actions.report.Report;
import fr.ird.observe.services.service.actions.report.ReportBuilder;
-import org.apache.logging.log4j.Logger;
+import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -50,6 +51,7 @@ import java.util.stream.Collectors;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
+@GenerateJavaBeanDefinition
public class ReportModel extends AdminActionModel {
public static final String SELECTED_TRIP_PROPERTY_NAME = "selectedTrip";
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jaxx
=====================================
@@ -28,6 +28,8 @@
fr.ird.observe.client.ui.admin.AdminUI
fr.ird.observe.services.service.actions.report.Report
+ fr.ird.observe.client.ui.util.BeanCheckBox
+
java.awt.Dimension
javax.swing.DefaultComboBoxModel
@@ -81,17 +83,15 @@ public void destroy() {
</JScrollPane>
<JPanel id="copyPane" constraints='BorderLayout.SOUTH'>
- <JPanel id='copyOptions' constraints='BorderLayout.NORTH'>
- <JCheckBox id='autoCopyToClipboard'
- onStateChanged='getStepModel().setAutoCopyToClipboard(((JCheckBox)event.getSource()).isSelected())'/>
- <JCheckBox id='copyRowHeaders'
- onStateChanged='getStepModel().setCopyRowHeaders(((JCheckBox)event.getSource()).isSelected())'/>
- <JCheckBox id='copyColumnHeaders'
- onStateChanged='getStepModel().setCopyColumnHeaders(((JCheckBox)event.getSource()).isSelected())'/>
+ <JPanel id='copyOptions' constraints='BorderLayout.NORTH' beanScope="stepModel">
+ <BeanCheckBox id='autoCopyToClipboard'/>
+<!-- onStateChanged='getStepModel().setAutoCopyToClipboard(((JCheckBox)event.getSource()).isSelected())'/>-->
+ <BeanCheckBox id='copyRowHeaders'/>
+<!-- onStateChanged='getStepModel().setCopyRowHeaders(((JCheckBox)event.getSource()).isSelected())'/>-->
+ <BeanCheckBox id='copyColumnHeaders'/>
+<!-- onStateChanged='getStepModel().setCopyColumnHeaders(((JCheckBox)event.getSource()).isSelected())'/>-->
</JPanel>
- <JButton id="copy" constraints='BorderLayout.CENTER'
- onActionPerformed='getHandler().copyReportToClipBoard(getStepModel().getSelectedReport(), getResultModel(), getStepModel().isCopyRowHeaders(),
- getStepModel().isCopyColumnHeaders())'/>
+ <JButton id="copyResultToClipboard" constraints='BorderLayout.CENTER'/>
</JPanel>
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jcss
=====================================
@@ -35,18 +35,17 @@ JToolBar {
}
#reportVariableSelectorPanel {
- border:{new TitledBorder(t("observe.actions.report.variables"))};
+ border:{new TitledBorder(t("observe.admin.report.variables"))};
layout:{new GridLayout(0,1)};
}
#copyOptions {
- border:{new TitledBorder(t("observe.actions.report.copy.options"))};
+ border:{new TitledBorder(t("observe.admin.report.copy.options"))};
layout:{new GridLayout(0,1)};
}
#resultPane {
- border:{new TitledBorder(t("observe.actions.report.result"))};
- /*columnHeaderView:{resultTable.getTableHeader()};*/
+ border:{new TitledBorder(t("observe.admin.report.result"))};
verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED};
}
@@ -56,7 +55,7 @@ JToolBar {
}
#requestSelectorPane {
- border:{new TitledBorder(t("observe.actions.report.select"))};
+ border:{new TitledBorder(t("observe.admin.report.select"))};
layout:{new BorderLayout()};
}
@@ -66,7 +65,7 @@ JToolBar {
}
#reportDescriptionPane {
- columnHeaderView:{UIHelper.newLabel(t("observe.actions.report.report.description") ,"information", 10)};
+ columnHeaderView:{UIHelper.newLabel(t("observe.admin.report.report.description") ,"information", 10)};
minimumSize:{new Dimension(0,0)};
}
@@ -86,29 +85,25 @@ JToolBar {
#copyPane {
layout:{new BorderLayout()};
}
+
#autoCopyToClipboard {
- text:"observe.action.auto.copy.to.clipboard";
- toolTipText:"observe.action.auto.copy.to.clipboard.tip";
- selected:{stepModel.isAutoCopyToClipboard()};
+ text:"observe.admin.report.auto.copy.to.clipboard";
+ toolTipText:"observe.admin.report.auto.copy.to.clipboard.tip";
+ /*selected:{stepModel.isAutoCopyToClipboard()};*/
}
#copyRowHeaders {
- text:"observe.action.copy.row.headers";
- toolTipText:"observe.action.copy.row.headers.tip";
- selected:{stepModel.isCopyRowHeaders()};
+ text:"observe.admin.report.copy.row.headers";
+ toolTipText:"observe.admin.report.copy.row.headers.tip";
+ /*selected:{stepModel.isCopyRowHeaders()};*/
}
#copyColumnHeaders {
- text:"observe.action.copy.column.headers";
- toolTipText:"observe.action.copy.column.headers.tip";
- selected:{stepModel.isCopyColumnHeaders()};
-}
-
-#copy {
- text:"observe.action.copy";
- toolTipText:"observe.actions.synchro.copy.tip";
- actionIcon:"report-copy";
- /*enabled:{stepModel.getSelectedReport() != null};*/
- enabled:{stepModel.isValid() };
- mnemonic:C;
+ text:"observe.admin.report.copy.column.headers";
+ toolTipText:"observe.admin.report.copy.column.headers.tip";
+ /*selected:{stepModel.isCopyColumnHeaders()};*/
+}
+
+#copyResultToClipboard {
+ enabled:{stepModel.isValid()};
}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java
=====================================
@@ -26,7 +26,9 @@ import fr.ird.observe.client.ObserveSwingTechnicalException;
import fr.ird.observe.client.db.ObserveSwingDataSource;
import fr.ird.observe.client.ui.admin.AdminStep;
import fr.ird.observe.client.ui.admin.AdminTabUIHandler;
+import fr.ird.observe.client.ui.admin.AdminTabUIInitializer;
import fr.ird.observe.client.ui.admin.config.ConfigUI;
+import fr.ird.observe.client.ui.admin.report.actions.CopyResultToClipboard;
import fr.ird.observe.client.ui.util.UIHelper;
import fr.ird.observe.client.ui.util.UIHelperSupport;
import fr.ird.observe.dto.ObserveModelType;
@@ -61,7 +63,6 @@ import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ItemEvent;
-import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -87,26 +88,21 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
@Override
public void afterInit(ReportUI ui) {
+ new AdminTabUIInitializer<>(ui).initUI();
super.afterInit(ui);
- if (log.isDebugEnabled()) {
- log.debug(" specialized for [" + ui.getStep() + "] for main ui " + parentUI.getClass().getName() + "@" + System.identityHashCode(this.ui));
- }
+ log.debug(String.format(" specialized for [%s] for main ui %s@%d", ui.getStep(), parentUI.getClass().getName(), System.identityHashCode(this.ui)));
revalidateTabUI = ui::revalidate;
- UIHelper.setLayerUI(ui.getContent(), parentUI.getConfigBlockLayerUI());
+ UIHelperSupport.setLayerUI(ui.getContent(), parentUI.getConfigBlockLayerUI());
ReportModel stepModel = getStepModel();
stepModel.addPropertyChangeListener(evt -> {
-
if (ui.getModel().getModelState() == WizardState.CANCELED) {
-
// action annulée, on ne declanche plus rien
return;
}
String propertyName = evt.getPropertyName();
Object newValue = evt.getNewValue();
-
ReportModel source = (ReportModel) evt.getSource();
-
if (ReportModel.REPORTS_PROPERTY_NAME.equals(propertyName)) {
List<?> reports = (List<?>) newValue;
onReportsChanged(ui, reports);
@@ -119,8 +115,6 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
} else if (ReportModel.VALID_PROPERTY_NAME.equals(propertyName)) {
final Boolean valid = (Boolean) newValue;
SwingUtilities.invokeLater(() -> onValidChanged(source, valid != null && valid));
-
-
}
});
@@ -130,14 +124,12 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value == null) {
-
// on affiche une message de sélection de report
value = t("observe.message.select.report");
}
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
}
-
);
// ajout du renderer sur le tableau
@@ -180,15 +172,11 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
ui.getResultTable().setDefaultRenderer(String.class, renderer);
// initialisation de l'ui de configuration
- if (log.isInfoEnabled()) {
- log.info("Init extra configuration for " + ui.getName());
- }
+ log.info(String.format("Init extra configuration for %s", ui.getName()));
ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG);
JAXXInitialContext tx = new JAXXInitialContext().add(configUI).add(this);
-
ReportConfigUI extraConfig = new ReportConfigUI(tx);
-
configUI.getExtraConfig().add(extraConfig);
}
@@ -199,11 +187,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
}
void updateSelectedReportFromEvent(ItemEvent event) {
-
if (event.getStateChange() == ItemEvent.SELECTED) {
- if (log.isInfoEnabled()) {
- log.info("Item selected!");
- }
JComboBox source = (JComboBox) event.getSource();
updateSelectedReport((Report) source.getSelectedItem());
}
@@ -212,11 +196,8 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
void updateSelectedReport(Report report) {
ui.getModel().setBusy(true);
try {
- if (log.isInfoEnabled()) {
- log.info("New selected report : " + report);
- }
+ log.info(String.format("New selected report : %s", report));
getStepModel().setSelectedReport(report);
-
} finally {
ui.getModel().setBusy(false);
}
@@ -232,64 +213,24 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
private void updateVariable(JComboBox combo, Object value) {
String variableName = (String) combo.getClientProperty(VARIABLE_NAME);
if (variableName == null) {
- throw new IllegalStateException(
- "No 'variableName' clientProperty on " + combo);
+ throw new IllegalStateException("No 'variableName' clientProperty on " + combo);
}
- log.info("Set variable [" + variableName + "] to value " + value);
+ log.info(String.format("Set variable [%s] to value %s", variableName, value));
getStepModel().addVariable(variableName, value);
}
- void chooseReportFile() {
- ReportModel model = ui.getModel().getReportModel();
- File f = UIHelper.chooseFile(
- ui,
- t("observe.title.choose.reportFile"),
- t("observe.action.choose.reportFile"),
- model.getReportFile(),
- "^.+\\.properties$",
- t("observe.action.choose.reportFile.description"));
- model.setReportFile(f);
- }
-
- void copyReportToClipBoard(Report report,
- ResultTableModel model,
- boolean copyRowHeaders,
- boolean copyColumnHeaders) {
- if (report == null) {
-
- // pas de report sélectionné, rien à faire
- return;
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Will copy result of report " + report.getName());
- log.debug("Result dimension : [" + model.getRowCount() + "," +
- model.getColumnCount() + "]");
- }
- String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders);
- UIHelper.copyToClipBoard(content);
- }
-
private void onReportsChanged(ReportUI tabUI, List<?> newValue) {
-
- if (log.isDebugEnabled()) {
- log.debug("New reports : " + newValue);
- }
-
+ log.debug("New reports : " + newValue);
// on ajoute toujours une premiere valeur null (pour ne rien selectionne)
newValue.add(0, null);
-
// on charge le nouveau modèle dans la liste déroulante
- UIHelper.fillComboBox(tabUI.getReportSelector(), newValue, null);
+ UIHelperSupport.fillComboBox(tabUI.getReportSelector(), newValue, null);
}
@SuppressWarnings({"unchecked"})
private void onSelectedReportChanged(ReportUI tabUI, ReportModel model, Report report) {
-
log.info("New selected report [" + report + "]");
-
ui.getModel().setBusy(true);
-
try {
// on regénère l'ui de configuration des variables
JPanel variablesPanel = tabUI.getReportVariableSelectorPanel();
@@ -303,30 +244,22 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
model.getResultModel().clear();
if (report != null) {
-
try {
-
ObserveSwingDataSource dataSource = ui.getModel().getConfigModel().getLocalSourceModel().getSafeSource(true);
-
ReportService reportService = dataSource.getReportService();
-
report = reportService.populateVariables(report, ui.getModel().getSelectDataModel().getSelectedTripIds());
-
} catch (Exception e) {
throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e);
}
if (useVariables) {
-
// on construit les ui pour chaqsue variable
for (ReportVariable variable : report.getVariables()) {
String variableName = variable.getName();
- // String value = variables.get(variableName);
Set values = variable.getValues();
List<Object> universe = new ArrayList<>(values);
-
- Decorator decorator;
log.info("Variable type: " + variable.getType());
+ Decorator decorator;
Class type;
if (ReferentialDto.class.isAssignableFrom(variable.getType()) && !universe.isEmpty()) {
type = DtoModelHelper.fromReferentialDto(variable.getType()).toReferenceType();
@@ -340,7 +273,6 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
}
log.info("Variable real type: " + type);
BeanFilterableComboBox combo = UIHelperSupport.newBeanFilterableComboBox(type, (JXPathDecorator) decorator, universe);
-
combo.setShowReset(true);
JPanel p = new JPanel(new BorderLayout());
p.add(new JLabel(t(I18nDecoratorHelper.getTypeI18nKey(variable.getType()))), BorderLayout.WEST);
@@ -349,20 +281,14 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
JComboBox jComboBox = combo.getCombobox();
jComboBox.putClientProperty(VARIABLE_NAME, variableName);
jComboBox.addItemListener(e -> {
-
JComboBox comboBox = (JComboBox) e.getSource();
-
if (e.getStateChange() == ItemEvent.DESELECTED) {
-
- // ne rien faire de l'évènement de déselection
- // sauf si le modèle devient vide
-
+ // ne rien faire de l'évènement de déselection sauf si le modèle devient vide
if (comboBox.getSelectedItem() == null) {
updateVariable(comboBox, null);
}
return;
}
-
Object o = e.getItem();
updateVariable(comboBox, o);
});
@@ -371,51 +297,35 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
// on revalide la disposition de l'onglet
SwingUtilities.invokeLater(revalidateTabUI);
-
Map<String, Object> variables = model.getVariables();
updateValidState(report, variables);
}
} finally {
-
ui.getModel().setBusy(false);
-
}
}
private void onVariablesChanges(ReportModel model, Map<String, Object> variables) {
-
Report report = model.getSelectedReport();
if (report != null) {
-
updateValidState(report, variables);
}
}
private void onValidChanged(ReportModel model, boolean valid) {
-
- if (log.isInfoEnabled()) {
- log.info("valid state changed to " + valid);
- }
-
+ log.info("valid state changed to " + valid);
if (!valid) {
// calcul des données et contruction du tableau
model.getResultModel().clear();
return;
}
-
ui.getModel().setBusy(true);
-
try {
-
Report report = model.getSelectedReport();
-
ImmutableSet<String> tripIds = ui.getModel().getSelectDataModel().getSelectedTripIds();
DataDtoReference trip = ui.getModel().getSelectDataModel().getSelectedTrip();
-
log.info(String.format("Build result for report [%s] on %s", report.getName(), trip));
-
Map<String, Object> variables = model.getVariables();
-
for (ReportVariable variable : report.getVariables()) {
Object value = variables.get(variable.getName());
variable.setSelectedValue(value);
@@ -429,11 +339,8 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
}
ReportService reportService = dataSource.getReportService();
-
DataMatrix data = reportService.executeReport(report, tripIds);
-
timeLog.log(startTime, "execute", report.getName());
-
log.info("Result to display:\n" + data.getClipboardContent(true, true, false, '\t'));
// calcul des données et contruction du tableau
@@ -441,10 +348,10 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa
// mise a jour du clipboard automatique si requis
if (model.isAutoCopyToClipboard()) {
- copyReportToClipBoard(report,
- model.getResultModel(),
- model.isCopyRowHeaders(),
- model.isCopyColumnHeaders());
+ CopyResultToClipboard.copyReportToClipBoard(report,
+ model.getResultModel(),
+ model.isCopyRowHeaders(),
+ model.isCopyColumnHeaders());
}
} catch (Exception e) {
UIHelper.handlingError("Could not obtain report data", e);
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/ChooseFileReport.java
=====================================
@@ -0,0 +1,56 @@
+package fr.ird.observe.client.ui.admin.report.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.ObserveKeyStrokesSupport;
+import fr.ird.observe.client.ui.admin.report.ReportConfigUI;
+import fr.ird.observe.client.ui.admin.report.ReportModel;
+import fr.ird.observe.client.ui.util.UIHelper;
+import org.nuiton.jaxx.runtime.swing.action.JComponentActionSupport;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+
+import static io.ultreia.java4all.i18n.I18n.t;
+
+public class ChooseFileReport extends JComponentActionSupport<ReportConfigUI> {
+
+ public ChooseFileReport() {
+ super("", "", "fileChooser", ObserveKeyStrokesSupport.KEY_STROKE_STORAGE_DO_CHOOSE_FILE);
+ }
+
+ @Override
+ protected void doActionPerformed(ActionEvent e, ReportConfigUI ui) {
+ ReportModel model = ui.getModel().getReportModel();
+ File f = UIHelper.chooseFile(
+ ui,
+ t("observe.title.choose.reportFile"),
+ t("observe.action.choose.reportFile"),
+ model.getReportFile(),
+ "^.+\\.properties$",
+ t("observe.action.choose.reportFile.description"));
+ if (f != null) {
+ model.setReportFile(f);
+ }
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java
=====================================
@@ -0,0 +1,66 @@
+package fr.ird.observe.client.ui.admin.report.actions;
+
+/*-
+ * #%L
+ * ObServe :: Client core
+ * %%
+ * Copyright (C) 2008 - 2019 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.ui.admin.actions.AdminTabUIActionSupport;
+import fr.ird.observe.client.ui.admin.report.ReportModel;
+import fr.ird.observe.client.ui.admin.report.ReportUI;
+import fr.ird.observe.client.ui.admin.report.ResultTableModel;
+import fr.ird.observe.client.ui.util.UIHelperSupport;
+import fr.ird.observe.services.service.actions.report.Report;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.awt.event.ActionEvent;
+
+import static io.ultreia.java4all.i18n.I18n.t;
+
+public class CopyResultToClipboard extends AdminTabUIActionSupport<ReportUI> {
+
+ private static final Logger log = LogManager.getLogger(CopyResultToClipboard.class);
+
+ public CopyResultToClipboard() {
+ super(t("observe.action.copy"), t("observe.actions.synchro.copy.tip"), "report-copy", 'C');
+ }
+
+ @Override
+ protected void doActionPerformed(ActionEvent e, ReportUI ui) {
+ ReportModel stepModel = ui.getStepModel();
+ Report report = stepModel.getSelectedReport();
+ ResultTableModel model = stepModel.getResultModel();
+ copyReportToClipBoard(report, model, stepModel.isCopyRowHeaders(), stepModel.isCopyColumnHeaders());
+ }
+
+ public static void copyReportToClipBoard(Report report,
+ ResultTableModel model,
+ boolean copyRowHeaders,
+ boolean copyColumnHeaders) {
+ if (report == null) {
+ return;
+ }
+
+ log.info(String.format("Will copy result of report %s - result dimension : [%d,%d]", report.getName(), model.getRowCount(), model.getColumnCount()));
+ String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders);
+ UIHelperSupport.copyToClipBoard(content);
+ }
+}
=====================================
client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIInitializer.java
=====================================
@@ -33,6 +33,7 @@ import fr.ird.observe.client.ui.util.BeanDatePicker;
import fr.ird.observe.client.ui.util.BeanEnumEditor;
import fr.ird.observe.client.ui.util.BooleanEditor;
import fr.ird.observe.client.ui.util.UIHelper;
+import fr.ird.observe.client.ui.util.UIHelperSupport;
import fr.ird.observe.client.ui.util.tripMap.ObserveMapPane;
import fr.ird.observe.client.validation.ObserveSwingValidator;
import fr.ird.observe.dto.I18nEnumHelper;
@@ -132,9 +133,6 @@ public class ContentUIInitializer<UI extends ContentUI> {
public static final String SUB_TABBED_PANE = "subTabbedPane";
private static final String CLIENT_PROPERTY_NOT_BLOCKING = "notBlocking";
- private static final String CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN = "skipBindingToBean";
- private static final String CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN = "skipBindingFromBean";
-
private static final Logger log = LogManager.getLogger(ContentUIInitializer.class);
protected final UI ui;
@@ -365,7 +363,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
editor.getModel().addPropertyChangeListener("format", e -> ((EditableContentUI<?>) ui).getValidator().doValidate());
if (editor.getBean() != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
editor.getModel().addPropertyChangeListener(propertyName, e -> {
Float oldValue = editor.getModel().getTemperature();
Float newValue = (Float) e.getNewValue();
@@ -382,7 +380,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
editor.setProperty(editor.getName());
}
if (editor.getBean() != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> {
String oldValue = editor.getText();
String newValue = (String) e.getNewValue();
@@ -400,7 +398,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
}
if (editor.getBean() != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> {
String oldValue = editor.getText();
String newValue = (String) e.getNewValue();
@@ -418,7 +416,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
}
if (editor.getBean() != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> {
String oldValue = editor.getText();
String newValue = (String) e.getNewValue();
@@ -495,7 +493,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
}
editor.init();
if (editor.getBean() != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
((JavaBean) editor.getBean()).addPropertyChangeListener(config.getProperty(), e -> {
Number oldValue = editor.getModel().getNumberValue();
Number newValue = (Number) e.getNewValue();
@@ -523,7 +521,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
JavaBean bean = (JavaBean) editor.getBean();
String property = editor.getProperty();
if (bean != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
bean.addPropertyChangeListener(property, e -> {
Object oldValue = editor.getSelectedItem();
Object newValue = e.getNewValue();
@@ -573,7 +571,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
JavaBean bean = (JavaBean) editor.getModel().getBean();
String property = editor.getModel().getProperty();
if (bean != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
bean.addPropertyChangeListener(property, e -> {
Collection oldValue = editor.getModel().getSelected();
Collection newValue = (Collection) e.getNewValue();
@@ -606,7 +604,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
JavaBean bean = (JavaBean) editor.getModel().getBean();
String property = editor.getModel().getPropertyTime();
if (bean != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
bean.addPropertyChangeListener(property, e -> {
Date oldValue = editor.getModel().getTime();
Date newValue = (Date) e.getNewValue();
@@ -658,7 +656,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
JavaBean bean = (JavaBean) editor.getModel().getBean();
String property = editor.getModel().getPropertyDate();
if (bean != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
bean.addPropertyChangeListener(property, e -> {
Date oldValue = editor.getModel().getDate();
Date newValue = (Date) e.getNewValue();
@@ -693,7 +691,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
JavaBean bean = (JavaBean) editor.getModel().getBean();
if (bean != null) {
- if (isBindingFromBean(editor)) {
+ if (UIHelperSupport.isBindingFromBean(editor)) {
bean.addPropertyChangeListener(editor.getModel().getPropertyLatitude(), e -> {
Float oldValue = editor.getModel().getLatitude();
Float newValue = (Float) e.getNewValue();
@@ -755,7 +753,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
if (StringUtils.isEmpty(propertyName)) {
editor.setProperty(editor.getName());
}
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
}
protected void init(BeanCheckBox editor) {
@@ -764,7 +762,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
if (StringUtils.isEmpty(propertyName)) {
editor.setProperty(editor.getName());
}
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
}
protected <B extends Enum<B>> void init(BeanEnumEditor<B> editor) {
@@ -773,7 +771,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
if (StringUtils.isEmpty(propertyName)) {
editor.setProperty(editor.getName());
}
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
ImmutableMap.Builder<B, String> labelsBuilder = ImmutableMap.builder();
for (B e : EnumSet.allOf(editor.getType())) {
@@ -791,7 +789,7 @@ public class ContentUIInitializer<UI extends ContentUI> {
if (StringUtils.isEmpty(propertyName)) {
editor.setProperty(editor.getName());
}
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
editor.setLocale(ObserveSwingApplicationContextSupport.get().getConfig().getLocale());
JFormattedTextField formattedTextField = editor.getEditor();
formattedTextField.setEditable(true);
@@ -840,16 +838,6 @@ public class ContentUIInitializer<UI extends ContentUI> {
log.debug("init table editor " + editor.getName());
}
- private boolean isBindingToBean(JComponent editor) {
- Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN);
- return skip == null || !skip;
- }
-
- private boolean isBindingFromBean(JComponent editor) {
- Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN);
- return skip == null || !skip;
- }
-
private boolean isAutoSelectOnFocus(JComponent comp) {
Boolean selectOnFocus = (Boolean) comp.getClientProperty("selectOnFocus");
return BooleanUtils.isTrue(selectOnFocus);
=====================================
client-db/src/main/java/fr/ird/observe/client/ui/util/UIHelperSupport.java
=====================================
@@ -76,6 +76,8 @@ public class UIHelperSupport extends SwingUtil {
public static final PropertyChangeListener LOG_PROPERTY_CHANGE_LISTENER = new LogPropertyChanged();
static private final Logger log = LogManager.getLogger(UIHelperSupport.class);
+ private static final String CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN = "skipBindingToBean";
+ private static final String CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN = "skipBindingFromBean";
/**
* Choisir un fichier via un sélecteur graphique de fichiers.
@@ -357,6 +359,16 @@ public class UIHelperSupport extends SwingUtil {
return new JAXXInitialContext().add(model).add(ui);
}
+ public static boolean isBindingToBean(JComponent editor) {
+ Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN);
+ return skip == null || !skip;
+ }
+
+ public static boolean isBindingFromBean(JComponent editor) {
+ Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN);
+ return skip == null || !skip;
+ }
+
public static class LogPropertyChanged implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
=====================================
observe-i18n/src/main/i18n/translations/observe_en_GB.properties
=====================================
@@ -33,8 +33,6 @@ observe.action.about.tip=About ObServe...
observe.action.admin.cancel=Cancel wizard
observe.action.admin.close=Close wizard
observe.action.apply=Apply
-observe.action.auto.copy.to.clipboard=Automatic copy in clipboard
-observe.action.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result
observe.action.back.to.list=Back to list
observe.action.back.to.list.tip=Go back to the list
observe.action.cancel=Cancel
@@ -84,10 +82,6 @@ observe.action.connexions=Manage connections
observe.action.connexions.tip=Manage connection profiles
observe.action.continue=Continue
observe.action.copy=Copy
-observe.action.copy.column.headers=Copy column headers
-observe.action.copy.column.headers.tip=Add in result column headers
-observe.action.copy.row.headers=Copy row header
-observe.action.copy.row.headers.tip=Add in result row headers
observe.action.copy.to.clipBoard=Copy in clipboard
observe.action.copyFloatingObjectPartToLeft=Copy values from leaving to arriving
observe.action.copyFloatingObjectPartToLeft.tip=Copy values from leaving to arriving
@@ -236,18 +230,6 @@ observe.actions.operation.message.running=Operation <%1$s> is running...
observe.actions.operation.message.successed=operation <%1$> is done.
observe.actions.operations=operations
observe.actions.report=Report
-observe.actions.report.config=Report configuration
-observe.actions.report.copy.options=Copy into clipboard options
-observe.actions.report.description=Generate reports
-observe.actions.report.model.type=Model type to use
-observe.actions.report.report.description=Description of selected report
-observe.actions.report.result=Results
-observe.actions.report.select=Select report
-observe.actions.report.select.file=File of reports definitions
-observe.actions.report.select.file.tip=Choose file of reports definitions
-observe.actions.report.title=Help to generat reports
-observe.actions.report.title.tip=Help to generate reports
-observe.actions.report.variables=Variables configuration
observe.actions.saveLocal=Save local database
observe.actions.saveLocal.description=Save modifcations on local database
observe.actions.synchro.cancel.tip=Cancel
@@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Message
observe.actions.validate.validator.message.header.tip=Message
observe.actions.validate.validator.scope.header=...
observe.actions.validate.validator.scope.header.tip=Type of message
+observe.admin.report.auto.copy.to.clipboard=Automatic copy in clipboard
+observe.admin.report.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result
+observe.admin.report.config=Report configuration
+observe.admin.report.copy.column.headers=Copy column headers
+observe.admin.report.copy.column.headers.tip=Add in result column headers
+observe.admin.report.copy.options=Copy into clipboard options
+observe.admin.report.copy.row.headers=Copy row header
+observe.admin.report.copy.row.headers.tip=Add in result row headers
+observe.admin.report.description=Generate reports
+observe.admin.report.model.type=Model type to use
+observe.admin.report.report.description=Description of selected report
+observe.admin.report.result=Results
+observe.admin.report.select=Select report
+observe.admin.report.select.file=File of reports definitions
+observe.admin.report.select.file.tip=Choose file of reports definitions
+observe.admin.report.title=Help to generat reports
+observe.admin.report.title.tip=Help to generate reports
+observe.admin.report.variables=Variables configuration
observe.admin.resume.no.operation.done=No operation done.
observe.admin.resume.operation.canceled=operation canceled
observe.admin.resume.operation.done=operation done
=====================================
observe-i18n/src/main/i18n/translations/observe_es_ES.properties
=====================================
@@ -33,8 +33,6 @@ observe.action.about.tip=A cerca de ObServe...
observe.action.admin.cancel=Anular el asintente
observe.action.admin.close=Cerrar el asistente
observe.action.apply=Aplicar
-observe.action.auto.copy.to.clipboard=Copia automatica al portapapeles
-observe.action.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados
observe.action.back.to.list=Volver a la lista
observe.action.back.to.list.tip=Volver a la lista de datos
observe.action.cancel=Cancelar
@@ -84,10 +82,6 @@ observe.action.connexions=Gérer les connexions \#TODO
observe.action.connexions.tip=Gérer les profiles de connexion \#TODO
observe.action.continue=Continuar
observe.action.copy=Copiar en el portapeles
-observe.action.copy.column.headers=Copiar los encabezados de columnas
-observe.action.copy.column.headers.tip=Añadir al resultado las cabeceras de columna
-observe.action.copy.row.headers=Copiar las cabeceras de linea
-observe.action.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna)
observe.action.copy.to.clipBoard=Copiar el contenido en el portapapeles
observe.action.copyFloatingObjectPartToLeft=Copy values from leaving to arriving \#TODO
observe.action.copyFloatingObjectPartToLeft.tip=Copy values from leaving to arriving \#TODO
@@ -236,18 +230,6 @@ observe.actions.operation.message.running=La operación < %1$s > se está ejecut
observe.actions.operation.message.successed=La operación < %1$s > se terminó.
observe.actions.operations=Operaciones a realizar
observe.actions.report=Cuadros de síntesis
-observe.actions.report.config=Configuración de los informes
-observe.actions.report.copy.options=Opciones de copia en el portapapeles
-observe.actions.report.description=Generar los cuadros de síntesis del informe de fin del embarque
-observe.actions.report.model.type=Tipo de modelo a utilizar
-observe.actions.report.report.description=Descripción del informe seleccionado
-observe.actions.report.result=Resultados del informe
-observe.actions.report.select=Selección del informe
-observe.actions.report.select.file=Archivo de definición de informes
-observe.actions.report.select.file.tip=Elegir el archivo de definición de informes
-observe.actions.report.title=Ayuda a la generación de informes
-observe.actions.report.title.tip=Ayuda a la generación del informe de fin del embarque
-observe.actions.report.variables=Configuración de variables
observe.actions.saveLocal=Copia de seguridad de la base local
observe.actions.saveLocal.description=Guardar las modificationes realizadas en la base locale
observe.actions.synchro.cancel.tip=Cancelar
@@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Mensaje
observe.actions.validate.validator.message.header.tip=El texto del mensaje
observe.actions.validate.validator.scope.header=...
observe.actions.validate.validator.scope.header.tip=El tipo del mensaje
+observe.admin.report.auto.copy.to.clipboard=Copia automatica al portapapeles
+observe.admin.report.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados
+observe.admin.report.config=Configuración de los informes
+observe.admin.report.copy.column.headers=Copiar los encabezados de columnas
+observe.admin.report.copy.column.headers.tip=Añadir al resultado las cabeceras de columna
+observe.admin.report.copy.options=Opciones de copia en el portapapeles
+observe.admin.report.copy.row.headers=Copiar las cabeceras de linea
+observe.admin.report.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna)
+observe.admin.report.description=Generar los cuadros de síntesis del informe de fin del embarque
+observe.admin.report.model.type=Tipo de modelo a utilizar
+observe.admin.report.report.description=Descripción del informe seleccionado
+observe.admin.report.result=Resultados del informe
+observe.admin.report.select=Selección del informe
+observe.admin.report.select.file=Archivo de definición de informes
+observe.admin.report.select.file.tip=Elegir el archivo de definición de informes
+observe.admin.report.title=Ayuda a la generación de informes
+observe.admin.report.title.tip=Ayuda a la generación del informe de fin del embarque
+observe.admin.report.variables=Configuración de variables
observe.admin.resume.no.operation.done=Ninguna operación realizada
observe.admin.resume.operation.canceled=operación cancelada
observe.admin.resume.operation.done=operacion realizada
=====================================
observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
=====================================
@@ -33,8 +33,6 @@ observe.action.about.tip=À propos d'ObServe...
observe.action.admin.cancel=Annulation de l'assistant
observe.action.admin.close=Fermeture de l'assistant
observe.action.apply=Appliquer
-observe.action.auto.copy.to.clipboard=Copie automatique dans le presse-papier
-observe.action.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats
observe.action.back.to.list=Retour à la liste
observe.action.back.to.list.tip=Retour à la liste des données
observe.action.cancel=Annuler
@@ -84,10 +82,6 @@ observe.action.connexions=Gérer les connexions
observe.action.connexions.tip=Gérer les profiles de connexion
observe.action.continue=Continuer
observe.action.copy=Copier dans le presse-papier
-observe.action.copy.column.headers=Copier les entêtes de colonne
-observe.action.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne)
-observe.action.copy.row.headers=Copier les entêtes de ligne
-observe.action.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne)
observe.action.copy.to.clipBoard=Copier le contenu dans le presse-papier
observe.action.copyFloatingObjectPartToLeft=Recopier les valeurs du départ vers l'arrivée
observe.action.copyFloatingObjectPartToLeft.tip=Recopier les valeurs du départ vers l'arrivée
@@ -236,18 +230,6 @@ observe.actions.operation.message.running=L'opération < %1$s > est en cours d'e
observe.actions.operation.message.successed=L'opération < %1$s > est terminée.
observe.actions.operations=Opérations à effectuer
observe.actions.report=Tableaux de synthèse
-observe.actions.report.config=Configuration des reports
-observe.actions.report.copy.options=Options de copie dans le presse-papier
-observe.actions.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement
-observe.actions.report.model.type=Type de modèle à utiliser
-observe.actions.report.report.description=Description du rapport sélectionné
-observe.actions.report.result=Résultats du rapport
-observe.actions.report.select=Sélection du rapport
-observe.actions.report.select.file=Fichier de définition de reports
-observe.actions.report.select.file.tip=Choisir le fichier de définition des reports
-observe.actions.report.title=Aide à la génération de rapport
-observe.actions.report.title.tip=Aide à la génération du rapport de fin d'embarquement
-observe.actions.report.variables=Configuration des variables
observe.actions.saveLocal=Sauvegarde de la base locale
observe.actions.saveLocal.description=Sauvegarder les modifications effectuées vers la base locale
observe.actions.synchro.cancel.tip=Annuler
@@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Message
observe.actions.validate.validator.message.header.tip=Le texte du message
observe.actions.validate.validator.scope.header=...
observe.actions.validate.validator.scope.header.tip=Le type de message
+observe.admin.report.auto.copy.to.clipboard=Copie automatique dans le presse-papier
+observe.admin.report.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats
+observe.admin.report.config=Configuration des reports
+observe.admin.report.copy.column.headers=Copier les entêtes de colonne
+observe.admin.report.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne)
+observe.admin.report.copy.options=Options de copie dans le presse-papier
+observe.admin.report.copy.row.headers=Copier les entêtes de ligne
+observe.admin.report.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne)
+observe.admin.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement
+observe.admin.report.model.type=Type de modèle à utiliser
+observe.admin.report.report.description=Description du rapport sélectionné
+observe.admin.report.result=Résultats du rapport
+observe.admin.report.select=Sélection du rapport
+observe.admin.report.select.file=Fichier de définition de reports
+observe.admin.report.select.file.tip=Choisir le fichier de définition des reports
+observe.admin.report.title=Aide à la génération de rapport
+observe.admin.report.title.tip=Aide à la génération du rapport de fin d'embarquement
+observe.admin.report.variables=Configuration des variables
observe.admin.resume.no.operation.done=Aucune opération réalisée.
observe.admin.resume.operation.canceled=opération annulée
observe.admin.resume.operation.done=opération réussie
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/ebe457ca303b922f53224288b3a…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/ebe457ca303b922f53224288b3a…
You're receiving this email because of your account on gitlab.com.
1
0