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