branch develop updated (81b289e -> 4785ad7)
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 81b289e modification traduction (refs #7604) new 65f4464 Migration de l'écran de la faune accesoire (refs #7609) new d928d24 merge du model suite au rebase sur develop (refs #7609) new 3a84c63 ajout des validateurs (refs #7609) new 4785ad7 Merge branch 'feature/7609' into develop The 4 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 4785ad74f2440b5f223963b6ddf1d79605f289dd Merge: 81b289e 3a84c63 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 11:43:54 2015 +0200 Merge branch 'feature/7609' into develop commit 3a84c63696a65a7b197099a652d3522a129370ce Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 11:43:35 2015 +0200 ajout des validateurs (refs #7609) commit d928d248e49c637c93ef843069a24696d129300c Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 11:23:18 2015 +0200 merge du model suite au rebase sur develop (refs #7609) commit 65f44643858b4d38a4c7150fad92c7962f3b0da4 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Oct 20 08:52:20 2015 +0200 Migration de l'écran de la faune accesoire (refs #7609) Summary of changes: .../content/table/impl/seine/NonTargetCatchUI.css | 9 +- .../content/table/impl/seine/NonTargetCatchUI.jaxx | 17 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 281 +++++++-------------- .../table/impl/seine/NonTargetCatchUIModel.java | 62 +++-- ...onTargetCatchDto-n1-update-error-validation.xml | 0 ...TargetCatchDto-n1-update-warning-validation.xml | 0 ...onTargetCatchDto-n1-update-error-validation.xml | 2 +- .../v1/seine/NonTargetCatchServiceController.java | 9 +- .../{TargetLenghts.java => NonTargetLenghts.java} | 8 +- .../service/seine/NonTargetCatchService.java | 5 +- .../main/xmi/observe-services-dto-seine.properties | 1 + .../src/main/xmi/observe-services-dto-seine.zargo | Bin 61461 -> 61805 bytes .../services/dto/ObserveDtosInitializer.java | 1 + .../services/entity/EntitiesSetFactory.java | 9 + .../service/seine/NonTargetCatchServiceTopia.java | 100 +++++++- 15 files changed, 267 insertions(+), 237 deletions(-) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/NonTargetCatch-n1-update-error-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-error-validation.xml (100%) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/NonTargetCatch-n1-update-warning-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml (100%) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/SetSeine-n1-update-nonTargetCatch-error-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineNonTargetCatchDto-n1-update-error-validation.xml (94%) copy observe-entities/src/main/java/fr/ird/observe/entities/seine/{TargetLenghts.java => NonTargetLenghts.java} (56%) -- 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 65f44643858b4d38a4c7150fad92c7962f3b0da4 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Oct 20 08:52:20 2015 +0200 Migration de l'écran de la faune accesoire (refs #7609) --- .../content/table/impl/seine/NonTargetCatchUI.css | 9 +- .../content/table/impl/seine/NonTargetCatchUI.jaxx | 15 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 272 ++++++++------------- .../table/impl/seine/NonTargetCatchUIModel.java | 62 +++-- .../v1/seine/NonTargetCatchServiceController.java | 9 +- .../observe/entities/seine/NonTargetLenghts.java | 20 ++ .../service/seine/NonTargetCatchService.java | 5 +- .../main/xmi/observe-services-dto-seine.properties | 1 + .../services/dto/ObserveDtosInitializer.java | 1 + .../services/entity/EntitiesSetFactory.java | 9 + .../service/seine/NonTargetCatchServiceTopia.java | 100 +++++++- 11 files changed, 281 insertions(+), 222 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.css index deccd5f..e2cc569 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.css @@ -29,11 +29,10 @@ labelFor:{species}; } - //FIXME -//#species { -// property:{NonTargetCatchDto.PROPERTY_SPECIES}; -// selectedItem:{tableEditBean.getSpecies()}; -//} +#species { + property:{NonTargetCatchDto.PROPERTY_SPECIES}; + selectedItem:{tableEditBean.getSpecies()}; +} #speciesFateLabel { text:"observe.common.speciesFate"; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx index 9636945..cea2797 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx @@ -22,19 +22,17 @@ <fr.ird.observe.ui.content.table.ContentTableUI - superGenericType='SetSeineDto, NonTargetCatchDto' + superGenericType='SetSeineNonTargetCatchDto, NonTargetCatchDto' contentTitle='{n("observe.common.nonTargetCatch")}' saveNewEntryText='{n("observe.action.create.nonTargetCatch")}' - saveNewEntryTip='{n("observe.action.create.nonTargetCatch.tip")}' - - > + saveNewEntryTip='{n("observe.action.create.nonTargetCatch.tip")}'> <style source="../../CommonTable.css"/> <import> fr.ird.observe.services.dto.ReferenceDto fr.ird.observe.services.dto.CommentableDto - fr.ird.observe.services.dto.seine.SetSeineDto + fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto fr.ird.observe.services.dto.seine.NonTargetCatchDto fr.ird.observe.services.dto.referential.seine.SpeciesFateDto fr.ird.observe.services.dto.referential.SpeciesDto @@ -58,7 +56,7 @@ <NonTargetCatchUIModel id='model' constructorParams='this'/> <!-- edit bean --> - <SetSeineDto id='bean'/> + <SetSeineNonTargetCatchDto id='bean'/> <!-- table edit bean --> <NonTargetCatchDto id='tableEditBean'/> @@ -69,12 +67,11 @@ <!-- le validateur de l'écran --> <BeanValidator id='validator' - beanClass='fr.ird.observe.services.dto.seine.SetSeineDto' + beanClass='fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto' errorTableModel='{getErrorTableModel()}' context='n1-update-nonTargetCatch'> <!-- clef unique --> - <!--FIXME--> - <!--<field name="nonTargetCatch" component="editorPanel"/>--> + <field name="nonTargetCatch" component="editorPanel"/> </BeanValidator> <!-- le validateur d'une entrée de tableau --> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java index 477693c..2d864f0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -21,30 +21,41 @@ */ package fr.ird.observe.ui.content.table.impl.seine; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import fr.ird.observe.ObserveSwingApplicationContext; 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.ReferenceSetDto; import fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; import fr.ird.observe.services.dto.seine.NonTargetCatchDto; +import fr.ird.observe.services.dto.seine.NonTargetCatchDtos; import fr.ird.observe.services.dto.seine.NonTargetLengthDto; -import fr.ird.observe.services.dto.seine.SetSeineDto; -import fr.ird.observe.services.dto.seine.SetSeineDtos; -import fr.ird.observe.services.service.seine.SetSeineService; +import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto; +import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDtos; +import fr.ird.observe.services.service.seine.NonTargetCatchService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import jaxx.runtime.context.JAXXContextEntryDef; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -53,7 +64,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.0 */ -public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, NonTargetCatchDto> { +public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineNonTargetCatchDto, NonTargetCatchDto> { /** Logger */ static private Log log = LogFactory.getLog(NonTargetCatchUIHandler.class); @@ -204,52 +215,13 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, return getDataContext().getSelectedSetId(); } -// @Override -// protected SetSeine loadEditBean(ContentMode mode, -// DataContext dataContext, -// DataService dataService, -// DataSource dataSource) { -// -// List<Species> speciesList; -// -// if (mode == ContentMode.UPDATE) { -// -// // get current ocean -// Ocean ocean = dataService.getTripOcean( -// dataSource, dataContext.getSelectedTripId()); -// -// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); -// String speciesListId = config.getSpeciesListSeineNonTargetCatchId(); -// -// // get all species -// List<Species> allSpecies = -// dataService.loadDecoratedSpecies(dataSource, speciesListId); -// -// // filtre par status actif -// ReferenceEntities.filterReferentielListByStatus(allSpecies); -// -// // filtre par ocean -// speciesList = Species2.filterByOcean(allSpecies, ocean); -// -// } else { -// -// speciesList = new ArrayList<Species>(); -// } -// -// ALL_ESPECES_ENTRY.setContextValue(getUi(), speciesList); -// if (log.isDebugEnabled()) { -// log.debug("speciesList = " + speciesList.size()); -// } -// return super.loadEditBean(mode, dataContext, dataService, dataSource); -// } - @Override protected void onSelectedRowChanged(int editingRow, NonTargetCatchDto bean, boolean create) { NonTargetCatchUI ui = getUi(); - ContentTableModel<SetSeineDto, NonTargetCatchDto> model = getTableModel(); + ContentTableModel<SetSeineNonTargetCatchDto, NonTargetCatchDto> model = getTableModel(); if (!model.isEditable()) { @@ -257,24 +229,22 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, return; } - //FIXME -// List<SpeciesDto> availableEspeces; + List<ReferenceDto<SpeciesDto>> availableEspeces; JComponent requestFocus; if (create) { - //FIXME -// availableEspeces = new ArrayList<SpeciesDto>(ALL_ESPECES_ENTRY.getContextValue(ui)); + ReferenceSetDto<SpeciesDto> speciesDtoReferenceSetDto = getModel().getFormDto().getReferenceSetDto(SpeciesDto.class); + Set<ReferenceDto<SpeciesDto>> speciesSet = (Set) speciesDtoReferenceSetDto.getReference(); + availableEspeces = Lists.newArrayList(speciesSet); requestFocus = ui.getSpecies(); } else { - //FIXME -// SpeciesDto species = bean.getSpecies(); -// availableEspeces = Arrays.asList(species); + ReferenceDto<SpeciesDto> species = bean.getSpecies(); + availableEspeces = Lists.newArrayList(species); requestFocus = ui.getTable(); } - //FIXME -// ui.getSpecies().setData(availableEspeces); + ui.getSpecies().setData(availableEspeces); requestFocus.requestFocus(); NonTargetCatchDto tableEditBean = getTableEditBean(); @@ -321,9 +291,9 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, n("observe.nonTargetCatch.table.comment"), n("observe.nonTargetCatch.table.comment.tip")); - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SpeciesDto.class)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newDecorateTableCellRenderer(renderer, SpeciesFateDto.class)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newDecorateTableCellRenderer(renderer, ReasonForDiscardDto.class)); + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, SpeciesDto.class.getSimpleName())); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, SpeciesFateDto.class.getSimpleName())); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newDecorateTableCellRenderer(renderer, ReferenceDto.class, ReasonForDiscardDto.class.getSimpleName())); UIHelper.setTableColumnRenderer(table, 3, UIHelper.newEmptyNumberTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 4, UIHelper.newEmptyNumberTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 5, UIHelper.newEmptyNumberTableCellRenderer(renderer)); @@ -331,132 +301,84 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, UIHelper.setTableColumnRenderer(table, 7, UIHelper.newStringTableCellRenderer(renderer, 10, true)); } - //FIXME -// @Override -// protected boolean doSave(SetSeine bean, -// DataService dataService, -// DataSource dataSource, -// TopiaEntityBinder<SetSeine> binder) throws Exception { -// try { -// return super.doSave(bean, dataService, dataSource, binder); -// } finally { -// -// // toujours supprimer la référence du context, quoiqu'il arrive -// ALL_TAILLES_TO_DELETE_ENTRY.removeContextValue(getUi()); -// } -// } - - //FIXME -// @Override -// protected boolean prepareSave(SetSeine editBean, List<NonTargetCatch> objets) throws Exception { -// super.prepareSave(editBean, objets); -// -// List<Species> speciessUsed = getTableModel().getColumnValues(0); -// -// Collection<Species> speciessToDelete = new HashSet<Species>(); -// List<NonTargetLength> tailleToDelete = new ArrayList<NonTargetLength>(); -// -// getDataService().getObsoleteEspeceForNonTargetSample(getDataSource(), -// editBean.getTopiaId(), -// speciessUsed, -// speciessToDelete, -// tailleToDelete); -// -// if (!tailleToDelete.isEmpty()) { -// -// // il existe des echantillon faune a supprimer on demande une -// // confirmation -// StringBuilder sb = new StringBuilder(); -// StringBuilder sb2 = new StringBuilder(); -// Decorator<Species> decorator; -// Decorator<NonTargetLength> decorator2; -// decorator = getDecoratorService().getDecoratorByType(Species.class); -// decorator2 = getDecoratorService().getDecoratorByType(NonTargetLength.class); -// -// for (Species e : speciessToDelete) { -// sb.append(" - ").append(decorator.toString(e)).append('\n'); -// } -// for (NonTargetLength t : tailleToDelete) { -// sb2.append(" - ").append(decorator2.toString(t)).append('\n'); -// } -// int reponse = UIHelper.askUser( -// t("observe.title.need.confirm"), -// t("observe.nonTargetCatch.message.table.will.delete.nonTargetSample", sb.toString(), sb2.toString()), -// JOptionPane.ERROR_MESSAGE, -// new Object[]{ -// t("observe.choice.continue"), -// t("observe.choice.cancel")}, -// 0); -// if (log.isDebugEnabled()) { -// log.debug("response : " + reponse); -// } -// boolean canContinue = false; -// switch (reponse) { -// case 0: -// // wil reset ui -// canContinue = true; -// break; -// } -// if (!canContinue) { -// // l'utilisateur a choisi de ne pas continuer -// return false; -// } -// -// // on conserve les tailles a supprimer -// ALL_TAILLES_TO_DELETE_ENTRY.setContextValue(getUi(), tailleToDelete); -// } -// -// // mise a jour de la propriete nonTargetDiscarded -// -// boolean hasRejet = false; -// for (NonTargetCatch c : objets) { -// if (c.getReasonForDiscard() != null) { -// // on a trouve un rejet de faune -// hasRejet = true; -// break; -// } -// } -// editBean.setNonTargetDiscarded(hasRejet); -// -// return true; -// } - - //FIXME -// @Override -// protected void onUpdateFinalize(TopiaContext tx, SetSeine bean, Collection<NonTargetCatch> oldChilds) { -// -// List<NonTargetLength> tailleToDelete = -// ALL_TAILLES_TO_DELETE_ENTRY.getContextValue(getUi()); -// -// if (tailleToDelete != null && !tailleToDelete.isEmpty()) { -// -// // on a demande la suppression de taille obsoletes -// -// if (log.isInfoEnabled()) { -// log.info("Will remove " + tailleToDelete.size() + -// " obsolete nonTargetSample(s)."); -// } -// -// NonTargetSample echantillon = bean.getNonTargetSample().get(0); -// -// // on supprime les echantillons obsoletes -// echantillon.getNonTargetLength().removeAll(tailleToDelete); -// } -// } + @Override + protected boolean prepareSave(SetSeineNonTargetCatchDto editBean, List<NonTargetCatchDto> objets) throws Exception { + super.prepareSave(editBean, objets); + + //on cherche si parmis les captures supprimer certaines ont des échantillon + SetSeineNonTargetCatchDto originalSetSeineNonTargetCatchDto = getModel().getFormDto().getForm(); + + Set<ReferentialReferenceDto<SpeciesDto>> speciesToDelete = Sets.newHashSet(); + + for (NonTargetCatchDto nonTargetCatchDto : originalSetSeineNonTargetCatchDto.getNonTargetCatch()) { + + if (nonTargetCatchDto.isHasSample()) { + + ReferentialReferenceDto<SpeciesDto> species = nonTargetCatchDto.getSpecies(); + + Iterable<NonTargetCatchDto> currentTargetCatchSpecies = NonTargetCatchDtos.filterBySpecies(objets, species); + + if (Iterables.isEmpty(currentTargetCatchSpecies)) { + + speciesToDelete.add(species); + + } + } + + } + + if (!speciesToDelete.isEmpty()) { + + // il existe des echantillon faune a supprimer on demande une + // confirmation + StringBuilder sb = new StringBuilder(512); + Decorator<ReferenceDto> decorator = + getDecoratorService().getDecoratorByType(ReferenceDto.class, SpeciesDto.class.getSimpleName()); + + for (ReferentialReferenceDto<SpeciesDto> species : speciesToDelete) { + sb.append(" - ").append(decorator.toString(species)).append('\n'); + } + int reponse = UIHelper.askUser( + t("observe.title.need.confirm"), + t("observe.nonTargetCatch.message.table.will.delete.nonTargetSample", sb.toString()), + JOptionPane.ERROR_MESSAGE, + new Object[]{ + t("observe.choice.continue"), + t("observe.choice.cancel")}, + 0); + if (log.isDebugEnabled()) { + log.debug("response : " + reponse); + } + boolean canContinue = false; + switch (reponse) { + case 0: + // wil reset ui + canContinue = true; + break; + } + if (!canContinue) { + // l'utilisateur a choisi de ne pas continuer + return false; + } + } + + return true; + } @Override - protected void doPersist(SetSeineDto bean) { - getSetSeineService().save(getSelectedParentId(), bean); + protected void doPersist(SetSeineNonTargetCatchDto bean) { + getNonTargetCatchService().save(bean); } @Override protected void loadEditBean(String beanId) { - FormDto<SetSeineDto> formDto = getSetSeineService().loadToEdit(beanId); + String tripSeineId = getDataContext().getSelectedTripSeineId(); + FormDto<SetSeineNonTargetCatchDto> formDto = getNonTargetCatchService().loadToEdit(beanId, tripSeineId); getModel().setFormDto(formDto); - SetSeineDtos.copySetSeineDto(formDto.getForm(), getBean()); + SetSeineNonTargetCatchDtos.copySetSeineNonTargetCatchDto(formDto.getForm(), getBean()); } - protected SetSeineService getSetSeineService() { - return ObserveSwingApplicationContext.get().newService(SetSeineService.class); + protected NonTargetCatchService getNonTargetCatchService() { + return ObserveSwingApplicationContext.get().newService(NonTargetCatchService.class); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIModel.java index 494c67c..31fbc32 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIModel.java @@ -24,12 +24,15 @@ package fr.ird.observe.ui.content.table.impl.seine; import com.google.common.collect.Lists; import fr.ird.observe.services.dto.seine.NonTargetCatchDto; +import fr.ird.observe.services.dto.seine.NonTargetCatchDtos; import fr.ird.observe.services.dto.seine.SetSeineDto; +import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto; 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; /** @@ -38,36 +41,32 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since XXX */ -public class NonTargetCatchUIModel extends ContentTableUIModel<SetSeineDto, NonTargetCatchDto> { +public class NonTargetCatchUIModel extends ContentTableUIModel<SetSeineNonTargetCatchDto, NonTargetCatchDto> { private static final long serialVersionUID = 1L; public NonTargetCatchUIModel(NonTargetCatchUI ui) { - super(SetSeineDto.class, + super(SetSeineNonTargetCatchDto.class, NonTargetCatchDto.class, new String[]{ - //FIXME -// SetSeineDto.PROPERTY_NON_TARGET_CATCH, - SetSeineDto.PROPERTY_NON_TARGET_DISCARDED}, + SetSeineNonTargetCatchDto.PROPERTY_NON_TARGET_CATCH}, new String[]{ - //FIXME -// NonTargetCatchDto.PROPERTY_SPECIES, - NonTargetCatchDto.PROPERTY_CATCH_WEIGHT, - NonTargetCatchDto.PROPERTY_TOTAL_COUNT, - NonTargetCatchDto.PROPERTY_MEAN_WEIGHT, - NonTargetCatchDto.PROPERTY_MEAN_LENGTH, - NonTargetCatchDto.PROPERTY_REASON_FOR_DISCARD, - NonTargetCatchDto.PROPERTY_SPECIES_FATE, - NonTargetCatchDto.PROPERTY_TOTAL_COUNT_COMPUTED_SOURCE, - NonTargetCatchDto.PROPERTY_MEAN_WEIGHT_COMPUTED_SOURCE, - NonTargetCatchDto.PROPERTY_CATCH_WEIGHT_COMPUTED_SOURCE, - NonTargetCatchDto.PROPERTY_MEAN_LENGTH_COMPUTED_SOURCE, - NonTargetCatchDto.PROPERTY_COMMENT + NonTargetCatchDto.PROPERTY_SPECIES, + NonTargetCatchDto.PROPERTY_CATCH_WEIGHT, + NonTargetCatchDto.PROPERTY_TOTAL_COUNT, + NonTargetCatchDto.PROPERTY_MEAN_WEIGHT, + NonTargetCatchDto.PROPERTY_MEAN_LENGTH, + NonTargetCatchDto.PROPERTY_REASON_FOR_DISCARD, + NonTargetCatchDto.PROPERTY_SPECIES_FATE, + NonTargetCatchDto.PROPERTY_TOTAL_COUNT_COMPUTED_SOURCE, + NonTargetCatchDto.PROPERTY_MEAN_WEIGHT_COMPUTED_SOURCE, + NonTargetCatchDto.PROPERTY_CATCH_WEIGHT_COMPUTED_SOURCE, + NonTargetCatchDto.PROPERTY_MEAN_LENGTH_COMPUTED_SOURCE, + NonTargetCatchDto.PROPERTY_COMMENT }); List<ContentTableMeta<NonTargetCatchDto>> metas = Lists.newArrayList( - //FIXME -// ContentTableModel.newTableMeta(NonTargetCatchDto.class, NonTargetCatchDto.PROPERTY_SPECIES, false), + ContentTableModel.newTableMeta(NonTargetCatchDto.class, NonTargetCatchDto.PROPERTY_SPECIES, false), ContentTableModel.newTableMeta(NonTargetCatchDto.class, NonTargetCatchDto.PROPERTY_SPECIES_FATE, false), ContentTableModel.newTableMeta(NonTargetCatchDto.class, NonTargetCatchDto.PROPERTY_REASON_FOR_DISCARD, false), ContentTableModel.newTableMeta(NonTargetCatchDto.class, NonTargetCatchDto.PROPERTY_CATCH_WEIGHT, false), @@ -81,8 +80,25 @@ public class NonTargetCatchUIModel extends ContentTableUIModel<SetSeineDto, NonT } @Override - protected ContentTableModel<SetSeineDto, NonTargetCatchDto> createTableModel(ObserveContentTableUI<SetSeineDto, NonTargetCatchDto> ui, List<ContentTableMeta<NonTargetCatchDto>> contentTableMetas) { - // FIXME - return null; + protected ContentTableModel<SetSeineNonTargetCatchDto, NonTargetCatchDto> createTableModel( + ObserveContentTableUI<SetSeineNonTargetCatchDto, NonTargetCatchDto> ui, + List<ContentTableMeta<NonTargetCatchDto>> contentTableMetas) { + + return new ContentTableModel<SetSeineNonTargetCatchDto, NonTargetCatchDto>(ui, contentTableMetas) { + @Override + protected Collection<NonTargetCatchDto> getChilds(SetSeineNonTargetCatchDto bean) { + return bean.getNonTargetCatch(); + } + + @Override + protected void load(NonTargetCatchDto source, NonTargetCatchDto target) { + NonTargetCatchDtos.copyNonTargetCatchDto(source, target); + } + + @Override + protected void setChilds(SetSeineNonTargetCatchDto parent, List<NonTargetCatchDto> childs) { + bean.setNonTargetCatch(childs); + } + }; } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetCatchServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetCatchServiceController.java index b1eaade..c79da89 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetCatchServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetCatchServiceController.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.SetSeineNonTargetCatchDto; import fr.ird.observe.services.service.seine.NonTargetCatchService; @@ -42,12 +43,12 @@ public class NonTargetCatchServiceController extends ObserveAuthenticatedService } @Override - public FormDto<SetSeineNonTargetCatchDto> loadToEdit(String setSeineId) { - return service.loadToEdit(setSeineId); + public FormDto<SetSeineNonTargetCatchDto> loadToEdit(String setSeineId, String tripSeineId) { + return service.loadToEdit(setSeineId, tripSeineId); } @Override - public String save(FormDto<SetSeineNonTargetCatchDto> form) { - return service.save(form); + public SaveResultDto save(SetSeineNonTargetCatchDto dto) { + return service.save(dto); } } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/seine/NonTargetLenghts.java b/observe-entities/src/main/java/fr/ird/observe/entities/seine/NonTargetLenghts.java new file mode 100644 index 0000000..2ec9994 --- /dev/null +++ b/observe-entities/src/main/java/fr/ird/observe/entities/seine/NonTargetLenghts.java @@ -0,0 +1,20 @@ +package fr.ird.observe.entities.seine; + +import com.google.common.base.Function; +import fr.ird.observe.entities.referentiel.Species; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class NonTargetLenghts { + + public static Function<NonTargetLength, Species> getSpeciesFunction() { + return new Function<NonTargetLength, Species>() { + @Override + public Species apply(NonTargetLength input) { + return input.getSpecies(); + } + }; + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.java index fd79793..2bbb108 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchService.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.SetSeineNonTargetCatchDto; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; @@ -39,10 +40,10 @@ public interface NonTargetCatchService extends ObserveService { FormDto<SetSeineNonTargetCatchDto> loadToRead(String setSeineId); @WriteDataPermission - FormDto<SetSeineNonTargetCatchDto> loadToEdit(String setSeineId); + FormDto<SetSeineNonTargetCatchDto> loadToEdit(String setSeineId, String tripSeineId); @Write @WriteDataPermission @PostRequest - String save(FormDto<SetSeineNonTargetCatchDto> form); + SaveResultDto save(SetSeineNonTargetCatchDto dto); } diff --git a/observe-services-model/src/main/xmi/observe-services-dto-seine.properties b/observe-services-model/src/main/xmi/observe-services-dto-seine.properties index f1a1fda..cb3e6f8 100644 --- a/observe-services-model/src/main/xmi/observe-services-dto-seine.properties +++ b/observe-services-model/src/main/xmi/observe-services-dto-seine.properties @@ -58,6 +58,7 @@ fr.ird.observe.services.dto.seine.NonTargetLength.attribute.species.tagValue.sim fr.ird.observe.services.dto.seine.NonTargetCatch.attribute.reasonForDiscard.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto fr.ird.observe.services.dto.seine.NonTargetCatch.attribute.speciesFate.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.seine.SpeciesFateDto +fr.ird.observe.services.dto.seine.NonTargetCatch.attribute.species.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.SpeciesDto fr.ird.observe.services.dto.seine.FloatingObject.attribute.objectType.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.seine.ObjectTypeDto fr.ird.observe.services.dto.seine.FloatingObject.attribute.objectOperation.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.seine.ObjectOperationDto 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 40098fe..7a50a18 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 @@ -1450,6 +1450,7 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { NonTargetCatchDto.PROPERTY_TOTAL_COUNT, NonTargetCatchDto.PROPERTY_TOTAL_COUNT_COMPUTED_SOURCE, NonTargetCatchDto.PROPERTY_SPECIES_FATE, + NonTargetCatchDto.PROPERTY_SPECIES, NonTargetCatchDto.PROPERTY_REASON_FOR_DISCARD ); } 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 da14a86..7d19cc2 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 @@ -13,6 +13,7 @@ import fr.ird.observe.entities.referentiel.ReferenceEntity; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.referentiel.Vessel; import fr.ird.observe.entities.referentiel.Vessels; +import fr.ird.observe.entities.seine.NonTargetCatch; import fr.ird.observe.entities.seine.ObjectObservedSpecies; import fr.ird.observe.entities.seine.ObjectSchoolEstimate; import fr.ird.observe.entities.seine.SchoolEstimate; @@ -105,6 +106,14 @@ public class EntitiesSetFactory { TargetCatchImpl.PROPERTY_SPECIES, speciesListConfiguration.getSpeciesListSeineTargetCatchId()); + // NonTargetCatch + registerSpeciesListEntitiesSet(builder, + NonTargetCatch.class, + NonTargetCatch.PROPERTY_SPECIES, + speciesListConfiguration.getSpeciesListSeineNonTargetCatchId()); + + + this.cache = builder.build(); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java index 4aee275..74e5811 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java @@ -22,14 +22,32 @@ package fr.ird.observe.services.service.seine; * #L% */ +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; +import fr.ird.observe.entities.referentiel.Ocean; +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.seine.NonTargetCatch; +import fr.ird.observe.entities.seine.NonTargetLenghts; +import fr.ird.observe.entities.seine.NonTargetLength; +import fr.ird.observe.entities.seine.NonTargetSample; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.entities.seine.TargetCatchs; +import fr.ird.observe.entities.seine.TripSeine; 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.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; +import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.dto.result.SaveResultDtos; import fr.ird.observe.services.dto.seine.NonTargetCatchDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import org.nuiton.topia.persistence.TopiaEntities; + +import java.util.Set; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -47,27 +65,101 @@ public class NonTargetCatchServiceTopia extends ObserveServiceTopia implements N } @Override - public FormDto<SetSeineNonTargetCatchDto> loadToEdit(String setSeineId) { + public FormDto<SetSeineNonTargetCatchDto> loadToEdit(String setSeineId, String tripSeineId) { SetSeine setSeine = loadEntity(SetSeineNonTargetCatchDto.class, SetSeine.class, setSeineId); + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + Ocean ocean = tripSeine.getOcean(); + FormDto<SetSeineNonTargetCatchDto> form = entityToEditFormDto( SetSeineNonTargetCatchDto.class, SetSeine.class, setSeine, + ImmutableMap.<String, Object>of(Species.PROPERTY_OCEAN, ocean), + new ReferenceTypeName(NonTargetCatchDto.class, SpeciesDto.class, NonTargetCatchDto.PROPERTY_SPECIES), new ReferenceTypeName(NonTargetCatchDto.class, SpeciesFateDto.class, NonTargetCatchDto.PROPERTY_SPECIES_FATE), new ReferenceTypeName(NonTargetCatchDto.class, ReasonForDiscardDto.class, NonTargetCatchDto.PROPERTY_REASON_FOR_DISCARD)); + SetSeineNonTargetCatchDto setSeineNonTargetCatchDto = form.getForm(); + + // on cherche si il y a des échantillons sur les captures + if (setSeine.sizeNonTargetCatch() > 0) { + NonTargetSample nonTargetSample = Iterables.get(setSeine.getNonTargetSample(), 0); + + if (nonTargetSample != null) { + + Iterable<Species> speciesSamples = Iterables.transform( + nonTargetSample.getNonTargetLength(), + NonTargetLenghts.getSpeciesFunction()); + + Set<String> speciesSampleIds = Sets.newHashSet(Iterables.transform(speciesSamples, TopiaEntities.getTopiaIdFunction())); + + for (NonTargetCatchDto nonTargetCatchDto : setSeineNonTargetCatchDto.getNonTargetCatch()) { + + boolean hasSample = speciesSampleIds.contains(nonTargetCatchDto.getSpecies().getId()); + + nonTargetCatchDto.setHasSample(hasSample); + } + + } + } + + return form; } @Override - public String save(FormDto<SetSeineNonTargetCatchDto> form) { + public SaveResultDto save(SetSeineNonTargetCatchDto dto) { + + SetSeine setSeine = dtoToEntity(SetSeineNonTargetCatchDto.class, SetSeine.class, dto); + + // mise a jour de la propriete nonTargetDiscarded + + boolean hasRejet = false; + for (NonTargetCatch nonTargetCatch : setSeine.getNonTargetCatch()) { + if (nonTargetCatch.getReasonForDiscard() != null) { + // on a trouve un rejet de faune + hasRejet = true; + break; + } + } + setSeine.setNonTargetDiscarded(hasRejet); + + + // on supprime les échantillons qui ne correspondent plus a des capture + if (setSeine.sizeNonTargetCatch() > 0) { + NonTargetSample nonTargetSample = Iterables.get(setSeine.getNonTargetSample(), 0); + + Set<Species> speciesCatchs = Sets.newHashSet(Iterables.transform( + setSeine.getTargetCatch(), + TargetCatchs.getSpeciesFunction())); + + Set<NonTargetLength> nonTargetLengthToDelete = Sets.newHashSet(); + + if (nonTargetSample != null) { + + for (NonTargetLength nonTargetLength : nonTargetSample.getNonTargetLength()) { + + if (!speciesCatchs.contains(nonTargetLength.getSpecies())) { + + nonTargetLengthToDelete.add(nonTargetLength); + + } + } + + for (NonTargetLength NonTargetLength : nonTargetLengthToDelete) { + + nonTargetSample.removeNonTargetLength(NonTargetLength); + + } - SetSeine setSeine = dtoToEntity(SetSeineNonTargetCatchDto.class, SetSeine.class, form.getForm()); + } + } setSeine = saveEntity(SetSeine.class, setSeine); - 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 d928d248e49c637c93ef843069a24696d129300c Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 11:23:18 2015 +0200 merge du model suite au rebase sur develop (refs #7609) --- .../table/impl/seine/NonTargetCatchUIHandler.java | 9 --------- .../src/main/xmi/observe-services-dto-seine.zargo | Bin 61461 -> 61805 bytes 2 files changed, 9 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java index 2d864f0..0d3e5f9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -36,14 +36,12 @@ import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; import fr.ird.observe.services.dto.seine.NonTargetCatchDto; import fr.ird.observe.services.dto.seine.NonTargetCatchDtos; -import fr.ird.observe.services.dto.seine.NonTargetLengthDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDtos; import fr.ird.observe.services.service.seine.NonTargetCatchService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; -import jaxx.runtime.context.JAXXContextEntryDef; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; @@ -69,13 +67,6 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineNonTa /** Logger */ static private Log log = LogFactory.getLog(NonTargetCatchUIHandler.class); - /** l'entrée dans le contexte pour récupérer la liste complete des speciess */ - protected final JAXXContextEntryDef<List<SpeciesDto>> ALL_ESPECES_ENTRY = - UIHelper.newListContextEntryDef("NonTargetCatchUI-all-speciess"); - - protected final JAXXContextEntryDef<List<NonTargetLengthDto>> ALL_TAILLES_TO_DELETE_ENTRY = - UIHelper.newListContextEntryDef("NonTargetCatchUI-all-taille-to-delete"); - /** * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getTotalCount()}, * et repasser alors le flag {@link NonTargetCatchDto#getTotalCountComputedSource()} à 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 b801974..15adf22 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 -- 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 3a84c63696a65a7b197099a652d3522a129370ce Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 11:43:35 2015 +0200 ajout des validateurs (refs #7609) --- .../content/table/impl/seine/NonTargetCatchUI.jaxx | 2 +- ...onTargetCatchDto-n1-update-error-validation.xml | 150 +++++++++++++++++++++ ...TargetCatchDto-n1-update-warning-validation.xml | 91 +++++++++++++ ...onTargetCatchDto-n1-update-error-validation.xml | 42 ++++++ 4 files changed, 284 insertions(+), 1 deletion(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx index cea2797..b9d95ad 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUI.jaxx @@ -69,7 +69,7 @@ <BeanValidator id='validator' beanClass='fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto' errorTableModel='{getErrorTableModel()}' - context='n1-update-nonTargetCatch'> + context='n1-update'> <!-- clef unique --> <field name="nonTargetCatch" component="editorPanel"/> </BeanValidator> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-error-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-error-validation.xml new file mode 100644 index 0000000..a2b886b --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-error-validation.xml @@ -0,0 +1,150 @@ +<?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.nonTargetCatch.comment.tobig</message> + </field-validator> + + <!-- comment requis selone la speciesFate selectionne --> + + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ (comment != null && !comment.empty) || speciesFate == null || !speciesFate.needComment ]]></param> + <message>validator.nonTargetCatch.required.comment.for.speciesFate</message> + </field-validator> + + <!-- comment requis selone la reasonForDiscard selectionne --> + + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ (comment != null && !comment.empty) || reasonForDiscard == null || !reasonForDiscard.needComment ]]></param> + <message>validator.nonTargetCatch.required.comment.for.reasonForDiscard</message> + </field-validator> + + </field> + + <field name="species"> + + <!-- pas de species selectionnee --> + <field-validator type="required" short-circuit="true"> + <message>validator.nonTargetCatch.required.species</message> + </field-validator> + + <!-- species desactive --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ species.enabled ]]> + </param> + <message>validator.nonTargetCatch.desactivated.species</message> + </field-validator> + + </field> + + <field name="speciesFate"> + + <!-- pas de objectFate species selectionnee --> + <field-validator type="required" short-circuit="true"> + <message>validator.nonTargetCatch.required.speciesFate</message> + </field-validator> + + <!-- speciesFate desactive --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ speciesFate.enabled ]]> + </param> + <message>validator.nonTargetCatch.desactivated.speciesFate</message> + </field-validator> + + </field> + + <field name="reasonForDiscard"> + + <!-- reasonForDiscard desactive --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ reasonForDiscard == null || reasonForDiscard.enabled ]]> + </param> + <message>validator.nonTargetCatch.desactivated.reasonForDiscard</message> + </field-validator> + + </field> + + <field name="catchWeight"> + + <!-- au moins un des deux valeurs catchWeight / totalCount doit etre renseignee --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ catchWeight != null || totalCount != null ]]> + </param> + <message>validator.nonTargetCatch.required.weightOrNombreEstime</message> + </field-validator> + + </field> + + <field name="totalCount"> + + <!-- au moins un des deux valeurs catchWeight / totalCount doit etre renseignee --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ catchWeight != null || totalCount != null ]]> + </param> + <message>validator.nonTargetCatch.required.weightOrNombreEstime</message> + </field-validator> + + </field> + + <field name="meanWeight"> + + <!-- weight moyen non renseignée ou > 0 --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ meanWeight == null || meanWeight > 0 ]]> + </param> + <message>validator.nonTargetCatch.positive.meanWeight</message> + </field-validator> + + </field> + + <field name="meanLength"> + + <!-- taille moyenne non renseignée ou > 0 --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ meanLength == null || meanLength > 0 ]]> + </param> + <message>validator.nonTargetCatch.positive.meanLength</message> + </field-validator> + + </field> + +</validators> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml new file mode 100644 index 0000000..1cfbfdc --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml @@ -0,0 +1,91 @@ +<?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="catchWeight"> + + <!-- weight estimé non renseigné ou 0.0 < poids estime <= 400.0 --> + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:400.0</param> + <param name="expression"> + <![CDATA[ catchWeight == null || (doubles.min < catchWeight && catchWeight <= doubles.max)]]> + </param> + <message>validator.nonTargetCatch.bound.catchWeight##${doubles.min}##${doubles.max}</message> + </field-validator> + + </field> + + <field name="totalCount"> + + <!-- count estimé non renseigné ou 0 < nombre estime <= 10000 --> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:0|max:10000</param> + <param name="expression"> + <![CDATA[ totalCount == null || (ints.min < totalCount && totalCount <= ints.max)]]> + </param> + <message>validator.nonTargetCatch.bound.totalCount##${ints.min}##${ints.max}</message> + </field-validator> + + </field> + + <field name="meanWeight"> + + <!-- au moins un des deux valeurs meanWeight / meanLength doit etre renseignee --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ meanWeight != null || meanLength != null ]]> + </param> + <message>validator.nonTargetCatch.required.weightOrTailleMoyen</message> + </field-validator> + + <!-- validation du weight par borne --> + <field-validator type="species_weight"> + <param name="ratio">1.0</param> + <message>validator.nonTargetCatch.bound.meanWeight##${min}##${max}</message> + </field-validator> + + </field> + + <field name="meanLength"> + + <!-- au moins un des deux valeurs meanWeight / meanLength doit etre renseignee --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ meanWeight != null || meanLength != null ]]> + </param> + <message>validator.nonTargetCatch.required.weightOrTailleMoyen</message> + </field-validator> + + <!-- validation de la taille par borne --> + <field-validator type="species_length"> + <param name="ratio">1.0</param> + <message>validator.nonTargetCatch.bound.meanLength##${min}##${max}</message> + </field-validator> + + </field> + +</validators> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineNonTargetCatchDto-n1-update-error-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineNonTargetCatchDto-n1-update-error-validation.xml new file mode 100644 index 0000000..2d04e6a --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineNonTargetCatchDto-n1-update-error-validation.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Validation + %% + Copyright (C) 2008 - 2013 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="nonTargetCatch"> + + <!-- clef unique sur la espèce - objectFate --> + + <field-validator type="collectionFieldExpression"> + <param name="mode">UNIQUE_KEY</param> + <param name="keys">species.id,speciesFate.id</param> + <message>validator.nonTargetCatch.uniqueKey</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 4785ad74f2440b5f223963b6ddf1d79605f289dd Merge: 81b289e 3a84c63 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 11:43:54 2015 +0200 Merge branch 'feature/7609' into develop .../content/table/impl/seine/NonTargetCatchUI.css | 9 +- .../content/table/impl/seine/NonTargetCatchUI.jaxx | 17 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 281 +++++++-------------- .../table/impl/seine/NonTargetCatchUIModel.java | 62 +++-- ...onTargetCatchDto-n1-update-error-validation.xml | 150 +++++++++++ ...TargetCatchDto-n1-update-warning-validation.xml | 91 +++++++ ...onTargetCatchDto-n1-update-error-validation.xml | 42 +++ .../v1/seine/NonTargetCatchServiceController.java | 9 +- .../observe/entities/seine/NonTargetLenghts.java | 20 ++ .../service/seine/NonTargetCatchService.java | 5 +- .../main/xmi/observe-services-dto-seine.properties | 1 + .../src/main/xmi/observe-services-dto-seine.zargo | Bin 61461 -> 61805 bytes .../services/dto/ObserveDtosInitializer.java | 1 + .../services/entity/EntitiesSetFactory.java | 9 + .../service/seine/NonTargetCatchServiceTopia.java | 100 +++++++- 15 files changed, 565 insertions(+), 232 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