Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
2b99d825
by Tony Chemit at 2023-05-19T15:39:01+02:00
-
2dcc11ad
by Tony Chemit at 2023-05-19T15:39:01+02:00
-
02c550ed
by Tony Chemit at 2023-05-19T15:39:01+02:00
-
b5d2fcc2
by Tony Chemit at 2023-05-19T15:39:01+02:00
-
63a92659
by Tony Chemit at 2023-05-19T15:39:01+02:00
-
52f007ba
by Tony Chemit at 2023-05-19T15:39:01+02:00
24 changed files:
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/ReferentialSelectionTreePaneHandler.java
- core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/logbook/SetCatchDto-create-error-validation.xml
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/logbook/SetCatchDto-update-error-validation.xml
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetCatchDto-create-error-validation.xml
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetCatchDto-update-error-validation.xml
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDetailCompositionDto-create-error-validation.xml
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDetailCompositionDto-update-error-validation.xml
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetTdrDto-create-error-validation.xml
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetTdrDto-update-error-validation.xml
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetCatchDto-create-error-validation.xml
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetCatchDto-update-error-validation.xml
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetNonTargetCatchReleaseDto-create-error-validation.xml
- − core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetNonTargetCatchReleaseDto-update-error-validation.xml
- core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/referential/interceptors/VesselActivityInterceptor.java
- core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/observation/SetCatchSpi.java
- core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/observation/SetNonTargetCatchReleaseSpi.java
- core/services/i18n/src/main/i18n/translations/services_en_GB.properties
- core/services/i18n/src/main/i18n/translations/services_es_ES.properties
- core/services/i18n/src/main/i18n/translations/services_fr_FR.properties
- model/src/main/models/Observe/dto/attribute/skipCopyToEntity.properties
- src/site/markdown/avdth/referential.md
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/ToolkitTagValues.java
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/validation/DtoFormValidatorTransformer.java
Changes:
| ... | ... | @@ -26,16 +26,11 @@ import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.Refer |
| 26 | 26 | import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.ReferentialSynchroUI;
|
| 27 | 27 | import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.ReferentialSynchroUIHandler;
|
| 28 | 28 | import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.ReferentialSynchronizeMode;
|
| 29 | -import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.tree.actions.RegisterCopy;
|
|
| 30 | -import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.tree.actions.RegisterDeactivate;
|
|
| 31 | -import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.tree.actions.RegisterDeactivateWithReplacement;
|
|
| 32 | -import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.tree.actions.RegisterDelete;
|
|
| 33 | -import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.tree.actions.RegisterRevert;
|
|
| 34 | -import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.tree.actions.SelectUnselect;
|
|
| 29 | +import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.tree.actions.*;
|
|
| 35 | 30 | import fr.ird.observe.client.util.init.DefaultUIInitializer;
|
| 36 | 31 | import org.nuiton.jaxx.runtime.spi.UIHandler;
|
| 37 | 32 | |
| 38 | -import java.awt.BorderLayout;
|
|
| 33 | +import java.awt.*;
|
|
| 39 | 34 | |
| 40 | 35 | /**
|
| 41 | 36 | * @author Tony Chemit - dev@tchemit.fr
|
| ... | ... | @@ -63,6 +58,10 @@ public class ReferentialSelectionTreePaneHandler implements UIHandler<Referentia |
| 63 | 58 | ui.remove(ui.getMiddleActions());
|
| 64 | 59 | ui.add(ui.getMiddleActions(), BorderLayout.WEST);
|
| 65 | 60 | }
|
| 61 | + // See https://gitlab.com/ultreiaio/ird-observe/-/issues/2693
|
|
| 62 | + // Do not allow to delete (need to review delete actions, since it may cause error in some case if for example
|
|
| 63 | + // an update is asked using the deleted data...)
|
|
| 64 | + ui.getMiddleActions().remove(ui.delete);
|
|
| 66 | 65 | }
|
| 67 | 66 | |
| 68 | 67 | private void onUpdateMode(ReferentialSelectionTreePane ui, ReferentialSynchronizeMode synchronizeMode) {
|
| ... | ... | @@ -3021,34 +3021,6 @@ |
| 3021 | 3021 | }
|
| 3022 | 3022 | ]
|
| 3023 | 3023 | },
|
| 3024 | - {
|
|
| 3025 | - "type": "fr.ird.observe.dto.data.ll.logbook.SetCatchDto",
|
|
| 3026 | - "scope": "ERROR",
|
|
| 3027 | - "context": "create",
|
|
| 3028 | - "fields": [
|
|
| 3029 | - {
|
|
| 3030 | - "name": "comment",
|
|
| 3031 | - "comments": [
|
|
| 3032 | - "comment (if not null) is not a blank string",
|
|
| 3033 | - "comment length <= 8192"
|
|
| 3034 | - ]
|
|
| 3035 | - }
|
|
| 3036 | - ]
|
|
| 3037 | - },
|
|
| 3038 | - {
|
|
| 3039 | - "type": "fr.ird.observe.dto.data.ll.logbook.SetCatchDto",
|
|
| 3040 | - "scope": "ERROR",
|
|
| 3041 | - "context": "update",
|
|
| 3042 | - "fields": [
|
|
| 3043 | - {
|
|
| 3044 | - "name": "comment",
|
|
| 3045 | - "comments": [
|
|
| 3046 | - "comment (if not null) is not a blank string",
|
|
| 3047 | - "comment length <= 8192"
|
|
| 3048 | - ]
|
|
| 3049 | - }
|
|
| 3050 | - ]
|
|
| 3051 | - },
|
|
| 3052 | 3024 | {
|
| 3053 | 3025 | "type": "fr.ird.observe.dto.data.ll.logbook.SetDto",
|
| 3054 | 3026 | "scope": "ERROR",
|
| ... | ... | @@ -6129,34 +6101,6 @@ |
| 6129 | 6101 | }
|
| 6130 | 6102 | ]
|
| 6131 | 6103 | },
|
| 6132 | - {
|
|
| 6133 | - "type": "fr.ird.observe.dto.data.ll.observation.SetCatchDto",
|
|
| 6134 | - "scope": "ERROR",
|
|
| 6135 | - "context": "create",
|
|
| 6136 | - "fields": [
|
|
| 6137 | - {
|
|
| 6138 | - "name": "comment",
|
|
| 6139 | - "comments": [
|
|
| 6140 | - "comment (if not null) is not a blank string",
|
|
| 6141 | - "comment length <= 8192"
|
|
| 6142 | - ]
|
|
| 6143 | - }
|
|
| 6144 | - ]
|
|
| 6145 | - },
|
|
| 6146 | - {
|
|
| 6147 | - "type": "fr.ird.observe.dto.data.ll.observation.SetCatchDto",
|
|
| 6148 | - "scope": "ERROR",
|
|
| 6149 | - "context": "update",
|
|
| 6150 | - "fields": [
|
|
| 6151 | - {
|
|
| 6152 | - "name": "comment",
|
|
| 6153 | - "comments": [
|
|
| 6154 | - "comment (if not null) is not a blank string",
|
|
| 6155 | - "comment length <= 8192"
|
|
| 6156 | - ]
|
|
| 6157 | - }
|
|
| 6158 | - ]
|
|
| 6159 | - },
|
|
| 6160 | 6104 | {
|
| 6161 | 6105 | "type": "fr.ird.observe.dto.data.ll.observation.SetDetailCompositionDto",
|
| 6162 | 6106 | "scope": "ERROR",
|
| ... | ... | @@ -6174,13 +6118,6 @@ |
| 6174 | 6118 | "branchlinesPerBasketCount is a positive number"
|
| 6175 | 6119 | ]
|
| 6176 | 6120 | },
|
| 6177 | - {
|
|
| 6178 | - "name": "comment",
|
|
| 6179 | - "comments": [
|
|
| 6180 | - "comment (if not null) is not a blank string",
|
|
| 6181 | - "comment length <= 8192"
|
|
| 6182 | - ]
|
|
| 6183 | - },
|
|
| 6184 | 6121 | {
|
| 6185 | 6122 | "name": "homeId",
|
| 6186 | 6123 | "comments": [
|
| ... | ... | @@ -6212,13 +6149,6 @@ |
| 6212 | 6149 | "branchlinesPerBasketCount is a positive number"
|
| 6213 | 6150 | ]
|
| 6214 | 6151 | },
|
| 6215 | - {
|
|
| 6216 | - "name": "comment",
|
|
| 6217 | - "comments": [
|
|
| 6218 | - "comment (if not null) is not a blank string",
|
|
| 6219 | - "comment length <= 8192"
|
|
| 6220 | - ]
|
|
| 6221 | - },
|
|
| 6222 | 6152 | {
|
| 6223 | 6153 | "name": "homeId",
|
| 6224 | 6154 | "comments": [
|
| ... | ... | @@ -7061,34 +6991,6 @@ |
| 7061 | 6991 | }
|
| 7062 | 6992 | ]
|
| 7063 | 6993 | },
|
| 7064 | - {
|
|
| 7065 | - "type": "fr.ird.observe.dto.data.ll.observation.SetTdrDto",
|
|
| 7066 | - "scope": "ERROR",
|
|
| 7067 | - "context": "create",
|
|
| 7068 | - "fields": [
|
|
| 7069 | - {
|
|
| 7070 | - "name": "comment",
|
|
| 7071 | - "comments": [
|
|
| 7072 | - "comment (if not null) is not a blank string",
|
|
| 7073 | - "comment length <= 8192"
|
|
| 7074 | - ]
|
|
| 7075 | - }
|
|
| 7076 | - ]
|
|
| 7077 | - },
|
|
| 7078 | - {
|
|
| 7079 | - "type": "fr.ird.observe.dto.data.ll.observation.SetTdrDto",
|
|
| 7080 | - "scope": "ERROR",
|
|
| 7081 | - "context": "update",
|
|
| 7082 | - "fields": [
|
|
| 7083 | - {
|
|
| 7084 | - "name": "comment",
|
|
| 7085 | - "comments": [
|
|
| 7086 | - "comment (if not null) is not a blank string",
|
|
| 7087 | - "comment length <= 8192"
|
|
| 7088 | - ]
|
|
| 7089 | - }
|
|
| 7090 | - ]
|
|
| 7091 | - },
|
|
| 7092 | 6994 | {
|
| 7093 | 6995 | "type": "fr.ird.observe.dto.data.ll.observation.SizeMeasureDto",
|
| 7094 | 6996 | "scope": "ERROR",
|
| ... | ... | @@ -14560,13 +14462,6 @@ |
| 14560 | 14462 | "comments": [
|
| 14561 | 14463 | "check unique value on catches for tuple species,speciesFate,reasonForDiscard,weightMeasureMethod,minWeight,maxWeight,meanWeight,meanLength,well,informationSource"
|
| 14562 | 14464 | ]
|
| 14563 | - },
|
|
| 14564 | - {
|
|
| 14565 | - "name": "comment",
|
|
| 14566 | - "comments": [
|
|
| 14567 | - "comment (if not null) is not a blank string",
|
|
| 14568 | - "comment length <= 8192"
|
|
| 14569 | - ]
|
|
| 14570 | 14465 | }
|
| 14571 | 14466 | ]
|
| 14572 | 14467 | },
|
| ... | ... | @@ -14580,13 +14475,6 @@ |
| 14580 | 14475 | "comments": [
|
| 14581 | 14476 | "check unique value on catches for tuple species,speciesFate,reasonForDiscard,weightMeasureMethod,minWeight,maxWeight,meanWeight,meanLength,well,informationSource"
|
| 14582 | 14477 | ]
|
| 14583 | - },
|
|
| 14584 | - {
|
|
| 14585 | - "name": "comment",
|
|
| 14586 | - "comments": [
|
|
| 14587 | - "comment (if not null) is not a blank string",
|
|
| 14588 | - "comment length <= 8192"
|
|
| 14589 | - ]
|
|
| 14590 | 14478 | }
|
| 14591 | 14479 | ]
|
| 14592 | 14480 | },
|
| ... | ... | @@ -14902,34 +14790,6 @@ |
| 14902 | 14790 | }
|
| 14903 | 14791 | ]
|
| 14904 | 14792 | },
|
| 14905 | - {
|
|
| 14906 | - "type": "fr.ird.observe.dto.data.ps.observation.SetNonTargetCatchReleaseDto",
|
|
| 14907 | - "scope": "ERROR",
|
|
| 14908 | - "context": "create",
|
|
| 14909 | - "fields": [
|
|
| 14910 | - {
|
|
| 14911 | - "name": "comment",
|
|
| 14912 | - "comments": [
|
|
| 14913 | - "comment (if not null) is not a blank string",
|
|
| 14914 | - "comment length <= 8192"
|
|
| 14915 | - ]
|
|
| 14916 | - }
|
|
| 14917 | - ]
|
|
| 14918 | - },
|
|
| 14919 | - {
|
|
| 14920 | - "type": "fr.ird.observe.dto.data.ps.observation.SetNonTargetCatchReleaseDto",
|
|
| 14921 | - "scope": "ERROR",
|
|
| 14922 | - "context": "update",
|
|
| 14923 | - "fields": [
|
|
| 14924 | - {
|
|
| 14925 | - "name": "comment",
|
|
| 14926 | - "comments": [
|
|
| 14927 | - "comment (if not null) is not a blank string",
|
|
| 14928 | - "comment length <= 8192"
|
|
| 14929 | - ]
|
|
| 14930 | - }
|
|
| 14931 | - ]
|
|
| 14932 | - },
|
|
| 14933 | 14793 | {
|
| 14934 | 14794 | "type": "fr.ird.observe.dto.data.ps.observation.SetSchoolEstimateDto",
|
| 14935 | 14795 | "scope": "ERROR",
|
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| ... | ... | @@ -38,19 +38,6 @@ |
| 38 | 38 | </field-validator>
|
| 39 | 39 | </field>
|
| 40 | 40 | |
| 41 | - <field name="comment">
|
|
| 42 | - <!-- comment (if not null) is not a blank string -->
|
|
| 43 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 44 | - <message/>
|
|
| 45 | - </field-validator>
|
|
| 46 | - |
|
| 47 | - <!-- comment length <= 8192 -->
|
|
| 48 | - <field-validator type="stringMaxLength">
|
|
| 49 | - <param name="maxLength">8192</param>
|
|
| 50 | - <message/>
|
|
| 51 | - </field-validator>
|
|
| 52 | - </field>
|
|
| 53 | - |
|
| 54 | 41 | <field name="homeId">
|
| 55 | 42 | <!-- homeId (if not null) is not a blank string -->
|
| 56 | 43 | <field-validator type="notBlankString" short-circuit="true">
|
| ... | ... | @@ -38,19 +38,6 @@ |
| 38 | 38 | </field-validator>
|
| 39 | 39 | </field>
|
| 40 | 40 | |
| 41 | - <field name="comment">
|
|
| 42 | - <!-- comment (if not null) is not a blank string -->
|
|
| 43 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 44 | - <message/>
|
|
| 45 | - </field-validator>
|
|
| 46 | - |
|
| 47 | - <!-- comment length <= 8192 -->
|
|
| 48 | - <field-validator type="stringMaxLength">
|
|
| 49 | - <param name="maxLength">8192</param>
|
|
| 50 | - <message/>
|
|
| 51 | - </field-validator>
|
|
| 52 | - </field>
|
|
| 53 | - |
|
| 54 | 41 | <field name="homeId">
|
| 55 | 42 | <!-- homeId (if not null) is not a blank string -->
|
| 56 | 43 | <field-validator type="notBlankString" short-circuit="true">
|
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| ... | ... | @@ -31,17 +31,4 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | </field>
|
| 33 | 33 | |
| 34 | - <field name="comment">
|
|
| 35 | - <!-- comment (if not null) is not a blank string -->
|
|
| 36 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 37 | - <message/>
|
|
| 38 | - </field-validator>
|
|
| 39 | - |
|
| 40 | - <!-- comment length <= 8192 -->
|
|
| 41 | - <field-validator type="stringMaxLength">
|
|
| 42 | - <param name="maxLength">8192</param>
|
|
| 43 | - <message/>
|
|
| 44 | - </field-validator>
|
|
| 45 | - </field>
|
|
| 46 | - |
|
| 47 | 34 | </validators> |
| ... | ... | @@ -31,17 +31,4 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | </field>
|
| 33 | 33 | |
| 34 | - <field name="comment">
|
|
| 35 | - <!-- comment (if not null) is not a blank string -->
|
|
| 36 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 37 | - <message/>
|
|
| 38 | - </field-validator>
|
|
| 39 | - |
|
| 40 | - <!-- comment length <= 8192 -->
|
|
| 41 | - <field-validator type="stringMaxLength">
|
|
| 42 | - <param name="maxLength">8192</param>
|
|
| 43 | - <message/>
|
|
| 44 | - </field-validator>
|
|
| 45 | - </field>
|
|
| 46 | - |
|
| 47 | 34 | </validators> |
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| 1 | -<!--
|
|
| 2 | - #%L
|
|
| 3 | - ObServe Core :: API :: Validation
|
|
| 4 | - %%
|
|
| 5 | - Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 6 | - %%
|
|
| 7 | - This program is free software: you can redistribute it and/or modify
|
|
| 8 | - it under the terms of the GNU General Public License as
|
|
| 9 | - published by the Free Software Foundation, either version 3 of the
|
|
| 10 | - License, or (at your option) any later version.
|
|
| 11 | - |
|
| 12 | - This program is distributed in the hope that it will be useful,
|
|
| 13 | - but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 14 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 15 | - GNU General Public License for more details.
|
|
| 16 | - |
|
| 17 | - You should have received a copy of the GNU General Public
|
|
| 18 | - License along with this program. If not, see
|
|
| 19 | - <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 20 | - #L%
|
|
| 21 | - -->
|
|
| 22 | -<!DOCTYPE validators PUBLIC
|
|
| 23 | - "-//Apache Struts//XWork Validator 1.0.3//EN"
|
|
| 24 | - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
|
|
| 25 | -<validators>
|
|
| 26 | - |
|
| 27 | - <field name="comment">
|
|
| 28 | - <!-- comment (if not null) is not a blank string -->
|
|
| 29 | - <field-validator type="notBlankString" short-circuit="true">
|
|
| 30 | - <message/>
|
|
| 31 | - </field-validator>
|
|
| 32 | - |
|
| 33 | - <!-- comment length <= 8192 -->
|
|
| 34 | - <field-validator type="stringMaxLength">
|
|
| 35 | - <param name="maxLength">8192</param>
|
|
| 36 | - <message/>
|
|
| 37 | - </field-validator>
|
|
| 38 | - </field>
|
|
| 39 | - |
|
| 40 | -</validators> |
| ... | ... | @@ -70,7 +70,8 @@ public class VesselActivityInterceptor extends ReferentialInterceptor<VesselActi |
| 70 | 70 | .put("32", "13")
|
| 71 | 71 | .put("33", "13")
|
| 72 | 72 | .put("34", "13")
|
| 73 | - .put("7", "22")
|
|
| 73 | + // See https://gitlab.com/ultreiaio/ird-observe/-/issues/2699
|
|
| 74 | + .put("7", "11")
|
|
| 74 | 75 | .put("8", "10")
|
| 75 | 76 | .put("9", "23")
|
| 76 | 77 | .put("10", "24")
|
| ... | ... | @@ -37,6 +37,8 @@ public class SetCatchSpi extends GeneratedSetCatchSpi { |
| 37 | 37 | @Override
|
| 38 | 38 | public void toDto(ReferentialLocale referentialLocale, Set entity, SetCatchDto dto) {
|
| 39 | 39 | super.toDto(referentialLocale, entity, dto);
|
| 40 | + // Do not copy set.comment (there is no editor in form for this)
|
|
| 41 | + dto.setComment(null);
|
|
| 40 | 42 | // is there some sample?
|
| 41 | 43 | if (entity.isSampleNotEmpty()) {
|
| 42 | 44 | Sample targetSample = entity.getSample().iterator().next();
|
| ... | ... | @@ -39,6 +39,8 @@ public class SetNonTargetCatchReleaseSpi extends GeneratedSetNonTargetCatchRelea |
| 39 | 39 | @Override
|
| 40 | 40 | public void toDto(ReferentialLocale referentialLocale, Set entity, SetNonTargetCatchReleaseDto dto) {
|
| 41 | 41 | super.toDto(referentialLocale, entity, dto);
|
| 42 | + // Do not copy set.comment (there is no editor in form for this)
|
|
| 43 | + dto.setComment(null);
|
|
| 42 | 44 | dto.setAvailableSpeciesIds(entity.getCatches().stream().map(Catch::getSpecies).filter(SetImpl::isSpeciesGroupRelease).map(Species::getTopiaId).collect(Collectors.toSet()));
|
| 43 | 45 | }
|
| 44 | 46 | } |
| ... | ... | @@ -1477,7 +1477,7 @@ observe.data.ps.observation.Set.validation.haulingEndTime.after.startTime=Pursin |
| 1477 | 1477 | observe.data.ps.observation.Set.validation.haulingStartTimeStamp.after.startTime=Hauling start time (%2$s) must be after starting time (%1).
|
| 1478 | 1478 | observe.data.ps.observation.Set.validation.startTime.after.currentPsObservationActivity.time=Start time (%2$s) must be before end time (%1$s).
|
| 1479 | 1479 | observe.data.ps.observation.SetCatch.catches=Catches
|
| 1480 | -observe.data.ps.observation.SetCatch.catches.validation.uniqueKey=Tuple (species,speciesFate,reasonForDiscard,weightMeasureMethod,meanWeight,meanLength,well,informationSource) must be unique, value at index %s is duplicated.
|
|
| 1480 | +observe.data.ps.observation.SetCatch.catches.validation.uniqueKey=Tuple (species,speciesFate,reasonForDiscard,weightMeasureMethod,minWeight,maxWeight,meanWeight,meanLength,well,informationSource) must be unique, value at index %s is duplicated.
|
|
| 1481 | 1481 | observe.data.ps.observation.SetCatch.type=Set catches
|
| 1482 | 1482 | observe.data.ps.observation.SetNonTargetCatchRelease.type=Set non target catch release
|
| 1483 | 1483 | observe.data.ps.observation.SetSchoolEstimate.schoolEstimate=School estimate
|
| ... | ... | @@ -1477,7 +1477,7 @@ observe.data.ps.observation.Set.validation.haulingEndTime.after.startTime=La hor |
| 1477 | 1477 | observe.data.ps.observation.Set.validation.haulingStartTimeStamp.after.startTime=Hauling start time (%2$s) must be after starting time (%1$s). \#TODO
|
| 1478 | 1478 | observe.data.ps.observation.Set.validation.startTime.after.currentPsObservationActivity.time=La hora de inicio (%2$s) debe ser superior o igual a la hora de observación de la actividad (%1$s).
|
| 1479 | 1479 | observe.data.ps.observation.SetCatch.catches=Captura
|
| 1480 | -observe.data.ps.observation.SetCatch.catches.validation.uniqueKey=Tuple (species,speciesFate,reasonForDiscard,weightMeasureMethod,meanWeight,meanLength,well,informationSource) must be unique, value at index %s is duplicated.
|
|
| 1480 | +observe.data.ps.observation.SetCatch.catches.validation.uniqueKey=Tuple (species,speciesFate,reasonForDiscard,weightMeasureMethod,minWeight,maxWeight,meanWeight,meanLength,well,informationSource) must be unique, value at index %s is duplicated.
|
|
| 1481 | 1481 | observe.data.ps.observation.SetCatch.type=SetCatch
|
| 1482 | 1482 | observe.data.ps.observation.SetNonTargetCatchRelease.type=SetNonTargetCatchRelease
|
| 1483 | 1483 | observe.data.ps.observation.SetSchoolEstimate.schoolEstimate=Estimación del banco
|
| ... | ... | @@ -1477,7 +1477,7 @@ observe.data.ps.observation.Set.validation.haulingEndTime.after.startTime=L'heur |
| 1477 | 1477 | observe.data.ps.observation.Set.validation.haulingStartTimeStamp.after.startTime=L'heure de début de virage (%2$s) doit être supérieure ou égal à celle de début (%1$s).
|
| 1478 | 1478 | observe.data.ps.observation.Set.validation.startTime.after.currentPsObservationActivity.time=L'heure de début (%2$s) doit être supérieure ou égal à l'heure d'observation de l'activité (%1$s).
|
| 1479 | 1479 | observe.data.ps.observation.SetCatch.catches=Captures
|
| 1480 | -observe.data.ps.observation.SetCatch.catches.validation.uniqueKey=Le tuple (espèce/devenir/raison rejet/méthode de mesure de poids/poids moyen/taille moyenne/cuve/origine de l'information) doit être unique, la donnée de rang %s est invalide.
|
|
| 1480 | +observe.data.ps.observation.SetCatch.catches.validation.uniqueKey=Le tuple (espèce/devenir/raison rejet/méthode de mesure de poids/poids min/poids max/poids moyen/taille moyenne/cuve/origine de l'information) doit être unique, la donnée de rang %s est invalide.
|
|
| 1481 | 1481 | observe.data.ps.observation.SetCatch.type=Capture
|
| 1482 | 1482 | observe.data.ps.observation.SetNonTargetCatchRelease.type=Espèce accessoire sensible libérée
|
| 1483 | 1483 | observe.data.ps.observation.SetSchoolEstimate.schoolEstimate=Estimation banc
|
| ... | ... | @@ -66,4 +66,6 @@ data.ps.observation.ActivityStub.attribute.longitude=true |
| 66 | 66 | data.ps.observation.ActivityStub.attribute.seaSurfaceTemperature=true
|
| 67 | 67 | data.ps.observation.ActivityStub.attribute.time=true
|
| 68 | 68 | data.ps.observation.Route.attribute.activity=true
|
| 69 | +data.ps.observation.SetCatch.attribute.comment=true
|
|
| 70 | +data.ps.observation.SetNonTargetCatchRelease.attribute.comment=true
|
|
| 69 | 71 | data.ps.observation.SetNonTargetCatchRelease.attribute.endPursingTimeStamp=true |
| ... | ... | @@ -223,7 +223,7 @@ Mapping type d'activité |
| 223 | 223 | | 34 | 13 (2) |
|
| 224 | 224 | | 40 | 13 (2) |
|
| 225 | 225 | | 41 | 13 (2) |
|
| 226 | -| 7 | 22 |
|
|
| 226 | +| 7 | 11 |
|
|
| 227 | 227 | | 8 | 10 |
|
| 228 | 228 | | 9 | 23 |
|
| 229 | 229 | | 10 | 24 |
|
| ... | ... | @@ -30,8 +30,10 @@ import org.nuiton.eugene.models.extension.tagvalue.matcher.EqualsTagValueNameMat |
| 30 | 30 | import org.nuiton.eugene.models.extension.tagvalue.provider.DefaultTagValueMetadatasProvider;
|
| 31 | 31 | import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider;
|
| 32 | 32 | import org.nuiton.eugene.models.object.ObjectModelAttribute;
|
| 33 | +import org.nuiton.eugene.models.object.ObjectModelClass;
|
|
| 33 | 34 | import org.nuiton.eugene.models.object.ObjectModelClassifier;
|
| 34 | 35 | import org.nuiton.eugene.models.object.ObjectModelPackage;
|
| 36 | +import org.nuiton.eugene.models.tagvalue.ObjectModelTagValuesStore;
|
|
| 35 | 37 | |
| 36 | 38 | import java.util.Arrays;
|
| 37 | 39 | import java.util.LinkedHashSet;
|
| ... | ... | @@ -139,6 +141,10 @@ public class ToolkitTagValues extends DefaultTagValueMetadatasProvider { |
| 139 | 141 | return tagValue == null ? null : tagValue.trim();
|
| 140 | 142 | }
|
| 141 | 143 | |
| 144 | + public boolean isSkipCopyToEntity(ObjectModelTagValuesStore store, ObjectModelClass clazz, ObjectModelAttribute attribute) {
|
|
| 145 | + return store.findAttributeBooleanTagValue(Store.skipCopyToEntity, clazz, attribute);
|
|
| 146 | + }
|
|
| 147 | + |
|
| 142 | 148 | public String notSkip(String tagValue) {
|
| 143 | 149 | return Objects.equals("skip", tagValue) ? null : tagValue;
|
| 144 | 150 | }
|
| ... | ... | @@ -539,6 +539,12 @@ public class DtoFormValidatorTransformer extends ObjectModelTransformerToJava { |
| 539 | 539 | attributes.addAll(beanClass.getAllOtherAttributes());
|
| 540 | 540 | |
| 541 | 541 | ObjectModelTagValuesStore tagValuesStore = model.getTagValuesStore();
|
| 542 | + Set<String> skipCopyToEntity = new TreeSet<>();
|
|
| 543 | + for (ObjectModelAttribute attribute : attributes) {
|
|
| 544 | + if (observeTagValues.isSkipCopyToEntity(tagValuesStore, beanClass, attribute)) {
|
|
| 545 | + skipCopyToEntity.add(attribute.getName());
|
|
| 546 | + }
|
|
| 547 | + }
|
|
| 542 | 548 | if (WellIdAware.class.isAssignableFrom(dtoClazz)) {
|
| 543 | 549 | addErrorValidator("well", String.format(WELL_ID_AWARE_FIELD_TEMPLATE, dtoClazz.getPackageName().contains("ps") ? "ps" : "ll"));
|
| 544 | 550 | } else if (WellIdsAware.class.isAssignableFrom(dtoClazz)) {
|
| ... | ... | @@ -580,6 +586,9 @@ public class DtoFormValidatorTransformer extends ObjectModelTransformerToJava { |
| 580 | 586 | Map<String, String> speciesLength = getStringProperties(beanClass, attributes, (c, a) -> validationTagValues.getSpeciesLength(tagValuesStore, c, a));
|
| 581 | 587 | Map<String, String> collectionUniqueKey = getStringProperties(beanClass, attributes, (c, a) -> validationTagValues.getCollectionUniqueKey(tagValuesStore, c, a));
|
| 582 | 588 | Map<String, Integer> stringMaxLength = getIntegerProperties(beanClass, attributes, (c, a) -> validationTagValues.getStringMaxLength(tagValuesStore, c, a));
|
| 589 | + for (String attributeName : skipCopyToEntity) {
|
|
| 590 | + stringMaxLength.remove(attributeName);
|
|
| 591 | + }
|
|
| 583 | 592 | Map<String, String> dayBefore = getStringProperties(beanClass, attributes, (c, a) -> validationTagValues.getDayBefore(tagValuesStore, c, a));
|
| 584 | 593 | Map<String, String> dayAfter = getStringProperties(beanClass, attributes, (c, a) -> validationTagValues.getDayAfter(tagValuesStore, c, a));
|
| 585 | 594 | Map<String, String> dayAfterWarning = getStringProperties(beanClass, attributes, (c, a) -> validationTagValues.getDayAfterWarning(tagValuesStore, c, a));
|
| ... | ... | @@ -599,6 +608,9 @@ public class DtoFormValidatorTransformer extends ObjectModelTransformerToJava { |
| 599 | 608 | notBlankString.remove("homeId");
|
| 600 | 609 | }
|
| 601 | 610 | }
|
| 611 | + for (String attributeName : skipCopyToEntity) {
|
|
| 612 | + notBlankString.remove(attributeName);
|
|
| 613 | + }
|
|
| 602 | 614 | mandatory.removeAll(mandatoryString);
|
| 603 | 615 | mandatory.removeAll(mandatoryCollection);
|
| 604 | 616 | mandatoryString.removeAll(mandatoryCollection);
|