Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: f1d57b9c by Tony CHEMIT at 2018-10-14T23:31:38Z [LL] Opération de pêche : recopie de propriétés - Closes #1125 - - - - - 18 changed files: - client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java - client/src/main/java/fr/ird/observe/client/ui/actions/content/api/data/edit/SaveEditDataUIActionSupport.java - + client/src/main/java/fr/ird/observe/client/ui/actions/content/data/longline/save/CopyValuesAndSaveSetLonglineLogbookUIAction.java - client/src/main/java/fr/ird/observe/client/ui/actions/content/data/longline/save/SaveSetLonglineLogbookUIAction.java - client/src/main/java/fr/ird/observe/client/ui/content/api/data/edit/ContentEditUI.jaxx - client/src/main/java/fr/ird/observe/client/ui/content/api/data/edit/ContentEditUI.jcss - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/SetLonglineLogbookUI.jaxx - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/SetLonglineLogbookUI.jcss - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/SetLonglineLogbookUIModel.java - client/src/main/resources/i18n/client_en_GB.properties - client/src/main/resources/i18n/client_es_ES.properties - client/src/main/resources/i18n/client_fr_FR.properties - dto/src/main/java/fr/ird/observe/dto/data/longline/SetLonglineLogbookGlobalCompositionDto.java - dto/src/main/models/Observe-06-data-longline-logbook.model - persistence/src/main/java/fr/ird/observe/binder/data/longline/SetLonglineLogbookStubEntityDtoBinder.java - server/src/main/filtered-resources/mapping - services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/SetLonglineLogbookServiceLocal.java - services/src/main/java/fr/ird/observe/services/service/data/longline/SetLonglineLogbookService.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java ===================================== @@ -74,6 +74,7 @@ public abstract class ObserveKeyStrokes { public static final KeyStroke KEY_STROKE_CONFIGURE_SYNCHRO_FROM_RIGHT = KeyStroke.getKeyStroke("ctrl pressed B"); public static final KeyStroke KEY_STROKE_CONFIGURE_SYNCHRO_FROM_BOTH = KeyStroke.getKeyStroke("ctrl pressed C"); + public static final KeyStroke KEY_STROKE_COPY_VALUES_AND_SAVE = KeyStroke.getKeyStroke("ctrl pressed T"); public static final KeyStroke KEY_STROKE_SELECT_TRANSSHIPMENT = KeyStroke.getKeyStroke("ctrl pressed T"); public static final KeyStroke KEY_STROKE_SAVE_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed S"); public static final KeyStroke KEY_STROKE_PRESSED_ENTER = KeyStroke.getKeyStroke("pressed ENTER"); ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/api/data/edit/SaveEditDataUIActionSupport.java ===================================== @@ -57,8 +57,12 @@ public abstract class SaveEditDataUIActionSupport<D extends DataDto, R extends D private static final long serialVersionUID = 1L; - protected SaveEditDataUIActionSupport(ObserveMainUI mainUI, String name, KeyStroke keyStroke) { - super(mainUI, name, n("observe.action.save"), n("observe.action.save.tip"), "save", keyStroke); + protected SaveEditDataUIActionSupport(ObserveMainUI mainUI, String actionKey, String text, String tip, KeyStroke keyStroke) { + super(mainUI, actionKey, text, tip, "save", keyStroke); + } + + protected SaveEditDataUIActionSupport(ObserveMainUI mainUI, String actionKey, KeyStroke keyStroke) { + super(mainUI, actionKey, n("observe.action.save"), n("observe.action.save.tip"), "save", keyStroke); } protected abstract boolean doSave(U ui, D bean, ObserveEditNode<?> parentEditNode, boolean notPersisted); ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/data/longline/save/CopyValuesAndSaveSetLonglineLogbookUIAction.java ===================================== @@ -0,0 +1,38 @@ +package fr.ird.observe.client.ui.actions.content.data.longline.save; + +import fr.ird.observe.client.ui.ObserveKeyStrokes; +import fr.ird.observe.client.ui.ObserveMainUI; +import fr.ird.observe.client.ui.content.data.longline.logbook.SetLonglineLogbookUI; +import fr.ird.observe.client.ui.content.data.longline.logbook.SetLonglineLogbookUIModel; +import fr.ird.observe.dto.data.longline.SetLonglineLogbookDto; +import fr.ird.observe.dto.result.SaveResultDto; +import fr.ird.observe.navigation.model.edit.ObserveEditNode; + +import java.util.Objects; + +import static org.nuiton.i18n.I18n.n; + +/** + * Created by tchemit on 14/10/2018. + * + * @author Tony Chemit - dev@tchemit.fr + */ +public class CopyValuesAndSaveSetLonglineLogbookUIAction extends SaveSetLonglineLogbookUIAction { + + public static final String ACTION_NAME = CopyValuesAndSaveSetLonglineLogbookUIAction.class.getName(); + + public CopyValuesAndSaveSetLonglineLogbookUIAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME, n("observe.common.SetLonglineLogbookDto.action.copyValuesAndSave"), n("observe.common.SetLonglineLogbookDto.action.copyValuesAndSave"), ObserveKeyStrokes.KEY_STROKE_COPY_VALUES_AND_SAVE); + } + + @Override + protected boolean doSave(SetLonglineLogbookUI ui, SetLonglineLogbookDto bean, ObserveEditNode<?> parentEditNode, boolean notPersisted) { + String parentId = parentEditNode.getId(); + SetLonglineLogbookUIModel model = ui.getModel(); + String setIdToCopy = Objects.requireNonNull(model.getSetIdToCopy()); + SaveResultDto saveResult = getServicesProvider().getSetLonglineLogbookService().saveAndCopyProperties(parentId, setIdToCopy, bean); + saveResult.toDto(bean); + return true; + } + +} ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/data/longline/save/SaveSetLonglineLogbookUIAction.java ===================================== @@ -31,6 +31,8 @@ import fr.ird.observe.dto.data.longline.SetLonglineLogbookReference; import fr.ird.observe.dto.result.SaveResultDto; import fr.ird.observe.navigation.model.edit.ObserveEditNode; +import javax.swing.KeyStroke; + /** * Created by tchemit on 28/09/2018. * @@ -40,6 +42,10 @@ public class SaveSetLonglineLogbookUIAction extends SaveEditDataUIActionSupport< public static final String ACTION_NAME = SaveSetLonglineLogbookUIAction.class.getName(); + public SaveSetLonglineLogbookUIAction(ObserveMainUI mainUI, String actionKey, String text, String tip, KeyStroke keyStroke) { + super(mainUI, actionKey, text, tip, keyStroke); + } + public SaveSetLonglineLogbookUIAction(ObserveMainUI mainUI) { super(mainUI, ACTION_NAME, ObserveKeyStrokes.KEY_STROKE_SAVE_DATA); } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/api/data/edit/ContentEditUI.jaxx ===================================== @@ -62,5 +62,11 @@ <JButton id='delete'/> </cell> </row> + <row insets='0'> + <cell fill='both' columns="3"> + <Table id='extraActions' fill="both" weightx="1" insets='2'/> + </cell> + </row> + </Table> </fr.ird.observe.client.ui.content.api.ContentUI> ===================================== client/src/main/java/fr/ird/observe/client/ui/content/api/data/edit/ContentEditUI.jcss ===================================== @@ -30,7 +30,9 @@ #actions { visible:{model.isCanWrite()}; } - +#extraActions { + visible:false; +} #reset { _observeAction:{ResetEditUIAction.ACTION_NAME}; _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/SetLonglineLogbookUI.jaxx ===================================== @@ -34,6 +34,7 @@ fr.ird.observe.dto.referential.longline.LightsticksColorReference fr.ird.observe.client.ui.actions.content.data.longline.delete.DeleteSetLonglineLogbookUIAction + fr.ird.observe.client.ui.actions.content.data.longline.save.CopyValuesAndSaveSetLonglineLogbookUIAction fr.ird.observe.client.ui.actions.content.data.longline.save.SaveSetLonglineLogbookUIAction fr.ird.observe.client.ui.content.api.ContentUIModel @@ -427,5 +428,11 @@ <JButton id='reset'/> <JButton id='save'/> <JButton id='delete'/> - + <Table id='extraActions' fill="both" weightx="1" insets='2'> + <row> + <cell fill="both"> + <JButton id='copyValuesAndSave'/> + </cell> + </row> + </Table> </fr.ird.observe.client.ui.content.api.data.edit.ContentEditUI> ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/SetLonglineLogbookUI.jcss ===================================== @@ -28,6 +28,15 @@ _observeAction:{DeleteSetLonglineLogbookUIAction.ACTION_NAME}; } +#extraActions { + visible:{!model.isReadingMode()}; +} + +#copyValuesAndSave { + enabled:{model.getCopySetCandidate() != null && model.isValid()}; + _observeAction:{CopyValuesAndSaveSetLonglineLogbookUIAction.ACTION_NAME}; +} + /* ***************************************************************************** */ /* SETTING TAB **************************************************************** */ /* ***************************************************************************** */ ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/SetLonglineLogbookUIModel.java ===================================== @@ -25,6 +25,13 @@ package fr.ird.observe.client.ui.content.data.longline.logbook; import fr.ird.observe.client.ui.content.api.data.edit.ContentEditUIModel; import fr.ird.observe.dto.data.longline.SetLonglineLogbookDto; import fr.ird.observe.dto.data.longline.SetLonglineLogbookReference; +import fr.ird.observe.dto.data.longline.SetLonglineLogbookStubDto; +import fr.ird.observe.dto.form.Form; + +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; /** * Created on 9/28/14. @@ -36,7 +43,48 @@ public class SetLonglineLogbookUIModel extends ContentEditUIModel<SetLonglineLog private static final long serialVersionUID = 1L; + private List<SetLonglineLogbookStubDto> copySetCandidates; + private SetLonglineLogbookStubDto copySetCandidate; + public SetLonglineLogbookUIModel() { super(SetLonglineLogbookDto.class); } + + @Override + public void openForm(Form<SetLonglineLogbookDto> form) { + super.openForm(form); + + copySetCandidates = form.getObject().getOtherSets().stream() + .sorted(Comparator.comparing(SetLonglineLogbookStubDto::getSettingStartTimeStamp)) + .collect(Collectors.toList()); + addPropertyChangeListener(SetLonglineLogbookDto.PROPERTY_SETTING_START_TIME_STAMP, e -> updateCopySetCandidate((Date) e.getNewValue())); + updateCopySetCandidate(getBean().getSettingStartTimeStamp()); + } + + private void updateCopySetCandidate(Date newValue) { + if (newValue == null) { + setCopySetCandidate(null); + } else { + List<SetLonglineLogbookStubDto> collect = copySetCandidates.stream().filter(e -> e.getSettingStartTimeStamp().before(newValue)).collect(Collectors.toList()); + if (collect.isEmpty()) { + setCopySetCandidate(null); + } else { + setCopySetCandidate(collect.get(collect.size() - 1)); + } + } + } + + public SetLonglineLogbookStubDto getCopySetCandidate() { + return copySetCandidate; + } + + public void setCopySetCandidate(SetLonglineLogbookStubDto copySetCandidate) { + SetLonglineLogbookStubDto oldValue = getCopySetCandidate(); + this.copySetCandidate = copySetCandidate; + firePropertyChange("copySetCandidate", oldValue, copySetCandidate); + } + + public String getSetIdToCopy() { + return copySetCandidate == null ? null : copySetCandidate.getId(); + } } ===================================== client/src/main/resources/i18n/client_en_GB.properties ===================================== @@ -1091,6 +1091,7 @@ observe.common.SetDto.action.goToOpen.short=Open set observe.common.SetDto.action.goToOpen.tip=Open set observe.common.SetLogbookDto.action.goToOpen.short=Logbook - Open set observe.common.SetLogbookDto.action.goToOpen.tip=Go to open set (Logbook) +observe.common.SetLonglineLogbookDto.action.copyValuesAndSave=Copy values and save observe.common.SetLonglineLogbookDto.action.reset.homeId.tip=Reset home id observe.common.SetLonglineLogbookDto.basketLineLength=Bakset line length (m) observe.common.SetLonglineLogbookDto.haulingTab=Hauling ===================================== client/src/main/resources/i18n/client_es_ES.properties ===================================== @@ -1091,6 +1091,7 @@ observe.common.SetDto.action.goToOpen.short=Lance abierto observe.common.SetDto.action.goToOpen.tip=Acceder al lance abierto observe.common.SetLogbookDto.action.goToOpen.short=Logbook - Open set \#TODO observe.common.SetLogbookDto.action.goToOpen.tip=Go to open set (Logbook) \#TODO +observe.common.SetLonglineLogbookDto.action.copyValuesAndSave=Copy values and save \#TODO observe.common.SetLonglineLogbookDto.action.reset.homeId.tip=Reiniciar el id de negocio observe.common.SetLonglineLogbookDto.basketLineLength=Bakset line length (m) \#TODO observe.common.SetLonglineLogbookDto.haulingTab=Arrastre ===================================== client/src/main/resources/i18n/client_fr_FR.properties ===================================== @@ -1091,6 +1091,7 @@ observe.common.SetDto.action.goToOpen.short=Calée ouverte observe.common.SetDto.action.goToOpen.tip=Accéder à la calée ouverte observe.common.SetLogbookDto.action.goToOpen.short=Livre de bord - Calée ouverte observe.common.SetLogbookDto.action.goToOpen.tip=Accéder à la calée ouverte (Livre de bord) +observe.common.SetLonglineLogbookDto.action.copyValuesAndSave=Recopier les propriétés et enregister observe.common.SetLonglineLogbookDto.action.reset.homeId.tip=Réinitialiser l'id métier observe.common.SetLonglineLogbookDto.basketLineLength=Longueur de la ligne par panier (m) observe.common.SetLonglineLogbookDto.haulingTab=Virage ===================================== dto/src/main/java/fr/ird/observe/dto/data/longline/SetLonglineLogbookGlobalCompositionDto.java ===================================== @@ -102,4 +102,11 @@ public class SetLonglineLogbookGlobalCompositionDto extends GeneratedSetLongline firePropertyChange(PROPERTY_BAITS_COMPOSITION_PROPORTION_SUM, 0, sum); } + public void removeIds() { + setId(null); + getBaitsComposition().forEach(e -> e.setId(null)); + getBranchlinesComposition().forEach(e -> e.setId(null)); + getFloatlinesComposition().forEach(e -> e.setId(null)); + getHooksComposition().forEach(e -> e.setId(null)); + } } ===================================== dto/src/main/models/Observe-06-data-longline-logbook.model ===================================== @@ -96,6 +96,7 @@ catchLongline {*} data.longline.CatchLonglineLogbook | ordered data.longline.SetLonglineLogbookStub > data.Data | mainDto=skip homeId + {*:1} String number + {*:1} Integer +settingStartTimeStamp + {*:1} Date activityLongline {*:1} fr.ird.observe.dto.data.longline.ActivityLonglineLogbookReference | unique ===================================== persistence/src/main/java/fr/ird/observe/binder/data/longline/SetLonglineLogbookStubEntityDtoBinder.java ===================================== @@ -50,6 +50,7 @@ public class SetLonglineLogbookStubEntityDtoBinder extends DataEntityDtoBinderSu dto.setHomeId(entity.getHomeId()); dto.setNumber(entity.getNumber()); + dto.setSettingStartTimeStamp(entity.getSettingStartTimeStamp()); dto.setActivityLongline(toDataReference(referentialLocale, null)); } ===================================== server/src/main/filtered-resources/mapping ===================================== @@ -131,6 +131,7 @@ GET /api/v1/data/longline/SetLonglineLogbookService/loadForm GET /api/v1/data/longline/SetLonglineLogbookService/loadReferenceToRead v1.data.longline.SetLonglineLogbookServiceRestApi.loadReferenceToRead GET /api/v1/data/longline/SetLonglineLogbookService/preCreate v1.data.longline.SetLonglineLogbookServiceRestApi.preCreate POST /api/v1/data/longline/SetLonglineLogbookService/save v1.data.longline.SetLonglineLogbookServiceRestApi.save +POST /api/v1/data/longline/SetLonglineLogbookService/saveAndCopyProperties v1.data.longline.SetLonglineLogbookServiceRestApi.saveAndCopyProperties GET /api/v1/data/longline/SetLonglineObsCatchService/loadForm v1.data.longline.SetLonglineObsCatchServiceRestApi.loadForm POST /api/v1/data/longline/SetLonglineObsCatchService/save v1.data.longline.SetLonglineObsCatchServiceRestApi.save GET /api/v1/data/longline/SetLonglineObsDetailCompositionService/canDeleteBasket v1.data.longline.SetLonglineObsDetailCompositionServiceRestApi.canDeleteBasket ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/SetLonglineLogbookServiceLocal.java ===================================== @@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service.data.longline; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. @@ -28,6 +28,7 @@ import fr.ird.observe.dto.DataNotFoundException; import fr.ird.observe.dto.data.longline.ActivityLonglineLogbookDto; import fr.ird.observe.dto.data.longline.ActivityLonglineLogbookReference; import fr.ird.observe.dto.data.longline.SetLonglineLogbookDto; +import fr.ird.observe.dto.data.longline.SetLonglineLogbookGlobalCompositionDto; import fr.ird.observe.dto.data.longline.SetLonglineLogbookReference; import fr.ird.observe.dto.data.longline.SetLonglineLogbookStubDto; import fr.ird.observe.dto.form.Form; @@ -36,6 +37,7 @@ import fr.ird.observe.entities.longline.ActivityLonglineLogbook; import fr.ird.observe.entities.longline.SetLonglineLogbook; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.services.local.service.ObserveServiceLocal; +import fr.ird.observe.services.service.data.longline.SetLonglineLogbookGlobalCompositionService; import fr.ird.observe.services.service.data.longline.SetLonglineLogbookService; import org.apache.commons.lang3.time.DateUtils; @@ -107,6 +109,32 @@ public class SetLonglineLogbookServiceLocal extends ObserveServiceLocal implemen return result; } + @Override + public SaveResultDto saveAndCopyProperties(String activityLonglineId, String setToCopyId, SetLonglineLogbookDto dto) { + ActivityLonglineLogbook activityLongline = ACTIVITY_LONGLINE_LOGBOOK_SPI.loadEntity(getTopiaPersistenceContext(), activityLonglineId); + SetLonglineLogbook entityToCopy = SET_LONGLINE_LOGBOOK_SPI.loadEntity(getTopiaPersistenceContext(), setToCopyId); + SetLonglineLogbook entity = SET_LONGLINE_LOGBOOK_SPI.loadOrCreateEntityFromDataDto(getTopiaPersistenceContext(), dto); + checkLastUpdateDate(entity, dto); + + SetLonglineLogbookGlobalCompositionService globalCompositionService = serviceContext.newService(SetLonglineLogbookGlobalCompositionService.class); + SetLonglineLogbookGlobalCompositionDto globalCompositionToCopy = globalCompositionService.loadForm(setToCopyId).getObject(); + + globalCompositionToCopy.removeIds(); + SET_LONGLINE_LOGBOOK_GLOBAL_COMPOSITION_SPI.copyDataDtoToEntity(globalCompositionToCopy, entity, getReferentialLocale()); + SET_LONGLINE_LOGBOOK_SPI.copyDataDtoToEntity(dto, entity, getReferentialLocale()); + + entity.setTotalLineLength(entityToCopy.getTotalLineLength()); + entity.setBasketLineLength(entityToCopy.getBasketLineLength()); + entity.setLengthBetweenBranchlines(entityToCopy.getLengthBetweenBranchlines()); + entity.setLineType(entityToCopy.getLineType()); + + SaveResultDto result = saveEntity(entity); + if (dto.isNotPersisted()) { + activityLongline.setSetLongline(entity); + } + return result; + } + @Override public void delete(String activityLonglineId, String setLonglineId) { ActivityLonglineLogbook activityLongline = ACTIVITY_LONGLINE_LOGBOOK_SPI.loadEntity(getTopiaPersistenceContext(), activityLonglineId); @@ -128,6 +156,7 @@ public class SetLonglineLogbookServiceLocal extends ObserveServiceLocal implemen otherSetDto.setId(otherSetLongline.getTopiaId()); otherSetDto.setHomeId(otherSetLongline.getHomeId()); otherSetDto.setNumber(otherSetLongline.getNumber()); + otherSetDto.setSettingStartTimeStamp(otherSetLongline.getSettingStartTimeStamp()); ActivityLonglineLogbookReference reference = binder.toReference(getReferentialLocale(), activityLongline); otherSetDto.setActivityLongline(reference); result.add(otherSetDto); ===================================== services/src/main/java/fr/ird/observe/services/service/data/longline/SetLonglineLogbookService.java ===================================== @@ -64,6 +64,11 @@ public interface SetLonglineLogbookService extends ObserveService { @Post SaveResultDto save(String activityLonglineId, SetLonglineLogbookDto dto); + @WriteDataPermission + @Write + @Post + SaveResultDto saveAndCopyProperties(String activityLonglineId, String setToCopyId, SetLonglineLogbookDto dto); + @Write @WriteDataPermission @Delete View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/f1d57b9c63c0913884165a7aeb00... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/f1d57b9c63c0913884165a7aeb00... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT