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 1305cc55a8346e69a5bdd0f8647365231adcd34d Author: Brendan Le Ny <bleny@codelutin.com> Date: Tue Jan 20 16:22:38 2015 +0100 On partage les informations entre laboratoires --- .../wao/services/service/ContactsService.java | 22 +++++++++++++--------- .../ifremer/wao/services/service/SamplingPlan.java | 2 +- .../wao/services/service/SamplingPlanService.java | 15 ++++++++------- .../SclerochronologySamplingPlanServiceTest.java | 2 +- 4 files changed, 23 insertions(+), 18 deletions(-) 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 17ebe9b..e0bfdeb 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,11 +26,13 @@ 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; import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.entity.Boat; +import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.Contact; import fr.ifremer.wao.entity.ContactImpl; import fr.ifremer.wao.entity.ContactState; @@ -70,6 +72,7 @@ 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; @@ -106,14 +109,15 @@ public class ContactsService extends WaoServiceSupport { // ATTENTION, il s'agit de sécu if (authenticatedWaoUser.isCoordinatorOrObserver()) { // quand on appartient à une organisation (société ou labo), par défaut on ne peut voir - // que les lignes de cette même organisation - Organisation organisationToFilterOn = authenticatedWaoUser.getOrganisation(); - if (obsProgram.isObsMer() || obsProgram.isObsVente()) { - // dans ce cas, on est plus souple : si on appartient à des labos différents mais à - // la même société, on peut voir tout ce qui concerne la société tous labos confondus - organisationToFilterOn = authenticatedWaoUser.getOrganisation().getCompany(); + // 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(ImmutableSet.of(organisationToFilterOn.getTopiaId())); + newContactsFilter.getSampleRowFilter().setOrganisationIds(organisationIds); } if (authenticatedWaoUser.isProfessional()) { @@ -1226,10 +1230,10 @@ public class ContactsService extends WaoServiceSupport { */ public SortedSet<WaoUser> getPossibleObservers(SampleRow sampleRow) { - Organisation organisation = sampleRow.getOrganisation(); + Company company = sampleRow.getOrganisation().getCompany(); Set<Organisation> organisationsUserMustBeInToBeAnObserver = - getOrganisationsService().getOrganisationsBelongingsTo(organisation); + getOrganisationsService().getOrganisationsBelongingsTo(company); TopiaQueryBuilderAddCriteriaOrRunQueryStep<WaoUser> query = getWaoUserDao().newQueryBuilder(); query.addIn(WaoUser.PROPERTY_ORGANISATION, organisationsUserMustBeInToBeAnObserver); diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlan.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlan.java index f287769..ac98069 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlan.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/SamplingPlan.java @@ -376,7 +376,7 @@ public abstract class SamplingPlan implements Iterable<SamplingPlan.SamplingPlan programName = sampleRow.getProgramName(); periodBegin = sampleRow.getPeriodBegin(); periodEnd = sampleRow.getPeriodEnd(); - companyName = sampleRow.getCompany().getName(); + companyName = sampleRow.getOrganisation().getName(); code = sampleRow.getCode(); Profession profession = sampleRow.getProfession(); if (profession != null) { 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 8c40446..435b15c 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 @@ -200,14 +200,15 @@ public class SamplingPlanService extends WaoServiceSupport { // ATTENTION, il s'agit de sécu if (authenticatedWaoUser.isCoordinatorOrObserver()) { // quand on appartient à une organisation (société ou labo), par défaut on ne peut voir - // que les lignes de cette même organisation - Organisation organisationToFilterOn = authenticatedWaoUser.getOrganisation(); - if (obsProgram.isObsMer() || obsProgram.isObsVente()) { - // dans ce cas, on est plus souple : si on appartient à des labos différents mais à - // la même société, on peut voir tout ce qui concerne la société tous labos confondus - organisationToFilterOn = authenticatedWaoUser.getOrganisation().getCompany(); + // 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(ImmutableSet.of(organisationToFilterOn.getTopiaId())); + newFilter.setOrganisationIds(organisationIds); } return newFilter; diff --git a/wao-services/src/test/java/fr/ifremer/wao/services/service/SclerochronologySamplingPlanServiceTest.java b/wao-services/src/test/java/fr/ifremer/wao/services/service/SclerochronologySamplingPlanServiceTest.java index c678180..0a843f9 100644 --- a/wao-services/src/test/java/fr/ifremer/wao/services/service/SclerochronologySamplingPlanServiceTest.java +++ b/wao-services/src/test/java/fr/ifremer/wao/services/service/SclerochronologySamplingPlanServiceTest.java @@ -74,7 +74,7 @@ public class SclerochronologySamplingPlanServiceTest extends AbstractWaoServiceT SampleRowsFilter coordinatorFilter = service.newSampleRowsFilter(fixtures.coordinator()); Assert.assertFalse(coordinatorFilter.getOrganisationIds().isEmpty()); - Assert.assertTrue(coordinatorFilter.getOrganisationIds().contains(fixtures.coordinator().getOrganisation().getTopiaId())); + Assert.assertTrue(coordinatorFilter.getOrganisationIds().contains(fixtures.coordinator().getOrganisation().getCompany().getTopiaId())); } @Test -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.