[Suiviobsmer-commits] r1077 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/base wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/resources/fr/ifremer/wao/ui/components
Author: sletellier Date: 2011-03-18 17:00:57 +0000 (Fri, 18 Mar 2011) New Revision: 1077 Log: - [#2636] remaniement pour adapter wao ?\195?\160 ObsDeb - Override add and addAll method for lazily instanciate collection of SamplingFilterValues - Add refresh button on filter component Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-03-18 16:41:04 UTC (rev 1076) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-03-18 17:00:57 UTC (rev 1077) @@ -1,10 +1,11 @@ package fr.ifremer.wao.bean; - import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.FishingGearDCF; +import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.TargetSpeciesDCF; import fr.ifremer.wao.entity.TerrestrialLocation; +import fr.ifremer.wao.entity.WaoUser; import java.util.ArrayList; import java.util.Collection; @@ -13,205 +14,324 @@ public class SamplingFilterValuesImpl extends SamplingFilterValues { @Override - public void addCompanies(Company companies) { - if (companies == null) { + public void addCompanies(Company toAdd) { + if (toAdd == null) { return; } - if (this.companies != null && !this.companies.contains(companies)) { - super.addCompanies(companies); + if (getCompanies() == null) { + setCompanies(new ArrayList<Company>()); } + if (!containsCompanies(toAdd)) { + super.addCompanies(toAdd); + } } @Override - public void addAllCompanies(Collection<Company> companies) { - if (companies == null) { + public void addAllCompanies(Collection<Company> toAdds) { + if (toAdds == null) { return; } - if (this.companies != null && !this.companies.containsAll(companies)) { - super.addAllCompanies(companies); + if (getCompanies() == null) { + setCompanies(new ArrayList<Company>()); + } + if (!containsAllCompanies(toAdds)) { + super.addAllCompanies(toAdds); } else { - for (Company company : companies) { - addCompanies(company); + for (Company toAdd : toAdds) { + addCompanies(toAdd); } } } @Override - public void addPrograms(String programs) { - if (programs == null) { + public void addPrograms(String toAdd) { + if (toAdd == null) { return; } - if (this.programs != null && !this.programs.contains(programs)) { - super.addPrograms(programs); + if (getPrograms() == null) { + setPrograms(new ArrayList<String>()); } + if (!containsPrograms(toAdd)) { + super.addPrograms(toAdd); + } } @Override - public void addAllPrograms(Collection<String> programs) { - if (programs == null) { + public void addAllPrograms(Collection<String> toAdds) { + if (toAdds == null) { return; } - if (this.programs!= null && !this.programs.containsAll(programs)) { - super.addAllPrograms(programs); + if (getPrograms() == null) { + setPrograms(new ArrayList<String>()); + } + if (!containsAllPrograms(toAdds)) { + super.addAllPrograms(toAdds); } else { - for (String program : programs) { - addPrograms(program); + for (String toAdd : toAdds) { + addPrograms(toAdd); } } } @Override - public void addFacadeNames(String facadeNames) { - if (facadeNames == null) { + public void addFacadeNames(String toAdd) { + if (toAdd == null) { return; } - if (this.facadeNames != null && !this.facadeNames.contains(facadeNames)) { - super.addFacadeNames(facadeNames); + if (getFacadeNames() == null) { + setFacadeNames(new ArrayList<String>()); } + if (!containsFacadeNames(toAdd)) { + super.addFacadeNames(toAdd); + } } @Override - public void addAllFacadeNames(Collection<String> facadeNames) { - if (facadeNames == null) { + public void addAllFacadeNames(Collection<String> toAdds) { + if (toAdds == null) { return; } - if (this.facadeNames != null && !this.facadeNames.containsAll(facadeNames)) { - super.addAllFacadeNames(facadeNames); + if (getFacadeNames() == null) { + setFacadeNames(new ArrayList<String>()); + } + if (!containsAllFacadeNames(toAdds)) { + super.addAllFacadeNames(toAdds); } else { - for (String facadeName : facadeNames) { - addFacadeNames(facadeName); + for (String toAdd : toAdds) { + addFacadeNames(toAdd); } } } @Override - public void addSectorsNames(String sectorsNames) { - if (sectorsNames == null) { + public void addSectorsNames(String toAdd) { + if (toAdd == null) { return; } - if (this.sectorsNames != null && !this.sectorsNames.contains(sectorsNames)) { - super.addSectorsNames(sectorsNames); + if (getSectorsNames() == null) { + setSectorsNames(new ArrayList<String>()); } + if (!containsSectorsNames(toAdd)) { + super.addSectorsNames(toAdd); + } } @Override - public void addAllSectorsNames(Collection<String> sectorsNames) { - if (sectorsNames == null) { + public void addAllSectorsNames(Collection<String> toAdds) { + if (toAdds == null) { return; } - if (this.sectorsNames != null && !this.sectorsNames.containsAll(sectorsNames)) { - super.addAllSectorsNames(sectorsNames); + if (getSectorsNames() == null) { + setSectorsNames(new ArrayList<String>()); + } + if (!containsAllSectorsNames(toAdds)) { + super.addAllSectorsNames(toAdds); } else { - for (String sectorsName : sectorsNames) { - addSectorsNames(sectorsName); + for (String toAdd : toAdds) { + addSectorsNames(toAdd); } } } @Override - public void addFishingGearDCFCodes(FishingGearDCF fishingGearDCFCodes) { - if (fishingGearDCFCodes == null) { + public void addFishingGearDCFCodes(FishingGearDCF toAdd) { + if (toAdd == null) { return; } - if (this.fishingGearDCFCodes != null && !this.fishingGearDCFCodes.contains(fishingGearDCFCodes)) { - super.addFishingGearDCFCodes(fishingGearDCFCodes); + if (getFishingGearDCFCodes() == null) { + setFishingGearDCFCodes(new ArrayList<FishingGearDCF>()); } + if (!containsFishingGearDCFCodes(toAdd)) { + super.addFishingGearDCFCodes(toAdd); + } } @Override - public void addAllFishingGearDCFCodes(Collection<FishingGearDCF> fishingGearDCFCodes) { - if (fishingGearDCFCodes == null) { + public void addAllFishingGearDCFCodes(Collection<FishingGearDCF> toAdds) { + if (toAdds == null) { return; } - if (this.fishingGearDCFCodes != null && !this.fishingGearDCFCodes.containsAll(fishingGearDCFCodes)) { - super.addAllFishingGearDCFCodes(fishingGearDCFCodes); + if (getFishingGearDCFCodes() == null) { + setFishingGearDCFCodes(new ArrayList<FishingGearDCF>()); + } + if (!containsAllFishingGearDCFCodes(toAdds)) { + super.addAllFishingGearDCFCodes(toAdds); } else { - for (FishingGearDCF fishingGearDCFCode : fishingGearDCFCodes) { - addFishingGearDCFCodes(fishingGearDCFCode); + for (FishingGearDCF toAdd : toAdds) { + addFishingGearDCFCodes(toAdd); } } } @Override - public void addTargetSpeciesDCFCodes(TargetSpeciesDCF targetSpeciesDCFCodes) { - if (targetSpeciesDCFCodes == null) { + public void addTargetSpeciesDCFCodes(TargetSpeciesDCF toAdd) { + if (toAdd == null) { return; } - if (this.targetSpeciesDCFCodes != null && !this.targetSpeciesDCFCodes.contains(targetSpeciesDCFCodes)) { - super.addTargetSpeciesDCFCodes(targetSpeciesDCFCodes); + if (getTargetSpeciesDCFCodes() == null) { + setTargetSpeciesDCFCodes(new ArrayList<TargetSpeciesDCF>()); } + if (!containsTargetSpeciesDCFCodes(toAdd)) { + super.addTargetSpeciesDCFCodes(toAdd); + } } @Override - public void addAllTargetSpeciesDCFCodes(Collection<TargetSpeciesDCF> targetSpeciesDCFCodes) { - if (targetSpeciesDCFCodes == null) { + public void addAllTargetSpeciesDCFCodes(Collection<TargetSpeciesDCF> toAdds) { + if (toAdds == null) { return; } - if (this.targetSpeciesDCFCodes != null && !this.targetSpeciesDCFCodes.containsAll(targetSpeciesDCFCodes)) { - super.addAllTargetSpeciesDCFCodes(targetSpeciesDCFCodes); + if (getTargetSpeciesDCFCodes() == null) { + setTargetSpeciesDCFCodes(new ArrayList<TargetSpeciesDCF>()); + } + if (!containsAllTargetSpeciesDCFCodes(toAdds)) { + super.addAllTargetSpeciesDCFCodes(toAdds); } else { - for (TargetSpeciesDCF targetSpeciesDCFCode : targetSpeciesDCFCodes) { - addTargetSpeciesDCFCodes(targetSpeciesDCFCode); + for (TargetSpeciesDCF toAdd : toAdds) { + addTargetSpeciesDCFCodes(toAdd); } } } @Override - public void addTerrestrialDistricts(TerrestrialLocation terrestrialDistricts) { - if (terrestrialDistricts == null) { + public void addTerrestrialDistricts(TerrestrialLocation toAdd) { + if (toAdd == null) { return; } - if (this.terrestrialDistricts != null && !this.terrestrialDistricts.contains(terrestrialDistricts)) { - super.addTerrestrialDistricts(terrestrialDistricts); + if (getTerrestrialDistricts() == null) { + setTerrestrialDistricts(new ArrayList<TerrestrialLocation>()); } + if (!containsTerrestrialDistricts(toAdd)) { + super.addTerrestrialDistricts(toAdd); + } } @Override - public void addAllTerrestrialDistricts(Collection<TerrestrialLocation> terrestrialDistricts) { - if (terrestrialDistricts == null) { + public void addAllTerrestrialDistricts(Collection<TerrestrialLocation> toAdds) { + if (toAdds == null) { return; } - if (this.terrestrialDistricts != null && !this.terrestrialDistricts.containsAll(terrestrialDistricts)) { - super.addAllTerrestrialDistricts(terrestrialDistricts); + if (getTerrestrialDistricts() == null) { + setTerrestrialDistricts(new ArrayList<TerrestrialLocation>()); + } + if (!containsAllTerrestrialDistricts(toAdds)) { + super.addAllTerrestrialDistricts(toAdds); } else { - for (TerrestrialLocation terrestrialDistrict : terrestrialDistricts) { - addTerrestrialDistricts(terrestrialDistrict); + for (TerrestrialLocation toAdd : toAdds) { + addTerrestrialDistricts(toAdd); } } } @Override + public void addObservers(WaoUser toAdd) { + if (toAdd == null) { + return; + } + if (getObservers() == null) { + setObservers(new ArrayList<WaoUser>()); + } + if (!containsObservers(toAdd)) { + super.addObservers(toAdd); + } + } + + @Override + public void addAllObservers(Collection<WaoUser> toAdds) { + if (toAdds == null) { + return; + } + if (getObservers() == null) { + setObservers(new ArrayList<WaoUser>()); + } + if (!containsAllObservers(toAdds)) { + super.addAllObservers(toAdds); + } else { + for (WaoUser toAdd : toAdds) { + addObservers(toAdd); + } + } + } + + @Override + public void addSampleRows(SampleRow toAdd) { + if (toAdd == null) { + return; + } + if (getSampleRows() == null) { + setSampleRows(new ArrayList<SampleRow>()); + } + if (!containsSampleRows(toAdd)) { + super.addSampleRows(toAdd); + } + } + + @Override + public void addAllSampleRows(Collection<SampleRow> toAdds) { + if (toAdds == null) { + return; + } + if (getSampleRows() == null) { + setSampleRows(new ArrayList<SampleRow>()); + } + if (!containsAllSampleRows(toAdds)) { + super.addAllSampleRows(toAdds); + } else { + for (SampleRow toAdd : toAdds) { + addSampleRows(toAdd); + } + } + } + + @Override public List<Company> getCompaniesAsList() { - return new ArrayList<Company>(getCompanies()); + return getAsList(getCompanies()); } @Override public List<String> getProgramsAsList() { - return new ArrayList<String>(getPrograms()); + return getAsList(getPrograms()); } @Override public List<String> getFacadeNamesAsList() { - return new ArrayList<String>(getFacadeNames()); + return getAsList(getFacadeNames()); } @Override public List<String> getSectorsNamesAsList() { - return new ArrayList<String>(getSectorsNames()); + return getAsList(getSectorsNames()); } @Override public List<FishingGearDCF> getFishingGearDCFCodesAsList() { - return new ArrayList<FishingGearDCF>(getFishingGearDCFCodes()); + return getAsList(getFishingGearDCFCodes()); } @Override public List<TargetSpeciesDCF> getTargetSpeciesDCFCodesAsList() { - return new ArrayList<TargetSpeciesDCF>(getTargetSpeciesDCFCodes()); + return getAsList(getTargetSpeciesDCFCodes()); } @Override public List<TerrestrialLocation> getTerrestrialDistrictsAsList() { - return new ArrayList<TerrestrialLocation>(getTerrestrialDistricts()); + return getAsList(getTerrestrialDistricts()); } + + @Override + public List<SampleRow> getSampleRowsAsList() { + return getAsList(getSampleRows()); + } + + @Override + public List<WaoUser> getObserversAsList() { + return getAsList(getObservers()); + } + + protected <E> List<E> getAsList(Collection<E> collection) { + if (collection == null) { + return new ArrayList<E>(); + } + return new ArrayList<E>(collection); + } } //SamplingFilterValuesImpl Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-18 16:41:04 UTC (rev 1076) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-18 17:00:57 UTC (rev 1077) @@ -41,6 +41,7 @@ import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterValues; +import fr.ifremer.wao.bean.SamplingFilterValuesImpl; import fr.ifremer.wao.bean.SamplingStrategy; import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.Boat; @@ -117,6 +118,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Map; /** * ServiceSamplingImpl @@ -1451,6 +1453,34 @@ @Override protected SamplingFilterValues executeGetPossibleValuesForFilter(TopiaContext transaction, SamplingFilter filter) throws Exception { - throw new UnsupportedOperationException("not yet implemented"); + FacadeRow facadeRow = executeGetSampleRowsOrderedByFishingZone(transaction, filter); + SamplingFilterValues result = new SamplingFilterValuesImpl(); + + List<SampleRow> sampleRows = facadeRow.getValues(); + + if (sampleRows == null) { + return result; + } + + // Extract datas + // FIXME sletellier 20110318 : move this on SamplingFilterValues ? + for (SampleRow sampleRow : sampleRows) { + result.addCompanies(sampleRow.getCompany()); + result.addFacadeNames(sampleRow.getFacade()); + result.addPrograms(sampleRow.getProgramName()); + result.addSectorsNames(sampleRow.getSectors()); + Collection<DCF5Code> dcf5Codes = sampleRow.getDCF5Code(); + if (dcf5Codes != null) { + for (DCF5Code dcf5Code : dcf5Codes) { + result.addFishingGearDCFCodes(dcf5Code.getFishingGearDCF()); + result.addTargetSpeciesDCFCodes(dcf5Code.getTargetSpeciesDCF()); + } + } + result.addTerrestrialDistricts(sampleRow.getTerrestrialLocation()); + result.addAllObservers(sampleRow.getObservers()); + } + result.addAllSampleRows(sampleRows); + + return result; } } Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2011-03-18 16:41:04 UTC (rev 1076) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2011-03-18 17:00:57 UTC (rev 1077) @@ -118,8 +118,7 @@ @Persist private boolean programSelect; - @Persist - private boolean edited = false; + private boolean edited; @Persist private GenericSelectModel<SampleRow> sampleRowSelectModel; @@ -311,14 +310,14 @@ * @see ModelFactory#getFacadeSelectModel() */ public SelectModel getFacadeSelectModel() throws WaoException { - return getModelFactory().getFacadeSelectModel(); + return getModelFactory().getFacadeSelectModel(true); } /** * @see ModelFactory#getSectorSelectModel() */ public SelectModel getSectorSelectModel() throws WaoException { - return getModelFactory().getSectorSelectModel(); + return getModelFactory().getSectorSelectModel(true); } /** @@ -348,37 +347,44 @@ * @see ModelFactory#getCompanySelectModel() */ public GenericSelectModel<Company> getCompanySelectModel() throws WaoException { - return getModelFactory().getCompanySelectModel(); + return getModelFactory().getCompanySelectModel(true); } /** * @see ModelFactory#getObserverSelectModel() */ public GenericSelectModel<WaoUser> getObserverSelectModel() throws WaoException { - return getModelFactory().getObserverSelectModel(); + return getModelFactory().getObserverSelectModel(true); } /** * @see ModelFactory#getProgramSelectModel() */ public SelectModel getProgramSelectModel() throws WaoException { - return getModelFactory().getProgramSelectModel(); + return getModelFactory().getProgramSelectModel(true); } /** * @see ModelFactory#getDcfGearSelectModel() */ public GenericSelectModel<FishingGearDCF> getDcfGearSelectModel() throws WaoException { - return getModelFactory().getDcfGearSelectModel(); + return getModelFactory().getDcfGearSelectModel(true); } /** * @see ModelFactory#getDcfSpeciesSelectModel() */ public GenericSelectModel<TargetSpeciesDCF> getDcfSpeciesSelectModel() throws WaoException { - return getModelFactory().getDcfSpeciesSelectModel(); + return getModelFactory().getDcfSpeciesSelectModel(true); } + /** + * @see ModelFactory#getTerrestrialDistrictSelectModel() + */ + public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel() throws WaoException { + return getModelFactory().getTerrestrialDistrictSelectModel(true); + } + protected abstract SamplingFilter getFilter() throws WaoException; /** @@ -531,10 +537,4 @@ return edited; } - /** - * @see ModelFactory#getTerrestrialDistrictSelectModel() - */ - public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel() throws WaoException { - return getModelFactory().getTerrestrialDistrictSelectModel(); - } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java 2011-03-18 16:41:04 UTC (rev 1076) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java 2011-03-18 17:00:57 UTC (rev 1077) @@ -4,6 +4,7 @@ import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterImpl; +import fr.ifremer.wao.bean.SamplingFilterValues; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.FishingGearDCF; import fr.ifremer.wao.entity.SampleRow; @@ -25,7 +26,6 @@ import org.chenillekit.tapestry.core.models.GenericMultipleSelectModel; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import static fr.ifremer.wao.ui.data.TapestryUtil.getEntityFromModel; @@ -44,7 +44,7 @@ protected ConnectedUser user; - /** + /* * Services */ protected ServiceReferential serviceReferential; @@ -52,7 +52,7 @@ protected ServiceBoat serviceBoat; protected ServiceUser serviceUser; - /** + /* * Generic select models */ protected GenericMultipleSelectModel<SampleRow> sampleRowSelectModel; @@ -62,7 +62,7 @@ protected GenericSelectModel<FishingGearDCF> dcfGearSelectModel; protected GenericSelectModel<TargetSpeciesDCF> dcfSpeciesSelectModel; - /** + /* * Select models */ protected SelectModel facadeSelectModel; @@ -78,6 +78,11 @@ protected String targetSpeciesDCFId; protected String terrestrialDistrictId; + /* + * Datas + */ + protected SamplingFilterValues possibleValuesForFilter; + public ModelFactory(PropertyAccess propertyAccess, ConnectedUser user, ServiceReferential serviceReferential, @@ -97,6 +102,21 @@ resetFilter(); } + public SamplingFilterValues getPossibleValuesForFilter() { + return getPossibleValuesForFilter(false); + } + + public SamplingFilterValues updatePossibleValuesForFilter() { + return getPossibleValuesForFilter(true); + } + + protected SamplingFilterValues getPossibleValuesForFilter(boolean update) { + if (update || possibleValuesForFilter == null) { + possibleValuesForFilter = serviceSampling.getPossibleValuesForFilter(getFilter()); + } + return possibleValuesForFilter; + } + public ConnectedUser getUser() { return user; } @@ -230,6 +250,12 @@ */ protected abstract boolean isAvailableDataForFiltersOnly(); + /* + * Models + * + * FIXME sletellier 20110318 : keep old fonctionment (with useSevice = true) remove it when AbstractFilterPage will be removed + */ + /** * Get select model for fishingZone facade. Depends on company set in * filter. @@ -238,10 +264,16 @@ * @throws WaoException */ public SelectModel getFacadeSelectModel() throws WaoException { + return getFacadeSelectModel(false); + } + + public SelectModel getFacadeSelectModel(boolean useService) throws WaoException { if (facadeSelectModel == null) { - List<OptionModel> options = new ArrayList<OptionModel>(); - for (String facadeName : serviceReferential.getFacades(getFilter())) { - options.add(new OptionModelImpl(facadeName,facadeName)); + List<OptionModel> options; + if (useService) { + options = getOptionModels(serviceReferential.getFacades(getFilter())); + } else { + options = getOptionModels(getPossibleValuesForFilter().getFacadeNamesAsList()); } facadeSelectModel = new SelectModelImpl(null, options); } @@ -249,10 +281,6 @@ } /** - * Models - */ - - /** * Get select model for fishingZone sector. Depends on facadeName and * company set in filter. * @@ -260,10 +288,16 @@ * @throws WaoException */ public SelectModel getSectorSelectModel() throws WaoException { + return getSectorSelectModel(false); + } + + public SelectModel getSectorSelectModel(boolean useService) throws WaoException { if (sectorSelectModel == null) { - List<OptionModel> options = new ArrayList<OptionModel>(); - for (String sectorName : serviceReferential.getSectors(getFilter())) { - options.add(new OptionModelImpl(sectorName,sectorName)); + List<OptionModel> options; + if (useService) { + options = getOptionModels(serviceReferential.getSectors(getFilter())); + } else { + options = getOptionModels(getPossibleValuesForFilter().getSectorsNamesAsList()); } sectorSelectModel = new SelectModelImpl(null, options); } @@ -284,7 +318,7 @@ List<SampleRow> rowsFiltered = getFilter().getSampleRows(); getFilter().setSampleRows(null); - List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter()); + List<SampleRow> sampleRows = getPossibleValuesForFilter().getSampleRowsAsList(); getFilter().setSampleRows(rowsFiltered); sampleRowSelectModel = new GenericMultipleSelectModel<SampleRow>(sampleRows, SampleRow.class, @@ -302,9 +336,18 @@ * @throws WaoException */ public GenericSelectModel<Company> getCompanySelectModel() throws WaoException { + return getCompanySelectModel(false); + } + + public GenericSelectModel<Company> getCompanySelectModel(boolean useService) throws WaoException { if (companySelectModel == null) { - List<Company> companies = serviceUser.getCompanies(isAvailableDataForFiltersOnly()); - companySelectModel = new GenericSelectModel<Company>(companies,Company.class, + List<Company> companies; + if (useService) { + companies = serviceUser.getCompanies(isAvailableDataForFiltersOnly()); + } else { + companies = getPossibleValuesForFilter().getCompaniesAsList(); + } + companySelectModel = new GenericSelectModel<Company>(companies, Company.class, Company.PROPERTY_NAME, Company.TOPIA_ID, propertyAccess); } return companySelectModel; @@ -319,11 +362,22 @@ * @throws WaoException */ public GenericSelectModel<WaoUser> getObserverSelectModel() throws WaoException { + return getObserverSelectModel(false); + } + + public GenericSelectModel<WaoUser> getObserverSelectModel(boolean useService) throws WaoException { if (observerSelectModel == null) { - List<WaoUser> observers = + + List<WaoUser> observers; + if (useService) { + observers = serviceUser.getObservers(getFilter().getCompany(), isAvailableDataForFiltersOnly()); - observerSelectModel = new GenericSelectModel<WaoUser>(observers,WaoUser.class, + } else { + observers = getPossibleValuesForFilter().getObserversAsList(); + } + + observerSelectModel = new GenericSelectModel<WaoUser>(observers, WaoUser.class, "fullName", "topiaId", propertyAccess); } return observerSelectModel; @@ -337,10 +391,16 @@ * @throws WaoException */ public SelectModel getProgramSelectModel() throws WaoException { + return getProgramSelectModel(false); + } + + public SelectModel getProgramSelectModel(boolean useService) throws WaoException { if (programSelectModel == null) { - List<OptionModel> options = new ArrayList<OptionModel>(); - for (String programName : serviceSampling.getPrograms(getFilter().getCompany())) { - options.add(new OptionModelImpl(programName, programName)); + List<OptionModel> options; + if (useService) { + options = getOptionModels(serviceSampling.getPrograms(getFilter().getCompany())); + } else { + options = getOptionModels(getPossibleValuesForFilter().getProgramsAsList()); } programSelectModel = new SelectModelImpl(null, options); } @@ -348,11 +408,20 @@ } public GenericSelectModel<FishingGearDCF> getDcfGearSelectModel() throws WaoException { + return getDcfGearSelectModel(false); + } + + public GenericSelectModel<FishingGearDCF> getDcfGearSelectModel(boolean useService) throws WaoException { if (dcfGearSelectModel == null) { // don't filter with already defined DCFs FishingGearDCF keptFishingGearDCF = getFilter().getFishingGearDCF(); getFilter().setFishingGearDCF(null); - List<FishingGearDCF> fishingGearDCFs = serviceSampling.getDCFGears(getFilter()); + List<FishingGearDCF> fishingGearDCFs; + if (useService) { + fishingGearDCFs = serviceSampling.getDCFGears(getFilter()); + } else { + fishingGearDCFs = getPossibleValuesForFilter().getFishingGearDCFCodesAsList(); + } getFilter().setFishingGearDCF(keptFishingGearDCF); dcfGearSelectModel = new GenericSelectModel<FishingGearDCF>(fishingGearDCFs, FishingGearDCF.class, @@ -362,11 +431,19 @@ } public GenericSelectModel<TargetSpeciesDCF> getDcfSpeciesSelectModel() throws WaoException { + return getDcfSpeciesSelectModel(false); + } + public GenericSelectModel<TargetSpeciesDCF> getDcfSpeciesSelectModel(boolean useService) throws WaoException { if (dcfSpeciesSelectModel == null) { // don't filter with already defined DCFs TargetSpeciesDCF keptTargetSpeciesDCF = getFilter().getTargetSpeciesDCF(); getFilter().setTargetSpeciesDCF(null); - List<TargetSpeciesDCF> targetSpeciesDCFs = serviceSampling.getDCFSpecies(getFilter()); + List<TargetSpeciesDCF> targetSpeciesDCFs; + if (useService) { + targetSpeciesDCFs = serviceSampling.getDCFSpecies(getFilter()); + } else { + targetSpeciesDCFs = getPossibleValuesForFilter().getTargetSpeciesDCFCodesAsList(); + } getFilter().setTargetSpeciesDCF(keptTargetSpeciesDCF); dcfSpeciesSelectModel = new GenericSelectModel<TargetSpeciesDCF>(targetSpeciesDCFs, TargetSpeciesDCF.class, @@ -376,11 +453,32 @@ } public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel() throws WaoException { + return getTerrestrialDistrictSelectModel(false); + } + public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel(boolean useService) throws WaoException { if (terrestrialLocationSelectModel == null) { - List<TerrestrialLocation> districts = serviceReferential.getAllTerrestrialDistricts(new SamplingFilterImpl()); + List<TerrestrialLocation> districts; + if (useService) { + districts = serviceReferential.getAllTerrestrialDistricts(new SamplingFilterImpl()); + } else { + districts = getPossibleValuesForFilter().getTerrestrialDistrictsAsList(); + } terrestrialLocationSelectModel = new GenericSelectModel<TerrestrialLocation>(districts, TerrestrialLocation.class, "description", SampleRow.TOPIA_ID, propertyAccess); } return terrestrialLocationSelectModel; } + + protected List<OptionModel> getOptionModels(List<String> names) { + List<OptionModel> options = new ArrayList<OptionModel>(); + for (String name : names) { + options.add(new OptionModelImpl(name, name)); + } + return options; + } + + public void updateSearchFields() { + updatePossibleValuesForFilter(); + resetModels(); + } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-03-18 16:41:04 UTC (rev 1076) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-03-18 17:00:57 UTC (rev 1077) @@ -2,24 +2,22 @@ import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.entity.SampleRow; +import fr.ifremer.wao.entity.TerrestrialLocation; +import fr.ifremer.wao.service.ServiceSampling; import fr.ifremer.wao.ui.base.ModelFactory; -import fr.ifremer.wao.ui.data.GenericSelectModel; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.Parameter; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.corelib.components.Form; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; -import org.chenillekit.tapestry.core.encoders.MultipleValueEncoder; import org.nuiton.util.PeriodDates; import org.slf4j.Logger; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; /** * @author sletellier <letellier at codelutin.com> @@ -32,6 +30,12 @@ @Inject private ComponentResources ressources; + @Inject + private ServiceSampling serviceSampling; + + @InjectComponent + private Form filtersForm; + @Parameter(required = true) private ModelFactory<? extends SamplingFilter> modelFactory; @@ -118,6 +122,7 @@ * Activate reset filter */ private boolean reset; + private boolean refresh; void onSelectedFromReset() { reset = true; @@ -129,6 +134,9 @@ * @return owner (for refresh) if filter is edited */ Object onSuccessFromFiltersForm() { + if (refresh) { + return filtersZone.getBody(); + } if (reset) { // Don't reset period in filters PeriodDates period = getFilter().getPeriod(); @@ -141,4 +149,74 @@ // Return owner return ressources.getContainer(); } + + /* + * Refresh search field + * TODO sletellier 20110318 : refresh dont work :( + */ + + public void onSelectedFromRefresh() { + updateSearchFields(); + refresh = true; + } + + protected Form updateSearchFields() { + getModelFactory().updateSearchFields(); + return filtersForm; + } + + public Form onValueChangedFromPeriodBegin() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromPeriodEnd() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromCompany() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromProgramName() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromFacadeName() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChanged(String sector) { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromTerrestrialDistrict(TerrestrialLocation location) { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromSampleRow() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromFishingGearDCF() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromTargetSpeciesDCF() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } + + public Form onValueChangedFromSamplingStrategy() { + log.info("onValueChanged !!!!!!!!!!!!!!!!!!!"); + return updateSearchFields(); + } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2011-03-18 16:41:04 UTC (rev 1076) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2011-03-18 17:00:57 UTC (rev 1077) @@ -45,7 +45,6 @@ import fr.ifremer.wao.ui.data.RequiresAuthentication; import fr.ifremer.wao.ui.services.WaoManager; import org.apache.commons.collections.CollectionUtils; -import org.apache.tapestry5.PersistenceConstants; import org.apache.tapestry5.StreamResponse; import org.apache.tapestry5.annotations.Import; import org.apache.tapestry5.annotations.InjectComponent; @@ -53,6 +52,7 @@ import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.annotations.SessionState; +import org.apache.tapestry5.corelib.components.Form; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-03-18 16:41:04 UTC (rev 1076) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-03-18 17:00:57 UTC (rev 1077) @@ -20,9 +20,6 @@ <t:if t:test="modelFactory.user.admin"> <label for="company">${message:wao.ui.entity.Company} :</label> <input t:type="select" t:id="company" t:model="modelFactory.companySelectModel" t:value="modelFactory.companyId"/> - <!--input t:type="submit" class="ico22px refresh" t:id="modelFactory.refreshByCompany" - value="${message:wao.ui.filters.refresh}" - title="${message:wao.ui.filters.refresh}"/--> </t:if> <label for="programName">${message:wao.ui.field.SampleRow.programName} :</label> <select t:type="select" t:id="programName" t:model="modelFactory.programSelectModel" t:value="filter.programName"/> @@ -31,30 +28,17 @@ <div class="filterRow" t:type="zone" t:id="sampleRowZone" t:update="show"> <label for="facadeName">${message:wao.ui.field.FishingZone.facadeName} :</label> <select t:type="select" t:id="facadeName" t:model="modelFactory.facadeSelectModel" t:value="filter.facadeName"/> - <!--input t:type="submit" class="ico22px refresh" t:id="modelFactory.refreshByFacade" value="Refresh" - title="${message:wao.ui.filters.refresh}"/--> <label for="sectorName">${message:wao.ui.field.FishingZone.sectorName} :</label> <select t:type="select" t:id="sectorName" t:model="modelFactory.sectorSelectModel" t:value="filter.sectorName"/> - <!--input t:type="submit" class="ico22px refresh" t:id="modelFactory.refreshBySector" value="Refresh" - title="${message:wao.ui.filters.refresh}"/--> <t:if test="modelFactory.user.obsVente"> <label>${message:wao.ui.field.SampleRow.terrestrialLocation} :</label> - <input t:type="select" t:model="modelFactory.terrestrialDistrictSelectModel" t:value="modelFactory.terrestrialDistrictId"/> + <input t:type="select" t:id="terrestrialDistrict" t:model="modelFactory.terrestrialDistrictSelectModel" t:value="modelFactory.terrestrialDistrictId"/> </t:if> <label for="sampleRowId">${message:wao.ui.field.SampleRow.code} :</label> - <select t:type="ck/MultipleSelect" t:model="modelFactory.sampleRowSelectModel" t:value="filter.sampleRows" size="4" + <select t:type="ck/MultipleSelect" t:id="sampleRow" + t:model="modelFactory.sampleRowSelectModel" t:value="filter.sampleRows" size="4" t:encoder="modelFactory.sampleRowSelectModel"/> - <!--select t:type="select" t:id="sampleRowId" t:model="modelFactory.sampleRowSelectModel" t:value="modelFactory.sampleRowId"/> - <input t:type="submit" class="ico22px add" t:id="addSampleRowCode" value="Add" - title="Ajouter un code de ligne"/> - <input t:type="submit" class="ico22px remove" t:id="removeSampleRowCode" value="Remove" - title="Retirer un code de ligne"/> - <ul> - <li style="display: inline;" t:type="loop" t:source="filter.sampleRows" t:value="row" t:volatile="true"> - ${row.code} - </li> - </ul--> </div> <div> <label for="fishingGearDCF">${message:wao.ui.entity.fishingGearDCF} :</label> @@ -73,6 +57,9 @@ </div> </t:if> <div class="t-beaneditor-row aright"> + <input t:type="submit" class="ico22px refresh" t:id="refresh" + value="${message:wao.ui.filters.refresh}" + title="${message:wao.ui.filters.refresh}"/> <input t:type="submit" class="ico search-32px" t:id="search" value="Search" title="Rechercher les lignes du plan correspondants aux filtres saisies"/> <input t:type="submit" class="ico undo" t:id="reset" value="Reset"
participants (1)
-
sletellier@users.labs.libre-entreprise.org