Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
0eb38fab
by Tony Chemit at 2023-05-25T15:20:20+02:00
-
d81054c9
by Tony Chemit at 2023-05-31T09:41:28+02:00
-
ccc5dd1f
by Tony Chemit at 2023-05-31T09:41:28+02:00
26 changed files:
- client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java
- client/datasource/actions/pom.xml
- client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/Start.java
- client/datasource/editor/api/pom.xml
- client/datasource/editor/api/src/main/i18n/getters/java.getter
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/ContentReferentialUI.jaxx
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/ContentReferentialUIHandler.java
- + client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/actions/ReplaceReferentialUsages.java
- + client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/usage/UsageForReplaceUI.jaxx
- + client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/referential/usage/UsageForReplaceUIHandler.java
- client/datasource/editor/common/pom.xml
- client/datasource/editor/ll/pom.xml
- client/datasource/editor/pom.xml
- client/datasource/editor/ps/pom.xml
- client/runner/pom.xml
- client/runner/src/main/i18n/translations/client-runner_en_GB.properties
- client/runner/src/main/i18n/translations/client-runner_es_ES.properties
- client/runner/src/main/i18n/translations/client-runner_fr_FR.properties
- core/api/validation/pom.xml
- core/persistence/avdth/pom.xml
- core/services/pom.xml
- model/pom.xml
- observe/pom.xml
- pom.xml
- server/runner/pom.xml
Changes:
| ... | ... | @@ -509,7 +509,7 @@ public class ObserveSwingDataSource extends AbstractJavaBean implements ObserveS |
| 509 | 509 | Files.deleteIfExists(dst);
|
| 510 | 510 | CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, config.getModelVersion()).addGeneratedSchema().addStandaloneTables().addAllData().build();
|
| 511 | 511 | SqlScript dataDump = getDataSourceService().produceCreateSqlScript(request);
|
| 512 | - dataDump.copy(dst);
|
|
| 512 | + dataDump.copyAndCompress(dst);
|
|
| 513 | 513 | } catch (Exception e) {
|
| 514 | 514 | throw new ObserveSwingTechnicalException(e);
|
| 515 | 515 | }
|
| ... | ... | @@ -160,6 +160,10 @@ |
| 160 | 160 | <groupId>org.apache.logging.log4j</groupId>
|
| 161 | 161 | <artifactId>log4j-api</artifactId>
|
| 162 | 162 | </dependency>
|
| 163 | + <dependency>
|
|
| 164 | + <groupId>org.swinglabs</groupId>
|
|
| 165 | + <artifactId>jxlayer</artifactId>
|
|
| 166 | + </dependency>
|
|
| 163 | 167 | <dependency>
|
| 164 | 168 | <groupId>org.swinglabs.swingx</groupId>
|
| 165 | 169 | <artifactId>swingx-core</artifactId>
|
| ... | ... | @@ -90,7 +90,7 @@ public class Start extends SaveLocalUIActionSupport { |
| 90 | 90 | DataSourceService dumpService = source.getDataSourceService();
|
| 91 | 91 | CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addGeneratedSchema().addStandaloneTables().addAllData().build();
|
| 92 | 92 | SqlScript dump = dumpService.produceCreateSqlScript(request);
|
| 93 | - dump.copy(backupFile.toPath());
|
|
| 93 | + dump.copyAndCompress(backupFile.toPath());
|
|
| 94 | 94 | }
|
| 95 | 95 | |
| 96 | 96 | if (stepModel.containsStepForSave(AdminStep.SYNCHRONIZE)) {
|
| ... | ... | @@ -168,6 +168,10 @@ |
| 168 | 168 | <groupId>org.geotools</groupId>
|
| 169 | 169 | <artifactId>gt-main</artifactId>
|
| 170 | 170 | </dependency>
|
| 171 | + <dependency>
|
|
| 172 | + <groupId>org.geotools</groupId>
|
|
| 173 | + <artifactId>gt-metadata</artifactId>
|
|
| 174 | + </dependency>
|
|
| 171 | 175 | <dependency>
|
| 172 | 176 | <groupId>org.geotools</groupId>
|
| 173 | 177 | <artifactId>gt-opengis</artifactId>
|
| ... | ... | @@ -84,6 +84,9 @@ observe.referential.Referential.action.delete.tip |
| 84 | 84 | observe.referential.Referential.action.detail
|
| 85 | 85 | observe.referential.Referential.action.modify
|
| 86 | 86 | observe.referential.Referential.action.openType
|
| 87 | +observe.referential.Referential.action.replaceUsages
|
|
| 88 | +observe.referential.Referential.action.replaceUsages.no.data.usage
|
|
| 89 | +observe.referential.Referential.action.replaceUsages.tip
|
|
| 87 | 90 | observe.referential.Referential.action.show.usages.tip
|
| 88 | 91 | observe.referential.Referential.code
|
| 89 | 92 | observe.referential.Referential.disabled
|
| ... | ... | @@ -282,11 +285,13 @@ observe.ui.message.quit.valid.edit |
| 282 | 285 | observe.ui.message.show.referential.usages
|
| 283 | 286 | observe.ui.message.show.usage.referential.delete
|
| 284 | 287 | observe.ui.message.show.usage.referential.disabled
|
| 288 | +observe.ui.message.show.usage.referential.replace
|
|
| 285 | 289 | observe.ui.message.table.editBean.modified
|
| 286 | 290 | observe.ui.message.table.editBean.modified.but.invalid
|
| 287 | 291 | observe.ui.move.selectTarget
|
| 288 | 292 | observe.ui.title.can.not.delete.referential
|
| 289 | 293 | observe.ui.title.can.not.export.obstuna
|
| 294 | +observe.ui.title.can.not.replace.referential
|
|
| 290 | 295 | observe.ui.title.choose.avdth.file
|
| 291 | 296 | observe.ui.title.choose.db.dump
|
| 292 | 297 | observe.ui.title.choose.db.dump.directory
|
| ... | ... | @@ -101,7 +101,8 @@ public class ObserveKeyStrokesEditorApi extends ObserveKeyStrokesSupport { |
| 101 | 101 | public static final KeyStroke KEY_STROKE_CHANGE_ID = KeyStroke.getKeyStroke("pressed F7");
|
| 102 | 102 | |
| 103 | 103 | public static final KeyStroke KEY_STROKE_SHOW_TECHNICAL_INFORMATION = KeyStroke.getKeyStroke("pressed F10");
|
| 104 | - public static final KeyStroke KEY_STROKE_SHOW_USAGES = KeyStroke.getKeyStroke("pressed F8");
|
|
| 104 | + public static final KeyStroke KEY_STROKE_REPLACE_REFERENTIAL = KeyStroke.getKeyStroke("pressed F8");
|
|
| 105 | + public static final KeyStroke KEY_STROKE_SHOW_USAGES = KeyStroke.getKeyStroke("pressed F9");
|
|
| 105 | 106 | public static final KeyStroke KEY_STROKE_SHOW_UNIQUE_KEYS = KeyStroke.getKeyStroke("pressed F9");
|
| 106 | 107 | |
| 107 | 108 | public static final KeyStroke KEY_STROKE_SELECT_TARGET = KeyStroke.getKeyStroke("pressed F2");
|
| ... | ... | @@ -19,43 +19,43 @@ |
| 19 | 19 | -->
|
| 20 | 20 | |
| 21 | 21 | <fr.ird.observe.client.datasource.editor.api.content.ContentUI
|
| 22 | - abstract='true'
|
|
| 23 | - beanScope="bean"
|
|
| 24 | - i18n="fr.ird.observe.dto.referential.ReferentialDto"
|
|
| 25 | - genericType='D extends ReferentialDto, R extends ReferentialDtoReference, U extends ContentReferentialUI<D, R, U>'
|
|
| 26 | - implements="fr.ird.observe.client.datasource.editor.api.content.EditableContentUI<D>">
|
|
| 27 | - <import>
|
|
| 28 | - fr.ird.observe.dto.referential.ReferentialDto
|
|
| 29 | - fr.ird.observe.dto.reference.ReferentialDtoReference
|
|
| 30 | - fr.ird.observe.dto.referential.ReferenceStatus
|
|
| 31 | - fr.ird.observe.client.util.UIHelper
|
|
| 32 | - fr.ird.observe.client.util.ObserveBlockingLayerUI
|
|
| 33 | - fr.ird.observe.client.datasource.validation.ObserveSwingValidator
|
|
| 34 | - |
|
| 35 | - org.nuiton.jaxx.widgets.text.NormalTextEditor
|
|
| 36 | - org.nuiton.jaxx.validator.swing.SwingValidator
|
|
| 37 | - io.ultreia.java4all.jaxx.widgets.choice.BeanCheckBox
|
|
| 38 | - io.ultreia.java4all.jaxx.widgets.combobox.BeanEnumEditor
|
|
| 39 | - |
|
| 40 | - io.ultreia.java4all.jaxx.widgets.list.ListHeader
|
|
| 41 | - |
|
| 42 | - javax.swing.DefaultListModel
|
|
| 43 | - javax.swing.ListSelectionModel
|
|
| 44 | - javax.swing.JTable
|
|
| 45 | - javax.swing.JTextField
|
|
| 46 | - javax.swing.UIManager
|
|
| 47 | - javax.swing.table.TableCellRenderer
|
|
| 48 | - |
|
| 49 | - static io.ultreia.java4all.i18n.I18n.t
|
|
| 50 | - </import>
|
|
| 51 | - |
|
| 52 | - <ContentReferentialUIModel id='model' genericType='D, R'/>
|
|
| 53 | - <ContentReferentialUIModelStates id='states' genericType='D, R'/>
|
|
| 54 | - <ReferentialDto id='bean' initializer='getStates().getBean()'/>
|
|
| 55 | - <ObserveBlockingLayerUI id='editKeyTableLayerUI' styleClass="blockBlockLayerUI"/>
|
|
| 56 | - <CardLayout2Ext id='viewLayout' constructorParams='this, "contentBody"'/>
|
|
| 57 | - |
|
| 58 | - <script><![CDATA[
|
|
| 22 | + abstract='true'
|
|
| 23 | + beanScope="bean"
|
|
| 24 | + i18n="fr.ird.observe.dto.referential.ReferentialDto"
|
|
| 25 | + genericType='D extends ReferentialDto, R extends ReferentialDtoReference, U extends ContentReferentialUI<D, R, U>'
|
|
| 26 | + implements="fr.ird.observe.client.datasource.editor.api.content.EditableContentUI<D>">
|
|
| 27 | + <import>
|
|
| 28 | + fr.ird.observe.dto.referential.ReferentialDto
|
|
| 29 | + fr.ird.observe.dto.reference.ReferentialDtoReference
|
|
| 30 | + fr.ird.observe.dto.referential.ReferenceStatus
|
|
| 31 | + fr.ird.observe.client.util.UIHelper
|
|
| 32 | + fr.ird.observe.client.util.ObserveBlockingLayerUI
|
|
| 33 | + fr.ird.observe.client.datasource.validation.ObserveSwingValidator
|
|
| 34 | + |
|
| 35 | + org.nuiton.jaxx.widgets.text.NormalTextEditor
|
|
| 36 | + org.nuiton.jaxx.validator.swing.SwingValidator
|
|
| 37 | + io.ultreia.java4all.jaxx.widgets.choice.BeanCheckBox
|
|
| 38 | + io.ultreia.java4all.jaxx.widgets.combobox.BeanEnumEditor
|
|
| 39 | + |
|
| 40 | + io.ultreia.java4all.jaxx.widgets.list.ListHeader
|
|
| 41 | + |
|
| 42 | + javax.swing.DefaultListModel
|
|
| 43 | + javax.swing.ListSelectionModel
|
|
| 44 | + javax.swing.JTable
|
|
| 45 | + javax.swing.JTextField
|
|
| 46 | + javax.swing.UIManager
|
|
| 47 | + javax.swing.table.TableCellRenderer
|
|
| 48 | + |
|
| 49 | + static io.ultreia.java4all.i18n.I18n.t
|
|
| 50 | + </import>
|
|
| 51 | + |
|
| 52 | + <ContentReferentialUIModel id='model' genericType='D, R'/>
|
|
| 53 | + <ContentReferentialUIModelStates id='states' genericType='D, R'/>
|
|
| 54 | + <ReferentialDto id='bean' initializer='getStates().getBean()'/>
|
|
| 55 | + <ObserveBlockingLayerUI id='editKeyTableLayerUI' styleClass="blockBlockLayerUI"/>
|
|
| 56 | + <CardLayout2Ext id='viewLayout' constructorParams='this, "contentBody"'/>
|
|
| 57 | + |
|
| 58 | + <script><![CDATA[
|
|
| 59 | 59 | |
| 60 | 60 | public static final String LIST_VIEW = "listView";
|
| 61 | 61 | |
| ... | ... | @@ -87,110 +87,114 @@ viewLayout.addLayoutComponent(editView, DETAIL_VIEW); |
| 87 | 87 | |
| 88 | 88 | ]]></script>
|
| 89 | 89 | |
| 90 | - <JPanel id="contentBody" layout="{viewLayout}">
|
|
| 90 | + <JPanel id="contentBody" layout="{viewLayout}">
|
|
| 91 | 91 | |
| 92 | - <JPanel id="listView" constraints="LIST_VIEW" layout="{new BorderLayout()}">
|
|
| 93 | - <JScrollPane id='listPane' constraints='BorderLayout.CENTER' columnHeaderView='{referentialListHeader}' decorator="boxed">
|
|
| 94 | - <JList id='list' genericType='R'/>
|
|
| 95 | - <ListHeader id='referentialListHeader' genericType='R' constructorParams="list"/>
|
|
| 96 | - </JScrollPane>
|
|
| 97 | - </JPanel>
|
|
| 92 | + <JPanel id="listView" constraints="LIST_VIEW" layout="{new BorderLayout()}">
|
|
| 93 | + <JScrollPane id='listPane' constraints='BorderLayout.CENTER' columnHeaderView='{referentialListHeader}'
|
|
| 94 | + decorator="boxed">
|
|
| 95 | + <JList id='list' genericType='R'/>
|
|
| 96 | + <ListHeader id='referentialListHeader' genericType='R' constructorParams="list"/>
|
|
| 97 | + </JScrollPane>
|
|
| 98 | + </JPanel>
|
|
| 98 | 99 | |
| 99 | - <Table id="editView" insets="0" weightx="1" fill="both" constraints="DETAIL_VIEW">
|
|
| 100 | - <row>
|
|
| 101 | - <cell anchor='north'>
|
|
| 102 | - <Table id='editTable'>
|
|
| 100 | + <Table id="editView" insets="0" weightx="1" fill="both" constraints="DETAIL_VIEW">
|
|
| 103 | 101 | <row>
|
| 104 | - <cell anchor="west">
|
|
| 105 | - <JLabel id='codeAndHomeIdLabel'/>
|
|
| 106 | - </cell>
|
|
| 107 | - <cell anchor='east' weightx="1" fill="both">
|
|
| 108 | - <JPanel id='codeAndHomeIdPanel' layout='{new GridLayout()}'>
|
|
| 109 | - <NormalTextEditor id='code' decorator="boxed"/>
|
|
| 110 | - <NormalTextEditor id='homeId' decorator="boxed"/>
|
|
| 111 | - </JPanel>
|
|
| 112 | - </cell>
|
|
| 102 | + <cell anchor='north'>
|
|
| 103 | + <Table id='editTable'>
|
|
| 104 | + <row>
|
|
| 105 | + <cell anchor="west">
|
|
| 106 | + <JLabel id='codeAndHomeIdLabel'/>
|
|
| 107 | + </cell>
|
|
| 108 | + <cell anchor='east' weightx="1" fill="both">
|
|
| 109 | + <JPanel id='codeAndHomeIdPanel' layout='{new GridLayout()}'>
|
|
| 110 | + <NormalTextEditor id='code' decorator="boxed"/>
|
|
| 111 | + <NormalTextEditor id='homeId' decorator="boxed"/>
|
|
| 112 | + </JPanel>
|
|
| 113 | + </cell>
|
|
| 114 | + </row>
|
|
| 115 | + <row>
|
|
| 116 | + <cell anchor="west">
|
|
| 117 | + <JLabel id='statusLabel'/>
|
|
| 118 | + </cell>
|
|
| 119 | + <cell anchor='east' weightx="1" fill="both">
|
|
| 120 | + <JPanel id='statusAndNeedCommentPanel' layout='{new GridLayout()}'>
|
|
| 121 | + <BeanEnumEditor id='status' constructorParams='ReferenceStatus.class'
|
|
| 122 | + genericType='ReferenceStatus' decorator="boxed"/>
|
|
| 123 | + <JPanel id='needCommentPanel' layout='{new BorderLayout()}'>
|
|
| 124 | + <JLabel id='needCommentLabel' constraints="BorderLayout.WEST"/>
|
|
| 125 | + <BeanCheckBox id='needComment' decorator="boxed"
|
|
| 126 | + constraints="BorderLayout.EAST"/>
|
|
| 127 | + </JPanel>
|
|
| 128 | + </JPanel>
|
|
| 129 | + </cell>
|
|
| 130 | + </row>
|
|
| 131 | + <row>
|
|
| 132 | + <cell anchor='west'>
|
|
| 133 | + <JLabel id='uriLabel'/>
|
|
| 134 | + </cell>
|
|
| 135 | + <cell anchor='east' weightx="1" fill="both">
|
|
| 136 | + <NormalTextEditor id='uri' decorator="boxed"/>
|
|
| 137 | + </cell>
|
|
| 138 | + </row>
|
|
| 139 | + </Table>
|
|
| 140 | + </cell>
|
|
| 113 | 141 | </row>
|
| 114 | 142 | <row>
|
| 115 | - <cell anchor="west">
|
|
| 116 | - <JLabel id='statusLabel'/>
|
|
| 117 | - </cell>
|
|
| 118 | - <cell anchor='east' weightx="1" fill="both">
|
|
| 119 | - <JPanel id='statusAndNeedCommentPanel' layout='{new GridLayout()}'>
|
|
| 120 | - <BeanEnumEditor id='status' constructorParams='ReferenceStatus.class' genericType='ReferenceStatus' decorator="boxed"/>
|
|
| 121 | - <JPanel id='needCommentPanel' layout='{new BorderLayout()}'>
|
|
| 122 | - <JLabel id='needCommentLabel' constraints="BorderLayout.WEST"/>
|
|
| 123 | - <BeanCheckBox id='needComment' decorator="boxed" constraints="BorderLayout.EAST"/>
|
|
| 124 | - </JPanel>
|
|
| 125 | - </JPanel>
|
|
| 126 | - </cell>
|
|
| 143 | + <cell anchor='north'>
|
|
| 144 | + <Table id='editExtraTable' fill='both'/>
|
|
| 145 | + </cell>
|
|
| 127 | 146 | </row>
|
| 128 | 147 | <row>
|
| 129 | - <cell anchor='west'>
|
|
| 130 | - <JLabel id='uriLabel'/>
|
|
| 131 | - </cell>
|
|
| 132 | - <cell anchor='east' weightx="1" fill="both">
|
|
| 133 | - <NormalTextEditor id='uri' decorator="boxed"/>
|
|
| 134 | - </cell>
|
|
| 148 | + <cell anchor='north'>
|
|
| 149 | + <Table id='editI18nTable' fill='both'/>
|
|
| 150 | + </cell>
|
|
| 135 | 151 | </row>
|
| 136 | - </Table>
|
|
| 137 | - </cell>
|
|
| 138 | - </row>
|
|
| 139 | - <row>
|
|
| 140 | - <cell anchor='north'>
|
|
| 141 | - <Table id='editExtraTable' fill='both'/>
|
|
| 142 | - </cell>
|
|
| 143 | - </row>
|
|
| 144 | - <row>
|
|
| 145 | - <cell anchor='north'>
|
|
| 146 | - <Table id='editI18nTable' fill='both'/>
|
|
| 147 | - </cell>
|
|
| 148 | - </row>
|
|
| 149 | - <row>
|
|
| 150 | - <cell anchor='north' weighty="1">
|
|
| 151 | - <Table id='editMoreExtraTable' fill='both'>
|
|
| 152 | 152 | <row>
|
| 153 | - <cell>
|
|
| 154 | - <JLabel styleClass="skipI18n"/>
|
|
| 155 | - </cell>
|
|
| 153 | + <cell anchor='north' weighty="1">
|
|
| 154 | + <Table id='editMoreExtraTable' fill='both'>
|
|
| 155 | + <row>
|
|
| 156 | + <cell>
|
|
| 157 | + <JLabel styleClass="skipI18n"/>
|
|
| 158 | + </cell>
|
|
| 159 | + </row>
|
|
| 160 | + </Table>
|
|
| 161 | + </cell>
|
|
| 156 | 162 | </row>
|
| 157 | - </Table>
|
|
| 158 | - </cell>
|
|
| 159 | - </row>
|
|
| 160 | - </Table>
|
|
| 161 | - </JPanel>
|
|
| 162 | - <Table id='actions' fill='both' weightx='1' insets='0'>
|
|
| 163 | - <row>
|
|
| 164 | - <cell>
|
|
| 165 | - <JPanel id="listActions" layout="{new GridLayout(1, 0)}">
|
|
| 166 | - <JButton id='modify'/>
|
|
| 167 | - <JButton id='detail'/>
|
|
| 168 | - </JPanel>
|
|
| 169 | - </cell>
|
|
| 170 | - </row>
|
|
| 171 | - <row>
|
|
| 172 | - <cell>
|
|
| 173 | - <Table id="detailActions" fill='both' insets="1,4,1,1">
|
|
| 174 | - <row>
|
|
| 175 | - <cell fill="both" weightx="1">
|
|
| 176 | - <JPanel id="detailRealActions" layout="{new GridLayout(1, 0)}">
|
|
| 177 | - <JButton id='reset'/>
|
|
| 178 | - <JButton id='save'/>
|
|
| 179 | - </JPanel>
|
|
| 163 | + </Table>
|
|
| 164 | + </JPanel>
|
|
| 165 | + <Table id='actions' fill='both' weightx='1' insets='0'>
|
|
| 166 | + <row>
|
|
| 167 | + <cell>
|
|
| 168 | + <JPanel id="listActions" layout="{new GridLayout(1, 0)}">
|
|
| 169 | + <JButton id='modify'/>
|
|
| 170 | + <JButton id='detail'/>
|
|
| 171 | + </JPanel>
|
|
| 180 | 172 | </cell>
|
| 181 | - </row>
|
|
| 182 | - <row>
|
|
| 183 | - <cell fill="both" weightx="1">
|
|
| 184 | - <JButton id='backToList'/>
|
|
| 173 | + </row>
|
|
| 174 | + <row>
|
|
| 175 | + <cell>
|
|
| 176 | + <Table id="detailActions" fill='both' insets="1,4,1,1">
|
|
| 177 | + <row>
|
|
| 178 | + <cell fill="both" weightx="1">
|
|
| 179 | + <JPanel id="detailRealActions" layout="{new GridLayout(1, 0)}">
|
|
| 180 | + <JButton id='reset'/>
|
|
| 181 | + <JButton id='save'/>
|
|
| 182 | + </JPanel>
|
|
| 183 | + </cell>
|
|
| 184 | + </row>
|
|
| 185 | + <row>
|
|
| 186 | + <cell fill="both" weightx="1">
|
|
| 187 | + <JButton id='backToList'/>
|
|
| 188 | + </cell>
|
|
| 189 | + </row>
|
|
| 190 | + </Table>
|
|
| 185 | 191 | </cell>
|
| 186 | - </row>
|
|
| 187 | - </Table>
|
|
| 188 | - </cell>
|
|
| 189 | - </row>
|
|
| 190 | - </Table>
|
|
| 191 | - <JMenuItem id='delete'/>
|
|
| 192 | - <JMenuItem id='showTechnicalInformations'/>
|
|
| 193 | - <JMenuItem id='changeId'/>
|
|
| 194 | - <JMenuItem id="showUsages"/>
|
|
| 195 | - <JMenuItem id='create'/>
|
|
| 192 | + </row>
|
|
| 193 | + </Table>
|
|
| 194 | + <JMenuItem id='delete'/>
|
|
| 195 | + <JMenuItem id='showTechnicalInformations'/>
|
|
| 196 | + <JMenuItem id='replaceUsages'/>
|
|
| 197 | + <JMenuItem id='changeId'/>
|
|
| 198 | + <JMenuItem id="showUsages"/>
|
|
| 199 | + <JMenuItem id='create'/>
|
|
| 196 | 200 | </fr.ird.observe.client.datasource.editor.api.content.ContentUI> |
| ... | ... | @@ -39,6 +39,7 @@ import fr.ird.observe.client.datasource.editor.api.content.referential.actions.D |
| 39 | 39 | import fr.ird.observe.client.datasource.editor.api.content.referential.actions.DetailReferential;
|
| 40 | 40 | import fr.ird.observe.client.datasource.editor.api.content.referential.actions.ModifyReferential;
|
| 41 | 41 | import fr.ird.observe.client.datasource.editor.api.content.referential.actions.ReferentialResetAdapter;
|
| 42 | +import fr.ird.observe.client.datasource.editor.api.content.referential.actions.ReplaceReferentialUsages;
|
|
| 42 | 43 | import fr.ird.observe.client.datasource.editor.api.content.referential.actions.SaveContentReferentialUIAdapter;
|
| 43 | 44 | import fr.ird.observe.client.datasource.editor.api.content.referential.actions.ShowUsagesReferential;
|
| 44 | 45 | import fr.ird.observe.client.util.UIHelper;
|
| ... | ... | @@ -168,6 +169,7 @@ public class ContentReferentialUIHandler<D extends ReferentialDto, R extends Ref |
| 168 | 169 | DetailReferential.installAction(ui);
|
| 169 | 170 | DeleteReferential.installAction(ui);
|
| 170 | 171 | ChangeId.installAction(ui);
|
| 172 | + ReplaceReferentialUsages.installAction(ui);
|
|
| 171 | 173 | ui.getConfigurePopup().addSeparator();
|
| 172 | 174 | ShowUsagesReferential.installAction(ui);
|
| 173 | 175 | ShowTechnicalInformations.installAction(ui);
|
| 1 | +package fr.ird.observe.client.datasource.editor.api.content.referential.actions;
|
|
| 2 | + |
|
| 3 | +/*-
|
|
| 4 | + * #%L
|
|
| 5 | + * ObServe Client :: DataSource :: Editor :: API
|
|
| 6 | + * %%
|
|
| 7 | + * Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 8 | + * %%
|
|
| 9 | + * This program is free software: you can redistribute it and/or modify
|
|
| 10 | + * it under the terms of the GNU General Public License as
|
|
| 11 | + * published by the Free Software Foundation, either version 3 of the
|
|
| 12 | + * License, or (at your option) any later version.
|
|
| 13 | + *
|
|
| 14 | + * This program is distributed in the hope that it will be useful,
|
|
| 15 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 16 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 17 | + * GNU General Public License for more details.
|
|
| 18 | + *
|
|
| 19 | + * You should have received a copy of the GNU General Public
|
|
| 20 | + * License along with this program. If not, see
|
|
| 21 | + * <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 22 | + * #L%
|
|
| 23 | + */
|
|
| 24 | + |
|
| 25 | +import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
|
|
| 26 | +import fr.ird.observe.client.datasource.editor.api.ObserveKeyStrokesEditorApi;
|
|
| 27 | +import fr.ird.observe.client.datasource.editor.api.content.actions.ConfigureMenuAction;
|
|
| 28 | +import fr.ird.observe.client.datasource.editor.api.content.referential.ContentReferentialUI;
|
|
| 29 | +import fr.ird.observe.client.datasource.editor.api.content.referential.ContentReferentialUIModel;
|
|
| 30 | +import fr.ird.observe.client.datasource.editor.api.content.referential.ContentReferentialUIModelStates;
|
|
| 31 | +import fr.ird.observe.client.datasource.editor.api.content.referential.usage.UsageForReplaceUIHandler;
|
|
| 32 | +import fr.ird.observe.dto.I18nDecoratorHelper;
|
|
| 33 | +import fr.ird.observe.dto.ToolkitIdDtoBean;
|
|
| 34 | +import fr.ird.observe.dto.ToolkitIdLabel;
|
|
| 35 | +import fr.ird.observe.dto.reference.ReferentialDtoReference;
|
|
| 36 | +import fr.ird.observe.dto.referential.ReferentialDto;
|
|
| 37 | +import fr.ird.observe.services.service.UsageCount;
|
|
| 38 | +import fr.ird.observe.services.service.UsageService;
|
|
| 39 | +import io.ultreia.java4all.i18n.I18n;
|
|
| 40 | +import org.apache.commons.lang3.tuple.Pair;
|
|
| 41 | +import org.apache.logging.log4j.LogManager;
|
|
| 42 | +import org.apache.logging.log4j.Logger;
|
|
| 43 | + |
|
| 44 | +import javax.swing.JOptionPane;
|
|
| 45 | +import java.awt.event.ActionEvent;
|
|
| 46 | +import java.util.List;
|
|
| 47 | +import java.util.stream.Collectors;
|
|
| 48 | + |
|
| 49 | +import static io.ultreia.java4all.i18n.I18n.n;
|
|
| 50 | + |
|
| 51 | +/**
|
|
| 52 | + * To replace referential usages by another one.
|
|
| 53 | + * Created on 20/05/2023.
|
|
| 54 | + *
|
|
| 55 | + * @author Tony Chemit - dev@tchemit.fr
|
|
| 56 | + * @since 9.1.4
|
|
| 57 | + */
|
|
| 58 | +public class ReplaceReferentialUsages<D extends ReferentialDto, R extends ReferentialDtoReference, U extends ContentReferentialUI<D, R, U>> extends ContentReferentialUIActionSupport<D, R, U> implements ConfigureMenuAction<U> {
|
|
| 59 | + |
|
| 60 | + private static final Logger log = LogManager.getLogger(DeleteReferential.class);
|
|
| 61 | + |
|
| 62 | + private ToolkitIdLabel replaceReference;
|
|
| 63 | + |
|
| 64 | + public ReplaceReferentialUsages(Class<D> dataType) {
|
|
| 65 | + super(dataType, n("observe.referential.Referential.action.replaceUsages"), I18n.t("observe.referential.Referential.action.replaceUsages.tip", I18nDecoratorHelper.getType(dataType)), "move", ObserveKeyStrokesEditorApi.KEY_STROKE_REPLACE_REFERENTIAL);
|
|
| 66 | + }
|
|
| 67 | + |
|
| 68 | + public static <D extends ReferentialDto, R extends ReferentialDtoReference, U extends ContentReferentialUI<D, R, U>> void installAction(U ui) {
|
|
| 69 | + ReplaceReferentialUsages<D, R, U> action = new ReplaceReferentialUsages<>(ui.getModel().getScope().getMainType());
|
|
| 70 | + init(ui, ui.getReplaceUsages(), action);
|
|
| 71 | + ui.getModel().getStates().addPropertyChangeListener(ContentReferentialUIModelStates.PROPERTY_SELECTED_BEAN_REFERENCE, evt -> {
|
|
| 72 | + ReferentialDtoReference newValue = (ReferentialDtoReference) evt.getNewValue();
|
|
| 73 | + ObserveSwingDataSource mainDataSource = ui.getModel().getDataSourcesManager().getMainDataSource();
|
|
| 74 | + action.setEnabled(newValue != null && (mainDataSource.isLocal() || mainDataSource.canWriteData()));
|
|
| 75 | + });
|
|
| 76 | + }
|
|
| 77 | + |
|
| 78 | + @Override
|
|
| 79 | + protected void doActionPerformed(ActionEvent event, U ui) {
|
|
| 80 | + ContentReferentialUIModel<D, R> model = ui.getModel();
|
|
| 81 | + R selectedBeanReference = model.getStates().getSelectedBeanReference();
|
|
| 82 | + askToReplace(ui, selectedBeanReference);
|
|
| 83 | + if (replaceReference != null) {
|
|
| 84 | + doReplace(ui, selectedBeanReference, replaceReference);
|
|
| 85 | + }
|
|
| 86 | + }
|
|
| 87 | + |
|
| 88 | + private void askToReplace(U ui, R bean) {
|
|
| 89 | + |
|
| 90 | + ContentReferentialUIModel<D, R> model = ui.getModel();
|
|
| 91 | + |
|
| 92 | + // recherche des utilisation du bean dans la base
|
|
| 93 | + UsageService usageService = getServicesProvider().getUsageService();
|
|
| 94 | + ToolkitIdDtoBean request = model.getStates().toUsageRequest(bean.getId());
|
|
| 95 | + UsageCount usages = usageService.countReferentialInData(request);
|
|
| 96 | + replaceReference = null;
|
|
| 97 | + |
|
| 98 | + Class<D> beanType = model.getScope().getMainType();
|
|
| 99 | + Class<R> referenceType = model.getScope().getMainReferenceType();
|
|
| 100 | + if (usages.isEmpty()) {
|
|
| 101 | + JOptionPane.showMessageDialog(getMainUI(), I18n.t("observe.referential.Referential.action.replaceUsages.no.data.usage", bean));
|
|
| 102 | + return;
|
|
| 103 | + }
|
|
| 104 | + |
|
| 105 | + // some usages were found
|
|
| 106 | + |
|
| 107 | + // get replacements
|
|
| 108 | + List<R> referentialReferences = ui.getHandler().getReferentialReferences(referenceType);
|
|
| 109 | + List<R> referenceList = referentialReferences
|
|
| 110 | + .stream()
|
|
| 111 | + .filter(ReferentialDtoReference::isEnabled)
|
|
| 112 | + .filter(r -> !bean.getId().equals(r.getId()))
|
|
| 113 | + .collect(Collectors.toList());
|
|
| 114 | + |
|
| 115 | + ToolkitIdLabel dtoToReplaceLabel = bean.toLabel();
|
|
| 116 | + getDecoratorService().installToolkitIdLabelDecorator(beanType, dtoToReplaceLabel);
|
|
| 117 | + Pair<Boolean, ToolkitIdLabel> result = UsageForReplaceUIHandler.showUsages(usageService, dtoToReplaceLabel, request, usages, referenceList.stream().map(ReferentialDtoReference::toLabel).collect(Collectors.toList()));
|
|
| 118 | + Boolean canContinue = result.getLeft();
|
|
| 119 | + if (!canContinue) {
|
|
| 120 | + log.debug("user refuse to continue");
|
|
| 121 | + return;
|
|
| 122 | + }
|
|
| 123 | + |
|
| 124 | + replaceReference = result.getRight();
|
|
| 125 | + if (replaceReference == null) {
|
|
| 126 | + log.debug("user did not select replace");
|
|
| 127 | + }
|
|
| 128 | + }
|
|
| 129 | + |
|
| 130 | + private void doReplace(U ui, ReferentialDtoReference bean, ToolkitIdLabel replaceReference) {
|
|
| 131 | + |
|
| 132 | + String id = bean.getId();
|
|
| 133 | + Class<D> beanType = ui.getModel().getScope().getMainType();
|
|
| 134 | + if (replaceReference == null) {
|
|
| 135 | + return;
|
|
| 136 | + }
|
|
| 137 | + String replaceId = replaceReference.getId();
|
|
| 138 | + log.info(String.format("Do replace reference (%s → %s)", id, replaceId));
|
|
| 139 | + getServicesProvider().getReferentialService().replaceReferenceInData(beanType, id, replaceId);
|
|
| 140 | + }
|
|
| 141 | + |
|
| 142 | +} |
| 1 | +<!--
|
|
| 2 | + #%L
|
|
| 3 | + ObServe Client :: DataSource :: Editor :: API
|
|
| 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 | + This program is distributed in the hope that it will be useful,
|
|
| 12 | + but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 13 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 14 | + GNU General Public License for more details.
|
|
| 15 | + You should have received a copy of the GNU General Public
|
|
| 16 | + License along with this program. If not, see
|
|
| 17 | + <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 18 | + #L%
|
|
| 19 | + -->
|
|
| 20 | +<org.jdesktop.swingx.JXTitledPanel id="usagesPane" contentContainer='{internalContent}'>
|
|
| 21 | + <JPanel id="internalContent" layout='{new BorderLayout()}'>
|
|
| 22 | + |
|
| 23 | + <import>
|
|
| 24 | + |
|
| 25 | + fr.ird.observe.dto.ToolkitIdLabel
|
|
| 26 | + fr.ird.observe.client.datasource.usage.UsagesGetter
|
|
| 27 | + fr.ird.observe.client.datasource.usage.UsagePanel
|
|
| 28 | + org.nuiton.jaxx.runtime.context.JAXXInitialContext
|
|
| 29 | + io.ultreia.java4all.jaxx.widgets.combobox.FilterableComboBox
|
|
| 30 | + java.util.List
|
|
| 31 | + |
|
| 32 | + static io.ultreia.java4all.i18n.I18n.t
|
|
| 33 | + </import>
|
|
| 34 | + |
|
| 35 | + <script><![CDATA[
|
|
| 36 | + |
|
| 37 | +public static UsageForReplaceUI build(Class<?> type, String message, UsagesGetter getter, List references) {
|
|
| 38 | + return new UsageForReplaceUI(new JAXXInitialContext().add(type).add(message).add(getter).add(references));
|
|
| 39 | +}
|
|
| 40 | + |
|
| 41 | +public ToolkitIdLabel getSelectedReplace() { return (ToolkitIdLabel) replace.getModel().getSelectedItem(); }
|
|
| 42 | + |
|
| 43 | +public void destroy() {
|
|
| 44 | + log.debug("destroy ui " + getName());
|
|
| 45 | + SwingUtil.destroy(this);
|
|
| 46 | + usagesPanel.removeAll();
|
|
| 47 | +}
|
|
| 48 | +]]>
|
|
| 49 | + </script>
|
|
| 50 | + |
|
| 51 | + <Boolean id="canApply" javaBean="false"/>
|
|
| 52 | + <UsagePanel id='usagesPanel' constraints="BorderLayout.CENTER"/>
|
|
| 53 | + <JPanel id="replacePanel" border='{new TitledBorder(t("observe.ui.usage.replaceTitle"))}'
|
|
| 54 | + constraints="BorderLayout.SOUTH" layout="{new GridLayout(0, 1)}">
|
|
| 55 | + <FilterableComboBox id="replace" genericType="ToolkitIdLabel"/>
|
|
| 56 | + </JPanel>
|
|
| 57 | + </JPanel>
|
|
| 58 | +</org.jdesktop.swingx.JXTitledPanel> |
| 1 | +package fr.ird.observe.client.datasource.editor.api.content.referential.usage;
|
|
| 2 | + |
|
| 3 | +/*-
|
|
| 4 | + * #%L
|
|
| 5 | + * ObServe Client :: DataSource :: Editor :: API
|
|
| 6 | + * %%
|
|
| 7 | + * Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 8 | + * %%
|
|
| 9 | + * This program is free software: you can redistribute it and/or modify
|
|
| 10 | + * it under the terms of the GNU General Public License as
|
|
| 11 | + * published by the Free Software Foundation, either version 3 of the
|
|
| 12 | + * License, or (at your option) any later version.
|
|
| 13 | + *
|
|
| 14 | + * This program is distributed in the hope that it will be useful,
|
|
| 15 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 16 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 17 | + * GNU General Public License for more details.
|
|
| 18 | + *
|
|
| 19 | + * You should have received a copy of the GNU General Public
|
|
| 20 | + * License along with this program. If not, see
|
|
| 21 | + * <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 22 | + * #L%
|
|
| 23 | + */
|
|
| 24 | + |
|
| 25 | +import fr.ird.observe.client.datasource.usage.UsagePanel;
|
|
| 26 | +import fr.ird.observe.client.datasource.usage.UsageUIHandlerSupport;
|
|
| 27 | +import fr.ird.observe.client.datasource.usage.UsagesGetter;
|
|
| 28 | +import fr.ird.observe.dto.BusinessDto;
|
|
| 29 | +import fr.ird.observe.dto.ToolkitIdDtoBean;
|
|
| 30 | +import fr.ird.observe.dto.ToolkitIdLabel;
|
|
| 31 | +import fr.ird.observe.services.service.UsageCount;
|
|
| 32 | +import fr.ird.observe.services.service.UsageCountWithLabel;
|
|
| 33 | +import fr.ird.observe.services.service.UsageService;
|
|
| 34 | +import fr.ird.observe.spi.module.ObserveBusinessProject;
|
|
| 35 | +import io.ultreia.java4all.i18n.I18n;
|
|
| 36 | +import io.ultreia.java4all.jaxx.widgets.combobox.FilterableComboBox;
|
|
| 37 | +import io.ultreia.java4all.jaxx.widgets.combobox.FilterableComboBoxModel;
|
|
| 38 | +import io.ultreia.java4all.util.SingletonSupplier;
|
|
| 39 | +import org.apache.commons.lang3.tuple.Pair;
|
|
| 40 | + |
|
| 41 | +import javax.swing.JOptionPane;
|
|
| 42 | +import java.util.Collection;
|
|
| 43 | +import java.util.List;
|
|
| 44 | + |
|
| 45 | +import static io.ultreia.java4all.i18n.I18n.t;
|
|
| 46 | + |
|
| 47 | +/**
|
|
| 48 | + * Created on 20/05/2023.
|
|
| 49 | + *
|
|
| 50 | + * @author Tony Chemit - dev@tchemit.fr
|
|
| 51 | + * @since 9.1.4
|
|
| 52 | + */
|
|
| 53 | +public class UsageForReplaceUIHandler extends UsageUIHandlerSupport<UsageForReplaceUI> {
|
|
| 54 | + |
|
| 55 | + public static Pair<Boolean, ToolkitIdLabel> showUsages(UsageService usageService,
|
|
| 56 | + ToolkitIdLabel dto,
|
|
| 57 | + ToolkitIdDtoBean request,
|
|
| 58 | + UsageCount usages,
|
|
| 59 | + List<ToolkitIdLabel> referenceList) {
|
|
| 60 | + ObserveBusinessProject businessProject = ObserveBusinessProject.get();
|
|
| 61 | + UsageCountWithLabel realUsages = new UsageCountWithLabel(I18n.getDefaultLocale(), businessProject, usages);
|
|
| 62 | + UsageForReplaceUIHandler.ReplaceReferentialUsagesGetter getter = new UsageForReplaceUIHandler.ReplaceReferentialUsagesGetter(realUsages, usageService, request);
|
|
| 63 | + Class<? extends BusinessDto> dtoType = dto.getType();
|
|
| 64 | + String type = businessProject.getLongTitle(dtoType);
|
|
| 65 | + String message = t("observe.ui.message.show.usage.referential.replace", type, dto);
|
|
| 66 | + |
|
| 67 | + UsageForReplaceUI usagesUI = UsageForReplaceUI.build(dtoType, message, getter, referenceList);
|
|
| 68 | + |
|
| 69 | + String replaceText = t("observe.ui.choice.replace");
|
|
| 70 | + Object[] options = {replaceText, t("observe.ui.choice.cancel")};
|
|
| 71 | + JOptionPane pane = new JOptionPane(usagesUI, JOptionPane.WARNING_MESSAGE, JOptionPane.DEFAULT_OPTION, null, options, options[0]);
|
|
| 72 | + |
|
| 73 | + usagesUI.getHandler().attachToOptionPane(pane, replaceText);
|
|
| 74 | + |
|
| 75 | + usagesUI.getHandler().setUISize(pane);
|
|
| 76 | + int response = usagesUI.getHandler().askToUser(pane, t("observe.ui.title.can.not.replace.referential"), options);
|
|
| 77 | + if (response == 0) {
|
|
| 78 | + // will replace and replace
|
|
| 79 | + ToolkitIdLabel selectedReplace = usagesUI.getSelectedReplace();
|
|
| 80 | + return Pair.of(true, selectedReplace);
|
|
| 81 | + }
|
|
| 82 | + // any other case : do not replace, do not replace
|
|
| 83 | + return Pair.of(false, null);
|
|
| 84 | + }
|
|
| 85 | + |
|
| 86 | + @Override
|
|
| 87 | + protected UsagePanel getUsages() {
|
|
| 88 | + return ui.getUsagesPanel();
|
|
| 89 | + }
|
|
| 90 | + |
|
| 91 | + @Override
|
|
| 92 | + protected FilterableComboBox<ToolkitIdLabel> getReplace() {
|
|
| 93 | + return ui.getReplace();
|
|
| 94 | + }
|
|
| 95 | + |
|
| 96 | + @Override
|
|
| 97 | + public void afterInit(UsageForReplaceUI ui) {
|
|
| 98 | + super.afterInit(ui);
|
|
| 99 | + getReplace().getModel().addPropertyChangeListener(FilterableComboBoxModel.PROPERTY_SELECTED_ITEM, evt -> updateCanApply());
|
|
| 100 | + }
|
|
| 101 | + |
|
| 102 | + @Override
|
|
| 103 | + public void attachToOptionPane(JOptionPane pane, String message) {
|
|
| 104 | + super.attachToOptionPane(pane, message);
|
|
| 105 | + updateCanApply();
|
|
| 106 | + }
|
|
| 107 | + |
|
| 108 | + private void updateCanApply() {
|
|
| 109 | + boolean canApply = getReplace().getModel().getSelectedItem() != null;
|
|
| 110 | + ui.setCanApply(canApply);
|
|
| 111 | + }
|
|
| 112 | + |
|
| 113 | + public static class ReplaceReferentialUsagesGetter implements UsagesGetter {
|
|
| 114 | + private final UsageCountWithLabel usages;
|
|
| 115 | + private final UsageService usageService;
|
|
| 116 | + private final ToolkitIdDtoBean request;
|
|
| 117 | + |
|
| 118 | + public ReplaceReferentialUsagesGetter(UsageCountWithLabel usages, UsageService usageService, ToolkitIdDtoBean request) {
|
|
| 119 | + this.usages = usages;
|
|
| 120 | + this.usageService = usageService;
|
|
| 121 | + this.request = request;
|
|
| 122 | + }
|
|
| 123 | + |
|
| 124 | + @Override
|
|
| 125 | + public UsageCountWithLabel getCount() {
|
|
| 126 | + return usages;
|
|
| 127 | + }
|
|
| 128 | + |
|
| 129 | + @Override
|
|
| 130 | + public <D extends BusinessDto> SingletonSupplier<Collection<ToolkitIdLabel>> getUsages(Class<D> dtoType) {
|
|
| 131 | + return SingletonSupplier.of(() -> usageService.findReferential(request, dtoType));
|
|
| 132 | + }
|
|
| 133 | + }
|
|
| 134 | +} |
| ... | ... | @@ -81,6 +81,10 @@ |
| 81 | 81 | <groupId>org.apache.logging.log4j</groupId>
|
| 82 | 82 | <artifactId>log4j-api</artifactId>
|
| 83 | 83 | </dependency>
|
| 84 | + <dependency>
|
|
| 85 | + <groupId>org.swinglabs</groupId>
|
|
| 86 | + <artifactId>jxlayer</artifactId>
|
|
| 87 | + </dependency>
|
|
| 84 | 88 | <dependency>
|
| 85 | 89 | <groupId>${project.groupId}</groupId>
|
| 86 | 90 | <artifactId>client-datasource-editor-api-test</artifactId>
|
| ... | ... | @@ -147,6 +147,10 @@ |
| 147 | 147 | <groupId>org.locationtech.jts</groupId>
|
| 148 | 148 | <artifactId>jts-core</artifactId>
|
| 149 | 149 | </dependency>
|
| 150 | + <dependency>
|
|
| 151 | + <groupId>org.swinglabs</groupId>
|
|
| 152 | + <artifactId>jxlayer</artifactId>
|
|
| 153 | + </dependency>
|
|
| 150 | 154 | <dependency>
|
| 151 | 155 | <groupId>org.swinglabs.swingx</groupId>
|
| 152 | 156 | <artifactId>swingx-core</artifactId>
|
| ... | ... | @@ -91,6 +91,11 @@ |
| 91 | 91 | <artifactId>gt-main</artifactId>
|
| 92 | 92 | <version>${lib.version.geoTools}</version>
|
| 93 | 93 | </dependency>
|
| 94 | + <dependency>
|
|
| 95 | + <groupId>org.geotools</groupId>
|
|
| 96 | + <artifactId>gt-metadata</artifactId>
|
|
| 97 | + <version>${lib.version.geoTools}</version>
|
|
| 98 | + </dependency>
|
|
| 94 | 99 | <dependency>
|
| 95 | 100 | <groupId>org.geotools</groupId>
|
| 96 | 101 | <artifactId>gt-opengis</artifactId>
|
| ... | ... | @@ -160,6 +160,10 @@ |
| 160 | 160 | <groupId>org.locationtech.jts</groupId>
|
| 161 | 161 | <artifactId>jts-core</artifactId>
|
| 162 | 162 | </dependency>
|
| 163 | + <dependency>
|
|
| 164 | + <groupId>org.swinglabs</groupId>
|
|
| 165 | + <artifactId>jxlayer</artifactId>
|
|
| 166 | + </dependency>
|
|
| 163 | 167 | <dependency>
|
| 164 | 168 | <groupId>org.swinglabs.swingx</groupId>
|
| 165 | 169 | <artifactId>swingx-core</artifactId>
|
| ... | ... | @@ -75,6 +75,10 @@ |
| 75 | 75 | <groupId>io.ultreia.java4all</groupId>
|
| 76 | 76 | <artifactId>application-context</artifactId>
|
| 77 | 77 | </dependency>
|
| 78 | + <dependency>
|
|
| 79 | + <groupId>io.ultreia.java4all</groupId>
|
|
| 80 | + <artifactId>java-util</artifactId>
|
|
| 81 | + </dependency>
|
|
| 78 | 82 | <dependency>
|
| 79 | 83 | <groupId>io.ultreia.java4all.i18n</groupId>
|
| 80 | 84 | <artifactId>i18n-runtime</artifactId>
|
| ... | ... | @@ -383,7 +387,7 @@ |
| 383 | 387 | <phase>generate-resources</phase>
|
| 384 | 388 | <configuration>
|
| 385 | 389 | <target>
|
| 386 | - <copy failonerror="true" file="../../CHANGELOG.md" overwrite="true" tofile="${project.build.outputDirectory}/META-INF/${applicationName}-CHANGELOG.md" />
|
|
| 390 | + <copy failonerror="true" file="../../CHANGELOG.md" overwrite="true" tofile="${project.build.outputDirectory}/META-INF/${applicationName}-CHANGELOG.md"/>
|
|
| 387 | 391 | </target>
|
| 388 | 392 | </configuration>
|
| 389 | 393 | </execution>
|
| ... | ... | @@ -397,7 +401,7 @@ |
| 397 | 401 | <target>
|
| 398 | 402 | <copy failonerror="true" overwrite="true" todir="${project.build.outputDirectory}/META-INF/configuration/">
|
| 399 | 403 | <fileset dir="${config.targetDirectory}">
|
| 400 | - <include name="${applicationName}.*" />
|
|
| 404 | + <include name="${applicationName}.*"/>
|
|
| 401 | 405 | </fileset>
|
| 402 | 406 | </copy>
|
| 403 | 407 | </target>
|
| ... | ... | @@ -411,7 +415,7 @@ |
| 411 | 415 | <phase>integration-test</phase>
|
| 412 | 416 | <configuration>
|
| 413 | 417 | <target>
|
| 414 | - <copy failonerror="true" file="${project.build.directory}/${project.build.finalName}.jar" overwrite="true" tofile="${project.build.directory}/${applicationJarName}.jar" />
|
|
| 418 | + <copy failonerror="true" file="${project.build.directory}/${project.build.finalName}.jar" overwrite="true" tofile="${project.build.directory}/${applicationJarName}.jar"/>
|
|
| 415 | 419 | </target>
|
| 416 | 420 | </configuration>
|
| 417 | 421 | </execution>
|
| ... | ... | @@ -445,7 +449,7 @@ |
| 445 | 449 | <phase>integration-test</phase>
|
| 446 | 450 | <configuration>
|
| 447 | 451 | <target>
|
| 448 | - <copy failonerror="true" file="${project.build.directory}/${project.build.finalName}.exe" overwrite="true" tofile="${project.build.directory}/${applicationJarName}.exe" />
|
|
| 452 | + <copy failonerror="true" file="${project.build.directory}/${project.build.finalName}.exe" overwrite="true" tofile="${project.build.directory}/${applicationJarName}.exe"/>
|
|
| 449 | 453 | </target>
|
| 450 | 454 | </configuration>
|
| 451 | 455 | </execution>
|
| ... | ... | @@ -273,6 +273,9 @@ observe.info.validation.credentials=To validate referentiel (resp. data), You mu |
| 273 | 273 | observe.init.no.initial.dump.detected=Internal data source %1$s not detected.
|
| 274 | 274 | observe.init.no.local.db.detected=Local data source %1$s not detected.
|
| 275 | 275 | observe.ll.data.observation.SetDetailCompositionUI.generateTabValid=Templates
|
| 276 | +observe.referential.Referential.action.replaceUsages=Replace in data with another reference
|
|
| 277 | +observe.referential.Referential.action.replaceUsages.no.data.usage=No usage of reference «%s» found
|
|
| 278 | +observe.referential.Referential.action.replaceUsages.tip=Replace current usages of this reference «%s» with another one
|
|
| 276 | 279 | observe.referential.Referential.type=<html><body>Referential of type <i>%s</i>
|
| 277 | 280 | observe.runner.action.showConfig.title=Configuration
|
| 278 | 281 | observe.runner.config.loaded=Configuration d'ObServe v. %1$s chargée.
|
| ... | ... | @@ -866,6 +869,7 @@ observe.ui.message.show.data.compositions.usages=List of required dependencies f |
| 866 | 869 | observe.ui.message.show.referential.usages=List of usage of referential %1$s\: '%2$s'
|
| 867 | 870 | observe.ui.message.show.usage.referential.delete=Referential %1$s "%2$s" can be deleted until you choose a replacement.
|
| 868 | 871 | observe.ui.message.show.usage.referential.disabled=Referential %1$s "%2$s" will be disabled.
|
| 872 | +observe.ui.message.show.usage.referential.replace=Choose a replacement for referential %1$s "%2$s"
|
|
| 869 | 873 | observe.ui.message.table.editBean.modified=Current entry is modified and valid.
|
| 870 | 874 | observe.ui.message.table.editBean.modified.but.invalid=Current entry is modified but not valid.
|
| 871 | 875 | observe.ui.move.selectTarget=Select new parent node after move?
|
| ... | ... | @@ -873,6 +877,7 @@ observe.ui.textArea.tip=<html><body><ul><li>To focus on next widget, use acceler |
| 873 | 877 | observe.ui.title.about=About
|
| 874 | 878 | observe.ui.title.can.not.delete.referential=Impossible to delete a referentiel data...
|
| 875 | 879 | observe.ui.title.can.not.export.obstuna=Could not export data...
|
| 880 | +observe.ui.title.can.not.replace.referential=Select referential replacement
|
|
| 876 | 881 | observe.ui.title.choose.avdth.file=Select avdth file
|
| 877 | 882 | observe.ui.title.choose.db.dump=Choose a database backup
|
| 878 | 883 | observe.ui.title.choose.db.dump.directory=Choose directory of backup
|
| ... | ... | @@ -273,6 +273,9 @@ observe.info.validation.credentials=Para validar el referencial (resp. los datos |
| 273 | 273 | observe.init.no.initial.dump.detected=fuente de datos interna %1$s no detectada.
|
| 274 | 274 | observe.init.no.local.db.detected=Base local %1$s no detectada.
|
| 275 | 275 | observe.ll.data.observation.SetDetailCompositionUI.generateTabValid=Templates \#TODO
|
| 276 | +observe.referential.Referential.action.replaceUsages=Replace in data with another reference \#TODO
|
|
| 277 | +observe.referential.Referential.action.replaceUsages.no.data.usage=No usage of reference «%s» found \#TODO
|
|
| 278 | +observe.referential.Referential.action.replaceUsages.tip=Replace current usages of this reference «%s» with another one \#TODO
|
|
| 276 | 279 | observe.referential.Referential.type=<html><body>Referencial de tipo <i>%s</i>
|
| 277 | 280 | observe.runner.action.showConfig.title=Configuración
|
| 278 | 281 | observe.runner.config.loaded=Configuración de Observe v. %1$s cargada.
|
| ... | ... | @@ -866,6 +869,7 @@ observe.ui.message.show.data.compositions.usages=List of required dependencies f |
| 866 | 869 | observe.ui.message.show.referential.usages=Listas de usos de referenciales %1$s \: '%2$s'
|
| 867 | 870 | observe.ui.message.show.usage.referential.delete=El referencial %1$s "%2$s" no se puede eliminar sin hacer una sustitución antes.
|
| 868 | 871 | observe.ui.message.show.usage.referential.disabled=El referencial %1$s "%2$s" se desactivará.
|
| 872 | +observe.ui.message.show.usage.referential.replace=Choose a replacement for referential %1$s "%2$s" \#TODO
|
|
| 869 | 873 | observe.ui.message.table.editBean.modified=El registro actual se ha modificado y es válido.
|
| 870 | 874 | observe.ui.message.table.editBean.modified.but.invalid=El registro actual se ha modificado pero no es válido.
|
| 871 | 875 | observe.ui.move.selectTarget=Select new parent node after move? \#TODO
|
| ... | ... | @@ -873,6 +877,7 @@ observe.ui.textArea.tip=<html><body><ul><li>To focus on next widget, use acceler |
| 873 | 877 | observe.ui.title.about=A proposito de ObServe...
|
| 874 | 878 | observe.ui.title.can.not.delete.referential=Impossible eliminar un referencial en proceso de utilización...
|
| 875 | 879 | observe.ui.title.can.not.export.obstuna=Impossible exportar los datos...
|
| 880 | +observe.ui.title.can.not.replace.referential=Select referential replacement \#TODO
|
|
| 876 | 881 | observe.ui.title.choose.avdth.file=Select avdth file \#TODO
|
| 877 | 882 | observe.ui.title.choose.db.dump=Seleccionar una copia de seguridad de base local
|
| 878 | 883 | observe.ui.title.choose.db.dump.directory=Seleccionar e directorio de destinación de la copia de seguridad
|
| ... | ... | @@ -273,6 +273,9 @@ observe.info.validation.credentials=Pour valider le référentiel (resp. les don |
| 273 | 273 | observe.init.no.initial.dump.detected=Base embarquée %1$s non détectée.
|
| 274 | 274 | observe.init.no.local.db.detected=Base locale %1$s non détectée.
|
| 275 | 275 | observe.ll.data.observation.SetDetailCompositionUI.generateTabValid=Templates
|
| 276 | +observe.referential.Referential.action.replaceUsages=Remplacer dans les données par une autre référence
|
|
| 277 | +observe.referential.Referential.action.replaceUsages.no.data.usage=Aucune utilisation de la référence «%s» détectée
|
|
| 278 | +observe.referential.Referential.action.replaceUsages.tip=Remplacer les utilisations actuelles de cette référence «%s» par une autre
|
|
| 276 | 279 | observe.referential.Referential.type=<html><body>Référentiel de type <i>%s</i>
|
| 277 | 280 | observe.runner.action.showConfig.title=Configuration
|
| 278 | 281 | observe.runner.config.loaded=Configuration d'ObServe v. %1$s chargée.
|
| ... | ... | @@ -866,6 +869,7 @@ observe.ui.message.show.data.compositions.usages=Liste des dépendances requises |
| 866 | 869 | observe.ui.message.show.referential.usages=Listes des utilisations du référentiel %1$s de type '%2$s'
|
| 867 | 870 | observe.ui.message.show.usage.referential.delete=Le référentiel %1$s "%2$s" ne peut pas être supprimé sans effectuer au préalable un remplacement.
|
| 868 | 871 | observe.ui.message.show.usage.referential.disabled=Le référentiel %1$s "%2$s" va être désactivé.
|
| 872 | +observe.ui.message.show.usage.referential.replace=Le référentiel %1$s "%2$s" va être remplacé dans les données métiers
|
|
| 869 | 873 | observe.ui.message.table.editBean.modified=L'entrée en cours d'édition a été modifiée et est valide.
|
| 870 | 874 | observe.ui.message.table.editBean.modified.but.invalid=L'entrée en cours d'édition a été modifiée, mais n'est pas valide.
|
| 871 | 875 | observe.ui.move.selectTarget=Se positionner sur le nœud destination après le déplacement ?
|
| ... | ... | @@ -873,6 +877,7 @@ observe.ui.textArea.tip=<html><body><ul><li>Pour accéder au composant suivant, |
| 873 | 877 | observe.ui.title.about=A propos d'ObServe...
|
| 874 | 878 | observe.ui.title.can.not.delete.referential=Impossible de supprimer un référentiel en cours d'utilisation...
|
| 875 | 879 | observe.ui.title.can.not.export.obstuna=Impossible d'exporter des données...
|
| 880 | +observe.ui.title.can.not.replace.referential=Choisir le référentiel de remplacement
|
|
| 876 | 881 | observe.ui.title.choose.avdth.file=Choisir une base AVDTH
|
| 877 | 882 | observe.ui.title.choose.db.dump=Choisir une sauvegarder de base locale
|
| 878 | 883 | observe.ui.title.choose.db.dump.directory=Choisir le répertoire de destination de la sauvegarde
|
| ... | ... | @@ -63,6 +63,11 @@ |
| 63 | 63 | <artifactId>toolkit-api-services</artifactId>
|
| 64 | 64 | <version>${project.version}</version>
|
| 65 | 65 | </dependency>
|
| 66 | + <dependency>
|
|
| 67 | + <groupId>${project.groupId}</groupId>
|
|
| 68 | + <artifactId>toolkit-api-validation</artifactId>
|
|
| 69 | + <version>${project.version}</version>
|
|
| 70 | + </dependency>
|
|
| 66 | 71 | <dependency>
|
| 67 | 72 | <groupId>${project.groupId}</groupId>
|
| 68 | 73 | <artifactId>model</artifactId>
|
| ... | ... | @@ -66,6 +66,10 @@ |
| 66 | 66 | <groupId>com.google.guava</groupId>
|
| 67 | 67 | <artifactId>guava</artifactId>
|
| 68 | 68 | </dependency>
|
| 69 | + <dependency>
|
|
| 70 | + <groupId>io.ultreia.java4all</groupId>
|
|
| 71 | + <artifactId>java-bean</artifactId>
|
|
| 72 | + </dependency>
|
|
| 69 | 73 | <dependency>
|
| 70 | 74 | <groupId>io.ultreia.java4all</groupId>
|
| 71 | 75 | <artifactId>java-lang</artifactId>
|
| ... | ... | @@ -36,7 +36,7 @@ |
| 36 | 36 | <module>client</module>
|
| 37 | 37 | </modules>
|
| 38 | 38 | <properties>
|
| 39 | - <serviceClassifier />
|
|
| 39 | + <serviceClassifier/>
|
|
| 40 | 40 | </properties>
|
| 41 | 41 | <profiles>
|
| 42 | 42 | <profile>
|
| ... | ... | @@ -91,11 +91,11 @@ |
| 91 | 91 | <target>
|
| 92 | 92 | <copy failonerror="true" filtering="true" overwrite="true" todir="${project.build.outputDirectory}/models">
|
| 93 | 93 | <filterset>
|
| 94 | - <filter token="persistence.model.version" value="${persistence.model.version}" />
|
|
| 95 | - <filter token="model.name" value="${model.name}" />
|
|
| 94 | + <filter token="persistence.model.version" value="${persistence.model.version}"/>
|
|
| 95 | + <filter token="model.name" value="${model.name}"/>
|
|
| 96 | 96 | </filterset>
|
| 97 | 97 | <fileset dir="${basedir}/src/main/models">
|
| 98 | - <include name="**/*" />
|
|
| 98 | + <include name="**/*"/>
|
|
| 99 | 99 | </fileset>
|
| 100 | 100 | </copy>
|
| 101 | 101 | </target>
|
| ... | ... | @@ -111,12 +111,12 @@ |
| 111 | 111 | <target>
|
| 112 | 112 | <delete includeEmptyDirs="true">
|
| 113 | 113 | <fileset dir="${project.build.outputDirectory}/models/${model.name}">
|
| 114 | - <include name="${model.dto.classifier}/*/*" />
|
|
| 115 | - <include name="${model.dto.classifier}/*" />
|
|
| 116 | - <include name="${model.dto.classifier}" />
|
|
| 117 | - <include name="${model.persistence.classifier}/*/*" />
|
|
| 118 | - <include name="${model.persistence.classifier}/*" />
|
|
| 119 | - <include name="${model.persistence.classifier}" />
|
|
| 114 | + <include name="${model.dto.classifier}/*/*"/>
|
|
| 115 | + <include name="${model.dto.classifier}/*"/>
|
|
| 116 | + <include name="${model.dto.classifier}"/>
|
|
| 117 | + <include name="${model.persistence.classifier}/*/*"/>
|
|
| 118 | + <include name="${model.persistence.classifier}/*"/>
|
|
| 119 | + <include name="${model.persistence.classifier}"/>
|
|
| 120 | 120 | </fileset>
|
| 121 | 121 | </delete>
|
| 122 | 122 | </target>
|
| ... | ... | @@ -31,7 +31,7 @@ |
| 31 | 31 | <description>ObServe Release</description>
|
| 32 | 32 | <properties>
|
| 33 | 33 | <deploy>false</deploy>
|
| 34 | - <deployFileSuffix />
|
|
| 34 | + <deployFileSuffix/>
|
|
| 35 | 35 | </properties>
|
| 36 | 36 | <build>
|
| 37 | 37 | <plugins>
|
| ... | ... | @@ -183,9 +183,6 @@ |
| 183 | 183 | <skipNexusStagingDeployMojo>false</skipNexusStagingDeployMojo>
|
| 184 | 184 | <!-- <deployFileSuffix />-->
|
| 185 | 185 | </properties>
|
| 186 | - <build>
|
|
| 187 | - <plugins />
|
|
| 188 | - </build>
|
|
| 189 | 186 | </profile>
|
| 190 | 187 | </profiles>
|
| 191 | 188 | </project> |
| ... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 | <parent>
|
| 24 | 24 | <groupId>io.ultreia.maven</groupId>
|
| 25 | 25 | <artifactId>pom</artifactId>
|
| 26 | - <version>2023.23</version>
|
|
| 26 | + <version>2023.26</version>
|
|
| 27 | 27 | </parent>
|
| 28 | 28 | <groupId>fr.ird.observe</groupId>
|
| 29 | 29 | <artifactId>ird-observe</artifactId>
|
| ... | ... | @@ -543,6 +543,11 @@ |
| 543 | 543 | <artifactId>commons-lang3</artifactId>
|
| 544 | 544 | <version>${lib.version.commons-lang3}</version>
|
| 545 | 545 | </dependency>
|
| 546 | + <dependency>
|
|
| 547 | + <groupId>org.apache.commons</groupId>
|
|
| 548 | + <artifactId>commons-text</artifactId>
|
|
| 549 | + <version>1.10.0</version>
|
|
| 550 | + </dependency>
|
|
| 546 | 551 | <dependency>
|
| 547 | 552 | <groupId>org.apache.httpcomponents</groupId>
|
| 548 | 553 | <artifactId>httpclient</artifactId>
|
| ... | ... | @@ -735,6 +740,11 @@ |
| 735 | 740 | <artifactId>jboss-logging</artifactId>
|
| 736 | 741 | <version>${lib.version.jboss-logging}</version>
|
| 737 | 742 | </dependency>
|
| 743 | + <dependency>
|
|
| 744 | + <groupId>org.jdom</groupId>
|
|
| 745 | + <artifactId>jdom2</artifactId>
|
|
| 746 | + <version>2.0.6.1</version>
|
|
| 747 | + </dependency>
|
|
| 738 | 748 | <dependency>
|
| 739 | 749 | <groupId>org.locationtech.jts</groupId>
|
| 740 | 750 | <artifactId>jts-core</artifactId>
|
| ... | ... | @@ -1653,7 +1663,7 @@ |
| 1653 | 1663 | <phase>pre-site</phase>
|
| 1654 | 1664 | <configuration>
|
| 1655 | 1665 | <target>
|
| 1656 | - <copy failonerror="true" file="README.md" overwrite="true" tofile="${project.basedir}/src/site/markdown/index.md" verbose="true" />
|
|
| 1666 | + <copy failonerror="true" file="README.md" overwrite="true" tofile="${project.basedir}/src/site/markdown/index.md" verbose="true"/>
|
|
| 1657 | 1667 | </target>
|
| 1658 | 1668 | </configuration>
|
| 1659 | 1669 | </execution>
|
| ... | ... | @@ -1683,11 +1693,11 @@ |
| 1683 | 1693 | <phase>pre-site</phase>
|
| 1684 | 1694 | <configuration>
|
| 1685 | 1695 | <target>
|
| 1686 | - <copy failonerror="true" file="CHANGELOG.md" overwrite="true" todir="${project.basedir}/src/site/markdown" />
|
|
| 1687 | - <copy failonerror="true" file="${project.basedir}/client/runner/src/main/assembly/dist/config/observe-client.md" overwrite="true" todir="${project.basedir}/src/site/markdown/" />
|
|
| 1688 | - <copy failonerror="true" file="${project.basedir}/client/runner/src/main/assembly/dist/config/observe-client.conf" overwrite="true" todir="${project.basedir}/src/site/resources/" />
|
|
| 1689 | - <copy failonerror="true" file="${project.basedir}/server/runner/src/main/assembly/dist/config/observe-server.md" overwrite="true" todir="${project.basedir}/src/site/markdown/" />
|
|
| 1690 | - <copy failonerror="true" file="${project.basedir}/server/runner/src/main/assembly/dist/config/observe-server.conf" overwrite="true" todir="${project.basedir}/src/site/resources/" />
|
|
| 1696 | + <copy failonerror="true" file="CHANGELOG.md" overwrite="true" todir="${project.basedir}/src/site/markdown"/>
|
|
| 1697 | + <copy failonerror="true" file="${project.basedir}/client/runner/src/main/assembly/dist/config/observe-client.md" overwrite="true" todir="${project.basedir}/src/site/markdown/"/>
|
|
| 1698 | + <copy failonerror="true" file="${project.basedir}/client/runner/src/main/assembly/dist/config/observe-client.conf" overwrite="true" todir="${project.basedir}/src/site/resources/"/>
|
|
| 1699 | + <copy failonerror="true" file="${project.basedir}/server/runner/src/main/assembly/dist/config/observe-server.md" overwrite="true" todir="${project.basedir}/src/site/markdown/"/>
|
|
| 1700 | + <copy failonerror="true" file="${project.basedir}/server/runner/src/main/assembly/dist/config/observe-server.conf" overwrite="true" todir="${project.basedir}/src/site/resources/"/>
|
|
| 1691 | 1701 | </target>
|
| 1692 | 1702 | </configuration>
|
| 1693 | 1703 | </execution>
|
| ... | ... | @@ -256,7 +256,7 @@ |
| 256 | 256 | <phase>generate-resources</phase>
|
| 257 | 257 | <configuration>
|
| 258 | 258 | <target>
|
| 259 | - <copy failonerror="true" file="../../CHANGELOG.md" overwrite="true" tofile="${project.build.outputDirectory}/META-INF/${applicationName}-CHANGELOG.md" />
|
|
| 259 | + <copy failonerror="true" file="../../CHANGELOG.md" overwrite="true" tofile="${project.build.outputDirectory}/META-INF/${applicationName}-CHANGELOG.md"/>
|
|
| 260 | 260 | </target>
|
| 261 | 261 | </configuration>
|
| 262 | 262 | </execution>
|
| ... | ... | @@ -270,7 +270,7 @@ |
| 270 | 270 | <target>
|
| 271 | 271 | <copy failonerror="true" overwrite="true" todir="${project.build.outputDirectory}/META-INF/configuration/">
|
| 272 | 272 | <fileset dir="${config.targetDirectory}">
|
| 273 | - <include name="${applicationName}.*" />
|
|
| 273 | + <include name="${applicationName}.*"/>
|
|
| 274 | 274 | </fileset>
|
| 275 | 275 | </copy>
|
| 276 | 276 | </target>
|