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>.