Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 2a50ac8c by Tony CHEMIT at 2017-07-25T11:11:10+02:00 Mieux filtrer les espèces sensibles (See #794) - - - - - 6 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java - application-web/src/main/filtered-resources/mapping - services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/NonTargetCatchReleaseServiceTopia.java - services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java - services/src/main/java/fr/ird/observe/services/service/data/seine/NonTargetCatchReleaseService.java - services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java @@ -45,11 +45,9 @@ import fr.ird.observe.services.dto.seine.NonTargetCatchReleaseStatusDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchReleaseDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchReleaseHelper; import fr.ird.observe.services.service.data.seine.NonTargetCatchReleaseService; -import fr.ird.observe.services.service.data.seine.NonTargetSampleService; import fr.ird.observe.services.service.referential.ReferentialService; import java.beans.PropertyChangeListener; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -59,7 +57,6 @@ import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.TreeMap; -import java.util.stream.Collectors; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JPopupMenu; @@ -111,7 +108,6 @@ public class NonTargetCatchReleaseUIHandler extends ContentTableUIHandler<SetSei private void updateSpecies(ReferentialReference<SpeciesDto> species, List<NonTargetCatchReleaseStatusDto> states) { - ReferentialReference<SpeciesDto> oldSpecies = getTableEditBean().getSpecies(); JPanel statesContent = getUi().getStatesContent(); statesContent.removeAll(); @@ -205,24 +201,17 @@ public class NonTargetCatchReleaseUIHandler extends ContentTableUIHandler<SetSei bean.removePropertyChangeListener(NonTargetCatchReleaseDto.PROPERTY_SPECIES, speciesChanged); bean.addPropertyChangeListener(NonTargetCatchReleaseDto.PROPERTY_SPECIES, speciesChanged); - log.info("Focus to "+requestFocus.getName()); + log.info("Focus to " + requestFocus.getName()); UIHelper.askFocus(requestFocus); } - private static final List<String> SPECIES_GROUP_IDS = Arrays.asList( - "fr.ird.observe.entities.referentiel.SpeciesGroup#1445863056144#0.9820877553253712", - "fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461", - "fr.ird.observe.entities.referentiel.SpeciesGroup#1446014286433#0.6480183366605247", - "fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683689#0.7120116158620075" - ); - @Override public void afterInit(NonTargetCatchReleaseUI ui) { super.afterInit(ui); speciesGroupDtoMap = new TreeMap<>(); - SPECIES_GROUP_IDS.forEach(id -> speciesGroupDtoMap.put(id, getReferentialService().loadSpeciesGroup(id))); + getReferentialService().loadSensibleSpeciesGroup().forEach(id -> speciesGroupDtoMap.put(id.getId(), id)); ui.getDetectionTime().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); ui.getReleaseTime().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); @@ -303,9 +292,9 @@ public class NonTargetCatchReleaseUIHandler extends ContentTableUIHandler<SetSei case NonTargetCatchReleaseDto.PROPERTY_SPECIES: { - Collection<ReferentialReference<SpeciesDto>> sampleSpecies = getNonTargetSampleService().getSampleSpecies(getSelectedParentId()); + Collection<ReferentialReference<SpeciesDto>> sampleSpecies = getNonTargetCatchReleaseService().getSampleSpecies(getSelectedParentId()); - result = (Collection) sampleSpecies.stream().filter(s -> SPECIES_GROUP_IDS.contains(s.getPropertyValue(SpeciesDto.PROPERTY_SPECIES_GROUP + "Id"))).collect(Collectors.toList()); + result = new LinkedList(sampleSpecies); if (log.isDebugEnabled()) { log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); @@ -329,10 +318,6 @@ public class NonTargetCatchReleaseUIHandler extends ContentTableUIHandler<SetSei return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); } - private NonTargetSampleService getNonTargetSampleService() { - return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newNonTargetSampleService(); - } - public void moveCatchLonglineUp() { int selectedRow = getUi().getTable().getSelectedRow(); getTableModel().moveUp(selectedRow); ===================================== application-web/src/main/filtered-resources/mapping ===================================== --- a/application-web/src/main/filtered-resources/mapping +++ b/application-web/src/main/filtered-resources/mapping @@ -163,6 +163,7 @@ GET /api/v1/data/seine/FloatingObjectService/loadReferenceToRead GET /api/v1/data/seine/FloatingObjectService/preCreate v1.data.seine.FloatingObjectServiceRestApi.preCreate POST /api/v1/data/seine/FloatingObjectService/save v1.data.seine.FloatingObjectServiceRestApi.save POST /api/v1/data/seine/FloatingObjectService/save v1.data.seine.FloatingObjectServiceRestApi.save +GET /api/v1/data/seine/NonTargetCatchReleaseService/getSampleSpecies v1.data.seine.NonTargetCatchReleaseServiceRestApi.getSampleSpecies GET /api/v1/data/seine/NonTargetCatchReleaseService/loadForm v1.data.seine.NonTargetCatchReleaseServiceRestApi.loadForm POST /api/v1/data/seine/NonTargetCatchReleaseService/save v1.data.seine.NonTargetCatchReleaseServiceRestApi.save GET /api/v1/data/seine/NonTargetCatchService/loadForm v1.data.seine.NonTargetCatchServiceRestApi.loadForm @@ -229,6 +230,7 @@ GET /api/v1/referential/ReferentialService/getReferentialReferenceSets POST /api/v1/referential/ReferentialService/insertMissingReferentials v1.referential.ReferentialServiceRestApi.insertMissingReferentials GET /api/v1/referential/ReferentialService/loadForm v1.referential.ReferentialServiceRestApi.loadForm GET /api/v1/referential/ReferentialService/loadReference v1.referential.ReferentialServiceRestApi.loadReference +GET /api/v1/referential/ReferentialService/loadSensibleSpeciesGroup v1.referential.ReferentialServiceRestApi.loadSensibleSpeciesGroup GET /api/v1/referential/ReferentialService/loadSpecies v1.referential.ReferentialServiceRestApi.loadSpecies GET /api/v1/referential/ReferentialService/loadSpeciesGroup v1.referential.ReferentialServiceRestApi.loadSpeciesGroup GET /api/v1/referential/ReferentialService/preCreate v1.referential.ReferentialServiceRestApi.preCreate ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/NonTargetCatchReleaseServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/NonTargetCatchReleaseServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/NonTargetCatchReleaseServiceTopia.java @@ -22,12 +22,22 @@ package fr.ird.observe.services.topia.service.data.seine; * #L% */ +import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; +import fr.ird.observe.entities.seine.NonTargetCatch; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.form.Form; +import fr.ird.observe.services.dto.reference.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.dto.seine.SetSeineDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchReleaseDto; import fr.ird.observe.services.service.data.seine.NonTargetCatchReleaseService; import fr.ird.observe.services.topia.ObserveServiceTopia; +import fr.ird.observe.services.topia.service.referential.ReferentialServiceTopia; +import java.util.Collection; +import java.util.stream.Collectors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -39,6 +49,26 @@ public class NonTargetCatchReleaseServiceTopia extends ObserveServiceTopia imple private static final Log log = LogFactory.getLog(NonTargetCatchReleaseServiceTopia.class); @Override + public Collection<ReferentialReference<SpeciesDto>> getSampleSpecies(String setSeineId) { + if (log.isTraceEnabled()) { + log.trace("getSampleSpecies(" + setSeineId + ")"); + } + + SetSeine setSeine = loadEntity(SetSeineDto.class, setSeineId); + + ReferentialBinderSupport<ObserveReferentialEntity, SpeciesDto> speciesBinder = getReferentialBinder(SpeciesDto.class); + + ReferentialLocale referentialLocale = getReferentialLocale(); + + return setSeine.getNonTargetCatch().stream() + .map(NonTargetCatch::getSpecies) + .distinct() + .filter(s-> ReferentialServiceTopia.SPECIES_GROUP_IDS.contains(s.getSpeciesGroup().getTopiaId())) + .map(s -> speciesBinder.toReferentialReference(referentialLocale, s)) + .collect(Collectors.toList()); + } + + @Override public Form<SetSeineNonTargetCatchReleaseDto> loadForm(String setSeineId) { if (log.isTraceEnabled()) { log.trace("loadForm(" + setSeineId + ")"); ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java @@ -61,6 +61,7 @@ import fr.ird.observe.services.service.sql.AddSqlScriptProducerResult; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.services.topia.service.actions.synchro.referential.sql.ReplaceSqlStatementGenerator; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -82,6 +83,12 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; public class ReferentialServiceTopia extends ObserveServiceTopia implements ReferentialService { private static final Log log = LogFactory.getLog(ReferentialServiceTopia.class); + public static final List<String> SPECIES_GROUP_IDS = Arrays.asList( + "fr.ird.observe.entities.referentiel.SpeciesGroup#1445863056144#0.9820877553253712", + "fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461", + "fr.ird.observe.entities.referentiel.SpeciesGroup#1446014286433#0.6480183366605247", + "fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683689#0.7120116158620075" + ); @Override public <D extends ReferentialDto> ReferentialReferenceSet<D> getReferenceSet(Class<D> type, Date lastUpdateDate) { @@ -161,6 +168,20 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe } @Override + public ImmutableSet<SpeciesGroupDto> loadSensibleSpeciesGroup() { + if (log.isTraceEnabled()) { + log.trace("loadSensibleSpeciesGroup()"); + } + + ImmutableSet.Builder<SpeciesGroupDto> result = ImmutableSet.builder(); + + for (String speciesGroupId : SPECIES_GROUP_IDS) { + result.add(loadSpeciesGroup(speciesGroupId)); + } + return result.build(); + } + + @Override public <D extends ReferentialDto> Form<D> loadForm(Class<D> type, String id) { if (log.isTraceEnabled()) { log.trace("loadForm(" + type.getName() + ", " + id + ")"); ===================================== services/src/main/java/fr/ird/observe/services/service/data/seine/NonTargetCatchReleaseService.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/data/seine/NonTargetCatchReleaseService.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/seine/NonTargetCatchReleaseService.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.service.data.seine; * #L% */ +import fr.ird.observe.services.dto.reference.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.service.ObserveService; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.result.SaveResultDto; @@ -31,6 +33,7 @@ import io.ultreia.java4all.http.spi.Post; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; +import java.util.Collection; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -39,6 +42,10 @@ public interface NonTargetCatchReleaseService extends ObserveService { @Get @ReadDataPermission + Collection<ReferentialReference<SpeciesDto>> getSampleSpecies(String setSeineId); + + @Get + @ReadDataPermission Form<SetSeineNonTargetCatchReleaseDto> loadForm(String setSeineId); @Write ===================================== services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java +++ b/services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java @@ -72,6 +72,10 @@ public interface ReferentialService extends ObserveService { @ReadReferentialPermission @Get + ImmutableSet<SpeciesGroupDto> loadSensibleSpeciesGroup(); + + @ReadReferentialPermission + @Get <R extends ReferentialDto> Form<R> loadForm(Class<R> type, String id) throws DataNotFoundException; @Get View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2a50ac8c34d6330e1ac011a272e1... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2a50ac8c34d6330e1ac011a272e1... You're receiving this email because of your account on gitlab.com.