This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit d2a2f30b5f13687adec07d8eceaa3697faabff8a Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Feb 12 16:12:14 2015 +0100 On introduit un nouveau filtre caché pour la société (testable-client #6641) --- .../src/main/java/fr/ifremer/wao/SampleRowsFilter.java | 14 ++++++++++++++ .../src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java | 3 ++- .../main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java | 5 +++++ .../fr/ifremer/wao/services/service/ContactsService.java | 12 +++--------- .../wao/services/service/SampleRowsFilterValues.java | 11 +++++++++++ .../ifremer/wao/services/service/SamplingPlanService.java | 10 +++------- 6 files changed, 38 insertions(+), 17 deletions(-) diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java b/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java index d0db199..f634ae6 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java @@ -71,6 +71,8 @@ public class SampleRowsFilter extends AbstractWaoFilter { protected Set<String> terrestrialDistrictIds; + protected Set<String> organisationCompanyIds; + protected Set<String> organisationIds; protected Set<String> species; @@ -185,6 +187,14 @@ public class SampleRowsFilter extends AbstractWaoFilter { this.organisationIds = organisationIds; } + public Set<String> getOrganisationCompanyIds() { + return organisationCompanyIds; + } + + public void setOrganisationCompanyIds(Set<String> organisationCompanyIds) { + this.organisationCompanyIds = organisationCompanyIds; + } + public Set<String> getSpecies() { return species; } @@ -241,6 +251,7 @@ public class SampleRowsFilter extends AbstractWaoFilter { || CollectionUtils.isNotEmpty(samplingStrategies) || CollectionUtils.isNotEmpty(terrestrialDistrictIds) || CollectionUtils.isNotEmpty(organisationIds) + || CollectionUtils.isNotEmpty(organisationCompanyIds) || CollectionUtils.isNotEmpty(species) || CollectionUtils.isNotEmpty(sclerochronologySamplingContexts) || CollectionUtils.isNotEmpty(individualMeasurementStrategies) @@ -270,6 +281,7 @@ public class SampleRowsFilter extends AbstractWaoFilter { && WaoUtils.isEqualCollection(samplingStrategies, that.samplingStrategies) && WaoUtils.isEqualCollection(terrestrialDistrictIds, that.terrestrialDistrictIds) && WaoUtils.isEqualCollection(organisationIds, that.organisationIds) + && WaoUtils.isEqualCollection(organisationCompanyIds, that.organisationCompanyIds) && WaoUtils.isEqualCollection(species, that.species) && WaoUtils.isEqualCollection(sclerochronologySamplingContexts, that.sclerochronologySamplingContexts) && WaoUtils.isEqualCollection(individualMeasurementStrategies, that.individualMeasurementStrategies) @@ -301,6 +313,7 @@ public class SampleRowsFilter extends AbstractWaoFilter { hashCode = 31 * hashCode + WaoUtils.collectionHashCode(samplingStrategies); hashCode = 31 * hashCode + WaoUtils.collectionHashCode(terrestrialDistrictIds); hashCode = 31 * hashCode + WaoUtils.collectionHashCode(organisationIds); + hashCode = 31 * hashCode + WaoUtils.collectionHashCode(organisationCompanyIds); hashCode = 31 * hashCode + WaoUtils.collectionHashCode(species); hashCode = 31 * hashCode + WaoUtils.collectionHashCode(sclerochronologySamplingContexts); hashCode = 31 * hashCode + WaoUtils.collectionHashCode(individualMeasurementStrategies); @@ -325,6 +338,7 @@ public class SampleRowsFilter extends AbstractWaoFilter { clone.samplingStrategies = samplingStrategies == null ? null : new HashSet<>(samplingStrategies); clone.terrestrialDistrictIds = terrestrialDistrictIds == null ? null : new HashSet<>(terrestrialDistrictIds); clone.organisationIds = organisationIds == null ? null : new HashSet<>(organisationIds); + clone.organisationCompanyIds = organisationCompanyIds == null ? null : new HashSet<>(organisationCompanyIds); clone.species = species == null ? null : new HashSet<>(species); clone.sclerochronologySamplingContexts = sclerochronologySamplingContexts == null ? null : new HashSet<>(sclerochronologySamplingContexts); clone.individualMeasurementStrategies = individualMeasurementStrategies == null ? null : new HashSet<>(individualMeasurementStrategies); diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java index ab7c231..b718e24 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java @@ -149,7 +149,8 @@ public class BoatTopiaDao extends AbstractBoatTopiaDao<Boat> { || CollectionUtils.isNotEmpty(filter.getElligibleForSampleRowsFilter().getTargetSpeciesDcfIds()) || CollectionUtils.isNotEmpty(filter.getElligibleForSampleRowsFilter().getSamplingStrategies()) || CollectionUtils.isNotEmpty(filter.getElligibleForSampleRowsFilter().getTerrestrialDistrictIds()) - || CollectionUtils.isNotEmpty(filter.getElligibleForSampleRowsFilter().getOrganisationIds()); + || CollectionUtils.isNotEmpty(filter.getElligibleForSampleRowsFilter().getOrganisationIds()) + || CollectionUtils.isNotEmpty(filter.getElligibleForSampleRowsFilter().getOrganisationCompanyIds()); return filled; } } diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java index c5ed534..892b4bd 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java @@ -104,6 +104,11 @@ public class SampleRowTopiaDao extends AbstractSampleRowTopiaDao<SampleRow> { query.addTopiaIdIn(SampleRow.PROPERTY_ORGANISATION, filter.getOrganisationIds()); } + if (CollectionUtils.isNotEmpty(filter.getOrganisationCompanyIds())) { + query.addWhereClause("sr.organisation.topiaId in (:organisationCompanyIds) or sr.organisation.company in (:organisationCompanyIds)", + ImmutableMap.of("organisationCompanyIds", (Object) filter.getOrganisationCompanyIds())); + } + if (CollectionUtils.isNotEmpty(filter.getSamplingStrategies())) { query.addIn(SampleRow.PROPERTY_SAMPLING_STRATEGY, filter.getSamplingStrategies()); } diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java index a097e2a..17ec820 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java @@ -26,7 +26,6 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.cache.Cache; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import fr.ifremer.wao.ContactsFilter; import fr.ifremer.wao.WaoTechnicalException; @@ -72,7 +71,6 @@ import org.nuiton.csv.ImportModel; import org.nuiton.csv.ImportRow; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.i18n.I18n; -import org.nuiton.topia.persistence.TopiaEntities; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep; import org.nuiton.util.DateUtil; @@ -111,13 +109,9 @@ public class ContactsService extends WaoServiceSupport { // quand on appartient à une organisation (société ou labo), par défaut on ne peut voir // que les lignes de la société : si on appartient à la même société mais des labos différents // on a accès aux infos des autres labos - Organisation organisationToFilterOn = authenticatedWaoUser.getOrganisation().getCompany(); - ImmutableSet<String> organisationIds = ImmutableSet.of(organisationToFilterOn.getTopiaId()); - if (obsProgram.isSclerochronology()) { - Set<Organisation> organisations = getOrganisationsService().getOrganisationsBelongingsTo(organisationToFilterOn); - organisationIds = ImmutableSet.copyOf(Iterables.transform(organisations, TopiaEntities.getTopiaIdFunction())); - } - newContactsFilter.getSampleRowFilter().setOrganisationIds(organisationIds); + Organisation companyToFilterOn = authenticatedWaoUser.getOrganisation().getCompany(); + ImmutableSet<String> companyIds = ImmutableSet.of(companyToFilterOn.getTopiaId()); + newContactsFilter.getSampleRowFilter().setOrganisationCompanyIds(companyIds); } if (authenticatedWaoUser.isProfessional()) { diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java index cd3fd41..7892ef7 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java @@ -56,6 +56,8 @@ public class SampleRowsFilterValues extends AbstractFilterValues { protected SortedSet<FilterOption> organisations = new TreeSet<>(); + protected SortedSet<FilterOption> organisationCompanies = new TreeSet<>(); + protected SortedSet<FilterOption> samplingStrategies = new TreeSet<>(); protected SortedSet<FilterOption> terrestrialDistricts = new TreeSet<>(); @@ -117,6 +119,7 @@ public class SampleRowsFilterValues extends AbstractFilterValues { Organisation organisation = sampleRow.getOrganisation(); if (organisation != null) { organisations.add(FilterOption.forValueAndLabel(organisation.getTopiaId(), organisation.getFullName())); + organisationCompanies.add(FilterOption.forValueAndLabel(organisation.getCompany().getTopiaId(), organisation.getCompany().getFullName())); } if (obsProgram.isObsVente()) { samplingStrategies.add(FilterOption.forEnum(locale, sampleRow.getSamplingStrategy())); @@ -187,6 +190,10 @@ public class SampleRowsFilterValues extends AbstractFilterValues { return organisations; } + public SortedSet<FilterOption> getOrganisationCompanies() { + return organisationCompanies; + } + public SortedSet<FilterOption> getSamplingStrategies() { return samplingStrategies; } @@ -239,6 +246,10 @@ public class SampleRowsFilterValues extends AbstractFilterValues { this.organisations = organisations; } + public void setOrganisationCompanies(SortedSet<FilterOption> organisationCompanies) { + this.organisationCompanies = organisationCompanies; + } + public void setSamplingStrategies(SortedSet<FilterOption> samplingStrategies) { this.samplingStrategies = samplingStrategies; } diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlanService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlanService.java index 978fc9a..acbbed4 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlanService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlanService.java @@ -201,13 +201,9 @@ public class SamplingPlanService extends WaoServiceSupport { // quand on appartient à une organisation (société ou labo), par défaut on ne peut voir // que les lignes de la société : si on appartient à la même société mais des labos différents // on a accès aux infos des autres labos - Organisation organisationToFilterOn = authenticatedWaoUser.getOrganisation().getCompany(); - ImmutableSet<String> organisationIds = ImmutableSet.of(organisationToFilterOn.getTopiaId()); - if (obsProgram.isSclerochronology()) { - Set<Organisation> organisations = getOrganisationsService().getOrganisationsBelongingsTo(organisationToFilterOn); - organisationIds = ImmutableSet.copyOf(Iterables.transform(organisations, TopiaEntities.getTopiaIdFunction())); - } - newFilter.setOrganisationIds(organisationIds); + Organisation companyToFilterOn = authenticatedWaoUser.getOrganisation().getCompany(); + ImmutableSet<String> companyIds = ImmutableSet.of(companyToFilterOn.getTopiaId()); + newFilter.setOrganisationCompanyIds(companyIds); } return newFilter; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.