branch develop updated (a1b6225 -> 512fd3c)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See http://git.codelutin.com/observe.git from a1b6225 retour a la version 1.3.175 de H2 pour de problème de fermeture de base new 0b5772b migration des écrans d'échantillons de captures cibles (refs #7606, 7607) new ba8f66e ajout des validateur (refs #7606, 7607) new 512fd3c Merge branch 'feature/7606' into develop The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 512fd3ce9ba6f61abe020280b4ad839408b42153 Merge: a1b6225 ba8f66e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 09:49:32 2015 +0200 Merge branch 'feature/7606' into develop commit ba8f66edff5c25643dd48793dcc29b63977a7f6e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 09:48:32 2015 +0200 ajout des validateur (refs #7606, 7607) commit 0b5772b034cfb5959f77807c7ecab896787d57f5 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 09:17:29 2015 +0200 migration des écrans d'échantillons de captures cibles (refs #7606, 7607) Summary of changes: .../ird/observe/ui/content/ContentUIManager.java | 8 +- .../table/impl/seine/TargetSampleCaptureUI.jaxx | 4 +- .../table/impl/seine/TargetSampleRejeteUI.jaxx | 4 +- .../table/impl/seine/TargetSampleUIHandler.java | 193 +++------------------ .../table/impl/seine/TargetSampleUIModel.java | 47 +++-- .../ui/tree/loadors/SetSeineNodeChildLoador.java | 8 +- .../dto/AbstractEspeceFieldDtoValidator.java | 29 ++-- .../TargetLengthDto-n1-update-error-validation.xml | 0 ...argetLengthDto-n1-update-warning-validation.xml | 4 +- .../TargetSampleDto-n1-update-error-validation.xml | 0 .../v1/seine/TargetSampleServiceController.java | 3 +- .../service/seine/TargetSampleService.java | 3 +- .../services/dto/seine/TargetLengthDto.java | 21 +++ .../src/main/java/fr/ird/observe/util/Numbers.java | 0 .../src/main/xmi/observe-services-dto-seine.zargo | Bin 61271 -> 61461 bytes .../service/seine/TargetSampleServiceTopia.java | 11 +- 16 files changed, 118 insertions(+), 217 deletions(-) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/TargetLength-n1-update-error-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-error-validation.xml (100%) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/TargetLength-n1-update-warning-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-warning-validation.xml (94%) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/TargetSample-n1-update-error-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetSampleDto-n1-update-error-validation.xml (100%) create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/seine/TargetLengthDto.java rename {observe-entities => observe-services-model}/src/main/java/fr/ird/observe/util/Numbers.java (100%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 0b5772b034cfb5959f77807c7ecab896787d57f5 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 09:17:29 2015 +0200 migration des écrans d'échantillons de captures cibles (refs #7606, 7607) --- .../ird/observe/ui/content/ContentUIManager.java | 8 +- .../table/impl/seine/TargetSampleCaptureUI.jaxx | 4 +- .../table/impl/seine/TargetSampleRejeteUI.jaxx | 4 +- .../table/impl/seine/TargetSampleUIHandler.java | 193 +++------------------ .../table/impl/seine/TargetSampleUIModel.java | 47 +++-- .../ui/tree/loadors/SetSeineNodeChildLoador.java | 8 +- .../v1/seine/TargetSampleServiceController.java | 3 +- .../service/seine/TargetSampleService.java | 3 +- .../services/dto/seine/TargetLengthDto.java | 21 +++ .../src/main/java/fr/ird/observe/util/Numbers.java | 0 .../src/main/xmi/observe-services-dto-seine.zargo | Bin 61271 -> 61461 bytes .../service/seine/TargetSampleServiceTopia.java | 11 +- 12 files changed, 100 insertions(+), 202 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java index 119fadc..873964d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java @@ -70,12 +70,14 @@ import fr.ird.observe.ui.content.table.impl.longline.SensorUsedUI; import fr.ird.observe.ui.content.table.impl.longline.TdrUI; import fr.ird.observe.ui.content.table.impl.seine.GearUseFeaturesSeineUI; import fr.ird.observe.ui.content.table.impl.seine.NonTargetCatchUI; +import fr.ird.observe.ui.content.table.impl.seine.NonTargetSampleUI; import fr.ird.observe.ui.content.table.impl.seine.ObjectObservedSpeciesUI; import fr.ird.observe.ui.content.table.impl.seine.ObjectSchoolEstimateUI; import fr.ird.observe.ui.content.table.impl.seine.SchoolEstimateUI; import fr.ird.observe.ui.content.table.impl.seine.TargetCatchUI; import fr.ird.observe.ui.content.table.impl.seine.TargetDiscardCatchUI; import fr.ird.observe.ui.content.table.impl.seine.TargetSampleCaptureUI; +import fr.ird.observe.ui.content.table.impl.seine.TargetSampleRejeteUI; import fr.ird.observe.ui.tree.ObserveNode; import jaxx.runtime.JAXXContext; import jaxx.runtime.context.JAXXInitialContext; @@ -141,9 +143,9 @@ public class ContentUIManager { addMapping(DATA, SetSeineDto.class, SetSeineDto.PROPERTY_TARGET_DISCARDED, TargetDiscardCatchUI.class); addMapping(DATA, SetSeineDto.class, SetSeineDto.PROPERTY_TARGET_SAMPLE_CAPTURE, TargetSampleCaptureUI.class); addMapping(DATA, SetSeineDto.class, SetSeineNonTargetCatchDto.PROPERTY_NON_TARGET_CATCH, NonTargetCatchUI.class); -//FIXME -// addMapping(DATA, SetSeineDto.class, SetSeineDto.PROPERTY_TARGET_SAMPLE, TargetSampleRejeteUI.class); -// addMapping(DATA, SetSeineDto.class, SetSeineDto.PROPERTY_NON_TARGET_SAMPLE, NonTargetSampleUI.class); + + addMapping(DATA, SetSeineDto.class, "targetSample", TargetSampleRejeteUI.class); + addMapping(DATA, SetSeineDto.class, "nonTargetSample", NonTargetSampleUI.class); addMapping(DATA, FloatingObjectDto.class, FloatingObjectUI.class); addMapping(DATA, FloatingObjectDto.class, n("observe.tree.floatingObject.unsaved"), FloatingObjectUI.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleCaptureUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleCaptureUI.jaxx index 405cb01..2963936 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleCaptureUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleCaptureUI.jaxx @@ -23,9 +23,7 @@ <TargetSampleUI contentTitle='{n("observe.common.targetSampleCapture")}' saveNewEntryText='{n("observe.action.create.targetSampleCapture")}' - saveNewEntryTip='{n("observe.action.create.targetSampleCapture.tip")}' - - > + saveNewEntryTip='{n("observe.action.create.targetSampleCapture.tip")}'> <import> static org.nuiton.i18n.I18n.n diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleRejeteUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleRejeteUI.jaxx index 43dbba2..e0fdf34 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleRejeteUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleRejeteUI.jaxx @@ -23,9 +23,7 @@ <TargetSampleUI contentTitle='{n("observe.common.targetSample")}' saveNewEntryText='{n("observe.action.create.targetSample")}' - saveNewEntryTip='{n("observe.action.create.targetSample.tip")}' - - > + saveNewEntryTip='{n("observe.action.create.targetSample.tip")}'> <import> static org.nuiton.i18n.I18n.n diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java index 0c94b6e..1f3d5ce 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java @@ -23,23 +23,21 @@ package fr.ird.observe.ui.content.table.impl.seine; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; - - import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesDto; +import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.SetSeineDto; -import fr.ird.observe.services.dto.seine.SetSeineDtos; import fr.ird.observe.services.dto.seine.TargetLengthDto; import fr.ird.observe.services.dto.seine.TargetSampleDto; import fr.ird.observe.services.dto.seine.TargetSampleDtos; -import fr.ird.observe.services.service.seine.SetSeineService; import fr.ird.observe.services.service.seine.TargetSampleService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; -import fr.ird.observe.ui.content.table.ContentTableUIHandler; import fr.ird.observe.ui.content.table.ContentTableUI; +import fr.ird.observe.ui.content.table.ContentTableUIHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; @@ -49,8 +47,6 @@ import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.List; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -66,15 +62,15 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto /** * Pour différencier positionner l'invariant de l'écran - * {@link TargetSample#getDiscarded()}. + * {@link TargetSampleDto#getDiscarded()}. * * @since 1.5 */ protected final boolean discarded; /** - * Ecoute les modifications de la propriété {@link TargetLength#getWeight()}, - * et repasser alors le flag {@link TargetLength#isWeightSource()} à + * Ecoute les modifications de la propriété {@link TargetLengthDto#getWeight()}, + * et repasser alors le flag {@link TargetLengthDto#isWeightSource()} à * {@code false}. * * @since 3.0 @@ -88,8 +84,8 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto }; /** - * Ecoute les modifications de la propriété {@link TargetLength#getLength()}, - * et repasser alors le flag {@link TargetLength#isLengthSource()} à + * Ecoute les modifications de la propriété {@link TargetLengthDto#getLength()}, + * et repasser alors le flag {@link TargetLengthDto#isLengthSource()} à * {@code false}. * * @since 3.0 @@ -125,143 +121,10 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto @Override protected String getEditBeanIdToLoad() { - String setId = getDataContext().getSelectedSetId(); - // on doit récupérer l'unique échantillonThon de la calée - //FIXME -// String id = dataService.getTargetSampleId(dataSource, setId, discarded); -// return id; - return null; + String id = getDataContext().getSelectedSetId(); + return id; } -// @Override -// protected TargetSample loadEditBean(ContentMode mode, -// DataContext dataContext, -// DataService dataService, -// DataSource dataSource) { -// -// String setId = dataContext.getSelectedSetId(); -// -// if (mode == ContentMode.UPDATE) { -// -// // on ne charge les speciess uniquement si on est en mode édition -// List<Species> speciess = -// dataService.getAvailableEspeceForTargetSample(dataSource, setId, discarded); -// -// getUi().getSpecies().setData(speciess); -// } -// -// // on doit récupérer l'unique échantillonThon de la calée -// String id = getEditBeanIdToLoad(dataContext, dataService, dataSource); -// -// TargetSample editBean = getBean(); -// -// if (log.isInfoEnabled()) { -// log.info(prefix + " - set id : " + setId); -// log.info(prefix + " - echantillon thon id : " + id); -// log.info(prefix + " - edit bean id : " + editBean.getTopiaId()); -// } -// -// if (id == null) { -// -// // l'échantillon n'existe pas encore, donc rien a faire -// getLoadBinder().load(null, editBean, true); -// -// getModel().getChildsUpdator().setChilds(editBean, new ArrayList<TargetLength>()); -// } else { -// -// // preparation du bean d'édition -// dataService.loadEditEntity(dataSource, id, getLoadExecutor()); -// } -// -// getModel().setMode(mode); -// -// // initialisation du modèle du tableau -// getUi().getTableModel().attachModel(); -// -// return editBean; -// } - - @Override - protected boolean prepareSave(TargetSampleDto bean, List<TargetLengthDto> objets) { - - boolean withLengths = !objets.isEmpty(); - - if (withLengths) { - - if (bean.getId() == null) { - - String setId = getDataContext().getSelectedSetId(); - - // l'échantillon n'existe pas encore, il faut le créer - - if (log.isDebugEnabled()) { - log.debug("Will create targetSample " + bean + " for " + setId); - } - - //FIXME -// getDataService().create(getDataSource(), setId, bean, null, getCreateExecutor()); - - } - - for (TargetLengthDto targetLength : objets) { - - // on attache a l'echantillon - //FIXME -// targetLength.setTargetSample(bean); - } - - } - - return true; - - } - - //FIXME -// @Override -// protected void doPersist(TargetSample bean, DataService dataService, DataSource dataSource) { -// -// if (bean.getTopiaId() != null && bean.isTargetLengthEmpty()) { -// -// // remove orphan target sample -// -// String setId = getDataContext().getSelectedSetId(); -// if (log.isInfoEnabled()) { -// log.info("Remove obsolete targetSample " + bean.getTopiaId() + " from Set: " + setId); -// } -// getDataService().delete(getDataSource(), setId, bean, getDeleteExecutor()); -// -// } else { -// -// // normal persist -// super.doPersist(bean, dataService, dataSource); -// -// } -// -// } - - //FIXME -// @Override -// protected TargetSample onCreate(TopiaContext tx, -// Object parent, -// TargetSample editBean) throws TopiaException { -// SetSeine parentBean = (SetSeine) parent; -// TargetSample beanToSave = -// ObserveDAOHelper.getTargetSampleDAO(tx).create(); -// beanToSave.setDiscarded(discarded); -// editBean.setTopiaId(beanToSave.getTopiaId()); -// editBean.setTopiaCreateDate(beanToSave.getTopiaCreateDate()); -// editBean.setTopiaVersion(beanToSave.getTopiaVersion()); -// parentBean.addTargetSample(beanToSave); -// return beanToSave; -// } - - //FIXME - @Override -// protected void onDelete(TopiaContext tx, Object parent, TargetSample beanToDelete) throws TopiaException { -// SetSeine parentBean = (SetSeine) parent; -// parentBean.removeTargetSample(beanToDelete); -// } - protected void onSelectedRowChanged(int editingRow, TargetLengthDto bean, boolean create) { ContentTableModel<TargetSampleDto, TargetLengthDto> model = getTableModel(); @@ -270,8 +133,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto return; } - //FIXME -// SpeciesDto species = bean.getSpecies(); + ReferenceDto<SpeciesDto> species = bean.getSpecies(); JComponent requestFocus; @@ -283,8 +145,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto if (editingRow > 0) { // on recupere l'species de la ligne precedente TargetLengthDto editBean = model.getValueAt(editingRow - 1); - //FIXME -// species = editBean.getSpecies(); + species = editBean.getSpecies(); } // on passe le mode de saisie en count @@ -313,13 +174,12 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto // on met a jour l'espce ui.getSpecies().setSelectedItem(null); - //FIXME -// if (species != null) { -// if (log.isDebugEnabled()) { -// log.debug("species to use " + species); -// } -// ui.getSpecies().setSelectedItem(species); -// } + if (species != null) { + if (log.isDebugEnabled()) { + log.debug("species to use " + species); + } + ui.getSpecies().setSelectedItem(species); + } requestFocus.requestFocus(); TargetLengthDto tableEditBean = getTableEditBean(); @@ -350,7 +210,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto n("observe.targetSample.table.totalWeight"), n("observe.targetSample.table.totalWeight.tip")); - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SpeciesDto.class)); + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, SpeciesDto.class.getSimpleName())); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEnumTableCellRenderer(renderer, CodeMesureEnum.class)); UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 3, UIHelper.newEmptyNumberTableCellRenderer(renderer)); @@ -362,17 +222,9 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto protected ContentMode getContentMode(DataContext dataContext) { ContentMode mode = super.getContentMode(dataContext); - boolean showData = false; + String setId = dataContext.getSelectedSetId(); - //FIXME -// try { -// String setId = getDataContext().getSelectedSetId(); -// showData = getDataService().canUseTargetSample(getDataSource(), setId, discarded); -// } catch (DataSourceException e) { -// if (log.isErrorEnabled()) { -// log.error(e); -// } -// } + boolean showData = getTargetSampleService().canUseTargetSample(setId, discarded); getModel().setShowData(showData); @@ -458,7 +310,8 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto @Override protected void doPersist(TargetSampleDto bean) { - getTargetSampleService().save(getSelectedParentId(), bean); + SaveResultDto saveResultDto = getTargetSampleService().save(getSelectedParentId(), bean); + bean.setLastUpdate(saveResultDto.getLastUpdate()); } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIModel.java index 58aa066..f116c8e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIModel.java @@ -23,13 +23,16 @@ package fr.ird.observe.ui.content.table.impl.seine; */ import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import fr.ird.observe.services.dto.seine.TargetLengthDto; +import fr.ird.observe.services.dto.seine.TargetLengthDtos; import fr.ird.observe.services.dto.seine.TargetSampleDto; import fr.ird.observe.ui.content.table.ContentTableMeta; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIModel; import fr.ird.observe.ui.content.table.ObserveContentTableUI; +import java.util.Collection; import java.util.List; /** @@ -46,18 +49,18 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta super(TargetSampleDto.class, TargetLengthDto.class, - new String[]{TargetSampleDto.PROPERTY_TARGET_LENGTH, TargetSampleDto.PROPERTY_COMMENT}, new String[]{ - //FIXME -// TargetLengthDto.PROPERTY_TARGET_SAMPLE, - TargetLengthDto.PROPERTY_SPECIES, - TargetLengthDto.PROPERTY_LENGTH, - TargetLengthDto.PROPERTY_LENGTH_SOURCE, - TargetLengthDto.PROPERTY_WEIGHT, - TargetLengthDto.PROPERTY_WEIGHT_SOURCE, - TargetLengthDto.PROPERTY_COUNT, - TargetLengthDto.PROPERTY_MEASURE_TYPE, - TargetLengthDto.PROPERTY_ACQUISITION_MODE}); + TargetSampleDto.PROPERTY_TARGET_LENGTH, + TargetSampleDto.PROPERTY_COMMENT}, + new String[]{ + TargetLengthDto.PROPERTY_SPECIES, + TargetLengthDto.PROPERTY_LENGTH, + TargetLengthDto.PROPERTY_LENGTH_SOURCE, + TargetLengthDto.PROPERTY_WEIGHT, + TargetLengthDto.PROPERTY_WEIGHT_SOURCE, + TargetLengthDto.PROPERTY_COUNT, + TargetLengthDto.PROPERTY_MEASURE_TYPE, + TargetLengthDto.PROPERTY_ACQUISITION_MODE}); List<ContentTableMeta<TargetLengthDto>> metas = Lists.newArrayList( ContentTableModel.newTableMeta(TargetLengthDto.class, TargetLengthDto.PROPERTY_SPECIES, true), @@ -72,8 +75,24 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta } @Override - protected ContentTableModel<TargetSampleDto, TargetLengthDto> createTableModel(ObserveContentTableUI<TargetSampleDto, TargetLengthDto> ui, List<ContentTableMeta<TargetLengthDto>> contentTableMetas) { - // FIXME - return null; + protected ContentTableModel<TargetSampleDto, TargetLengthDto> createTableModel( + ObserveContentTableUI<TargetSampleDto, TargetLengthDto> ui, + List<ContentTableMeta<TargetLengthDto>> contentTableMetas) { + return new ContentTableModel<TargetSampleDto, TargetLengthDto>(ui, contentTableMetas) { + @Override + protected Collection<TargetLengthDto> getChilds(TargetSampleDto bean) { + return bean.getTargetLength(); + } + + @Override + protected void load(TargetLengthDto source, TargetLengthDto target) { + TargetLengthDtos.copyTargetLengthDto(source, target); + } + + @Override + protected void setChilds(TargetSampleDto parent, List<TargetLengthDto> childs) { + parent.setTargetLength(Sets.newLinkedHashSet(childs)); + } + }; } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java index 39c79ea..bb5d7e1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java @@ -68,12 +68,10 @@ public class SetSeineNodeChildLoador extends AbstractNodeChildLoador<String, Str result.add(SetSeineSchoolEstimateDto.PROPERTY_SCHOOL_ESTIMATE); result.add(SetSeineTargetCatchDto.PROPERTY_TARGET_CATCH); result.add(SetSeineDto.PROPERTY_TARGET_DISCARDED); - //FIXME -// result.add(SetSeine.PROPERTY_TARGET_SAMPLE); -// result.add(SetSeine.PROPERTY_TARGET_SAMPLE_CAPTURE); + result.add("targetSample"); + result.add(SetSeineDto.PROPERTY_TARGET_SAMPLE_CAPTURE); result.add(SetSeineNonTargetCatchDto.PROPERTY_NON_TARGET_CATCH); - //FIXME -// result.add(SetSeine.PROPERTY_NON_TARGET_SAMPLE); + result.add("nonTargetSample"); return result; } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TargetSampleServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TargetSampleServiceController.java index ced9af1..dd25a10 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TargetSampleServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TargetSampleServiceController.java @@ -24,6 +24,7 @@ package fr.ird.observe.application.web.controller.v1.seine; import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.TargetSampleDto; import fr.ird.observe.services.service.seine.TargetSampleService; @@ -52,7 +53,7 @@ public class TargetSampleServiceController extends ObserveAuthenticatedServiceCo } @Override - public String save(String setSeineId, TargetSampleDto dto) { + public SaveResultDto save(String setSeineId, TargetSampleDto dto) { return service.save(setSeineId, dto); } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java index 528c66c..da9815f 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java @@ -24,6 +24,7 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.TargetSampleDto; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; @@ -47,6 +48,6 @@ public interface TargetSampleService extends ObserveService { @Write @WriteDataPermission @PostRequest - String save(String setSeineId, TargetSampleDto dto); + SaveResultDto save(String setSeineId, TargetSampleDto dto); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/seine/TargetLengthDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/seine/TargetLengthDto.java new file mode 100644 index 0000000..be99ea7 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/seine/TargetLengthDto.java @@ -0,0 +1,21 @@ +package fr.ird.observe.services.dto.seine; + +import fr.ird.observe.util.Numbers; + +import javax.annotation.Generated; + +@Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanWithNoInterfaceTransformer", date = "Tue Oct 20 17:22:11 CEST 2015") +public class TargetLengthDto extends AbstractTargetLengthDto { + + private static final long serialVersionUID = 7005688292510741559L; + + public Float getTotalWeight() { + Float result = null; + if (getWeight() != null && getCount() != null) { + result = Numbers.round3Digits(getWeight() * getCount() / 1000.0f); + } + return result; + } + + +} //TargetLengthDto diff --git a/observe-entities/src/main/java/fr/ird/observe/util/Numbers.java b/observe-services-model/src/main/java/fr/ird/observe/util/Numbers.java similarity index 100% rename from observe-entities/src/main/java/fr/ird/observe/util/Numbers.java rename to observe-services-model/src/main/java/fr/ird/observe/util/Numbers.java diff --git a/observe-services-model/src/main/xmi/observe-services-dto-seine.zargo b/observe-services-model/src/main/xmi/observe-services-dto-seine.zargo index 3e11620..b801974 100644 Binary files a/observe-services-model/src/main/xmi/observe-services-dto-seine.zargo and b/observe-services-model/src/main/xmi/observe-services-dto-seine.zargo differ diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopia.java index 207c70b..83d6cb3 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopia.java @@ -26,6 +26,7 @@ import com.google.common.collect.Sets; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TargetCatch; +import fr.ird.observe.entities.seine.TargetLength; import fr.ird.observe.entities.seine.TargetSample; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.FormDto; @@ -33,6 +34,8 @@ import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.ReferenceTypeName; import fr.ird.observe.services.dto.referential.SpeciesDto; +import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.dto.result.SaveResultDtos; import fr.ird.observe.services.dto.seine.SetSeineDto; import fr.ird.observe.services.dto.seine.TargetLengthDto; import fr.ird.observe.services.dto.seine.TargetSampleDto; @@ -131,12 +134,16 @@ public class TargetSampleServiceTopia extends ObserveServiceTopia implements Tar } @Override - public String save(String setSeineId, TargetSampleDto targetSampleDto) { + public SaveResultDto save(String setSeineId, TargetSampleDto targetSampleDto) { SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); TargetSample targetSample = dtoToEntity(TargetSampleDto.class, TargetSample.class, targetSampleDto); + for (TargetLength targetLength : targetSample.getTargetLength()) { + targetLength.setTargetSample(targetSample); + } + targetSample = saveEntity(TargetSample.class, targetSample); if (targetSampleDto.isNotPersisted()) { @@ -147,6 +154,6 @@ public class TargetSampleServiceTopia extends ObserveServiceTopia implements Tar } - return setSeine.getTopiaId(); + return SaveResultDtos.newSaveResult(setSeine.getTopiaId(), setSeine.getLastUpdate()); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit ba8f66edff5c25643dd48793dcc29b63977a7f6e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 09:48:32 2015 +0200 ajout des validateur (refs #7606, 7607) --- .../dto/AbstractEspeceFieldDtoValidator.java | 29 +++--- .../TargetLengthDto-n1-update-error-validation.xml | 105 +++++++++++++++++++++ ...argetLengthDto-n1-update-warning-validation.xml | 56 +++++++++++ .../TargetSampleDto-n1-update-error-validation.xml | 49 ++++++++++ 4 files changed, 226 insertions(+), 13 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java index fd4eaaa..542966b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java @@ -25,6 +25,7 @@ package fr.ird.observe.validation.validator.dto; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -117,7 +118,7 @@ public abstract class AbstractEspeceFieldDtoValidator extends FieldValidatorSupp */ protected String expression; - protected String speciesField = "espece"; + protected String speciesField = "species"; public ValueStack getValueStack() { return valueStack; @@ -217,7 +218,7 @@ public abstract class AbstractEspeceFieldDtoValidator extends FieldValidatorSupp } // l'species associée - SpeciesDto species = (SpeciesDto) getFieldValue(speciesFieldName, object); + ReferenceDto<SpeciesDto> species = (ReferenceDto<SpeciesDto>) getFieldValue(speciesFieldName, object); if (species == null) { @@ -263,17 +264,19 @@ public abstract class AbstractEspeceFieldDtoValidator extends FieldValidatorSupp } } - protected Bound getBound(SpeciesDto referentiel) { - - Float min = getBoundMin(referentiel); - Float max = getBoundMax(referentiel); - - if (min == null || min == 0 || max == null || max == 0) { - // l'une des deux borne n'est pas définie, on ne peut pas utiliser - // la données - return null; - } - return new Bound(min, max); + protected Bound getBound(ReferenceDto<SpeciesDto> referentiel) { + + // FIXME il faut mettre en place un cache dans la valueStack de la validation pour recupéré les SpeciesDto +// Float min = getBoundMin(referentiel); +// Float max = getBoundMax(referentiel); +// +// if (min == null || min == 0 || max == null || max == 0) { +// // l'une des deux borne n'est pas définie, on ne peut pas utiliser +// // la données +// return null; +// } +// return new Bound(min, max); + return null; } protected boolean validateBound(Float value, diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-error-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-error-validation.xml new file mode 100644 index 0000000..3527760 --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-error-validation.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Validation + %% + Copyright (C) 2008 - 2010 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% + --> + +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="species"> + + <!-- pas de species selectionnee --> + <field-validator type="required" short-circuit="true"> + <message>validator.targetLength.required.species</message> + </field-validator> + + <!-- species desactive --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ species.enabled ]]> + </param> + <message>validator.targetLength.desactivated.species</message> + </field-validator> + + </field> + + <field name="length"> + + <!-- taille obligatoire en mode par count --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ acquisitionMode == 1 || length != null ]]> + </param> + <message>validator.targetLength.required.taille</message> + </field-validator> + + <!-- au moins un des 2 valeurs taille / weight doit etre renseignee (en mode par individu) --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ acquisitionMode == 0 || length != null || weight != null ]]> + </param> + <message>validator.targetLength.required.weight.or.taille</message> + </field-validator> + + <!-- length non renseigné ou > 0 --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ length == null || length > 0 ]]> + </param> + <message>validator.targetLength.positive.length</message> + </field-validator> + + </field> + + + <field name="weight"> + + <!-- au moins un des 2 valeurs taille / weight doit etre renseignee (en mode par individu) --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ acquisitionMode == 0 || length != null || weight != null ]]> + </param> + <message>validator.targetLength.required.weight.or.taille</message> + </field-validator> + + <!-- weight non renseigné ou > 0 --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ weight == null || weight > 0 ]]> + </param> + <message>validator.targetLength.positive.weight</message> + </field-validator> + + </field> + + + <field name="count"> + + <!-- pas d'count selectionnee --> + <field-validator type="required" short-circuit="true"> + <message>validator.targetLength.required.count</message> + </field-validator> + + </field> + +</validators> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-warning-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-warning-validation.xml new file mode 100644 index 0000000..c7d7270 --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetLengthDto-n1-update-warning-validation.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Validation + %% + Copyright (C) 2008 - 2010 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% + --> + +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="length"> + + <!-- validation de la taille par borne --> + <field-validator type="species_lengthDto"> + <param name="ratio">1.0</param> + <param name="expression"> + <![CDATA[ acquisitionMode == 0 || modeSaisie == 1 ]]> + </param> + <message>validator.targetLength.bound.length##${min}##${max}</message> + </field-validator> + + </field> + + + <field name="weight"> + + <!-- validation du weight par borne (uniquement pour mode saisie par individus) --> + <field-validator type="species_weightDto"> + <param name="ratio">1.0</param> + <param name="expression"> + <![CDATA[ acquisitionMode == 1 ]]> + </param> + <message>validator.targetLength.bound.weight##${min}##${max}</message> + </field-validator> + + </field> + +</validators> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetSampleDto-n1-update-error-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetSampleDto-n1-update-error-validation.xml new file mode 100644 index 0000000..edf831f --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/TargetSampleDto-n1-update-error-validation.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Validation + %% + Copyright (C) 2008 - 2010 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% + --> + +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="comment"> + + <!-- comentaire de moins de 1024 caractères --> + <field-validator type="stringlength"> + <param name="maxLength">1024</param> + <message>validator.targetSample.comment.tobig</message> + </field-validator> + + <!-- comment requis selon l'species indiquee --> + + <field-validator type="collectionFieldExpression"> + <param name="collectionFieldName">targetLength</param> + <param name="mode">ALL</param> + <param name="useSensitiveContext">true</param> + <param name="expression"> + <![CDATA[ (comment != null && !comment.empty) || current.species == null || !current.species.needComment ]]></param> + <message>validator.targetSample.required.comment.for.species##${index}</message> + </field-validator> + + </field> +</validators> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 512fd3ce9ba6f61abe020280b4ad839408b42153 Merge: a1b6225 ba8f66e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 09:49:32 2015 +0200 Merge branch 'feature/7606' into develop .../ird/observe/ui/content/ContentUIManager.java | 8 +- .../table/impl/seine/TargetSampleCaptureUI.jaxx | 4 +- .../table/impl/seine/TargetSampleRejeteUI.jaxx | 4 +- .../table/impl/seine/TargetSampleUIHandler.java | 193 +++------------------ .../table/impl/seine/TargetSampleUIModel.java | 47 +++-- .../ui/tree/loadors/SetSeineNodeChildLoador.java | 8 +- .../dto/AbstractEspeceFieldDtoValidator.java | 29 ++-- .../TargetLengthDto-n1-update-error-validation.xml | 105 +++++++++++ ...argetLengthDto-n1-update-warning-validation.xml | 56 ++++++ .../TargetSampleDto-n1-update-error-validation.xml | 49 ++++++ .../v1/seine/TargetSampleServiceController.java | 3 +- .../service/seine/TargetSampleService.java | 3 +- .../services/dto/seine/TargetLengthDto.java | 21 +++ .../src/main/java/fr/ird/observe/util/Numbers.java | 0 .../src/main/xmi/observe-services-dto-seine.zargo | Bin 61271 -> 61461 bytes .../service/seine/TargetSampleServiceTopia.java | 11 +- 16 files changed, 326 insertions(+), 215 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm