Author: bleny Date: 2014-04-30 11:05:26 +0200 (Wed, 30 Apr 2014) New Revision: 1917 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1917 Log: refactor and clean up filters Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/AbstractWaoFilter.java trunk/wao-persistence/src/main/java/fr/ifremer/wao/BoatsFilter.java trunk/wao-persistence/src/main/java/fr/ifremer/wao/ContactsFilter.java trunk/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/AbstractFilterValues.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsFilterValues.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanBuilder.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerContactsServiceTest.java trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsFilterValuesJsonAction.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/AbstractWaoFilter.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/AbstractWaoFilter.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/AbstractWaoFilter.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -1,22 +1,11 @@ package fr.ifremer.wao; -import fr.ifremer.wao.entity.ObsProgram; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import java.io.Serializable; public abstract class AbstractWaoFilter implements Serializable { - protected ObsProgram obsProgram; - - public AbstractWaoFilter(ObsProgram obsProgram) { - this.obsProgram = obsProgram; - } - - public ObsProgram getObsProgram() { - return obsProgram; - } - /** Predicate to tell if user actually gave a criteria to filter entities. */ public abstract boolean isFilled(); Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/BoatsFilter.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/BoatsFilter.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/BoatsFilter.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -21,7 +21,6 @@ * #L% */ -import fr.ifremer.wao.entity.ObsProgram; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -83,9 +82,8 @@ */ protected Set<String> fleetIds; - public BoatsFilter(ObsProgram obsProgram) { - super(obsProgram); - elligibleForSampleRowsFilter = new SampleRowsFilter(obsProgram); + public BoatsFilter() { + elligibleForSampleRowsFilter = new SampleRowsFilter(); } public SampleRowsFilter getElligibleForSampleRowsFilter() { Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/ContactsFilter.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/ContactsFilter.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/ContactsFilter.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -23,7 +23,6 @@ import fr.ifremer.wao.entity.ContactState; import fr.ifremer.wao.entity.DataReliability; -import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.ObservationType; import fr.ifremer.wao.entity.ObservedDataControl; import fr.ifremer.wao.entity.SamplingStrategy; @@ -93,10 +92,9 @@ protected boolean sortedByBoardingDate; - public ContactsFilter(ObsProgram obsProgram) { - super(obsProgram); - sampleRowFilter = new SampleRowsFilter(obsProgram); - boatFilter = new BoatsFilter(obsProgram); + public ContactsFilter() { + sampleRowFilter = new SampleRowsFilter(); + boatFilter = new BoatsFilter(); } public SampleRowsFilter getSampleRowFilter() { Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/SampleRowsFilter.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -33,6 +33,8 @@ private static final long serialVersionUID = 1L; + protected ObsProgram obsProgram; + protected Set<String> sampleRowIds; /** Filter sample rows on sample month. @@ -67,10 +69,14 @@ protected Set<String> orderByArguments; - public SampleRowsFilter(ObsProgram obsProgram) { - super(obsProgram); + public ObsProgram getObsProgram() { + return obsProgram; } + public void setObsProgram(ObsProgram obsProgram) { + this.obsProgram = obsProgram; + } + public Date getPeriodFrom() { return periodFrom; } Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -22,7 +22,6 @@ */ import com.google.common.base.Optional; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import fr.ifremer.wao.SampleRowsFilter; import fr.ifremer.wao.WaoUtils; @@ -67,36 +66,26 @@ protected HqlAndParametersBuilder<SampleRow> toSampleRowHqlAndParametersBuilder(SampleRowsFilter filter) { - ObsProgram obsProgram = filter.getObsProgram(); - - Preconditions.checkNotNull(obsProgram, "ObsProgram cannot be null"); - HqlAndParametersBuilder<SampleRow> query = newHqlAndParametersBuilder(); query.setAlias("sr"); - query.addEquals(SampleRow.PROPERTY_OBS_PROGRAM_ORDINAL, obsProgram.ordinal()); + if (filter.getObsProgram() != null) { + query.addEquals(SampleRow.PROPERTY_OBS_PROGRAM_ORDINAL, filter.getObsProgram().ordinal()); + } if (CollectionUtils.isNotEmpty(filter.getSampleRowIds())) { query.addIn(TopiaEntity.PROPERTY_TOPIA_ID, filter.getSampleRowIds()); } if (filter.getPeriodFrom() != null) { - if (obsProgram.isObsDeb()) { - query.addWhereClause("sr." + SampleRow.PROPERTY_EXPECTED_DATE + " >= :periodFrom", ImmutableMap.of("periodTo", (Object) filter.getPeriodFrom())); - } else { - Date periodFromMonth = DateUtils.truncate(filter.getPeriodFrom(), Calendar.MONTH); - query.addWhereClause("sr." + SampleRow.PROPERTY_PERIOD_END + " >= :periodFromMonth", ImmutableMap.of("periodFromMonth", (Object) periodFromMonth)); - } + Date periodFromMonth = DateUtils.truncate(filter.getPeriodFrom(), Calendar.MONTH); + query.addWhereClause("sr." + SampleRow.PROPERTY_PERIOD_END + " >= :periodFromMonth", ImmutableMap.of("periodFromMonth", (Object) periodFromMonth)); } if (filter.getPeriodTo() != null) { - if (obsProgram.isObsDeb()) { - query.addWhereClause("sr." + SampleRow.PROPERTY_EXPECTED_DATE + " <= :periodTo", ImmutableMap.of("periodTo", (Object) filter.getPeriodTo())); - } else { - Date periodToMonth = DateUtils.truncate(filter.getPeriodTo(), Calendar.MONTH); - query.addWhereClause("sr." + SampleRow.PROPERTY_PERIOD_BEGIN + " <= :periodToMonth", ImmutableMap.of("periodToMonth", (Object) periodToMonth)); - } + Date periodToMonth = DateUtils.truncate(filter.getPeriodTo(), Calendar.MONTH); + query.addWhereClause("sr." + SampleRow.PROPERTY_PERIOD_BEGIN + " <= :periodToMonth", ImmutableMap.of("periodToMonth", (Object) periodToMonth)); } if (CollectionUtils.isNotEmpty(filter.getSampleRowCodes())) { Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/AbstractFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/AbstractFilterValues.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/AbstractFilterValues.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -1,7 +1,5 @@ package fr.ifremer.wao.services.service; -import fr.ifremer.wao.entity.ObsProgram; - import java.io.Serializable; import java.util.Locale; @@ -9,17 +7,10 @@ protected Locale locale; - protected ObsProgram obsProgram; - - public AbstractFilterValues(Locale locale, ObsProgram obsProgram) { + public AbstractFilterValues(Locale locale) { this.locale = locale; - this.obsProgram = obsProgram; } - public ObsProgram getObsProgram() { - return obsProgram; - } - public Locale getLocale() { return locale; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -30,7 +30,6 @@ import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.ShipOwner; import fr.ifremer.wao.entity.TerrestrialLocation; -import org.apache.commons.lang3.BooleanUtils; import java.util.HashSet; import java.util.Locale; @@ -49,8 +48,6 @@ private static final long serialVersionUID = 1L; - protected Optional<String> optionalCompanyId; - protected SampleRowsFilterValues elligibleForSampleRowsFilterValues; protected SortedSet<FilterOption> shipOwners = new TreeSet<>(); @@ -62,9 +59,8 @@ protected SortedSet<FilterOption> fleets = new TreeSet<>(); public BoatsFilterValues(Locale locale, ObsProgram obsProgram, Optional<String> optionalCompanyId) { - super(locale, obsProgram); - this.optionalCompanyId = optionalCompanyId; - this.elligibleForSampleRowsFilterValues = new SampleRowsFilterValues(locale, obsProgram); + super(locale); + this.elligibleForSampleRowsFilterValues = new SampleRowsFilterValues(locale, obsProgram, optionalCompanyId); } public void addBoat(Boat boat) { @@ -104,17 +100,7 @@ for (ElligibleBoat elligibleBoat : boat.getElligibleBoat()) { SampleRow sampleRow = elligibleBoat.getSampleRow(); - boolean sampleRowMatchesObsProgram = obsProgram.equals(sampleRow.getObsProgram()); - boolean sampleRowMatchesCompany = true; - if (optionalCompanyId.isPresent()) { - String sampleRowCompanyId = null; - if (sampleRow.getCompany() != null) { - sampleRowCompanyId = sampleRow.getCompany().getTopiaId(); - } - sampleRowMatchesCompany = optionalCompanyId.get().equals(sampleRowCompanyId); - } - boolean boatIsElligible = elligibleBoat.isGlobalActive() || BooleanUtils.isNotFalse(elligibleBoat.getCompanyActive()); - if (sampleRowMatchesObsProgram && sampleRowMatchesCompany && boatIsElligible) { + if (elligibleBoat.isBoatElligible()) { elligibleForSampleRowsFilterValues.addSampleRow(sampleRow); } } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsFilterValues.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsFilterValues.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -84,10 +84,10 @@ protected SortedSet<FilterOption> completeSamplings = new TreeSet<>(); - public ContactsFilterValues(Locale locale, ObsProgram obsProgram) { - super(locale, obsProgram); - this.boatsFilterValues = new BoatsFilterValues(locale, obsProgram, Optional.<String>absent()); - this.sampleRowsFilterValues = new SampleRowsFilterValues(locale, obsProgram); + public ContactsFilterValues(Locale locale, ObsProgram obsProgram, Optional<String> optionalCompanyId) { + super(locale); + this.boatsFilterValues = new BoatsFilterValues(locale, obsProgram, optionalCompanyId); + this.sampleRowsFilterValues = new SampleRowsFilterValues(locale, obsProgram, optionalCompanyId); } public void addContact(Contact contact) { Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -76,7 +76,7 @@ optionalCompanyId = Optional.of(authenticatedWaoUser.getCompany().getTopiaId()); } - BoatsFilterValues boatsFilterValues = new BoatsFilterValues(serviceContext.getLocale(), filter.getObsProgram(), optionalCompanyId); + BoatsFilterValues boatsFilterValues = new BoatsFilterValues(serviceContext.getLocale(), authenticatedWaoUser.getObsProgram(), optionalCompanyId); for (Boat boat : boats) { boatsFilterValues.addBoat(boat); @@ -121,7 +121,7 @@ public BoatsFilter newBoatsFilter(AuthenticatedWaoUser authenticatedWaoUser) { - BoatsFilter boatsFilter = new BoatsFilter(authenticatedWaoUser.getObsProgram()); + BoatsFilter boatsFilter = new BoatsFilter(); if (authenticatedWaoUser.isProfessional()) { // Pour le profesionnel, on restreint d'office à la liste des bateaux qu'il peut voir @@ -169,7 +169,8 @@ Contact mostRecentContact = getContactDao().findMostRecentContactOrNull(obsProgram, boatId, companyId); - ContactsFilter filter = new ContactsFilter(obsProgram); + ContactsFilter filter = new ContactsFilter(); + filter.getSampleRowFilter().setObsProgram(obsProgram); filter.getBoatFilter().setBoatIds(ImmutableSet.of(boatId)); filter.getSampleRowFilter().setCompanyIds(ImmutableSet.of(companyId)); long contactsCount = getContactDao().count(filter); @@ -221,8 +222,9 @@ public BoatContactsCounts getBoatContactsCounts(AuthenticatedWaoUser authenticatedWaoUser, String boatId, String companyId, Date since) { - ContactsFilter filter = new ContactsFilter(authenticatedWaoUser.getObsProgram()); + ContactsFilter filter = new ContactsFilter(); + filter.getSampleRowFilter().setObsProgram(authenticatedWaoUser.getObsProgram()); filter.setPeriodFrom(since); filter.getBoatFilter().setBoatIds(ImmutableSet.of(boatId)); filter.setContactStates(ImmutableSet.of(ContactState.OBSERVATION_DONE)); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -84,12 +84,16 @@ private static final Log log = LogFactory.getLog(ObsMerContactsService.class); - public ContactsFilterValues getContactsFilterValues(ContactsFilter filter) { + public ContactsFilterValues getContactsFilterValues(AuthenticatedWaoUser authenticatedWaoUser, ContactsFilter filter) { ContactTopiaDao dao = getContactDao(); List<Contact> contacts = dao.findAll(filter, false); - ContactsFilterValues contactsFilterValues = new ContactsFilterValues(serviceContext.getLocale(), filter.getObsProgram()); + Optional<String> optionalCompanyId = Optional.absent(); + if (authenticatedWaoUser.isCoordinatorOrObserver()) { + optionalCompanyId = Optional.of(authenticatedWaoUser.getCompany().getTopiaId()); + } + ContactsFilterValues contactsFilterValues = new ContactsFilterValues(serviceContext.getLocale(), authenticatedWaoUser.getObsProgram(), optionalCompanyId); for (Contact contact : contacts) { contactsFilterValues.addContact(contact); @@ -98,7 +102,8 @@ return contactsFilterValues; } - public ObsMerContactsList getContactsList(ContactsFilter filter, + public ObsMerContactsList getContactsList(AuthenticatedWaoUser authenticatedWaoUser, + ContactsFilter filter, TopiaPagerBean queryPager) { ContactTopiaDao dao = getContactDao(); @@ -111,7 +116,7 @@ PaginationBean paginationBean = new PaginationBean(pager, 10); - ContactsFilterValues filterValues = getContactsFilterValues(filter); + ContactsFilterValues filterValues = getContactsFilterValues(authenticatedWaoUser, filter); ObsMerContactsList contactsList = new ObsMerContactsList(); contactsList.setContacts(contacts); @@ -129,8 +134,10 @@ public ContactsFilter newContactFilter(AuthenticatedWaoUser authenticatedWaoUser) { - ContactsFilter newContactsFilter = new ContactsFilter(authenticatedWaoUser.getObsProgram()); + ContactsFilter newContactsFilter = new ContactsFilter(); + newContactsFilter.getSampleRowFilter().setObsProgram(authenticatedWaoUser.getObsProgram()); + // DO NOT REMOVE THIS if (authenticatedWaoUser.isCoordinatorOrObserver()) { String authenticatedWaoUserCompanyTopiaId = authenticatedWaoUser.getWaoUser().getCompany().getTopiaId(); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanBuilder.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanBuilder.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanBuilder.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -22,8 +22,10 @@ */ import com.google.common.base.Function; +import com.google.common.base.Optional; import com.google.common.collect.Ordering; import fr.ifremer.wao.SampleRowsFilter; +import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRows; import org.apache.commons.lang3.mutable.MutableDouble; @@ -134,9 +136,10 @@ protected Map<Date, MutableInt> totalRealForMonths; public ObsMerSamplingPlanBuilder(Locale locale, + Optional<String> optionalCompanyId, SampleRowsFilter sampleRowsFilter) { this.sampleRowsFilter = sampleRowsFilter; - this.sampleRowsFilterValues = new SampleRowsFilterValues(locale, sampleRowsFilter.getObsProgram()); + this.sampleRowsFilterValues = new SampleRowsFilterValues(locale, ObsProgram.OBSMER, optionalCompanyId); this.facadeMap = new TreeMap<>(); this.observationTimesInDaysTotalExpected = new MutableDouble(); this.observationTimesInDaysTotalReal = new MutableLong(); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -396,7 +396,9 @@ } - public ObsMerSamplingPlan getSamplingPlan(SampleRowsFilter sampleRowsFilter) { + public ObsMerSamplingPlan getSamplingPlan( + AuthenticatedWaoUser authenticatedWaoUser, + SampleRowsFilter sampleRowsFilter) { SampleRowTopiaDao dao = getSampleRowDao(); @@ -404,7 +406,12 @@ List<SampleRow> sampleRows = dao.findAll(sampleRowsFilter); // creation du plan d'echantillonnage + Optional<String> optionalCompanyId = Optional.absent(); + if (authenticatedWaoUser.isCoordinatorOrObserver()) { + optionalCompanyId = Optional.of(authenticatedWaoUser.getCompany().getTopiaId()); + } ObsMerSamplingPlanBuilder builder = new ObsMerSamplingPlanBuilder(serviceContext.getLocale(), + optionalCompanyId, sampleRowsFilter); // begin of month @@ -421,7 +428,7 @@ sampleRow); // calcul effort réalisé et estimé - SampleRowsFilter sampleRowsFilter1 = new SampleRowsFilter(sampleRowsFilter.getObsProgram()); + SampleRowsFilter sampleRowsFilter1 = new SampleRowsFilter(); sampleRowsFilter1.setPeriodFrom(periodFrom); sampleRowsFilter1.setPeriodTo(periodTo); sampleRowsFilter1.setSampleRowIds(ImmutableSet.of(sampleRow.getTopiaId())); @@ -446,7 +453,8 @@ public SampleRowsFilter newSampleRowsFilter(AuthenticatedWaoUser authenticatedWaoUser) { // all users can see only rows for the program they are logged for - SampleRowsFilter newFilter = new SampleRowsFilter(authenticatedWaoUser.getObsProgram()); + SampleRowsFilter newFilter = new SampleRowsFilter(); + newFilter.setObsProgram(authenticatedWaoUser.getObsProgram()); // We don't want to see all rows but the ones important for today Date fromDate = serviceContext.getNow(); @@ -638,7 +646,7 @@ // D'abord, on a besoin de récupérer toutes les observations réalisées // pour cette ligne du plan - ContactsFilter contactFilter = new ContactsFilter(sampleRowsFilter.getObsProgram()); + ContactsFilter contactFilter = new ContactsFilter(); contactFilter.setFilterOnObservationBeginDate(true); contactFilter.setPeriodFrom(sampleRowsFilter.getPeriodFrom()); @@ -738,7 +746,7 @@ // Recuperation de tous les contacts de la ligne //---- - ContactsFilter contactFilter = new ContactsFilter(sampleRow.getObsProgram()); + ContactsFilter contactFilter = new ContactsFilter(); contactFilter.setFilterOnObservationBeginDate(true); contactFilter.getSampleRowFilter().setSampleRowIds(Sets.newHashSet(sampleRow.getTopiaId())); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -21,7 +21,7 @@ * #L% */ -import com.google.common.base.Preconditions; +import com.google.common.base.Optional; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.DCF5Code; import fr.ifremer.wao.entity.FishingGearDCF; @@ -44,6 +44,10 @@ private static final long serialVersionUID = 1L; + protected ObsProgram obsProgram; + + protected Optional<String> optionalCompanyId; + protected SortedSet<FilterOption> fishingZoneFacadeNames = new TreeSet<>(); protected SortedSet<FilterOption> fishingZoneSectorNames = new TreeSet<>(); @@ -64,48 +68,62 @@ /** Values are the code and the label i18n key. */ protected SortedSet<FilterOption> targetSpeciesDcfs = new TreeSet<>(); - public SampleRowsFilterValues(Locale locale, ObsProgram obsProgram) { - super(locale, obsProgram); + public SampleRowsFilterValues(Locale locale, ObsProgram obsProgram, Optional<String> optionalCompanyId) { + super(locale); + this.obsProgram = obsProgram; + this.optionalCompanyId = optionalCompanyId; } public void addSampleRow(SampleRow sampleRow) { - Preconditions.checkArgument(obsProgram.equals(sampleRow.getObsProgram())); - for (FishingZone fishingZone : sampleRow.getFishingZone()) { - fishingZoneFacadeNames.add(FilterOption.forString(fishingZone.getFacadeName())); - fishingZoneSectorNames.add(FilterOption.forString(fishingZone.getSectorName())); + boolean sampleRowMatchesObsProgram = obsProgram.equals(sampleRow.getObsProgram()); + boolean sampleRowMatchesCompany = true; + if (optionalCompanyId.isPresent()) { + String sampleRowCompanyId = null; + if (sampleRow.getCompany() != null) { + sampleRowCompanyId = sampleRow.getCompany().getTopiaId(); + } + sampleRowMatchesCompany = optionalCompanyId.get().equals(sampleRowCompanyId); } - sampleRowCodes.add(FilterOption.forString(sampleRow.getCode())); - programNames.add(FilterOption.forString(sampleRow.getProgramName())); - Company company = sampleRow.getCompany(); - if (company != null) { - companies.add(FilterOption.forValueAndLabel(company.getTopiaId(), company.getName())); - } - samplingStrategies.add(FilterOption.forEnum(locale, sampleRow.getSamplingStrategy())); - if (sampleRow.getObsProgram().isObsVente()) { - TerrestrialLocation terrestrialDistrict = sampleRow.getTerrestrialLocation(); - terrestrialDistricts.add( - FilterOption.forValueAndLabel( - terrestrialDistrict.getTopiaId(), - terrestrialDistrict.getDescription())); - } - for (DCF5Code dcf5Code : sampleRow.getdCF5Code()) { - FishingGearDCF fishingGearDCF = dcf5Code.getFishingGearDCF(); - String fishingGearLabel = fishingGearDCF.getCode() + " - " + l(locale, fishingGearDCF.getI18nKey()); - fishingGearDcfs.add( - FilterOption.forValueAndLabel( - fishingGearDCF.getTopiaId(), - fishingGearLabel) - ); - TargetSpeciesDCF targetSpeciesDCF = dcf5Code.getTargetSpeciesDCF(); - if (targetSpeciesDCF != null) { - String targetspeciesLabel = targetSpeciesDCF.getCode() + " - " + l(locale, targetSpeciesDCF.getI18nKey()); - targetSpeciesDcfs.add( + if (sampleRowMatchesObsProgram && sampleRowMatchesCompany) { + for (FishingZone fishingZone : sampleRow.getFishingZone()) { + fishingZoneFacadeNames.add(FilterOption.forString(fishingZone.getFacadeName())); + fishingZoneSectorNames.add(FilterOption.forString(fishingZone.getSectorName())); + } + sampleRowCodes.add(FilterOption.forString(sampleRow.getCode())); + programNames.add(FilterOption.forString(sampleRow.getProgramName())); + + Company company = sampleRow.getCompany(); + if (company != null) { + companies.add(FilterOption.forValueAndLabel(company.getTopiaId(), company.getName())); + } + samplingStrategies.add(FilterOption.forEnum(locale, sampleRow.getSamplingStrategy())); + if (sampleRow.getObsProgram().isObsVente()) { + TerrestrialLocation terrestrialDistrict = sampleRow.getTerrestrialLocation(); + terrestrialDistricts.add( FilterOption.forValueAndLabel( - targetSpeciesDCF.getTopiaId(), - targetspeciesLabel) + terrestrialDistrict.getTopiaId(), + terrestrialDistrict.getDescription()) ); } + for (DCF5Code dcf5Code : sampleRow.getdCF5Code()) { + FishingGearDCF fishingGearDCF = dcf5Code.getFishingGearDCF(); + String fishingGearLabel = fishingGearDCF.getCode() + " - " + l(locale, fishingGearDCF.getI18nKey()); + fishingGearDcfs.add( + FilterOption.forValueAndLabel( + fishingGearDCF.getTopiaId(), + fishingGearLabel) + ); + TargetSpeciesDCF targetSpeciesDCF = dcf5Code.getTargetSpeciesDCF(); + if (targetSpeciesDCF != null) { + String targetspeciesLabel = targetSpeciesDCF.getCode() + " - " + l(locale, targetSpeciesDCF.getI18nKey()); + targetSpeciesDcfs.add( + FilterOption.forValueAndLabel( + targetSpeciesDCF.getTopiaId(), + targetspeciesLabel) + ); + } + } } } Modified: trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerContactsServiceTest.java =================================================================== --- trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerContactsServiceTest.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerContactsServiceTest.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -59,7 +59,7 @@ ContactsFilter filter = service.newContactFilter(fixtures.admin()); - ContactsFilterValues filterValues = service.getContactsFilterValues(filter); + ContactsFilterValues filterValues = service.getContactsFilterValues(fixtures.admin(), filter); } @Test @@ -69,7 +69,7 @@ TopiaPagerBean pager = service.newContactsPager(50); - ObsMerContactsList contactsList = service.getContactsList(filter, pager); + ObsMerContactsList contactsList = service.getContactsList(fixtures.admin(), filter, pager); } @Test Modified: trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java =================================================================== --- trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -91,23 +91,23 @@ serviceContext.setDate(DateUtil.createDate(15, 5, 2010)); SampleRowsFilter filter = service.newSampleRowsFilter(fixtures.admin()); - ObsMerSamplingPlan samplingPlan = service.getSamplingPlan(filter); + ObsMerSamplingPlan samplingPlan = service.getSamplingPlan(fixtures.admin(), filter); assertSamplePlanRowsNumber(12, samplingPlan); filter = service.newSampleRowsFilter(fixtures.admin()); filter.setFishingGearDcfIds(ImmutableSet.of(fixtures.ptb().getTopiaId())); - samplingPlan = service.getSamplingPlan(filter); + samplingPlan = service.getSamplingPlan(fixtures.admin(), filter); assertSamplePlanRowsNumber(3, samplingPlan); filter = service.newSampleRowsFilter(fixtures.admin()); filter.setTargetSpeciesDcfIds(ImmutableSet.of(fixtures.def().getTopiaId())); - samplingPlan = service.getSamplingPlan(filter); + samplingPlan = service.getSamplingPlan(fixtures.admin(), filter); assertSamplePlanRowsNumber(4, samplingPlan); filter = service.newSampleRowsFilter(fixtures.admin()); filter.setFishingGearDcfIds(ImmutableSet.of(fixtures.ptb().getTopiaId())); filter.setTargetSpeciesDcfIds(ImmutableSet.of(fixtures.def().getTopiaId())); - samplingPlan = service.getSamplingPlan(filter); + samplingPlan = service.getSamplingPlan(fixtures.admin(), filter); assertSamplePlanRowsNumber(1, samplingPlan); } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -114,7 +114,7 @@ @Override public String execute() { - contactsList = service.getContactsList(filter, getPager()); + contactsList = service.getContactsList(getAuthenticatedWaoUser(), filter, getPager()); return SUCCESS; } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsFilterValuesJsonAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsFilterValuesJsonAction.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsFilterValuesJsonAction.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -68,8 +68,10 @@ @Override public String execute() { - filterValues = service.getContactsFilterValues(filter); + filterValues = service.getContactsFilterValues(session.getAuthenticatedWaoUser(), filter); + return SUCCESS; + } } \ No newline at end of file Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -59,7 +59,7 @@ @Override public String execute() { - ObsMerSamplingPlan samplingPlan = service.getSamplingPlan(filter); + ObsMerSamplingPlan samplingPlan = service.getSamplingPlan(session.getAuthenticatedWaoUser(), filter); filterValues = samplingPlan.getFilterValues(); Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java 2014-04-29 15:07:42 UTC (rev 1916) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java 2014-04-30 09:05:26 UTC (rev 1917) @@ -72,7 +72,7 @@ @Override public String execute() { - samplingPlan = service.getSamplingPlan(filter); + samplingPlan = service.getSamplingPlan(getAuthenticatedWaoUser(), filter); return SUCCESS; }