branch develop updated (9be563d -> 232a048)
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 9be563d fixes #7610 : ecrans des referentiels communs new c3275fb Migration de l'écran des estimations sur la calée (refs #7603) new 9ff2298 mise en place de la validation (refs #7603) new 232a048 Merge branch 'feature/7603' 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 232a048d72c55a2c6a35a862bc6084fa909290e9 Merge: 9be563d 9ff2298 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Oct 16 16:50:27 2015 +0200 Merge branch 'feature/7603' into develop commit 9ff22984b0ebe2a8cbbdd8b61c5b33cda699002e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Oct 16 16:49:46 2015 +0200 mise en place de la validation (refs #7603) commit c3275fbd8c93d769f620e9d2cb3dbc77c09b0c7a Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Oct 16 16:34:08 2015 +0200 Migration de l'écran des estimations sur la calée (refs #7603) Summary of changes: .../content/table/impl/seine/SchoolEstimateUI.jaxx | 13 ++- .../table/impl/seine/SchoolEstimateUIHandler.java | 116 +++++++-------------- .../table/impl/seine/SchoolEstimateUIModel.java | 45 +++++--- ...choolEstimateDto-n1-update-error-validation.xml | 2 +- ...choolEstimateDto-n1-update-error-validation.xml | 2 +- .../v1/seine/SchoolEstimateServiceController.java | 8 +- .../ird/observe/entities/referentiel/Species2.java | 28 +++-- .../observe/entities/referentiel/SpeciesLists.java | 2 + .../service/seine/SchoolEstimateService.java | 4 +- .../java/fr/ird/observe/services/dto/IdDtos.java | 13 +++ .../ird/observe/services/ObserveServiceTopia.java | 20 +++- .../ird/observe/services/entity/EntitiesSet.java | 19 +--- .../services/entity/ObserveEntitiesFilters.java | 5 + .../services/entity/SpeciesListEntitiesSet.java | 11 +- .../entity/SpeciesListOceanEntitiesSet.java | 39 +++++++ .../services/entity/UniverseEntitiesSet.java | 13 ++- .../service/seine/SchoolEstimateServiceTopia.java | 16 ++- 17 files changed, 215 insertions(+), 141 deletions(-) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/SchoolEstimate-n1-update-error-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml (95%) copy observe-entities-validation/src/main/resources/fr/ird/observe/entities/seine/SetSeine-n1-update-schoolEstimate-error-validation.xml => observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineSchoolEstimateDto-n1-update-error-validation.xml (97%) create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesSet.java -- 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 c3275fbd8c93d769f620e9d2cb3dbc77c09b0c7a Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Oct 16 16:34:08 2015 +0200 Migration de l'écran des estimations sur la calée (refs #7603) --- .../content/table/impl/seine/SchoolEstimateUI.jaxx | 11 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 116 +++++++-------------- .../table/impl/seine/SchoolEstimateUIModel.java | 45 +++++--- .../v1/seine/SchoolEstimateServiceController.java | 8 +- .../ird/observe/entities/referentiel/Species2.java | 28 +++-- .../observe/entities/referentiel/SpeciesLists.java | 2 + .../service/seine/SchoolEstimateService.java | 4 +- .../java/fr/ird/observe/services/dto/IdDtos.java | 13 +++ .../ird/observe/services/ObserveServiceTopia.java | 20 +++- .../ird/observe/services/entity/EntitiesSet.java | 19 +--- .../services/entity/ObserveEntitiesFilters.java | 5 + .../services/entity/SpeciesListEntitiesSet.java | 11 +- .../entity/SpeciesListOceanEntitiesSet.java | 39 +++++++ .../services/entity/UniverseEntitiesSet.java | 13 ++- .../service/seine/SchoolEstimateServiceTopia.java | 16 ++- 15 files changed, 212 insertions(+), 138 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx index 35e64fd..d9cf3da 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx @@ -21,7 +21,7 @@ --> <fr.ird.observe.ui.content.table.ContentTableUI - superGenericType='SetSeineDto, SchoolEstimateDto' + superGenericType='SetSeineSchoolEstimateDto, SchoolEstimateDto' contentTitle='{n("observe.common.schoolEstimate")}' @@ -33,7 +33,7 @@ <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.SetSeineSchoolEstimateDto fr.ird.observe.services.dto.seine.SchoolEstimateDto fr.ird.observe.services.dto.referential.SpeciesDto fr.ird.observe.ui.content.table.* @@ -54,7 +54,7 @@ <SchoolEstimateUIModel id='model' constructorParams='this'/> <!-- edit bean --> - <SetSeineDto id='bean'/> + <SetSeineSchoolEstimateDto id='bean'/> <!-- table edit bean --> <SchoolEstimateDto id='tableEditBean'/> @@ -65,12 +65,11 @@ <!-- le validateur de l'écran --> <BeanValidator id='validator' autoField='true' - beanClass='fr.ird.observe.services.dto.seine.SetSeineDto' + beanClass='fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDto' errorTableModel='{getErrorTableModel()}' context='n1-update-schoolEstimate'> <!-- clef unique --> - <!--FIXME--> - <!--<field name="schoolEstimate" component="editorPanel"/>--> + <field name="schoolEstimate" 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/SchoolEstimateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java index 1a4d8f2..e77c910 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java @@ -21,25 +21,35 @@ */ package fr.ird.observe.ui.content.table.impl.seine; +import com.google.common.base.Predicates; +import com.google.common.collect.Collections2; +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.IdDtos; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.seine.SchoolEstimateDto; -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.SetSeineSchoolEstimateDto; +import fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDtos; +import fr.ird.observe.services.service.seine.SchoolEstimateService; 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 javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; +import java.util.Collection; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.n; @@ -47,14 +57,11 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 1.0 */ -public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineDto, SchoolEstimateDto> { +public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineSchoolEstimateDto, SchoolEstimateDto> { /** Logger */ static private Log log = LogFactory.getLog(SchoolEstimateUIHandler.class); - JAXXContextEntryDef<List<SpeciesDto>> ALL_ESPECES_ENTRY = - UIHelper.newListContextEntryDef("SchoolEstimateUI-all-speciess"); - public SchoolEstimateUIHandler(SchoolEstimateUI ui) { super(ui, DataContextType.SetSeine); } @@ -69,47 +76,10 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineDto, return getDataContext().getSelectedSetId(); } - //FIXME -// @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()); -// -// // get all species from the configured speciesList -// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); -// String speciesListId = config.getSpeciesListSeineSchoolEstimateId(); -// -// 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, SchoolEstimateDto bean, boolean create) { - ContentTableModel<SetSeineDto, SchoolEstimateDto> model = getTableModel(); + ContentTableModel<SetSeineSchoolEstimateDto, SchoolEstimateDto> model = getTableModel(); if (!model.isEditable()) { @@ -118,28 +88,26 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineDto, } SchoolEstimateUI ui = getUi(); - //FIXME -// List<Species> availableEspeces; + Set<ReferenceDto<SpeciesDto>> availableEspeces; JComponent requestFocus; if (create) { - //FIXME -// availableEspeces = new ArrayList<Species>( -// ALL_ESPECES_ENTRY.getContextValue(ui)); -// -// List<Species> list = model.getColumnValues(0); -// availableEspeces.removeAll(list); -// list.clear(); + ReferenceSetDto<SpeciesDto> referenceSetDto = getModel().getFormDto().getReferenceSetDto(SpeciesDto.class); + Set<ReferenceDto<SpeciesDto>> references = (Set) referenceSetDto.getReference(); + + List<ReferentialReferenceDto<SpeciesDto>> listSpeciesUsed = model.getColumnValues(0); + + Collection<String> listSpeciesIdUsed = Collections2.transform(listSpeciesUsed, IdDtos.getIdFunction()); + + availableEspeces = Sets.newHashSet(Iterables.filter(references, Predicates.not(IdDtos.newIdsPredicate(listSpeciesIdUsed)))); requestFocus = ui.getSpecies(); } else { - //FIXME -// Species species = bean.getSpecies(); -// availableEspeces = Arrays.asList(species); + ReferenceDto<SpeciesDto> species = bean.getSpecies(); + availableEspeces = Sets.newHashSet(species); requestFocus = ui.getTotalWeight(); } - //FIXME -// ui.getSpecies().setData(availableEspeces); + ui.getSpecies().setData(Lists.newArrayList(availableEspeces)); requestFocus.requestFocus(); } @@ -156,37 +124,25 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineDto, n("observe.schoolEstimate.table.meanWeight"), n("observe.schoolEstimate.table.meanWeight.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.newEmptyNumberTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); } @Override - protected boolean prepareSave(SetSeineDto editBean, List<SchoolEstimateDto> objets) { - - for (SchoolEstimateDto schoolEstimate : objets) { - - // on attache la set - //FIXME -// schoolEstimate.setSetSeine(editBean); - } - - return true; - } - - @Override - protected void doPersist(SetSeineDto bean) { - getSetSeineService().save(getSelectedParentId(), bean); + protected void doPersist(SetSeineSchoolEstimateDto bean) { + getSchoolEstimateService().save(bean); } @Override protected void loadEditBean(String beanId) { - FormDto<SetSeineDto> formDto = getSetSeineService().loadToEdit(beanId); + String tripSeineId = getDataContext().getSelectedTripSeineId(); + FormDto<SetSeineSchoolEstimateDto> formDto = getSchoolEstimateService().loadToEdit(beanId, tripSeineId); getModel().setFormDto(formDto); - SetSeineDtos.copySetSeineDto(formDto.getForm(), getBean()); + SetSeineSchoolEstimateDtos.copySetSeineSchoolEstimateDto(formDto.getForm(), getBean()); } - protected SetSeineService getSetSeineService() { - return ObserveSwingApplicationContext.get().newService(SetSeineService.class); + protected SchoolEstimateService getSchoolEstimateService() { + return ObserveSwingApplicationContext.get().newService(SchoolEstimateService.class); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIModel.java index 600eee5..c210868 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIModel.java @@ -24,12 +24,14 @@ package fr.ird.observe.ui.content.table.impl.seine; import com.google.common.collect.Lists; import fr.ird.observe.services.dto.seine.SchoolEstimateDto; -import fr.ird.observe.services.dto.seine.SetSeineDto; +import fr.ird.observe.services.dto.seine.SchoolEstimateDtos; +import fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDto; 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,24 +40,22 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since XXX */ -public class SchoolEstimateUIModel extends ContentTableUIModel<SetSeineDto, SchoolEstimateDto> { +public class SchoolEstimateUIModel extends ContentTableUIModel<SetSeineSchoolEstimateDto, SchoolEstimateDto> { private static final long serialVersionUID = 1L; public SchoolEstimateUIModel(SchoolEstimateUI ui) { - super(SetSeineDto.class, + super(SetSeineSchoolEstimateDto.class, SchoolEstimateDto.class, new String[]{ - //FIXME -// SetSeineDto.PROPERTY_SCHOOL_ESTIMATE, - SetSeineDto.PROPERTY_COMMENT}, + SetSeineSchoolEstimateDto.PROPERTY_SCHOOL_ESTIMATE, + SetSeineSchoolEstimateDto.PROPERTY_COMMENT}, new String[]{ - //FIXME -// SchoolEstimateDto.PROPERTY_SET_SEINE, - SchoolEstimateDto.PROPERTY_SPECIES, - SchoolEstimateDto.PROPERTY_TOTAL_WEIGHT, - SchoolEstimateDto.PROPERTY_MEAN_WEIGHT}); + SchoolEstimateDto.PROPERTY_SPECIES, + SchoolEstimateDto.PROPERTY_TOTAL_WEIGHT, + SchoolEstimateDto.PROPERTY_MEAN_WEIGHT} + ); List<ContentTableMeta<SchoolEstimateDto>> metas = Lists.newArrayList( ContentTableModel.newTableMeta(SchoolEstimateDto.class, SchoolEstimateDto.PROPERTY_SPECIES, false), @@ -67,8 +67,25 @@ public class SchoolEstimateUIModel extends ContentTableUIModel<SetSeineDto, Scho } @Override - protected ContentTableModel<SetSeineDto, SchoolEstimateDto> createTableModel(ObserveContentTableUI<SetSeineDto, SchoolEstimateDto> ui, List<ContentTableMeta<SchoolEstimateDto>> contentTableMetas) { - // FIXME - return null; + protected ContentTableModel<SetSeineSchoolEstimateDto, SchoolEstimateDto> createTableModel( + ObserveContentTableUI<SetSeineSchoolEstimateDto, SchoolEstimateDto> ui, + List<ContentTableMeta<SchoolEstimateDto>> contentTableMetas) { + + return new ContentTableModel<SetSeineSchoolEstimateDto, SchoolEstimateDto>(ui, contentTableMetas) { + @Override + protected Collection<SchoolEstimateDto> getChilds(SetSeineSchoolEstimateDto bean) { + return bean.getSchoolEstimate(); + } + + @Override + protected void load(SchoolEstimateDto source, SchoolEstimateDto target) { + SchoolEstimateDtos.copySchoolEstimateDto(source, target); + } + + @Override + protected void setChilds(SetSeineSchoolEstimateDto parent, List<SchoolEstimateDto> childs) { + bean.setSchoolEstimate(childs); + } + }; } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/SchoolEstimateServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/SchoolEstimateServiceController.java index 7f29119..8ddbc10 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/SchoolEstimateServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/SchoolEstimateServiceController.java @@ -42,12 +42,12 @@ public class SchoolEstimateServiceController extends ObserveAuthenticatedService } @Override - public FormDto<SetSeineSchoolEstimateDto> loadToEdit(String setSeineId) { - return service.loadToEdit(setSeineId); + public FormDto<SetSeineSchoolEstimateDto> loadToEdit(String setSeineId, String tripSeineId) { + return service.loadToEdit(setSeineId, tripSeineId); } @Override - public String save(FormDto<SetSeineSchoolEstimateDto> form) { - return service.save(form); + public String save(SetSeineSchoolEstimateDto dto) { + return service.save(dto); } } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/Species2.java b/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/Species2.java index d80a2d6..971a471 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/Species2.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/Species2.java @@ -55,16 +55,14 @@ public class Species2 { return new SpeciesBySpeciesListPredicate(speciesList); } - public static <E extends Species> List<E> filterByOcean(Collection<E> speciess, - final Ocean ocean) { + public static Predicate<Species> newSpeciesByOceanPredicate(Ocean ocean) { + return new SpeciesByOceanPredicate(ocean); + } - return Lists.newArrayList(Iterables.filter(speciess, new Predicate<E>() { + public static <E extends Species> List<E> filterByOcean(Collection<E> speciess, + Ocean ocean) { - @Override - public boolean apply(E input) { - return input.getOcean().contains(ocean); - } - })); + return Lists.newArrayList(Iterables.filter(speciess, newSpeciesByOceanPredicate(ocean))); } public static List<WeightCategory> filterWeightCategoryBySpeciesIds(Collection<WeightCategory> speciess, @@ -134,6 +132,20 @@ public class Species2 { } } + private static class SpeciesByOceanPredicate implements Predicate<Species> { + + private final Ocean ocean; + + public SpeciesByOceanPredicate(Ocean ocean) { + this.ocean = ocean; + } + + @Override + public boolean apply(Species input) { + return input.containsOcean(ocean); + } + } + private static class SpeciesBySpeciesListPredicate implements Predicate<Species> { private final SpeciesList speciesList; diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/SpeciesLists.java b/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/SpeciesLists.java index 57752d4..5f563b7 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/SpeciesLists.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/referentiel/SpeciesLists.java @@ -10,4 +10,6 @@ public class SpeciesLists { public static String SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID = "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.2"; + public static String SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID = "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.1"; + } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java index 65333be..f384280 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateService.java @@ -39,11 +39,11 @@ public interface SchoolEstimateService extends ObserveService { FormDto<SetSeineSchoolEstimateDto> loadToRead(String setSeineId); @WriteDataPermission - FormDto<SetSeineSchoolEstimateDto> loadToEdit(String setSeineId); + FormDto<SetSeineSchoolEstimateDto> loadToEdit(String setSeineId, String tripSeineId); @Write @WriteDataPermission @PostRequest - String save(FormDto<SetSeineSchoolEstimateDto> form); + String save(SetSeineSchoolEstimateDto dto); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java index 380ae37..dbe5376 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java @@ -22,8 +22,11 @@ package fr.ird.observe.services.dto; * #L% */ +import com.google.common.base.Predicate; import com.google.common.collect.Iterables; +import java.util.Collection; + public class IdDtos extends AbstractIdDtos { public static <BeanType extends IdDto> BeanType findById(Iterable<BeanType> source, String id) { @@ -38,4 +41,14 @@ public class IdDtos extends AbstractIdDtos { return id.contains("Longline"); } + public static <BeanType extends IdDto> Predicate<BeanType> newIdsPredicate(final Collection<String> ids) { + return new Predicate<BeanType>() { + + @Override + public boolean apply(BeanType input) { + return ids.contains(input.getId()) ; + } + }; + } + } //IdDtos diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index 741cddc..a7f8a1a 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -330,6 +330,16 @@ public class ObserveServiceTopia implements ObserveService { Class<E> entityType, E entity, ReferenceTypeName... includeReferenceDtoTypesNames) { + return entityToEditFormDto(dtoType, entityType, entity, ImmutableMap.<String, Object>of(), includeReferenceDtoTypesNames); + + } + + protected <E extends TopiaEntity, D extends IdDto> FormDto<D> entityToEditFormDto( + Class<D> dtoType, + Class<E> entityType, + E entity, + Map<String, Object> dataContext, + ReferenceTypeName... includeReferenceDtoTypesNames) { try (EntityToDtoBuilder<E, D> dtoBuilder = EntityToDtoBuilder.create(entityType, dtoType)) { @@ -360,7 +370,8 @@ public class ObserveServiceTopia implements ObserveService { filter.getDtoType(), filter.getPropertyName(), filter.getEntityType(), - filter.getEntitiesSet()); + filter.getEntitiesSet(), + dataContext); labels.add(referenceSet); } FormDto<D> form = FormDtos.newFormDto(dtoType, dto, labels.build()); @@ -428,7 +439,7 @@ public class ObserveServiceTopia implements ObserveService { protected <D extends IdDto> ReferenceSetDto<D> getReferenceSet(Class<D> dtoType) { Class<TopiaEntity> entityType = getEntityType(dtoType); - return getReferenceSet(dtoType, null, entityType, null); + return getReferenceSet(dtoType, null, entityType, null, ImmutableMap.<String, Object>of()); } @@ -436,7 +447,8 @@ public class ObserveServiceTopia implements ObserveService { Class<D> dtoType, String propertyName, Class<E> entityType, - EntitiesSet<E> entitiesSet) { + EntitiesSet<E> entitiesSet, + Map<String, Object> dataContext) { Iterable<E> entities; @@ -445,7 +457,7 @@ public class ObserveServiceTopia implements ObserveService { entities = loadEntities(entityType); } else { - entities = entitiesSet.getEntities(serviceContext.getTopiaPersistenceContext()); + entities = entitiesSet.getEntities(serviceContext.getTopiaPersistenceContext(), dataContext); } LinkedHashSet<ReferenceDto<D>> labels = new LinkedHashSet<>(); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSet.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSet.java index 6b57f17..6ddaab4 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSet.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/EntitiesSet.java @@ -5,29 +5,20 @@ import com.google.common.collect.Iterables; import fr.ird.observe.ObserveTopiaPersistenceContext; import org.nuiton.topia.persistence.TopiaEntity; +import java.util.Map; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ public abstract class EntitiesSet<E extends TopiaEntity> { - protected final Predicate<E> filter; - - public EntitiesSet(Predicate<E> filter) { - this.filter = filter; - } - - public EntitiesSet() { - this.filter = null; - } - protected abstract Iterable<E> getEntitiesSetBase(ObserveTopiaPersistenceContext persistenceContext); - public Predicate<E> getFilter() { - return filter; - } + protected abstract Predicate<E> getFilter(Map<String, Object> requestContext); - public Iterable<E> getEntities(ObserveTopiaPersistenceContext persistenceContext) { + public Iterable<E> getEntities(ObserveTopiaPersistenceContext persistenceContext, Map<String, Object> requestContext) { Iterable<E> result = getEntitiesSetBase(persistenceContext); + Predicate<E> filter = getFilter(requestContext); if (filter != null) { result = Iterables.filter(result, filter); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/ObserveEntitiesFilters.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/ObserveEntitiesFilters.java index d26a74b..e20afce 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/ObserveEntitiesFilters.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/ObserveEntitiesFilters.java @@ -15,6 +15,7 @@ import fr.ird.observe.entities.referentiel.Vessel; import fr.ird.observe.entities.referentiel.Vessels; import fr.ird.observe.entities.seine.ObjectObservedSpecies; import fr.ird.observe.entities.seine.ObjectSchoolEstimate; +import fr.ird.observe.entities.seine.SchoolEstimate; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.services.dto.IdDto; import org.nuiton.topia.persistence.TopiaEntity; @@ -133,6 +134,10 @@ public class ObserveEntitiesFilters { ObjectObservedSpecies.PROPERTY_SPECIES, new SpeciesListEntitiesSet(ReferenceEntities.<Species>newEnablePredicate(), SpeciesLists.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID)); + addFilter(SchoolEstimate.class, + SchoolEstimate.PROPERTY_SPECIES, + new SpeciesListOceanEntitiesSet(ReferenceEntities.<Species>newEnablePredicate(), SpeciesLists.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID)); + } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesSet.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesSet.java index 3b6a54b..abd3858 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesSet.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListEntitiesSet.java @@ -6,6 +6,8 @@ import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.referentiel.SpeciesList; import fr.ird.observe.entities.referentiel.SpeciesListTopiaDao; +import java.util.Map; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -13,8 +15,10 @@ public class SpeciesListEntitiesSet extends EntitiesSet<Species> { protected final String speciesListId; + protected final Predicate<Species> filter; + public SpeciesListEntitiesSet(Predicate<Species> filter, String speciesListId) { - super(filter); + this.filter = filter; this.speciesListId = speciesListId; } @@ -24,4 +28,9 @@ public class SpeciesListEntitiesSet extends EntitiesSet<Species> { SpeciesList speciesList = speciesListDao.forTopiaIdEquals(speciesListId).findUnique(); return speciesList.getSpecies(); } + + @Override + protected Predicate<Species> getFilter(Map<String, Object> requestContext) { + return filter; + } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesSet.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesSet.java new file mode 100644 index 0000000..fcf1ed7 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/SpeciesListOceanEntitiesSet.java @@ -0,0 +1,39 @@ +package fr.ird.observe.services.entity; + +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import fr.ird.observe.entities.referentiel.Ocean; +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.referentiel.Species2; + +import java.util.Map; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class SpeciesListOceanEntitiesSet extends SpeciesListEntitiesSet { + + public SpeciesListOceanEntitiesSet(Predicate<Species> filter, String speciesListId) { + super(filter, speciesListId); + } + + @Override + protected Predicate<Species> getFilter(Map<String, Object> requestContext) { + Predicate<Species> filter = super.getFilter(requestContext); + + Ocean ocean = (Ocean) requestContext.get(Species.PROPERTY_OCEAN); + + if (ocean != null) { + Predicate<Species> oceanFilter = Species2.newSpeciesByOceanPredicate(ocean); + + if (filter == null) { + filter = oceanFilter; + } else { + filter = Predicates.and(filter, oceanFilter); + } + + } + + return filter; + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/UniverseEntitiesSet.java b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/UniverseEntitiesSet.java index 239d0d5..5a1f61f 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/entity/UniverseEntitiesSet.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/entity/UniverseEntitiesSet.java @@ -5,6 +5,8 @@ import fr.ird.observe.ObserveTopiaPersistenceContext; import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; +import java.util.Map; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -12,13 +14,15 @@ public class UniverseEntitiesSet<E extends TopiaEntity> extends EntitiesSet<E> { protected final Class<E> entityClass; + protected final Predicate<E> filter; + public UniverseEntitiesSet(Class<E> entityClass, Predicate<E> filter) { - super(filter); + this.filter = filter; this.entityClass = entityClass; } public UniverseEntitiesSet(Class<E> entityClass) { - super(); + this.filter = null; this.entityClass = entityClass; } @@ -27,4 +31,9 @@ public class UniverseEntitiesSet<E extends TopiaEntity> extends EntitiesSet<E> { return dao.findAll(); } + @Override + protected Predicate<E> getFilter(Map<String, Object> requestContext) { + return filter; + } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java index 1ffa6e7..f75d1b9 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java @@ -22,13 +22,18 @@ package fr.ird.observe.services.service.seine; * #L% */ +import com.google.common.collect.ImmutableMap; +import fr.ird.observe.entities.referentiel.Ocean; +import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.SetSeine; +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.seine.SchoolEstimateDto; import fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -45,23 +50,28 @@ public class SchoolEstimateServiceTopia extends ObserveServiceTopia implements S } @Override - public FormDto<SetSeineSchoolEstimateDto> loadToEdit(String setSeineId) { + public FormDto<SetSeineSchoolEstimateDto> loadToEdit(String setSeineId, String tripSeineId) { SetSeine setSeine = loadEntity(SetSeineSchoolEstimateDto.class, SetSeine.class, setSeineId); + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + Ocean ocean = tripSeine.getOcean(); + FormDto<SetSeineSchoolEstimateDto> form = entityToEditFormDto( SetSeineSchoolEstimateDto.class, SetSeine.class, setSeine, + ImmutableMap.<String, Object>of(Species.PROPERTY_OCEAN, ocean), new ReferenceTypeName(SchoolEstimateDto.class, SpeciesDto.class, SchoolEstimateDto.PROPERTY_SPECIES)); return form; } @Override - public String save(FormDto<SetSeineSchoolEstimateDto> form) { + public String save(SetSeineSchoolEstimateDto dto) { - SetSeine setSeine = dtoToEntity(SetSeineSchoolEstimateDto.class, SetSeine.class, form.getForm()); + SetSeine setSeine = dtoToEntity(SetSeineSchoolEstimateDto.class, SetSeine.class, dto); setSeine = saveEntity(SetSeine.class, setSeine); -- 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 9ff22984b0ebe2a8cbbdd8b61c5b33cda699002e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Oct 16 16:49:46 2015 +0200 mise en place de la validation (refs #7603) --- .../content/table/impl/seine/SchoolEstimateUI.jaxx | 2 +- ...choolEstimateDto-n1-update-error-validation.xml | 76 ++++++++++++++++++++++ ...choolEstimateDto-n1-update-error-validation.xml | 65 ++++++++++++++++++ 3 files changed, 142 insertions(+), 1 deletion(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx index d9cf3da..685f865 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUI.jaxx @@ -67,7 +67,7 @@ autoField='true' beanClass='fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDto' errorTableModel='{getErrorTableModel()}' - context='n1-update-schoolEstimate'> + context='n1-update'> <!-- clef unique --> <field name="schoolEstimate" component="editorPanel"/> </BeanValidator> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml new file mode 100644 index 0000000..43e663a --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml @@ -0,0 +1,76 @@ +<?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.schoolEstimate.required.species</message> + </field-validator> + + <!-- species desactive --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ species.enabled ]]> + </param> + <message>validator.schoolEstimate.desactivated.species</message> + </field-validator> + + </field> + + <field name="totalWeight"> + + <!-- l'un des deux weight doit etre renseignee --> + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ (totalWeight !=null && totalWeight > 0) || (meanWeight !=null && meanWeight > 0) ]]> + </param> + <message>validator.schoolEstimate.required.weight</message> + </field-validator> + + </field> + + <field name="meanWeight"> + + <!-- l'un des deux weight doit etre renseignee --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ (totalWeight !=null && totalWeight > 0) || (meanWeight !=null && meanWeight > 0) ]]> + </param> + <message>validator.schoolEstimate.required.weight</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> + +</validators> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineSchoolEstimateDto-n1-update-error-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineSchoolEstimateDto-n1-update-error-validation.xml new file mode 100644 index 0000000..d33839f --- /dev/null +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SetSeineSchoolEstimateDto-n1-update-error-validation.xml @@ -0,0 +1,65 @@ +<?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.set.comment.tobig</message> + </field-validator> + + <!-- comment requis selon le type d'species indiquee dans les tailles thons choisi --> + + <field-validator type="collectionFieldExpression"> + + <param name="collectionFieldName">schoolEstimate</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.schoolEstimate.required.comment.for.species##${index}</message> + </field-validator> + + </field> + + <field name="schoolEstimate"> + + <!-- clef unique sur la species --> + + <field-validator type="collectionFieldExpression"> + + <param name="collectionFieldName">schoolEstimate</param> + <param name="mode">UNIQUE_KEY</param> + <param name="keys">species.Id</param> + <message>validator.schoolEstimate.species.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 232a048d72c55a2c6a35a862bc6084fa909290e9 Merge: 9be563d 9ff2298 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Oct 16 16:50:27 2015 +0200 Merge branch 'feature/7603' into develop .../content/table/impl/seine/SchoolEstimateUI.jaxx | 13 ++- .../table/impl/seine/SchoolEstimateUIHandler.java | 116 +++++++-------------- .../table/impl/seine/SchoolEstimateUIModel.java | 45 +++++--- ...choolEstimateDto-n1-update-error-validation.xml | 76 ++++++++++++++ ...choolEstimateDto-n1-update-error-validation.xml | 65 ++++++++++++ .../v1/seine/SchoolEstimateServiceController.java | 8 +- .../ird/observe/entities/referentiel/Species2.java | 28 +++-- .../observe/entities/referentiel/SpeciesLists.java | 2 + .../service/seine/SchoolEstimateService.java | 4 +- .../java/fr/ird/observe/services/dto/IdDtos.java | 13 +++ .../ird/observe/services/ObserveServiceTopia.java | 20 +++- .../ird/observe/services/entity/EntitiesSet.java | 19 +--- .../services/entity/ObserveEntitiesFilters.java | 5 + .../services/entity/SpeciesListEntitiesSet.java | 11 +- .../entity/SpeciesListOceanEntitiesSet.java | 39 +++++++ .../services/entity/UniverseEntitiesSet.java | 13 ++- .../service/seine/SchoolEstimateServiceTopia.java | 16 ++- 17 files changed, 354 insertions(+), 139 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