branch feature/7616 created (now 5c8e4c5)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7616 in repository observe. See http://git.codelutin.com/observe.git at 5c8e4c5 migration des captures de palangre (refs #7616) This branch includes the following new commits: new 5c8e4c5 migration des captures de palangre (refs #7616) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 5c8e4c50696f111398dd954d747c8d5717d39e20 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 28 15:42:52 2015 +0100 migration des captures de palangre (refs #7616) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7616 in repository observe. See http://git.codelutin.com/observe.git commit 5c8e4c50696f111398dd954d747c8d5717d39e20 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 28 15:42:52 2015 +0100 migration des captures de palangre (refs #7616) --- .../java/fr/ird/observe/ui/DecoratorService.java | 31 +- .../CatchLonglineContentTableUIInitializer.java | 4 +- .../impl/longline/CatchLonglineTableModel.java | 20 +- .../table/impl/longline/CatchLonglineUI.css | 2 - .../table/impl/longline/CatchLonglineUI.jaxx | 10 +- .../impl/longline/CatchLonglineUIHandler.java | 397 ++++++--------------- .../table/impl/longline/CatchLonglineUIModel.java | 47 +-- .../impl/longline/LonglinePositionHelper.java | 222 ++++++------ .../v1/longline/BranchlineServiceController.java | 31 ++ .../SetLonglineCatchServiceController.java | 5 +- .../service/longline/BranchlineService.java | 27 ++ .../service/longline/SetLonglineCatchService.java | 3 +- .../fr/ird/observe/services/dto/ReferenceDto.java | 30 +- .../fr/ird/observe/services/dto/ReferenceDtos.java | 9 + .../observe/services/dto/longline/BasketDto.java | 8 + .../services/dto/longline/BranchlineDto.java | 9 + .../dto/longline/LonglinePositionAwareDto.java | 53 +++ .../main/xmi/observe-services-dto-longline.zargo | Bin 64399 -> 64814 bytes .../ird/observe/services/ObserveServiceTopia.java | 12 +- .../services/dto/ObserveDtosInitializer.java | 13 + .../services/entity/BasketEntitiesExtractor.java | 36 ++ .../entity/BranchlineEntitiesExtractor.java | 43 +++ .../{EntitiesSet.java => EntitiesExtractor.java} | 12 +- .../services/entity/EntitiesSetFactory.java | 224 +++++++----- .../services/entity/SectionEntitiesExtractor.java | 24 ++ ...sSet.java => SpeciesListEntitiesExtractor.java} | 10 +- ...java => SpeciesListOceanEntitiesExtractor.java} | 6 +- .../service/longline/BranchlineServiceTopia.java | 62 ++++ .../longline/SetLonglineCatchServiceTopia.java | 65 +++- 29 files changed, 821 insertions(+), 594 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java index 6e4d744..ecbd4b0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java @@ -132,7 +132,9 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.nuiton.i18n.I18n.*; +import static org.nuiton.i18n.I18n.l; +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** @@ -503,21 +505,21 @@ public class DecoratorService extends DecoratorProvider { String settingIdentifier = l(locale, "observe.common.settingIdentifier"); String haulingIdentifier = l(locale, "observe.common.haulingIdentifier"); - registerObserveDecorator( + registerReferenceDtoDecorator( SectionDto.class, " ${settingIdentifier}$s (" + settingIdentifier + ")##${haulingIdentifier}$s (" + haulingIdentifier + ")"); - registerObserveDecorator( + registerReferenceDtoDecorator( BasketDto.class, " ${settingIdentifier}$s (" + settingIdentifier + ")##${haulingIdentifier}$s (" + haulingIdentifier + ")"); - registerObserveDecorator( + registerReferenceDtoDecorator( BranchlineDto.class, " ${settingIdentifier}$s (" + settingIdentifier + ")##${haulingIdentifier}$s (" + haulingIdentifier + ")"); - registerObserveDecorator(HAULING_IDENTIFIER, SectionDto.class, "${haulingIdentifier}$s"); - registerObserveDecorator(HAULING_IDENTIFIER, BasketDto.class, "${haulingIdentifier}$s"); - registerObserveDecorator(HAULING_IDENTIFIER, BranchlineDto.class, "${haulingIdentifier}$s"); + registerReferenceDtoDecorator(HAULING_IDENTIFIER, SectionDto.class, "${haulingIdentifier}$s"); + registerReferenceDtoDecorator(HAULING_IDENTIFIER, BasketDto.class, "${haulingIdentifier}$s"); + registerReferenceDtoDecorator(HAULING_IDENTIFIER, BranchlineDto.class, "${haulingIdentifier}$s"); // TripSeine decorator registerDecorator(new TripSeineDecorator()); @@ -592,6 +594,12 @@ public class DecoratorService extends DecoratorProvider { registerReferenceDtoDecorator(referenceType, expression, referenceExpression, " "); } + protected <T extends IdDto> void registerReferenceDtoDecorator(String context, + Class<T> referenceType, + String expression) { + registerReferenceDtoDecorator(context, referenceType, expression, expression, " "); + } + protected <T extends IdDto> void registerReferenceDtoDecorator(Class<T> referenceType, String expression, String referenceExpression, @@ -600,6 +608,15 @@ public class DecoratorService extends DecoratorProvider { registerObserveDecorator(referenceType, expression, separator); } + protected <T extends IdDto> void registerReferenceDtoDecorator(String context, + Class<T> referenceType, + String expression, + String referenceExpression, + String separator) { + registerDecorator(referenceType.getSimpleName() + context, new ReferenceDecorator(referenceExpression)); + registerObserveDecorator(context, referenceType, expression, separator); + } + protected <T> void registerObserveDecorator(Class<T> referenceType, String expression) { registerDecorator(new ObserveDecorator<>(referenceType, expression)); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineContentTableUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineContentTableUIInitializer.java index c753cc2..2fe0e15 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineContentTableUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineContentTableUIInitializer.java @@ -24,7 +24,7 @@ package fr.ird.observe.ui.content.table.impl.longline; import fr.ird.observe.services.dto.longline.CatchLonglineDto; -import fr.ird.observe.services.dto.longline.SetLonglineDto; +import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; import fr.ird.observe.ui.content.table.ContentTableUIInitializer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -40,7 +40,7 @@ import java.awt.event.ItemListener; * @author Tony Chemit - chemit@codelutin.com * @since 3.15 */ -public class CatchLonglineContentTableUIInitializer extends ContentTableUIInitializer<SetLonglineDto, CatchLonglineDto, CatchLonglineUI> { +public class CatchLonglineContentTableUIInitializer extends ContentTableUIInitializer<SetLonglineCatchDto, CatchLonglineDto, CatchLonglineUI> { /** Logger. */ private static final Log log = LogFactory.getLog(CatchLonglineContentTableUIInitializer.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineTableModel.java index d8a6d7c..6b12d37 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineTableModel.java @@ -23,7 +23,8 @@ package fr.ird.observe.ui.content.table.impl.longline; */ import fr.ird.observe.services.dto.longline.CatchLonglineDto; -import fr.ird.observe.services.dto.longline.SetLonglineDto; +import fr.ird.observe.services.dto.longline.CatchLonglineDtos; +import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; import fr.ird.observe.ui.content.table.ContentTableMeta; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ObserveContentTableUI; @@ -37,11 +38,11 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 3.8 */ -public class CatchLonglineTableModel extends ContentTableModel<SetLonglineDto, CatchLonglineDto> { +public class CatchLonglineTableModel extends ContentTableModel<SetLonglineCatchDto, CatchLonglineDto> { private static final long serialVersionUID = 1L; - public CatchLonglineTableModel(ObserveContentTableUI<SetLonglineDto, CatchLonglineDto> context, + public CatchLonglineTableModel(ObserveContentTableUI<SetLonglineCatchDto, CatchLonglineDto> context, List<ContentTableMeta<CatchLonglineDto>> contentTableMetas) { super(context, contentTableMetas); } @@ -92,9 +93,8 @@ public class CatchLonglineTableModel extends ContentTableModel<SetLonglineDto, C } @Override - protected void setChilds(SetLonglineDto parent, List<CatchLonglineDto> childs) { - // FIXME - + protected void setChilds(SetLonglineCatchDto parent, List<CatchLonglineDto> childs) { + parent.setCatchLongline(childs); } @Override @@ -113,15 +113,13 @@ public class CatchLonglineTableModel extends ContentTableModel<SetLonglineDto, C } @Override - protected Collection<CatchLonglineDto> getChilds(SetLonglineDto bean) { - // FIXME - return null; + protected Collection<CatchLonglineDto> getChilds(SetLonglineCatchDto bean) { + return bean.getCatchLongline(); } @Override protected void load(CatchLonglineDto source, CatchLonglineDto target) { - // FIXME - + CatchLonglineDtos.copyCatchLonglineDto(source, target); } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.css index f7d5c96..cd67214 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.css @@ -414,8 +414,6 @@ #timerTimeOnBoard { date:{branchlineBean.getTimerTimeOnBoard()}; propertyDate: {BranchlineDto.PROPERTY_TIMER_TIME_ON_BOARD}; - //propertyDayDate: {BranchlineDto.PROPERTY_TIMER_TIME_ON_BOARD_DATE}; - //propertyTimeDate: {BranchlineDto.PROPERTY_TIMER_TIME_ON_BOARD_TIME}; bean:{branchlineBean}; enabled:{BooleanUtils.isTrue(branchlineBean.getTimer())}; label:{t("observe.branchline.timerTimeOnBoard")}; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.jaxx index 4c104f2..c0ca084 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUI.jaxx @@ -20,7 +20,7 @@ #L% --> -<fr.ird.observe.ui.content.table.ContentTableUI superGenericType='SetLonglineDto, CatchLonglineDto' +<fr.ird.observe.ui.content.table.ContentTableUI superGenericType='SetLonglineCatchDto, CatchLonglineDto' contentTitle='{n("observe.catchLongline.title")}' newEntryText='{n("observe.catchLongline.action.new")}' newEntryTip='{n("observe.catchLongline.action.new.tip")}' @@ -37,7 +37,7 @@ fr.ird.observe.services.dto.longline.BranchlineDto fr.ird.observe.services.dto.longline.CatchLonglineDto fr.ird.observe.services.dto.longline.SectionDto - fr.ird.observe.services.dto.longline.SetLonglineDto + fr.ird.observe.services.dto.longline.SetLonglineCatchDto fr.ird.observe.services.dto.referential.ReferentialReferenceDto fr.ird.observe.services.dto.referential.SpeciesDto fr.ird.observe.services.dto.referential.SexDto @@ -73,7 +73,7 @@ <WeightMeasuresTableModel id='weightMeasuresTableModel' initializer="getModel().getWeightMeasuresTableModel()"/> <!-- edit bean --> - <SetLonglineDto id='bean'/> + <SetLonglineCatchDto id='bean'/> <!-- table edit bean --> <CatchLonglineDto id='tableEditBean'/> @@ -85,8 +85,8 @@ <BranchlineDto id='branchlineBean' initializer='new BranchlineDto()'/> <!-- le validateur de l'écran --> - <BeanValidator id='validator' context='n1-update-catchLongline' - beanClass='fr.ird.observe.services.dto.longline.SetLonglineDto' + <BeanValidator id='validator' context='n1-update' + beanClass='fr.ird.observe.services.dto.longline.SetLonglineCatchDto' errorTableModel='{getErrorTableModel()}'> </BeanValidator> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java index 58ba0a6..9960ce1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -22,17 +22,19 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ +import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; +import fr.ird.observe.services.dto.longline.BranchlineDtos; import fr.ird.observe.services.dto.longline.CatchLonglineDto; import fr.ird.observe.services.dto.longline.SectionDto; -import fr.ird.observe.services.dto.longline.SetLonglineDto; -import fr.ird.observe.services.dto.longline.SetLonglineDtos; +import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; +import fr.ird.observe.services.dto.longline.SetLonglineCatchDtos; import fr.ird.observe.services.dto.longline.SizeMeasureDto; import fr.ird.observe.services.dto.longline.WeightMeasureDto; import fr.ird.observe.services.dto.referential.SpeciesDto; @@ -40,12 +42,17 @@ import fr.ird.observe.services.dto.referential.longline.CatchFateLonglineDto; import fr.ird.observe.services.dto.referential.longline.HealthnessDto; import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; -import fr.ird.observe.services.service.longline.SetLonglineService; +import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.service.longline.BranchlineService; +import fr.ird.observe.services.service.longline.SetLonglineCatchService; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentUIInitializer; +import fr.ird.observe.ui.content.ContentUIModel; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; +import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -55,12 +62,14 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.JTable; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -74,7 +83,7 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 3.7 */ -public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto, CatchLonglineDto> { +public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCatchDto, CatchLonglineDto> { /** Logger */ static private Log log = LogFactory.getLog(CatchLonglineUIHandler.class); @@ -93,14 +102,14 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto private final PropertyChangeListener catchFateChanged = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - onCatchFateChanged((CatchFateLonglineDto) evt.getNewValue(), (CatchLonglineDto) evt.getSource()); + onCatchFateChanged((ReferenceDto<CatchFateLonglineDto>) evt.getNewValue(), (CatchLonglineDto) evt.getSource()); } }; private final PropertyChangeListener branchlineChanged = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - onBranchlineChanged((BranchlineDto) evt.getNewValue()); + onBranchlineChanged((ReferenceDto<BranchlineDto>) evt.getNewValue()); } }; @@ -127,15 +136,8 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } }; - //FIXME -// JAXXContextEntryDef<LonglinePositionHelper<CatchLonglineDto>> POSITION_HELPER_ENTRY = -// UIHelper.newContextEntryDef("CatchLonglineUI-positionHelper", LonglinePositionHelper.class); - - //FIXME -// private TopiaExecutor<? extends TopiaEntity> branchlineUpdator; - - //FIXME -// private TopiaExecutor2<TopiaEntity, Branchline> branchlineUpdateExecutor; + JAXXContextEntryDef<LonglinePositionHelper<CatchLonglineDto>> POSITION_HELPER_ENTRY = + UIHelper.newContextEntryDef("CatchLonglineUI-positionHelper", LonglinePositionHelper.class); public CatchLonglineUIHandler(CatchLonglineUI ui) { super(ui, DataContextType.SetLongline); @@ -192,18 +194,10 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } else { // updating mode: loading from db - //FIXME - -// try { - -// sizes = getDataService().getCatchLonglineSizeMeasures(getDataSource(), bean, sizeMeasuresTableModel.getLoader()); -// if (log.isInfoEnabled()) { -// log.info("Loaded sizes (" + bean.getTopiaId() + "): " + sizes.size()); -// } -// -// } catch (DataSourceException e) { -// throw new ObserveTechnicalException("Could not load size measures", e); -// } + sizes = Lists.newArrayList(bean.getSizeMeasure()); + if (log.isInfoEnabled()) { + log.info("Loaded sizes (" + bean.getId() + "): " + sizes.size()); + } } // init size measures @@ -233,17 +227,10 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } else { // updating mode: loading from db - //FIXME -// try { -// -// weights = getDataService().getCatchLonglineWeightMeasures(getDataSource(), bean, weightMeasuresTableModel.getLoader()); -// if (log.isInfoEnabled()) { -// log.info("Loaded weights (" + bean.getTopiaId() + "): " + weights.size()); -// } -// -// } catch (DataSourceException e) { -// throw new ObserveTechnicalException("Could not load weight measures", e); -// } + weights = Lists.newArrayList(bean.getWeightMeasure()); + if (log.isInfoEnabled()) { + log.info("Loaded weights (" + bean.getId() + "): " + weights.size()); + } } @@ -313,9 +300,8 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto bean.removePropertyChangeListener(CatchLonglineDto.PROPERTY_DEPREDATED, depredatedChanged); bean.addPropertyChangeListener(CatchLonglineDto.PROPERTY_DEPREDATED, depredatedChanged); - //FIXME -// LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(ui); -// positionHelper.resetPosition(bean); + LonglinePositionHelper<CatchLonglineDto> positionHelper = POSITION_HELPER_ENTRY.getContextValue(ui); + positionHelper.resetPosition(bean); requestFocus.requestFocus(); @@ -355,16 +341,16 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto n("observe.catchlongline.table.comment"), n("observe.catchlongline.table.comment.tip")); - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SectionDto.class, DecoratorService.HAULING_IDENTIFIER)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newDecorateTableCellRenderer(renderer, BasketDto.class, DecoratorService.HAULING_IDENTIFIER)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newDecorateTableCellRenderer(renderer, BranchlineDto.class, DecoratorService.HAULING_IDENTIFIER)); + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, SectionDto.class.getSimpleName() + DecoratorService.HAULING_IDENTIFIER)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, BasketDto.class.getSimpleName() + DecoratorService.HAULING_IDENTIFIER)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, BranchlineDto.class.getSimpleName() + DecoratorService.HAULING_IDENTIFIER)); - UIHelper.setTableColumnRenderer(table, 3, UIHelper.newDecorateTableCellRenderer(renderer, SpeciesDto.class)); + UIHelper.setTableColumnRenderer(table, 3, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, SpeciesDto.class.getSimpleName())); UIHelper.setTableColumnRenderer(table, 4, UIHelper.newEnumTableCellRenderer(renderer, CatchAcquisitionModeEnum.class)); UIHelper.setTableColumnRenderer(table, 5, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 6, UIHelper.newDecorateTableCellRenderer(renderer, HealthnessDto.class)); - UIHelper.setTableColumnRenderer(table, 7, UIHelper.newDecorateTableCellRenderer(renderer, CatchFateLonglineDto.class)); - UIHelper.setTableColumnRenderer(table, 8, UIHelper.newDecorateTableCellRenderer(renderer, HealthnessDto.class)); + UIHelper.setTableColumnRenderer(table, 6, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, HealthnessDto.class.getSimpleName())); + UIHelper.setTableColumnRenderer(table, 7, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, CatchFateLonglineDto.class.getSimpleName())); + UIHelper.setTableColumnRenderer(table, 8, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, HealthnessDto.class.getSimpleName())); UIHelper.setTableColumnRenderer(table, 9, UIHelper.newBooleanTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 10, UIHelper.newStringTableCellRenderer(renderer, 10, true)); @@ -380,19 +366,18 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto n("observe.catchlongline.table.size"), n("observe.catchlongline.table.size.tip")); - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SizeMeasureTypeDto.class)); + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, SizeMeasureTypeDto.class.getSimpleName())); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - Decorator<SizeMeasureTypeDto> decorator = ObserveSwingApplicationContext.get().getDecorator(SizeMeasureTypeDto.class); + Decorator<ReferenceDto> decorator = ObserveSwingApplicationContext.get().getDecorator(ReferenceDto.class, SizeMeasureTypeDto.class.getSimpleName()); - //FIXME -// List<SizeMeasureTypeDto> list; -// try { -// list = getDataService().getList(getDataSource(), SizeMeasureType.class); -// } catch (DataSourceException e) { -// throw new ObserveTechnicalException("Could not get size measure types", e); -// } -// UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); + ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + + ReferenceSetDto<SizeMeasureTypeDto> sizeMeasureTypeDtoRefSet = referentialService.getReferentialReferenceSet(SizeMeasureTypeDto.class); + + ArrayList<ReferenceDto> sizeMeasureTypes = Lists.newArrayList(sizeMeasureTypeDtoRefSet.getReference()); + + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(sizeMeasureTypes, decorator)); UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); SizeMeasuresTableModel tableModel = getModel().getSizeMeasuresTableModel(); @@ -414,16 +399,15 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, WeightMeasureTypeDto.class)); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - Decorator<WeightMeasureTypeDto> decorator = ObserveSwingApplicationContext.get().getDecorator(WeightMeasureTypeDto.class); + Decorator<ReferenceDto> decorator = ObserveSwingApplicationContext.get().getDecorator(ReferenceDto.class, WeightMeasureTypeDto.class.getSimpleName()); + + ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + + ReferenceSetDto<WeightMeasureTypeDto> weightMeasureTypeDtoRefSet = referentialService.getReferentialReferenceSet(WeightMeasureTypeDto.class); - //FIXME -// List<WeightMeasureType> list; -// try { -// list = getDataService().getList(getDataSource(), WeightMeasureType.class); -// } catch (DataSourceException e) { -// throw new ObserveTechnicalException("Could not get size measure types", e); -// } -// UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); + ArrayList<ReferenceDto> weightMeasureTypes = Lists.newArrayList(weightMeasureTypeDtoRefSet.getReference()); + + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(weightMeasureTypes, decorator)); UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); WeightMeasuresTableModel tableModel = getModel().getWeightMeasuresTableModel(); @@ -442,36 +426,15 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto }); } - //FIXME @Override protected String getEditBeanIdToLoad() { - return null; + return getDataContext().getSelectedSetLonglineId(); } - //FIXME -// @Override -// protected String getEditBeanIdToLoad(DataContext dataContext, DataService dataService, DataSource dataSource) { -// return dataContext.getSelectedSetId(); -// } - @Override public void initUI() throws Exception { - // add a listPredicate to get only species from the correct configured speciesList - ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); - - { - String speciesListId = config.getSpeciesListLonglineCatchId(); - prepareSpeciesList(speciesListId, getUi().getSpeciesCatch(), n("observe.error.speciesList.longline.catch.notFound")); - } - - { - String speciesListId = config.getSpeciesListLonglineDepredatorId(); - prepareSpeciesList(speciesListId, getUi().getPredator(), n("observe.error.speciesList.longline.depredator.notFound")); - } - - - CatchLonglineContentTableUIInitializer uiInitializer = new CatchLonglineContentTableUIInitializer(getUi()); + final CatchLonglineContentTableUIInitializer uiInitializer = new CatchLonglineContentTableUIInitializer(getUi()); uiInitializer.initUI(); getModel().addPropertyChangeListener(CatchLonglineUIModel.PROPERTY_SHOW_INDIVIDUAL_TABS, new PropertyChangeListener() { @@ -490,40 +453,24 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } }); + getModel().addPropertyChangeListener(ContentUIModel.PROPERTY_FORM_DTO, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + uiInitializer.referentialDataUpdated(); + } + }); + setTableModelEditable(getModel().isEditable()); - //FIXME -// LonglinePositionHelper<CatchLongline> positionHelper = new LonglinePositionHelper<CatchLongline>( -// getUi().getSection(), -// getUi().getBasket(), -// getUi().getBranchline(), -// getTableEditBean()); -// -// POSITION_HELPER_ENTRY.setContextValue(getUi(), positionHelper); + LonglinePositionHelper<CatchLonglineDto> positionHelper = new LonglinePositionHelper<CatchLonglineDto>( + getUi().getSection(), + getUi().getBasket(), + getUi().getBranchline(), + getTableEditBean()); - } + POSITION_HELPER_ENTRY.setContextValue(getUi(), positionHelper); -// @Override -// protected SetLonglineDto loadEditBean(ContentMode mode, -// DataContext dataContext) { -// -// SetLongline setLongline = super.loadEditBean(mode, dataContext, dataService, dataSource); -// -// // reset size measures -// getModel().getSizeMeasuresTableModel().clear(); -// -// // reset weight measures -// getModel().getWeightMeasuresTableModel().clear(); -// -// // load sections (and baskets and branchlines) -// List<Section> sections = dataService.getSections(dataSource, setLongline.getTopiaId()); -// -// LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); -// positionHelper.initSections(sections, getTableModel().getData()); -// -// return setLongline; -// -// } + } @Override public void openUI() throws Exception { @@ -535,9 +482,8 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto super.openUI(); // Reset all sections - //FIXME -// LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); -// getUi().getSection().setData(positionHelper.getSectionUniverse()); + LonglinePositionHelper<CatchLonglineDto> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); + getUi().getSection().setData(positionHelper.getSections()); // To be sure always remove listener (could prevent some leaks) getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); @@ -550,15 +496,25 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } @Override - protected void doPersist(SetLonglineDto bean) { - getSetLonglineService().save(getSelectedParentId(), bean); + protected void doPersist(SetLonglineCatchDto bean) { + SaveResultDto saveResult = getSetLonglineCatchService().save(bean); + bean.setLastUpdate(saveResult.getLastUpdate()); } @Override protected void loadEditBean(String beanId) { - FormDto<SetLonglineDto> formDto = getSetLonglineService().loadToEdit(beanId); + FormDto<SetLonglineCatchDto> formDto = getSetLonglineCatchService().loadToEdit(beanId); getModel().setFormDto(formDto); - SetLonglineDtos.copySetLonglineDto(formDto.getForm(), getBean()); + + LonglinePositionHelper<CatchLonglineDto> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); + + positionHelper.initSections(formDto.getReferenceSetDto(SectionDto.class, CatchLonglineDto.PROPERTY_SECTION), + formDto.getReferenceSetDto(BasketDto.class, CatchLonglineDto.PROPERTY_BASKET), + formDto.getReferenceSetDto(BranchlineDto.class, CatchLonglineDto.PROPERTY_BRANCHLINE), + formDto.getForm().getCatchLongline()); + + SetLonglineCatchDtos.copySetLonglineCatchDto(formDto.getForm(), getBean()); + } @Override @@ -574,104 +530,6 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } - //FIXME -// @Override -// protected void onUpdateFinalize(TopiaContext tx, SetLongline bean, Collection<CatchLongline> oldChilds) throws TopiaException { -// -// List<CatchLongline> catchLonglines = bean.getCatchLongline(); -// -// // remove less precise position on longline -// LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); -// positionHelper.savePosition(catchLonglines); -// -// CatchLonglineUIModel model = getModel(); -// { -// -// // save sizes -// -// SizeMeasureDAO measureDao = ObserveDAOHelper.getSizeMeasureDAO(tx); -// -// SizeMeasuresTableModel sizeMeasuresTableModel = model.getSizeMeasuresTableModel(); -// Set<Integer> rowsChanged = sizeMeasuresTableModel.getCacheRowsChanged(); -// -// TopiaEntityBinder<SizeMeasure> loader = sizeMeasuresTableModel.getLoader(); -// for (Integer row : rowsChanged) { -// -// CatchLongline catchLongline = catchLonglines.get(row); -// -// List<SizeMeasure> measures = sizeMeasuresTableModel.getCacheForRow(row); -// List<SizeMeasure> measuresToSave = new ArrayList<SizeMeasure>(measures.size()); -// -// for (SizeMeasure measure : measures) { -// -// if (sizeMeasuresTableModel.isRowNotEmpty(measure)) { -// -// SizeMeasure measureToSave; -// -// if (measure.getTopiaId() == null) { -// measureToSave = measureDao.create(measure); -// loader.load(measureToSave, measure, true); -// } else { -// measureToSave = catchLongline.getSizeMeasureByTopiaId(measure.getTopiaId()); -// loader.load(measure, measureToSave, true); -// } -// -// measuresToSave.add(measureToSave); -// -// } -// -// } -// -// catchLongline.clearSizeMeasure(); -// catchLongline.addAllSizeMeasure(measuresToSave); -// -// } -// -// } -// -// { -// -// // save weights -// -// WeightMeasureDAO dao = ObserveDAOHelper.getWeightMeasureDAO(tx); -// -// WeightMeasuresTableModel weightMeasuresTableModel = model.getWeightMeasuresTableModel(); -// TopiaEntityBinder<WeightMeasure> loader = weightMeasuresTableModel.getLoader(); -// Set<Integer> rowsChanged = weightMeasuresTableModel.getCacheRowsChanged(); -// -// for (Integer row : rowsChanged) { -// -// CatchLongline catchLongline = catchLonglines.get(row); -// -// List<WeightMeasure> measures = weightMeasuresTableModel.getCacheForRow(row); -// List<WeightMeasure> measuresToSave = new ArrayList<WeightMeasure>(measures.size()); -// for (WeightMeasure measure : measures) { -// -// if (weightMeasuresTableModel.isRowNotEmpty(measure)) { -// -// WeightMeasure measureToSave; -// -// if (measure.getTopiaId() == null) { -// measureToSave = dao.create(measure); -// loader.load(measureToSave, measure, true); -// } else { -// measureToSave = catchLongline.getWeightMeasureByTopiaId(measure.getTopiaId()); -// loader.load(measure, measureToSave, true); -// } -// measuresToSave.add(measureToSave); -// -// } -// -// } -// -// catchLongline.clearWeightMeasure(); -// catchLongline.addAllWeightMeasure(measuresToSave); -// } -// -// } -// -// } - @Override protected void resetEditBean() { @@ -682,16 +540,15 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto super.resetEditBean(); - //FIXME -// onBranchlineChanged(getTableEditBean().getBranchline()); + onBranchlineChanged(getTableEditBean().getBranchline()); } public void resetBranchline() { onBranchlineChanged(null); - //FIXME -// onBranchlineChanged(getTableEditBean().getBranchline()); + + onBranchlineChanged(getTableEditBean().getBranchline()); } @@ -701,19 +558,13 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto log.info("Saved modified branchline"); } -// try { - - ReferenceDto<BranchlineDto> branchline = getTableEditBean().getBranchline(); - //FIXME -// BranchlineDto beanSaved = getDataService().update(getDataSource(), null, branchline, getBranchlineUpdateExecutor()); -// getTableEditBean().setBranchline(beanSaved); - getUi().getBranchlineValidator().setChanged(false); + CatchLonglineUI ui = getUi(); -// } catch (DataSourceException e) { -// throw new ObserveTechnicalException("Could not save branchline", e); -// } + BranchlineDto branchline = ui.getBranchlineBean(); + getBranchLineService().save(branchline); + getUi().getBranchlineValidator().setChanged(false); } @@ -827,7 +678,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } - protected void onCatchFateChanged(CatchFateLonglineDto newValue, CatchLonglineDto tableEditBean) { + protected void onCatchFateChanged(ReferenceDto<CatchFateLonglineDto> newValue, CatchLonglineDto tableEditBean) { CatchLonglineUI ui = getUi(); @@ -850,7 +701,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } - protected void onBranchlineChanged(BranchlineDto newValue) { + protected void onBranchlineChanged(ReferenceDto<BranchlineDto> newValue) { CatchLonglineUI ui = getUi(); @@ -871,14 +722,14 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto log.info("Use branchline: " + newValue); } - branchlineValidator.setBean(branchline); + FormDto<BranchlineDto> formDto = getBranchLineService().loadToEdit(newValue.getId()); + BranchlineDtos.copyBranchlineDto(formDto.getForm(), branchline); - //FIXME -// try { -// getDataService().loadEditEntity(getDataSource(), newValue.getTopiaId(), getBranchlineUpdator()); -// } catch (DataSourceException e) { -// throw new ObserveTechnicalException("Could not load branchline", e); -// } + if (ui.getValidator().getBean() == null) { + ui.getValidator().setBean(getBean()); + } + + branchlineValidator.setBean(branchline); } @@ -969,47 +820,11 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto return (CatchLonglineTableModel) super.getTableModel(); } - //FIXME -// protected TopiaExecutor<? extends TopiaEntity> getBranchlineUpdator() { -// if (branchlineUpdator == null) { -// branchlineUpdator = new TopiaExecutor<Branchline>() { -// -// private final TopiaEntityBinder<Branchline> branchlineLoador = getModel().getBranchlineLoador(); -// -// @Override -// public void execute(TopiaContext tx, Branchline newValue) throws TopiaException { -// -// Branchline editBean = getUi().getBranchlineBean(); -// branchlineLoador.load(newValue, editBean, false); -// -// } -// }; -// } -// return branchlineUpdator; -// } - - //FIXME -// protected TopiaExecutor2<TopiaEntity, Branchline> getBranchlineUpdateExecutor() { -// if (branchlineUpdateExecutor == null) { -// branchlineUpdateExecutor = new TopiaExecutor2<TopiaEntity, Branchline>() { -// -// private final TopiaEntityBinder<Branchline> branchlineLoador = getModel().getBranchlineLoador(); -// -// @Override -// public Branchline execute(TopiaContext tx, TopiaEntity parentBean, Branchline beanToSave) throws TopiaException { -// -// Branchline editBean = getUi().getBranchlineBean(); -// branchlineLoador.load(editBean, beanToSave, false); -// return beanToSave; -// -// } -// }; -// } -// return branchlineUpdateExecutor; -// } - - protected SetLonglineService getSetLonglineService() { - return ObserveSwingApplicationContext.get().newService(SetLonglineService.class); + protected SetLonglineCatchService getSetLonglineCatchService() { + return ObserveSwingApplicationContext.get().newService(SetLonglineCatchService.class); } + protected BranchlineService getBranchLineService() { + return ObserveSwingApplicationContext.get().newService(BranchlineService.class); + } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java index 0af30cc..da5f6b3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java @@ -27,7 +27,7 @@ import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingBinderService; import fr.ird.observe.services.dto.longline.BranchlineDto; import fr.ird.observe.services.dto.longline.CatchLonglineDto; -import fr.ird.observe.services.dto.longline.SetLonglineDto; +import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; import fr.ird.observe.ui.content.table.ContentTableMeta; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIModel; @@ -44,7 +44,7 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.7 */ -public class CatchLonglineUIModel extends ContentTableUIModel<SetLonglineDto, CatchLonglineDto> { +public class CatchLonglineUIModel extends ContentTableUIModel<SetLonglineCatchDto, CatchLonglineDto> { public static final String PROPERTY_CARACTERISTICS_TAB_VALID = "caracteristicsTabValid"; @@ -110,15 +110,11 @@ public class CatchLonglineUIModel extends ContentTableUIModel<SetLonglineDto, Ca protected boolean branchlineTabValid; - //FIXME -// private TopiaEntityBinder<BranchlineDto> branchlineLoador; - public CatchLonglineUIModel(CatchLonglineUI ui) { - super(SetLonglineDto.class, + super(SetLonglineCatchDto.class, CatchLonglineDto.class, new String[]{ - //FIXME -// SetLonglineDto.PROPERTY_CATCH_LONGLINE + SetLonglineCatchDto.PROPERTY_CATCH_LONGLINE }, new String[]{CatchLonglineDto.PROPERTY_SPECIES_CATCH, CatchLonglineDto.PROPERTY_ACQUISITION_MODE, @@ -219,7 +215,7 @@ public class CatchLonglineUIModel extends ContentTableUIModel<SetLonglineDto, Ca } @Override - protected ContentTableModel<SetLonglineDto, CatchLonglineDto> createTableModel(ObserveContentTableUI<SetLonglineDto, CatchLonglineDto> ui, List<ContentTableMeta<CatchLonglineDto>> contentTableMetas) { + protected ContentTableModel<SetLonglineCatchDto, CatchLonglineDto> createTableModel(ObserveContentTableUI<SetLonglineCatchDto, CatchLonglineDto> ui, List<ContentTableMeta<CatchLonglineDto>> contentTableMetas) { return new CatchLonglineTableModel(ui, contentTableMetas); } @@ -234,37 +230,4 @@ public class CatchLonglineUIModel extends ContentTableUIModel<SetLonglineDto, Ca } - @Override - public void initModel(ObserveContentTableUI<SetLonglineDto, CatchLonglineDto> ui, List<ContentTableMeta<CatchLonglineDto>> contentTableMetas) { - super.initModel(ui, contentTableMetas); - - //FIXME -// BinderService binderService = ObserveServiceHelper.get().getBinderService(); - - String binderName = getClass().getName() + "-open"; - - //FIXME -// branchlineLoador = binderService.getTopiaBinder(BranchlineDto.class, binderName); - -// if (branchlineLoador == null) { -// -// BinderModelBuilder<Branchline, Branchline> builder = -// binderService.newBinderBuilder(Branchline.class, -// Branchline.PROPERTY_DEPTH_RECORDER, -// Branchline.PROPERTY_HOOK_LOST, -// Branchline.PROPERTY_TRACE_CUT_OFF, -// Branchline.PROPERTY_TIMER, -// Branchline.PROPERTY_TIME_SINCE_CONTACT, -// Branchline.PROPERTY_TIMER_TIME_ON_BOARD, -// Branchline.PROPERTY_BAIT_HAULING_STATUS); -// -// branchlineLoador = binderService.registerTopiaBinder(Branchline.class, builder, binderName); -// -// } - } - - //FIXME -// public TopiaEntityBinder<BranchlineDto> getBranchlineLoador() { -// return branchlineLoador; -// } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/LonglinePositionHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/LonglinePositionHelper.java index 760eed2..6bebad1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/LonglinePositionHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/LonglinePositionHelper.java @@ -22,19 +22,25 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ -import fr.ird.observe.business.LonglinePositionAware; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceDtos; +import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; import fr.ird.observe.services.dto.longline.CatchLonglineDto; +import fr.ird.observe.services.dto.longline.LonglinePositionAwareDto; import fr.ird.observe.services.dto.longline.SectionDto; import jaxx.runtime.swing.editor.bean.BeanComboBox; -import org.apache.commons.collections4.CollectionUtils; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Set; /** * Created on 1/6/15. @@ -42,25 +48,27 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 3.11 */ -public class LonglinePositionHelper<E extends LonglinePositionAware> { +public class LonglinePositionHelper<D extends LonglinePositionAwareDto> { - final BeanComboBox<SectionDto> uiSection; + final BeanComboBox<ReferenceDto<SectionDto>> uiSection; - final BeanComboBox<BasketDto> uiBasket; + final BeanComboBox<ReferenceDto<BasketDto>> uiBasket; - final BeanComboBox<BranchlineDto> uiBranchline; + final BeanComboBox<ReferenceDto<BranchlineDto>> uiBranchline; // To avoid any propagation when doing some works on locations protected boolean locationIsAdjusting; - List<SectionDto> sectionUniverse; + ReferenceSetDto<SectionDto> sectionUniverse; - List<BasketDto> basketUniverse; + ReferenceSetDto<BasketDto> basketUniverse; - public LonglinePositionHelper(BeanComboBox<SectionDto> uiSection, - BeanComboBox<BasketDto> uiBasket, - BeanComboBox<BranchlineDto> uiBranchline, - E tableEditBean) { + ReferenceSetDto<BranchlineDto> branchlineUniverse; + + public LonglinePositionHelper(BeanComboBox<ReferenceDto<SectionDto>> uiSection, + BeanComboBox<ReferenceDto<BasketDto>> uiBasket, + BeanComboBox<ReferenceDto<BranchlineDto>> uiBranchline, + D tableEditBean) { this.uiSection = uiSection; this.uiBasket = uiBasket; @@ -69,7 +77,7 @@ public class LonglinePositionHelper<E extends LonglinePositionAware> { PropertyChangeListener sectionChanged = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - onSectionChanged((SectionDto) evt.getNewValue(), (E) evt.getSource()); + onSectionChanged((ReferenceDto<SectionDto>) evt.getNewValue(), (D) evt.getSource()); } }; tableEditBean.addPropertyChangeListener(CatchLonglineDto.PROPERTY_SECTION, sectionChanged); @@ -77,92 +85,53 @@ public class LonglinePositionHelper<E extends LonglinePositionAware> { PropertyChangeListener basketChanged = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - onBasketChanged((BasketDto) evt.getNewValue(), (E) evt.getSource()); + onBasketChanged((ReferenceDto<BasketDto>) evt.getNewValue(), (D) evt.getSource()); } }; tableEditBean.addPropertyChangeListener(CatchLonglineDto.PROPERTY_BASKET, basketChanged); } - public void initSections(List<SectionDto> sections, List<E> entities) { - - this.sectionUniverse = sections; -//FIXME -// this.basketUniverse = Baskets.getBaskets(sections); -// -// List<Branchline> branchlineUniverse = Branchlines.getBranchlines(basketUniverse); -// -// Map<String, Section> sectionsById = Entities.toIdMap(sectionUniverse); -// Map<String, Basket> basketsById = Entities.toIdMap(basketUniverse); -// Map<String, Branchline> branchlinesById = Entities.toIdMap(branchlineUniverse); - - if (CollectionUtils.isNotEmpty(entities)) { - - for (E entity : entities) { + public void initSections(ReferenceSetDto<SectionDto> sectionUniverse, + ReferenceSetDto<BasketDto> basketUniverse, + ReferenceSetDto<BranchlineDto> branchlineUniverse, + Collection<D> dtos) { - { - - SectionDto section = entity.getSection(); - if (section != null) { - - // Get fully loaded section -//FIXME -// section = sectionsById.get(section.getTopiaId()); -// entity.setSection(section); - - } - } + this.sectionUniverse = sectionUniverse; - { - BasketDto basket = entity.getBasket(); - if (basket != null) { + this.basketUniverse = basketUniverse; - // Get fully loaded basket -//FIXME -// basket = basketsById.get(basket.getTopiaId()); -// entity.setBasket(basket); + this.branchlineUniverse = branchlineUniverse; - // Must find out section - SectionDto section = getSection(basket); - entity.setSection(section); + for (D dto : dtos) { - } + ReferenceDto<BranchlineDto> branchline = dto.getBranchline(); - } + if (branchline != null) { - { + ReferenceDto<BasketDto> basket = getBasket(branchline); - BranchlineDto branchline = entity.getBranchline(); - if (branchline != null) { + dto.setBasket(basket); - // Get fully loaded branchline -//FIXME -// branchline = branchlinesById.get(branchline.getTopiaId()); -// entity.setBranchline(branchline); + } - // Must find out basket and section - BasketDto basket = getBasket(branchline); - entity.setBasket(basket); + ReferenceDto<BasketDto> basket = dto.getBasket(); - // Must find out section - SectionDto section = getSection(basket); - entity.setSection(section); + if (basket != null) { - } + ReferenceDto<SectionDto> section = getSection(basket); - } + dto.setSection(section); } - } - } - public void resetPosition(E entity) { + public void resetPosition(D dto) { - SectionDto section = entity.getSection(); - BasketDto basket = entity.getBasket(); - BranchlineDto branchline = entity.getBranchline(); + ReferenceDto<SectionDto> section = dto.getSection(); + ReferenceDto<BasketDto> basket = dto.getBasket(); + ReferenceDto<BranchlineDto> branchline = dto.getBranchline(); uiBranchline.setSelectedItem(null); uiSection.setSelectedItem(null); @@ -191,71 +160,80 @@ public class LonglinePositionHelper<E extends LonglinePositionAware> { } - public void savePosition(List<E> entities) { + public void savePosition(List<D> dtos) { - for (E entity : entities) { + for (D dto : dtos) { - if (entity.getBasket() != null) { + if (dto.getBasket() != null) { // remove section - entity.setSection(null); + dto.setSection(null); } - if (entity.getBranchline() != null) { + if (dto.getBranchline() != null) { // remove basket - entity.setBasket(null); + dto.setBasket(null); } } } - public List<SectionDto> getSectionUniverse() { - return sectionUniverse; + public List<ReferenceDto<SectionDto>> getSections() { + + List<ReferenceDto<SectionDto>> sections = Lists.newArrayList(); + + if (sectionUniverse != null) { + + sections.addAll((Set) sectionUniverse.getReference()); + + } + + return sections; } - protected void onSectionChanged(SectionDto newValue, E entity) { + protected void onSectionChanged(ReferenceDto<SectionDto> newValue, D dto) { locationIsAdjusting = true; try { - BasketDto basket = entity.getBasket(); - BranchlineDto branchline = entity.getBranchline(); + ReferenceDto<BasketDto> basket = dto.getBasket(); + ReferenceDto<BranchlineDto> branchline = dto.getBranchline(); // on deselectionne le panier - entity.setBasket(null); + dto.setBasket(null); // on deselectionne l'avançon - entity.setBranchline(null); + dto.setBranchline(null); // on vide l'ensemble des paniers - uiBasket.setData(Collections.<BasketDto>emptyList()); + uiBasket.setData(Collections.<ReferenceDto<BasketDto>>emptyList()); // on vide l'ensemble des avançons - uiBranchline.setData(Collections.<BranchlineDto>emptyList()); + uiBranchline.setData(Collections.<ReferenceDto<BranchlineDto>>emptyList()); if (newValue != null) { // une section est sélectionnée // on remplit uniquement les paniers de cette section - List<BasketDto> baskets = new ArrayList<>(newValue.getBasket()); - uiBasket.setData(baskets); + List<ReferenceDto<BasketDto>> baskets = getBaskets(newValue); + uiBasket.setData(Lists.newArrayList(baskets)); if (basket != null && baskets.contains(basket)) { // un panier est sélectionné // on repmlit uniquement les avançons du panier - List<BranchlineDto> branchlines = new ArrayList<>(basket.getBranchline()); - uiBranchline.setData(branchlines); - entity.setBasket(basket); + List<ReferenceDto<BranchlineDto>> branchlines = getBranchlines(basket); + uiBranchline.setData(Lists.newArrayList(branchlines)); + dto.setBasket(basket); if (branchline != null && branchlines.contains(branchline)) { // un avançon est sélectionné - entity.setBranchline(branchline); + dto.setBranchline(branchline); } @@ -271,30 +249,31 @@ public class LonglinePositionHelper<E extends LonglinePositionAware> { } - protected void onBasketChanged(BasketDto newValue, E entity) { + protected void onBasketChanged(ReferenceDto<BasketDto> newValue, D dto) { if (!locationIsAdjusting) { - BranchlineDto branchline = entity.getBranchline(); + ReferenceDto<BranchlineDto> branchline = dto.getBranchline(); // on deselectionne l'avançon - entity.setBranchline(null); + dto.setBranchline(null); // on vide l'ensemble des avançons - uiBranchline.setData(Collections.<BranchlineDto>emptyList()); + uiBranchline.setData(Collections.<ReferenceDto<BranchlineDto>>emptyList()); if (newValue != null) { // un panier est selectionne // on remplit uniquement les avançons des paniers - List<BranchlineDto> branchlines = new ArrayList<>(newValue.getBranchline()); + List<ReferenceDto<BranchlineDto>> branchlines = getBranchlines(newValue); uiBranchline.setData(branchlines); + if (branchline != null && branchlines.contains(branchline)) { // un avançon est sélectionné - entity.setBranchline(branchline); + dto.setBranchline(branchline); } @@ -304,39 +283,42 @@ public class LonglinePositionHelper<E extends LonglinePositionAware> { } - protected SectionDto getSection(BasketDto basket) { + protected ReferenceDto<SectionDto> getSection(ReferenceDto<BasketDto> basket) { - SectionDto result = null; + String sectionId = (String) basket.getPropertyValue(BasketDto.PROPERTY_SECTION); - for (SectionDto section : sectionUniverse) { + ReferenceDto<SectionDto> section = sectionUniverse.getById(sectionId); - if (!section.isBasketEmpty() && section.getBasket().contains(basket)) { + return section; - result = section; - break; - } - } + } - return result; + protected ReferenceDto<BasketDto> getBasket(ReferenceDto<BranchlineDto> branchline) { - } + String basketId = (String) branchline.getPropertyValue(BranchlineDto.PROPERTY_BASKET); + + ReferenceDto<BasketDto> basket = basketUniverse.getById(basketId); + return basket; - protected BasketDto getBasket(BranchlineDto branchline) { + } - BasketDto result = null; + protected List<ReferenceDto<BasketDto>> getBaskets(ReferenceDto<SectionDto> section) { - for (BasketDto basket : basketUniverse) { + ArrayList<ReferenceDto<BasketDto>> baskets = Lists.newArrayList(Iterables.filter( + (Set) basketUniverse.getReference(), + ReferenceDtos.newLabelValuePredicate(BasketDto.PROPERTY_SECTION, section.getId()))); - if (!basket.isBranchlineEmpty() && basket.getBranchline().contains(branchline)) { + return baskets; + } - result = basket; - break; - } - } + protected List<ReferenceDto<BranchlineDto>> getBranchlines(ReferenceDto<BasketDto> basket) { - return result; + ArrayList<ReferenceDto<BranchlineDto>> branchlines = Lists.newArrayList(Iterables.filter( + (Set) branchlineUniverse.getReference(), + ReferenceDtos.newLabelValuePredicate(BranchlineDto.PROPERTY_BASKET, basket.getId()))); + return branchlines; } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/BranchlineServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/BranchlineServiceController.java new file mode 100644 index 0000000..908a632 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/BranchlineServiceController.java @@ -0,0 +1,31 @@ +package fr.ird.observe.application.web.controller.v1.longline; + +import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.longline.BranchlineDto; +import fr.ird.observe.services.service.longline.BranchlineService; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class BranchlineServiceController extends ObserveAuthenticatedServiceControllerSupport<BranchlineService> implements BranchlineService { + + public BranchlineServiceController() { + super(BranchlineService.class); + } + + @Override + public FormDto<BranchlineDto> loadToRead(String branchlineId) { + return service.loadToRead(branchlineId); + } + + @Override + public FormDto<BranchlineDto> loadToEdit(String branchlineId) { + return service.loadToEdit(branchlineId); + } + + @Override + public String save(BranchlineDto dto) { + return service.save(dto); + } +} \ No newline at end of file diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/SetLonglineCatchServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/SetLonglineCatchServiceController.java index c11de2a..2965c8f 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/SetLonglineCatchServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/SetLonglineCatchServiceController.java @@ -25,6 +25,7 @@ package fr.ird.observe.application.web.controller.v1.longline; import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; +import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.service.longline.SetLonglineCatchService; /** @@ -47,7 +48,7 @@ public class SetLonglineCatchServiceController extends ObserveAuthenticatedServi } @Override - public String save(FormDto<SetLonglineCatchDto> form) { - return service.save(form); + public SaveResultDto save(SetLonglineCatchDto dto) { + return service.save(dto); } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/BranchlineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/BranchlineService.java new file mode 100644 index 0000000..279f5c2 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/BranchlineService.java @@ -0,0 +1,27 @@ +package fr.ird.observe.services.service.longline; + +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.longline.BranchlineDto; +import fr.ird.observe.services.spi.PostRequest; +import fr.ird.observe.services.spi.ReadDataPermission; +import fr.ird.observe.services.spi.Write; +import fr.ird.observe.services.spi.WriteDataPermission; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public interface BranchlineService extends ObserveService { + + @ReadDataPermission + FormDto<BranchlineDto> loadToRead(String branchlineId); + + @WriteDataPermission + FormDto<BranchlineDto> loadToEdit(String branchlineId); + + @Write + @WriteDataPermission + @PostRequest + String save(BranchlineDto dto); + +} \ No newline at end of file diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java index 3007812..c6883aa 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchService.java @@ -25,6 +25,7 @@ package fr.ird.observe.services.service.longline; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; +import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; @@ -44,6 +45,6 @@ public interface SetLonglineCatchService extends ObserveService { @Write @WriteDataPermission @PostRequest - String save(FormDto<SetLonglineCatchDto> form); + SaveResultDto save(SetLonglineCatchDto dto); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java index 5bda88e..5160dbd 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java @@ -24,10 +24,11 @@ package fr.ird.observe.services.dto; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; import java.io.Serializable; import java.util.Arrays; +import java.util.List; public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { @@ -43,7 +44,7 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { protected Class<D> type; - protected ImmutableList<String> labelPropertyNames; + protected List<String> labelPropertyNames; protected Serializable[] labelPropertyValues; @@ -55,7 +56,7 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { public void init(Class<D> type, Iterable<String> labelPropertyNames) { this.type = type; - this.labelPropertyNames = ImmutableList.copyOf(labelPropertyNames); + this.labelPropertyNames = Lists.newArrayList(labelPropertyNames); this.labelPropertyValues = new Serializable[this.labelPropertyNames.size()]; this.labelPropertyTypes = new Class[this.labelPropertyNames.size()]; } @@ -65,7 +66,7 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { return labelPropertyValues[propertyIndex]; } - public ImmutableList<String> getPropertyNames() { + public List<String> getPropertyNames() { return labelPropertyNames; } @@ -76,6 +77,27 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { labelPropertyTypes[propertyIndex] = propertyValue.getClass(); } + public void addPropertyValue(String propertyName, Serializable propertyValue) { + Preconditions.checkNotNull(propertyName, "propertyName parameter can't be null"); + int propertyIndex = labelPropertyNames.indexOf(propertyName); + if (propertyIndex == -1) { + labelPropertyNames.add(propertyName); + + List<Serializable> labelPropertyValuesList = Lists.newArrayList(labelPropertyValues); + List<Class> labelPropertyTypesList = Lists.newArrayList(labelPropertyTypes); + + labelPropertyValuesList.add(propertyValue); + labelPropertyTypesList.add(propertyValue.getClass()); + + labelPropertyValues = labelPropertyValuesList.toArray(labelPropertyValues); + labelPropertyTypes = labelPropertyTypesList.toArray(labelPropertyTypes); + + } else { + labelPropertyValues[propertyIndex] = propertyValue; + labelPropertyTypes[propertyIndex] = propertyValue.getClass(); + } + } + protected int getPropertyIndex(String propertyName) { int index = labelPropertyNames.indexOf(propertyName); if (index == -1) { diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java index b80d7a8..058ea32 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java @@ -112,4 +112,13 @@ public class ReferenceDtos extends AbstractReferenceDtos { }); } + public static Predicate<? super ReferenceDto> newLabelValuePredicate(final String propertyName, final Serializable propertyValue) { + return new Predicate<ReferenceDto>() { + @Override + public boolean apply(ReferenceDto input) { + return input.getPropertyNames().contains(propertyName) + && propertyValue.equals(input.getPropertyValue(propertyName)); + } + }; + } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/BasketDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/BasketDto.java new file mode 100644 index 0000000..45ba541 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/BasketDto.java @@ -0,0 +1,8 @@ +package fr.ird.observe.services.dto.longline; + +public class BasketDto extends AbstractBasketDto { + + private static final long serialVersionUID = 3690753995685507632L; + + public static final String PROPERTY_SECTION = "section"; +} \ No newline at end of file diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/BranchlineDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/BranchlineDto.java new file mode 100644 index 0000000..ae40980 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/BranchlineDto.java @@ -0,0 +1,9 @@ +package fr.ird.observe.services.dto.longline; + +public class BranchlineDto extends AbstractBranchlineDto { + + private static final long serialVersionUID = 7018072108318352694L; + + public static final String PROPERTY_BASKET = "basket"; + +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/LonglinePositionAwareDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/LonglinePositionAwareDto.java new file mode 100644 index 0000000..2d81e05 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/longline/LonglinePositionAwareDto.java @@ -0,0 +1,53 @@ +package fr.ird.observe.services.dto.longline; + +/* + * #%L + * ObServe :: Entities + * %% + * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.services.dto.ReferenceDto; + +import java.beans.PropertyChangeListener; + +/** + * Created on 1/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.11 + */ +public interface LonglinePositionAwareDto { + + void setSection(ReferenceDto<SectionDto> section); + + ReferenceDto<SectionDto> getSection(); + + void setBasket(ReferenceDto<BasketDto> basket); + + ReferenceDto<BasketDto> getBasket(); + + void setBranchline(ReferenceDto<BranchlineDto> branchline); + + ReferenceDto<BranchlineDto> getBranchline(); + + void addPropertyChangeListener(PropertyChangeListener listener); + + void addPropertyChangeListener(String property, PropertyChangeListener listener); + +} diff --git a/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo b/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo index 8512fdf..628e23b 100644 Binary files a/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo and b/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo differ diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index 632e933..dfc092d 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -56,7 +56,7 @@ import fr.ird.observe.services.dto.ReferenceSetDtos; import fr.ird.observe.services.dto.ReferenceTypeName; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.entity.EntitiesSet; +import fr.ird.observe.services.entity.EntitiesExtractor; import fr.ird.observe.services.entity.EntitiesSetFactory; import fr.ird.observe.services.service.ConcurrentModificationException; import fr.ird.observe.services.service.DataNotFoundException; @@ -348,14 +348,14 @@ public abstract class ObserveServiceTopia implements ObserveService { Class<TopiaEntity> entityParentType = getEntityType(referenceDtoTypeName.getParentType()); Class<TopiaEntity> entityChildType = getEntityType(childDtoType); - EntitiesSet<TopiaEntity> entitiesSet = entityFilterFactory.newEntitiesSet(entityParentType, + EntitiesExtractor<TopiaEntity> entitiesExtractor = entityFilterFactory.newEntitiesSet(entityParentType, entityChildType, propertyName); ReferenceSetDto referenceSet = getReferenceSet(childDtoType, propertyName, entityChildType, - entitiesSet, + entitiesExtractor, dataContext); labels.add(referenceSet); @@ -435,17 +435,17 @@ public abstract class ObserveServiceTopia implements ObserveService { Class<D> dtoType, String propertyName, Class<E> entityType, - EntitiesSet<E> entitiesSet, + EntitiesExtractor<E> entitiesExtractor, Map<String, Object> dataContext) { Iterable<E> entities; - if (entitiesSet == null) { + if (entitiesExtractor == null) { entities = loadEntities(entityType); } else { - entities = entitiesSet.getEntities(serviceContext.getTopiaPersistenceContext(), dataContext); + entities = entitiesExtractor.getEntities(serviceContext.getTopiaPersistenceContext(), dataContext); } LinkedHashSet<ReferenceDto<D>> labels = new LinkedHashSet<>(); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java index 3fb28de..5192ea9 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java @@ -442,6 +442,11 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { BasketDto.PROPERTY_FLOATLINE2_LENGTH, BasketDto.PROPERTY_BRANCHLINE ); + + registerReferenceBinder(BasketDto.class, Basket.class, + BasketDto.PROPERTY_SETTING_IDENTIFIER, + BasketDto.PROPERTY_HAULING_IDENTIFIER + ); } @Override @@ -471,6 +476,11 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { BranchlineDto.PROPERTY_BAIT_SETTING_STATUS, BranchlineDto.PROPERTY_BAIT_HAULING_STATUS ); + + registerReferenceBinder(BranchlineDto.class, Branchline.class, + BranchlineDto.PROPERTY_SETTING_IDENTIFIER, + BranchlineDto.PROPERTY_HAULING_IDENTIFIER + ); } @Override @@ -569,6 +579,9 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { SectionDto.PROPERTY_HAULING_IDENTIFIER, SectionDto.PROPERTY_BASKET ); + registerReferenceBinder(SectionDto.class, Section.class, + SectionDto.PROPERTY_SETTING_IDENTIFIER, + SectionDto.PROPERTY_HAULING_IDENTIFIER); } @Override diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/BasketEntitiesExtractor.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/BasketEntitiesExtractor.java new file mode 100644 index 0000000..cb1f65d --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/BasketEntitiesExtractor.java @@ -0,0 +1,36 @@ +package fr.ird.observe.services.entity; + +import com.google.common.collect.Sets; +import fr.ird.observe.ObserveTopiaPersistenceContext; +import fr.ird.observe.entities.longline.Basket; +import fr.ird.observe.entities.longline.Section; +import fr.ird.observe.entities.longline.SetLongline; + +import java.util.LinkedHashSet; +import java.util.Map; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class BasketEntitiesExtractor extends EntitiesExtractor<Basket> { + + protected BasketEntitiesExtractor() { + super(Basket.class, null); + } + + @Override + protected Iterable<Basket> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext, Map<String, Object> requestContext) { + + SetLongline setLongline = (SetLongline) requestContext.get(Section.PROPERTY_SET_LONGLINE); + + LinkedHashSet<Basket> baskets = Sets.newLinkedHashSet(); + + for (Section section : setLongline.getSection()) { + + baskets.addAll(section.getBasket()); + + } + + return baskets; + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/BranchlineEntitiesExtractor.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/BranchlineEntitiesExtractor.java new file mode 100644 index 0000000..96b1e8f --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/BranchlineEntitiesExtractor.java @@ -0,0 +1,43 @@ +package fr.ird.observe.services.entity; + +import com.google.common.collect.Sets; +import fr.ird.observe.ObserveTopiaPersistenceContext; +import fr.ird.observe.entities.longline.Basket; +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.entities.longline.Section; +import fr.ird.observe.entities.longline.SetLongline; + +import java.util.LinkedHashSet; +import java.util.Map; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class BranchlineEntitiesExtractor extends EntitiesExtractor<Branchline> { + + protected BranchlineEntitiesExtractor() { + super(Branchline.class, null); + } + + @Override + protected Iterable<Branchline> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext, Map<String, Object> requestContext) { + + SetLongline setLongline = (SetLongline) requestContext.get(Section.PROPERTY_SET_LONGLINE); + + LinkedHashSet<Branchline> branchlines = Sets.newLinkedHashSet(); + + for (Section section : setLongline.getSection()) { + + for (Basket basket : section.getBasket()) { + + branchlines.addAll(basket.getBranchline()); + + } + + } + + return branchlines; + } + + +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSet.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesExtractor.java similarity index 73% rename from observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSet.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesExtractor.java index fc3cabe..8e2b26e 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSet.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesExtractor.java @@ -10,11 +10,13 @@ import org.nuiton.topia.persistence.TopiaEntity; import java.util.Map; /** - * FIXME Ca sert à quoi? + * Cette classe permet d'extraire dynamiquement un ensemble d'entitiées de la base de données. + * cet emsenble est definit par un ensemble extrait de la base, definit dans getEntitiesSetBase + * Sur cet ensemble on applique le filtre definit l'attribut optionalFilter * * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class EntitiesSet<E extends TopiaEntity> { +public class EntitiesExtractor<E extends TopiaEntity> { /** * Le type de l'entité dont on cherche des éléments. @@ -27,7 +29,7 @@ public class EntitiesSet<E extends TopiaEntity> { protected final Optional<Predicate<E>> optionalFilter; public Iterable<E> getEntities(ObserveTopiaPersistenceContext persistenceContext, Map<String, Object> requestContext) { - Iterable<E> result = getEntitiesSetBase(persistenceContext); + Iterable<E> result = getEntitiesSetBase(persistenceContext, requestContext); Predicate<E> filter = getFilter(requestContext); if (filter != null) { result = Iterables.filter(result, filter); @@ -35,12 +37,12 @@ public class EntitiesSet<E extends TopiaEntity> { return result; } - protected EntitiesSet(Class<E> entityType, Predicate<E> optionalFilter) { + protected EntitiesExtractor(Class<E> entityType, Predicate<E> optionalFilter) { this.entityType = entityType; this.optionalFilter = Optional.fromNullable(optionalFilter); } - protected Iterable<E> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext) { + protected Iterable<E> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext, Map<String, Object> requestContext) { TopiaDao<E> dao = persistenceContext.getDao(entityType); return dao.findAll(); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSetFactory.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSetFactory.java index 488666e..6b23082 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSetFactory.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSetFactory.java @@ -5,7 +5,11 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableMap; import fr.ird.observe.entities.Entities; +import fr.ird.observe.entities.longline.Basket; +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.entities.longline.CatchLongline; import fr.ird.observe.entities.longline.Encounter; +import fr.ird.observe.entities.longline.Section; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.referentiel.Person; import fr.ird.observe.entities.referentiel.Persons; @@ -25,7 +29,7 @@ import fr.ird.observe.services.ObserveSpeciesListConfiguration; import org.nuiton.topia.persistence.TopiaEntity; /** - * Une usine de {@link EntitiesSet}. + * Une usine de {@link EntitiesExtractor}. * * Created on 18/10/15. * @@ -33,97 +37,121 @@ import org.nuiton.topia.persistence.TopiaEntity; */ public class EntitiesSetFactory { - protected final ImmutableMap<String, EntitiesSet> cache; + protected final ImmutableMap<String, EntitiesExtractor> cache; public EntitiesSetFactory(ObserveSpeciesListConfiguration speciesListConfiguration) { - ImmutableMap.Builder<String, EntitiesSet> builder = ImmutableMap.builder(); + ImmutableMap.Builder<String, EntitiesExtractor> builder = ImmutableMap.builder(); // TripSeine - registerReferentialEntitiesSet(builder, - TripSeine.class, - TripSeine.PROPERTY_CAPTAIN, - Person.class, - Persons.newCaptainPredicate()); - registerReferentialEntitiesSet(builder, - TripSeine.class, - TripSeine.PROPERTY_OBSERVER, - Person.class, - Persons.newObserverPredicate()); - registerReferentialEntitiesSet(builder, - TripSeine.class, - TripSeine.PROPERTY_DATA_ENTRY_OPERATOR, - Person.class, - Persons.newDataEntryOperatorPredicate()); - registerReferentialEntitiesSet(builder, - TripSeine.class, - TripSeine.PROPERTY_VESSEL, - Vessel.class, - Vessels.newVesselSeinePredicate()); + registerReferentialEntitiesExtractor(builder, + TripSeine.class, + TripSeine.PROPERTY_CAPTAIN, + Person.class, + Persons.newCaptainPredicate()); + registerReferentialEntitiesExtractor(builder, + TripSeine.class, + TripSeine.PROPERTY_OBSERVER, + Person.class, + Persons.newObserverPredicate()); + registerReferentialEntitiesExtractor(builder, + TripSeine.class, + TripSeine.PROPERTY_DATA_ENTRY_OPERATOR, + Person.class, + Persons.newDataEntryOperatorPredicate()); + registerReferentialEntitiesExtractor(builder, + TripSeine.class, + TripSeine.PROPERTY_VESSEL, + Vessel.class, + Vessels.newVesselSeinePredicate()); // TripLongLine - registerReferentialEntitiesSet(builder, - TripLongline.class, - TripLongline.PROPERTY_CAPTAIN, - Person.class, - Persons.newCaptainPredicate()); - registerReferentialEntitiesSet(builder, - TripLongline.class, - TripLongline.PROPERTY_OBSERVER, - Person.class, - Persons.newObserverPredicate()); - registerReferentialEntitiesSet(builder, - TripLongline.class, - TripLongline.PROPERTY_DATA_ENTRY_OPERATOR, - Person.class, - Persons.newDataEntryOperatorPredicate()); - registerReferentialEntitiesSet(builder, - TripLongline.class, - TripLongline.PROPERTY_VESSEL, - Vessel.class, - Vessels.newVesselLonglinePredicate()); + registerReferentialEntitiesExtractor(builder, + TripLongline.class, + TripLongline.PROPERTY_CAPTAIN, + Person.class, + Persons.newCaptainPredicate()); + registerReferentialEntitiesExtractor(builder, + TripLongline.class, + TripLongline.PROPERTY_OBSERVER, + Person.class, + Persons.newObserverPredicate()); + registerReferentialEntitiesExtractor(builder, + TripLongline.class, + TripLongline.PROPERTY_DATA_ENTRY_OPERATOR, + Person.class, + Persons.newDataEntryOperatorPredicate()); + registerReferentialEntitiesExtractor(builder, + TripLongline.class, + TripLongline.PROPERTY_VESSEL, + Vessel.class, + Vessels.newVesselLonglinePredicate()); // ObjectSchoolEstimate - registerSpeciesListEntitiesSet(builder, - ObjectSchoolEstimate.class, - ObjectSchoolEstimate.PROPERTY_SPECIES, - speciesListConfiguration.getSpeciesListSeineObjectSchoolEstimateId()); + registerSpeciesListEntitiesExtractor(builder, + ObjectSchoolEstimate.class, + ObjectSchoolEstimate.PROPERTY_SPECIES, + speciesListConfiguration.getSpeciesListSeineObjectSchoolEstimateId()); // ObjectObservedSpecies - registerSpeciesListEntitiesSet(builder, - ObjectObservedSpecies.class, - ObjectObservedSpecies.PROPERTY_SPECIES, - speciesListConfiguration.getSpeciesListSeineObjectObservedSpeciesId()); + registerSpeciesListEntitiesExtractor(builder, + ObjectObservedSpecies.class, + ObjectObservedSpecies.PROPERTY_SPECIES, + speciesListConfiguration.getSpeciesListSeineObjectObservedSpeciesId()); // SchoolEstimate - registerSpeciesListEntitiesSet(builder, - SchoolEstimate.class, - SchoolEstimate.PROPERTY_SPECIES, - speciesListConfiguration.getSpeciesListSeineSchoolEstimateId()); + registerSpeciesListEntitiesExtractor(builder, + SchoolEstimate.class, + SchoolEstimate.PROPERTY_SPECIES, + speciesListConfiguration.getSpeciesListSeineSchoolEstimateId()); // TargetCatch - registerSpeciesListOceanEntitiesSet(builder, - TargetCatch.class, - TargetCatchImpl.PROPERTY_SPECIES, - speciesListConfiguration.getSpeciesListSeineTargetCatchId()); + registerSpeciesListOceanEntitiesExtractor(builder, + TargetCatch.class, + TargetCatchImpl.PROPERTY_SPECIES, + speciesListConfiguration.getSpeciesListSeineTargetCatchId()); // NonTargetCatch - registerSpeciesListEntitiesSet(builder, + registerSpeciesListEntitiesExtractor(builder, NonTargetCatch.class, NonTargetCatch.PROPERTY_SPECIES, speciesListConfiguration.getSpeciesListSeineNonTargetCatchId()); // Encounter - registerSpeciesListEntitiesSet(builder, + registerSpeciesListEntitiesExtractor(builder, Encounter.class, Encounter.PROPERTY_SPECIES, speciesListConfiguration.getSpeciesListLonglineEncounterId()); + // CatchLongline + registerSpeciesListEntitiesExtractor(builder, + CatchLongline.class, + CatchLongline.PROPERTY_SPECIES_CATCH, + speciesListConfiguration.getSpeciesListLonglineCatchId()); + + registerSpeciesListEntitiesExtractor(builder, + CatchLongline.class, + CatchLongline.PROPERTY_PREDATOR, + speciesListConfiguration.getSpeciesListLonglineDepredatorId()); + + registerSectionEntitiesExtractor(builder, + CatchLongline.class, + CatchLongline.PROPERTY_SECTION); + + registerBasketEntitiesExtractor(builder, + CatchLongline.class, + CatchLongline.PROPERTY_BASKET); + + registerBranchlineEntitiesExtractor(builder, + CatchLongline.class, + CatchLongline.PROPERTY_BRANCHLINE); + + this.cache = builder.build(); } - public <P extends TopiaEntity, C extends TopiaEntity> EntitiesSet<C> newEntitiesSet(Class<P> parentType, + public <P extends TopiaEntity, C extends TopiaEntity> EntitiesExtractor<C> newEntitiesSet(Class<P> parentType, Class<C> propertyType, String propertyName) { @@ -132,27 +160,27 @@ public class EntitiesSetFactory { Preconditions.checkNotNull(propertyType, "Property type is required"); String key = buildKey(parentType, propertyName); - EntitiesSet<C> entitiesSet = cache.get(key); + EntitiesExtractor<C> entitiesExtractor = cache.get(key); - if (entitiesSet == null) { + if (entitiesExtractor == null) { // Pas de filtre spécifique trouvé, on en construit un générique if (Entities.isReferentielClass(propertyType)) { // On veut tous les référentiels sauf ceux qui sont désactivés - entitiesSet = new EntitiesSet<>(propertyType, (Predicate<C>) ReferenceEntities.newEnablePredicate()); + entitiesExtractor = new EntitiesExtractor<>(propertyType, (Predicate<C>) ReferenceEntities.newEnablePredicate()); } else { // On veut toutes les entités - entitiesSet = new EntitiesSet<>(propertyType, null); + entitiesExtractor = new EntitiesExtractor<>(propertyType, null); } } - return entitiesSet; + return entitiesExtractor; } @@ -160,8 +188,8 @@ public class EntitiesSetFactory { return parentType.getName() + "#" + propertyName; } - protected <P extends TopiaEntity, C extends ReferenceEntity> void registerReferentialEntitiesSet( - ImmutableMap.Builder<String, EntitiesSet> builder, + protected <P extends TopiaEntity, C extends ReferenceEntity> void registerReferentialEntitiesExtractor( + ImmutableMap.Builder<String, EntitiesExtractor> builder, Class<P> parentType, String propertyName, Class<C> propertyType, @@ -169,41 +197,71 @@ public class EntitiesSetFactory { filter = Predicates.and(filter, ReferenceEntities.newEnablePredicate()); - EntitiesSet<C> entitiesSet = new EntitiesSet<>(propertyType, filter); - registerEntitiesSet(builder, parentType, propertyName, entitiesSet); + EntitiesExtractor<C> entitiesExtractor = new EntitiesExtractor<>(propertyType, filter); + registerEntitiesExtractor(builder, parentType, propertyName, entitiesExtractor); } - protected <P extends TopiaEntity> void registerSpeciesListEntitiesSet( - ImmutableMap.Builder<String, EntitiesSet> builder, + protected <P extends TopiaEntity> void registerSpeciesListEntitiesExtractor( + ImmutableMap.Builder<String, EntitiesExtractor> builder, Class<P> parentType, String propertyName, String speciesListId) { - EntitiesSet<Species> entitiesSet = new SpeciesListEntitiesSet(speciesListId); - registerEntitiesSet(builder, parentType, propertyName, entitiesSet); + EntitiesExtractor<Species> entitiesExtractor = new SpeciesListEntitiesExtractor(speciesListId); + registerEntitiesExtractor(builder, parentType, propertyName, entitiesExtractor); } - protected <P extends TopiaEntity> void registerSpeciesListOceanEntitiesSet( - ImmutableMap.Builder<String, EntitiesSet> builder, + protected <P extends TopiaEntity> void registerSpeciesListOceanEntitiesExtractor( + ImmutableMap.Builder<String, EntitiesExtractor> builder, Class<P> parentType, String propertyName, String speciesListId) { - EntitiesSet<Species> entitiesSet = new SpeciesListOceanEntitiesSet(speciesListId); - registerEntitiesSet(builder, parentType, propertyName, entitiesSet); + EntitiesExtractor<Species> entitiesExtractor = new SpeciesListOceanEntitiesExtractor(speciesListId); + registerEntitiesExtractor(builder, parentType, propertyName, entitiesExtractor); + + } + + protected <P extends TopiaEntity> void registerSectionEntitiesExtractor( + ImmutableMap.Builder<String, EntitiesExtractor> builder, + Class<P> parentType, + String propertyName) { + + EntitiesExtractor<Section> entitiesExtractor = new SectionEntitiesExtractor(); + registerEntitiesExtractor(builder, parentType, propertyName, entitiesExtractor); + + } + + protected <P extends TopiaEntity> void registerBasketEntitiesExtractor( + ImmutableMap.Builder<String, EntitiesExtractor> builder, + Class<P> parentType, + String propertyName) { + + EntitiesExtractor<Basket> entitiesExtractor = new BasketEntitiesExtractor(); + registerEntitiesExtractor(builder, parentType, propertyName, entitiesExtractor); + + } + + protected <P extends TopiaEntity> void registerBranchlineEntitiesExtractor( + ImmutableMap.Builder<String, EntitiesExtractor> builder, + Class<P> parentType, + String propertyName) { + + EntitiesExtractor<Branchline> entitiesExtractor = new BranchlineEntitiesExtractor(); + registerEntitiesExtractor(builder, parentType, propertyName, entitiesExtractor); } - protected <P extends TopiaEntity, C extends TopiaEntity> void registerEntitiesSet( - ImmutableMap.Builder<String, EntitiesSet> builder, + protected <P extends TopiaEntity, C extends TopiaEntity> void registerEntitiesExtractor( + ImmutableMap.Builder<String, EntitiesExtractor> builder, Class<P> parentType, String propertyName, - EntitiesSet<C> entitiesSet) { + EntitiesExtractor<C> entitiesExtractor) { String key = buildKey(parentType, propertyName); - builder.put(key, entitiesSet); + builder.put(key, entitiesExtractor); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SectionEntitiesExtractor.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SectionEntitiesExtractor.java new file mode 100644 index 0000000..d15da05 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SectionEntitiesExtractor.java @@ -0,0 +1,24 @@ +package fr.ird.observe.services.entity; + +import fr.ird.observe.ObserveTopiaPersistenceContext; +import fr.ird.observe.entities.longline.Section; +import fr.ird.observe.entities.longline.SetLongline; + +import java.util.Map; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class SectionEntitiesExtractor extends EntitiesExtractor<Section> { + + protected SectionEntitiesExtractor() { + super(Section.class, null); + } + + @Override + protected Iterable<Section> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext, Map<String, Object> requestContext) { + SetLongline setLongline = (SetLongline) requestContext.get(Section.PROPERTY_SET_LONGLINE); + + return setLongline.getSection(); + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesSet.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesExtractor.java similarity index 74% rename from observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesSet.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesExtractor.java index f191f76..77b4111 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesSet.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesExtractor.java @@ -6,25 +6,27 @@ import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.referentiel.SpeciesList; import fr.ird.observe.entities.referentiel.SpeciesListTopiaDao; +import java.util.Map; + /** - * FIXME Ca sert à quoi? + * Extraction des list d'espèces definit dans le référentiel "liste d'èspéce" * * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class SpeciesListEntitiesSet extends EntitiesSet<Species> { +public class SpeciesListEntitiesExtractor extends EntitiesExtractor<Species> { /** * L'id de la liste d'espèces à utiliser. */ protected final String speciesListId; - public SpeciesListEntitiesSet(String speciesListId) { + public SpeciesListEntitiesExtractor(String speciesListId) { super(Species.class, ReferenceEntities.<Species>newEnablePredicate()); this.speciesListId = speciesListId; } @Override - protected Iterable<Species> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext) { + protected Iterable<Species> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext, Map<String, Object> requestContext) { SpeciesListTopiaDao speciesListDao = persistenceContext.getSpeciesListDao(); SpeciesList speciesList = speciesListDao.forTopiaIdEquals(speciesListId).findUnique(); return speciesList.getSpecies(); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesSet.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesExtractor.java similarity index 76% rename from observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesSet.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesExtractor.java index 74505c7..345c1f6 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesSet.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesExtractor.java @@ -9,13 +9,13 @@ import fr.ird.observe.entities.referentiel.Species2; import java.util.Map; /** - * FIXME Ca sert à quoi? + * Extraction des list d'espèces definit dans le référentiel "liste d'èspéce" et présent dans un océan * * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class SpeciesListOceanEntitiesSet extends SpeciesListEntitiesSet { +public class SpeciesListOceanEntitiesExtractor extends SpeciesListEntitiesExtractor { - public SpeciesListOceanEntitiesSet(String speciesListId) { + public SpeciesListOceanEntitiesExtractor(String speciesListId) { super(speciesListId); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/BranchlineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/BranchlineServiceTopia.java new file mode 100644 index 0000000..ebe6bfe --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/BranchlineServiceTopia.java @@ -0,0 +1,62 @@ +package fr.ird.observe.services.service.longline; + +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.ReferenceTypeName; +import fr.ird.observe.services.dto.longline.BranchlineDto; +import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitTypeDto; +import fr.ird.observe.services.dto.referential.longline.HookSizeDto; +import fr.ird.observe.services.dto.referential.longline.HookTypeDto; +import fr.ird.observe.services.dto.referential.longline.LineTypeDto; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class BranchlineServiceTopia extends ObserveServiceTopia implements BranchlineService { + + @Override + public FormDto<BranchlineDto> loadToRead(String branchlineId) { + + Branchline branchline = loadEntity(BranchlineDto.class, Branchline.class, branchlineId); + + FormDto<BranchlineDto> form = entityToReadFormDto( + BranchlineDto.class, + Branchline.class, + branchline); + + return form; + } + + @Override + public FormDto<BranchlineDto> loadToEdit(String branchlineId) { + + Branchline branchline = loadEntity(BranchlineDto.class, Branchline.class, branchlineId); + + FormDto<BranchlineDto> form = entityToEditFormDto( + BranchlineDto.class, + Branchline.class, + branchline, + new ReferenceTypeName(BranchlineDto.class, LineTypeDto.class, BranchlineDto.PROPERTY_TOP_TYPE), + new ReferenceTypeName(BranchlineDto.class, LineTypeDto.class, BranchlineDto.PROPERTY_TRACELINE_TYPE), + new ReferenceTypeName(BranchlineDto.class, HookTypeDto.class, BranchlineDto.PROPERTY_HOOK_TYPE), + new ReferenceTypeName(BranchlineDto.class, HookSizeDto.class, BranchlineDto.PROPERTY_HOOK_SIZE), + new ReferenceTypeName(BranchlineDto.class, BaitTypeDto.class, BranchlineDto.PROPERTY_BAIT_TYPE), + new ReferenceTypeName(BranchlineDto.class, BaitSettingStatusDto.class, BranchlineDto.PROPERTY_BAIT_SETTING_STATUS), + new ReferenceTypeName(BranchlineDto.class, BaitHaulingStatusDto.class, BranchlineDto.PROPERTY_BAIT_HAULING_STATUS)); + + return form; + } + + @Override + public String save(BranchlineDto dto) { + + Branchline branchline = dtoToEntity(BranchlineDto.class, Branchline.class, dto); + + branchline = saveEntity(Branchline.class, branchline); + + return branchline.getTopiaId(); + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchServiceTopia.java index db7b96e..2f9724d 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineCatchServiceTopia.java @@ -22,9 +22,14 @@ package fr.ird.observe.services.service.longline; * #L% */ +import com.google.common.collect.ImmutableMap; +import fr.ird.observe.entities.longline.Basket; +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.entities.longline.Section; import fr.ird.observe.entities.longline.SetLongline; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceTypeName; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; @@ -35,6 +40,7 @@ import fr.ird.observe.services.dto.longline.SizeMeasureDto; import fr.ird.observe.services.dto.longline.WeightMeasureDto; import fr.ird.observe.services.dto.referential.SexDto; import fr.ird.observe.services.dto.referential.SpeciesDto; +import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; import fr.ird.observe.services.dto.referential.longline.CatchFateLonglineDto; import fr.ird.observe.services.dto.referential.longline.HealthnessDto; import fr.ird.observe.services.dto.referential.longline.HookPositionDto; @@ -42,6 +48,8 @@ import fr.ird.observe.services.dto.referential.longline.MaturityStatusDto; import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.StomacFullnessDto; import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; +import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.dto.result.SaveResultDtos; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -70,6 +78,7 @@ public class SetLonglineCatchServiceTopia extends ObserveServiceTopia implements SetLonglineCatchDto.class, SetLongline.class, setLongline, + ImmutableMap.<String, Object>of(Section.PROPERTY_SET_LONGLINE, setLongline), new ReferenceTypeName(CatchLonglineDto.class, SpeciesDto.class, CatchLonglineDto.PROPERTY_SPECIES_CATCH), new ReferenceTypeName(CatchLonglineDto.class, HealthnessDto.class, CatchLonglineDto.PROPERTY_CATCH_HEALTHNESS), new ReferenceTypeName(CatchLonglineDto.class, HookPositionDto.class, CatchLonglineDto.PROPERTY_HOOK_POSITION), @@ -83,21 +92,65 @@ public class SetLonglineCatchServiceTopia extends ObserveServiceTopia implements new ReferenceTypeName(WeightMeasureDto.class, WeightMeasureTypeDto.class, WeightMeasureDto.PROPERTY_WEIGHT_MEASURE_TYPE), new ReferenceTypeName(CatchLonglineDto.class, SectionDto.class, CatchLonglineDto.PROPERTY_SECTION), new ReferenceTypeName(CatchLonglineDto.class, BasketDto.class, CatchLonglineDto.PROPERTY_BASKET), - new ReferenceTypeName(CatchLonglineDto.class, BranchlineDto.class, CatchLonglineDto.PROPERTY_BRANCHLINE)); + new ReferenceTypeName(CatchLonglineDto.class, BranchlineDto.class, CatchLonglineDto.PROPERTY_BRANCHLINE), + new ReferenceTypeName(BranchlineDto.class, BaitHaulingStatusDto.class, BranchlineDto.PROPERTY_BAIT_HAULING_STATUS) // utilisé pour l'edition des l'anvançon + ); + + for(Section section : setLongline.getSection()) { + + for (Basket basket : section.getBasket()) { + + ReferenceDto<BasketDto> basketRef = form.getReferenceById(BasketDto.class, basket.getTopiaId()); + + basketRef.addPropertyValue(BasketDto.PROPERTY_SECTION, section.getTopiaId()); + + for (Branchline branchline : basket.getBranchline()) { + + ReferenceDto<BranchlineDto> branchlineRef = form.getReferenceById(BranchlineDto.class, branchline.getTopiaId()); + + branchlineRef.addPropertyValue(BranchlineDto.PROPERTY_BASKET, basket.getTopiaId()); + + } + + } + + } + + for (CatchLonglineDto catchLonglineDto : form.getForm().getCatchLongline()) { + + ReferenceDto<BasketDto> basketRef = catchLonglineDto.getBasket(); + + if (basketRef != null) { + + ReferenceDto<BasketDto> basketRefLabel = form.getReferenceById(BasketDto.class, basketRef.getId()); + + basketRef.addPropertyValue(BasketDto.PROPERTY_SECTION, basketRefLabel.getPropertyValue(BasketDto.PROPERTY_SECTION)); + + } + + ReferenceDto<BranchlineDto> branchlineRef = catchLonglineDto.getBranchline(); + + if (branchlineRef != null) { + + ReferenceDto<BranchlineDto> branchlineRefLabel = form.getReferenceById(BranchlineDto.class, branchlineRef.getId()); + + branchlineRef.addPropertyValue(BranchlineDto.PROPERTY_BASKET, branchlineRefLabel.getPropertyValue(BranchlineDto.PROPERTY_BASKET)); + + } + + } return form; } @Override - public String save(FormDto<SetLonglineCatchDto> form) { - - SetLonglineCatchDto setLonglineCatchDto = form.getForm(); + public SaveResultDto save(SetLonglineCatchDto dto) { - SetLongline setLongline = dtoToEntity(SetLonglineCatchDto.class, SetLongline.class, setLonglineCatchDto); + SetLongline setLongline = dtoToEntity(SetLonglineCatchDto.class, SetLongline.class, dto); setLongline = saveEntity(SetLongline.class, setLongline); - return setLongline.getTopiaId(); + return SaveResultDtos.newSaveResult(setLongline.getTopiaId(), setLongline.getLastUpdate()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm