Author: sletellier Date: 2011-03-22 10:30:29 +0000 (Tue, 22 Mar 2011) New Revision: 1082 Log: - Creating SimpleSelector component - Revert refactor, prefer using TopiaEntitySelector and SimpleSelector component - Rename ModelFactory to FilterManager Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/FilterManager.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanFilterManager.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SimpleSelector.tml Removed: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanModelFactory.java Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.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/Boats.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml trunk/wao-ui/src/main/webapp/SamplingPlan.tml trunk/wao-ui/src/main/webapp/Synthesis.tml 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-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -27,6 +27,7 @@ import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.SamplingFilter; +import fr.ifremer.wao.bean.SamplingFilterImpl; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.FishingGearDCF; import fr.ifremer.wao.entity.SampleRow; @@ -39,9 +40,12 @@ import fr.ifremer.wao.service.ServiceUser; import fr.ifremer.wao.ui.data.FiltersModel; import fr.ifremer.wao.ui.data.GenericSelectModel; +import org.apache.tapestry5.OptionModel; import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.SessionState; +import org.apache.tapestry5.internal.OptionModelImpl; +import org.apache.tapestry5.internal.SelectModelImpl; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.slf4j.Logger; @@ -110,20 +114,68 @@ private ServiceUser serviceUser; @Persist - private ModelFactory modelFactory; + private FilterManager filterManager; @Persist private boolean observerSelect; @Persist private boolean programSelect; + /* + * Generic select models + */ + @Persist + private GenericSelectModel<SampleRow> sampleRowSelectModel; - private boolean edited; + @Persist + private GenericSelectModel<TerrestrialLocation> terrestrialLocationSelectModel; @Persist - private GenericSelectModel<SampleRow> sampleRowSelectModel; + private GenericSelectModel<Company> companySelectModel; @Persist + private GenericSelectModel<WaoUser> observerSelectModel; + + @Persist + private GenericSelectModel<FishingGearDCF> dcfGearSelectModel; + + @Persist + private GenericSelectModel<TargetSpeciesDCF> dcfSpeciesSelectModel; + + /* + * Select models + */ + @Persist + private SelectModel facadeSelectModel; + + @Persist + private SelectModel sectorSelectModel; + + @Persist + private SelectModel programSelectModel; + + /** + * Id + */ + @Persist + private String companyId; + + @Persist + private String observerId; + + @Persist + private String fishingGearDCFId; + + @Persist + private String targetSpeciesDCFId; + + @Persist + private String terrestrialDistrictId; + + + private boolean edited; + + @Persist private String sampleRowId; public boolean isObserverSelect() { @@ -145,73 +197,55 @@ } public String getCompanyId() { - return getModelFactory().getCompanyId(); + return companyId; } public void setCompanyId(String companyId) { - getModelFactory().setCompanyId(companyId); + this.companyId = companyId; + Company company = getEntityFromModel(getCompanySelectModel(), companyId); + getFilter().setCompany(company); } public String getObserverId() { - return getModelFactory().getObserverId(); + return observerId; } public void setObserverId(String observerId) { - getModelFactory().setObserverId(observerId); + this.observerId = observerId; + WaoUser observer = getEntityFromModel(getObserverSelectModel(), observerId); + getFilter().setObserver(observer); } public String getFishingGearDCFId() { - return getModelFactory().getFishingGearDCFId(); + return fishingGearDCFId; } public void setFishingGearDCFId(String fishingGearDCFId) { - getModelFactory().setFishingGearDCFId(fishingGearDCFId); + this.fishingGearDCFId = fishingGearDCFId; + FishingGearDCF fishingGearDCF = getEntityFromModel(getDcfGearSelectModel(), fishingGearDCFId); + getFilter().setFishingGearDCF(fishingGearDCF); } public String getTargetSpeciesDCFId() { - return getModelFactory().getTargetSpeciesDCFId(); + return targetSpeciesDCFId; } public void setTargetSpeciesDCFId(String targetSpeciesDCFId) { - getModelFactory().setTargetSpeciesDCFId(targetSpeciesDCFId); + this.targetSpeciesDCFId = targetSpeciesDCFId; + TargetSpeciesDCF targetSpeciesDCF = getEntityFromModel(getDcfSpeciesSelectModel(), targetSpeciesDCFId); + getFilter().setTargetSpeciesDCF(targetSpeciesDCF); } public String getTerrestrialDistrictId() { - return getModelFactory().getTerrestrialDistrictId(); + return terrestrialDistrictId; } public void setTerrestrialDistrictId(String terrestrialDistrictId) { - getModelFactory().setTerrestrialDistrictId(terrestrialDistrictId); + this.terrestrialDistrictId = terrestrialDistrictId; + TerrestrialLocation terrestrialDistrict = getEntityFromModel(getTerrestrialDistrictSelectModel(), terrestrialDistrictId); + getFilter().setTerrestrialDistrict(terrestrialDistrict); } - public ModelFactory getModelFactory() { - if (modelFactory == null) { - modelFactory = new ModelFactory<SamplingFilter>(propertyAccess, - user, - serviceReferential, - serviceSampling, - serviceBoat, - serviceUser) { - - @Override - public SamplingFilter getFilter() { - return AbstractFilteredPage.this.getFilter(); - } - - @Override - protected boolean isAvailableDataForFiltersOnly() { - return AbstractFilteredPage.this.isAvailableDataForFiltersOnly(); - } - - @Override - public void resetFilter() { - AbstractFilteredPage.this.resetFilter(); - } - }; - } - return modelFactory; - } - public void onSelectedFromAddSampleRowCode() { if (getSampleRowId() != null) { @@ -273,7 +307,7 @@ } if (user.isAdmin() && companySelect) { - getModelFactory().resetCompanySelectModel(); + resetCompanySelectModel(); if (getFilter().getCompany() != null) { setCompanyId(getFilter().getCompany().getTopiaId()); } @@ -286,7 +320,7 @@ // } if (observerSelect) { - getModelFactory().resetObserverSelectModel(); + resetObserverSelectModel(); getObserverSelectModel(); if (getFilter().getObserver() != null) { @@ -295,31 +329,82 @@ } if (programSelect) { - getModelFactory().resetProgramSelectModel(); + resetProgramSelectModel(); getProgramSelectModel(); } - getModelFactory().resetFacadeSelectModel(); - getModelFactory().resetSectorSelectModel(); - getModelFactory().resetSampleRowSelectModel(); + resetFacadeSelectModel(); + resetSectorSelectModel(); + resetSampleRowSelectModel(); - getModelFactory().initCompagnyFilter(); + initCompagnyFilter(); } - /** - * @see ModelFactory#getFacadeSelectModel() - */ - public SelectModel getFacadeSelectModel() throws WaoException { - return getModelFactory().getFacadeSelectModel(true); + public void initCompagnyFilter() { + // Very very important to do that at beginning + // Evo #2227 : Guest user has no default company filter + if (user.isCoordinatorOrObserver()) { + if (log.isDebugEnabled()) { + log.debug("Company filtered : " + user.getCompany().getName()); + } + getFilter().setCompany(user.getCompany()); + } } - /** - * @see ModelFactory#getSectorSelectModel() - */ - public SelectModel getSectorSelectModel() throws WaoException { - return getModelFactory().getSectorSelectModel(true); + public void resetCompanySelectModel() throws WaoException { + companySelectModel = null; + companyId = null; } + public void resetSampleRowSelectModel() throws WaoException { + sampleRowSelectModel = null; + getFilter().setSampleRow(null); + } + + public void resetObserverSelectModel() { + observerSelectModel = null; + observerId = null; + } + + public void resetTerrestrialDistrictModel() { + terrestrialLocationSelectModel = null; + terrestrialDistrictId = null; + } + + public void resetTargetSpeciesDCFModel() { + dcfSpeciesSelectModel = null; + targetSpeciesDCFId = null; + } + + public void resetFishingGearDCFModel() { + dcfGearSelectModel = null; + fishingGearDCFId = null; + } + + public void resetFacadeSelectModel() throws WaoException { + facadeSelectModel = null; + } + + public void resetSectorSelectModel() throws WaoException { + sectorSelectModel = null; + } + + public void resetProgramSelectModel() { + programSelectModel = null; + } + + public void resetModels() { + resetCompanySelectModel(); + resetFacadeSelectModel(); + resetObserverSelectModel(); + resetProgramSelectModel(); + resetSampleRowSelectModel(); + resetSectorSelectModel(); + resetTerrestrialDistrictModel(); + resetTargetSpeciesDCFModel(); + resetFishingGearDCFModel(); + } + /** * Get select model for sampleRows. Depends on filter (Sampling part only). * The sampleRow set from filter is temporarly extracted to avoid returning @@ -344,47 +429,141 @@ } /** - * @see ModelFactory#getCompanySelectModel() + * Get select model for fishingZone facade. Depends on company set in + * filter. + * + * @return the SelectModel for facade names + * @throws WaoException */ + public SelectModel getFacadeSelectModel() throws WaoException { + if (facadeSelectModel == null) { + List<OptionModel> options; + options = getOptionModels(serviceReferential.getFacades(getFilter())); + facadeSelectModel = new SelectModelImpl(null, options); + } + return facadeSelectModel; + } + + /** + * Get select model for fishingZone sector. Depends on facadeName and + * company set in filter. + * + * @return the SelectModel for sector names + * @throws WaoException + */ + public SelectModel getSectorSelectModel() throws WaoException { + if (sectorSelectModel == null) { + List<OptionModel> options; + options = getOptionModels(serviceReferential.getSectors(getFilter())); + sectorSelectModel = new SelectModelImpl(null, options); + } + return sectorSelectModel; + } + + /** + * Get select model for companies. Depends on + * {@link #isAvailableDataForFiltersOnly()} () } to return only activated + * companies. This select model is only used by admin users. + * + * @return the GenericSelectModel<Company> for companies + * @throws WaoException + */ public GenericSelectModel<Company> getCompanySelectModel() throws WaoException { - return getModelFactory().getCompanySelectModel(true); + if (companySelectModel == null) { + List<Company> companies; + companies = serviceUser.getCompanies(isAvailableDataForFiltersOnly()); + companySelectModel = new GenericSelectModel<Company>(companies, Company.class, + Company.PROPERTY_NAME, Company.TOPIA_ID, propertyAccess); + } + return companySelectModel; } /** - * @see ModelFactory#getObserverSelectModel() + * Get the select model for observers. Depends on + * {@link #isAvailableDataForFiltersOnly() } to return only activated + * companies. + * + * @return the GenericSelectModel<WaoUser> for observers + * @throws WaoException */ public GenericSelectModel<WaoUser> getObserverSelectModel() throws WaoException { - return getModelFactory().getObserverSelectModel(true); + if (observerSelectModel == null) { + + List<WaoUser> observers; + observers = + serviceUser.getObservers(getFilter().getCompany(), + isAvailableDataForFiltersOnly()); + + observerSelectModel = new GenericSelectModel<WaoUser>(observers, WaoUser.class, + "fullName", "topiaId", propertyAccess); + } + return observerSelectModel; } /** - * @see ModelFactory#getProgramSelectModel() + * Get select model for sampleRow program. Depends on company set in + * filter. + * + * @return the SelectModel for program names + * @throws WaoException */ public SelectModel getProgramSelectModel() throws WaoException { - return getModelFactory().getProgramSelectModel(true); + if (programSelectModel == null) { + List<OptionModel> options; + options = getOptionModels(serviceSampling.getPrograms(getFilter().getCompany())); + programSelectModel = new SelectModelImpl(null, options); + } + return programSelectModel; } - /** - * @see ModelFactory#getDcfGearSelectModel() - */ public GenericSelectModel<FishingGearDCF> getDcfGearSelectModel() throws WaoException { - return getModelFactory().getDcfGearSelectModel(true); + if (dcfGearSelectModel == null) { + // don't filter with already defined DCFs + FishingGearDCF keptFishingGearDCF = getFilter().getFishingGearDCF(); + getFilter().setFishingGearDCF(null); + List<FishingGearDCF> fishingGearDCFs; + fishingGearDCFs = serviceSampling.getDCFGears(getFilter()); + getFilter().setFishingGearDCF(keptFishingGearDCF); + + dcfGearSelectModel = new GenericSelectModel<FishingGearDCF>(fishingGearDCFs, FishingGearDCF.class, + "fullDescription", FishingGearDCF.TOPIA_ID, propertyAccess); + } + return dcfGearSelectModel; } - /** - * @see ModelFactory#getDcfSpeciesSelectModel() - */ public GenericSelectModel<TargetSpeciesDCF> getDcfSpeciesSelectModel() throws WaoException { - return getModelFactory().getDcfSpeciesSelectModel(true); + if (dcfSpeciesSelectModel == null) { + // don't filter with already defined DCFs + TargetSpeciesDCF keptTargetSpeciesDCF = getFilter().getTargetSpeciesDCF(); + getFilter().setTargetSpeciesDCF(null); + List<TargetSpeciesDCF> targetSpeciesDCFs; + targetSpeciesDCFs = serviceSampling.getDCFSpecies(getFilter()); + getFilter().setTargetSpeciesDCF(keptTargetSpeciesDCF); + + dcfSpeciesSelectModel = new GenericSelectModel<TargetSpeciesDCF>(targetSpeciesDCFs, TargetSpeciesDCF.class, + "fullDescription", TargetSpeciesDCF.TOPIA_ID, propertyAccess); + } + return dcfSpeciesSelectModel; } - /** - * @see ModelFactory#getTerrestrialDistrictSelectModel() - */ public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel() throws WaoException { - return getModelFactory().getTerrestrialDistrictSelectModel(true); + if (terrestrialLocationSelectModel == null) { + List<TerrestrialLocation> districts; + districts = serviceReferential.getAllTerrestrialDistricts(new SamplingFilterImpl()); + 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; + } + protected abstract SamplingFilter getFilter() throws WaoException; /** @@ -468,11 +647,11 @@ if (isObserverSelect()) { // Reset observers getFilter().setObserver(null); - getModelFactory().resetObserverSelectModel(); + resetObserverSelectModel(); getObserverSelectModel(); } if (isProgramSelect()) { - getModelFactory().resetProgramSelectModel(); + resetProgramSelectModel(); getProgramSelectModel(); } edited = true; @@ -491,7 +670,7 @@ // Reset facades getFilter().setFacadeName(null); onSelectedFromRefreshByFacade(); - getModelFactory().resetFacadeSelectModel(); + resetFacadeSelectModel(); } /** @@ -507,7 +686,7 @@ // Reset sectors getFilter().setSectorName(null); onSelectedFromRefreshBySector(); - getModelFactory().resetSectorSelectModel(); + resetSectorSelectModel(); } /** @@ -524,7 +703,7 @@ onSelectedFromSearch(); // Reset sampleRows; getFilter().setSampleRow(null); - getModelFactory().resetSampleRowSelectModel(); + resetSampleRowSelectModel(); edited = true; } Copied: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/FilterManager.java (from rev 1077, trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java) =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/FilterManager.java (rev 0) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/FilterManager.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -0,0 +1,88 @@ +package fr.ifremer.wao.ui.base; + +import fr.ifremer.wao.bean.ConnectedUser; +import fr.ifremer.wao.bean.SamplingFilter; +import fr.ifremer.wao.bean.SamplingFilterValues; +import fr.ifremer.wao.service.ServiceSampling; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * @author sletellier <letellier at codelutin.com> + */ +public abstract class FilterManager<E extends SamplingFilter> { + + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(FilterManager.class); + + protected ConnectedUser user; + + /* + * Services + */ + protected ServiceSampling serviceSampling; + + /* + * Datas + */ + protected SamplingFilterValues possibleValuesForFilter; + + public FilterManager(ConnectedUser user, + ServiceSampling serviceSampling) { + + this.serviceSampling = serviceSampling; + this.user = user; + + // Initialize filter + 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; + } + public void initCompagnyFilter() { + // Very very important to do that at beginning + // Evo #2227 : Guest user has no default company filter + if (user.isCoordinatorOrObserver()) { + if (log.isDebugEnabled()) { + log.debug("Company filtered : " + user.getCompany().getName()); + } + getFilter().setCompany(user.getCompany()); + } + } + + public abstract E getFilter(); + + /** + * Method to initialize filter, is call on constructor + */ + public abstract void resetFilter(); + + /** + * Used to show only active company and observers. + * + * @return true if only active users will be showed, false otherwise + */ + protected abstract boolean isAvailableDataForFiltersOnly(); + + public void updateSearchFields() { + updatePossibleValuesForFilter(); + } +} Deleted: 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-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -1,484 +0,0 @@ -package fr.ifremer.wao.ui.base; - -import fr.ifremer.wao.WaoException; -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; -import fr.ifremer.wao.entity.TargetSpeciesDCF; -import fr.ifremer.wao.entity.TerrestrialLocation; -import fr.ifremer.wao.entity.WaoUser; -import fr.ifremer.wao.service.ServiceBoat; -import fr.ifremer.wao.service.ServiceReferential; -import fr.ifremer.wao.service.ServiceSampling; -import fr.ifremer.wao.service.ServiceUser; -import fr.ifremer.wao.ui.data.GenericSelectModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.tapestry5.OptionModel; -import org.apache.tapestry5.SelectModel; -import org.apache.tapestry5.internal.OptionModelImpl; -import org.apache.tapestry5.internal.SelectModelImpl; -import org.apache.tapestry5.ioc.services.PropertyAccess; -import org.chenillekit.tapestry.core.models.GenericMultipleSelectModel; - -import java.util.ArrayList; -import java.util.List; - -import static fr.ifremer.wao.ui.data.TapestryUtil.getEntityFromModel; - -/** - * @author sletellier <letellier at codelutin.com> - */ -public abstract class ModelFactory <E extends SamplingFilter> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(ModelFactory.class); - - protected PropertyAccess propertyAccess; - - protected ConnectedUser user; - - /* - * Services - */ - protected ServiceReferential serviceReferential; - protected ServiceSampling serviceSampling; - protected ServiceBoat serviceBoat; - protected ServiceUser serviceUser; - - /* - * Generic select models - */ - protected GenericMultipleSelectModel<SampleRow> sampleRowSelectModel; - protected GenericSelectModel<TerrestrialLocation> terrestrialLocationSelectModel; - protected GenericSelectModel<Company> companySelectModel; - protected GenericSelectModel<WaoUser> observerSelectModel; - protected GenericSelectModel<FishingGearDCF> dcfGearSelectModel; - protected GenericSelectModel<TargetSpeciesDCF> dcfSpeciesSelectModel; - - /* - * Select models - */ - protected SelectModel facadeSelectModel; - protected SelectModel sectorSelectModel; - protected SelectModel programSelectModel; - - /** - * Id - */ - protected String companyId; - protected String observerId; - protected String fishingGearDCFId; - protected String targetSpeciesDCFId; - protected String terrestrialDistrictId; - - /* - * Datas - */ - protected SamplingFilterValues possibleValuesForFilter; - - public ModelFactory(PropertyAccess propertyAccess, - ConnectedUser user, - ServiceReferential serviceReferential, - ServiceSampling serviceSampling, - ServiceBoat serviceBoat, - ServiceUser serviceUser) { - - this.user = user; - this.propertyAccess = propertyAccess; - - this.serviceReferential = serviceReferential; - this.serviceSampling = serviceSampling; - this.serviceBoat = serviceBoat; - this.serviceUser = serviceUser; - - // Initialize filter - 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; - } - - public String getCompanyId() { - return companyId; - } - - public void setCompanyId(String companyId) { - this.companyId = companyId; - Company company = getEntityFromModel(getCompanySelectModel(), companyId); - getFilter().setCompany(company); - } - - public String getObserverId() { - return observerId; - } - - public void setObserverId(String observerId) { - this.observerId = observerId; - WaoUser observer = getEntityFromModel(getObserverSelectModel(), observerId); - getFilter().setObserver(observer); - } - - public String getFishingGearDCFId() { - return fishingGearDCFId; - } - - public void setFishingGearDCFId(String fishingGearDCFId) { - this.fishingGearDCFId = fishingGearDCFId; - FishingGearDCF fishingGearDCF = getEntityFromModel(getDcfGearSelectModel(), fishingGearDCFId); - getFilter().setFishingGearDCF(fishingGearDCF); - } - - public String getTargetSpeciesDCFId() { - return targetSpeciesDCFId; - } - - public void setTargetSpeciesDCFId(String targetSpeciesDCFId) { - this.targetSpeciesDCFId = targetSpeciesDCFId; - TargetSpeciesDCF targetSpeciesDCF = getEntityFromModel(getDcfSpeciesSelectModel(), targetSpeciesDCFId); - getFilter().setTargetSpeciesDCF(targetSpeciesDCF); - } - - public String getTerrestrialDistrictId() { - return terrestrialDistrictId; - } - - public void setTerrestrialDistrictId(String terrestrialDistrictId) { - this.terrestrialDistrictId = terrestrialDistrictId; - TerrestrialLocation terrestrialDistrict = getEntityFromModel(getTerrestrialDistrictSelectModel(), terrestrialDistrictId); - getFilter().setTerrestrialDistrict(terrestrialDistrict); - } - - public void resetCompanySelectModel() throws WaoException { - companySelectModel = null; - companyId = null; - } - - public void resetSampleRowSelectModel() throws WaoException { - sampleRowSelectModel = null; - getFilter().setSampleRow(null); - } - - public void resetObserverSelectModel() { - observerSelectModel = null; - observerId = null; - } - - public void resetTerrestrialDistrictModel() { - terrestrialLocationSelectModel = null; - terrestrialDistrictId = null; - } - - public void resetTargetSpeciesDCFModel() { - dcfSpeciesSelectModel = null; - targetSpeciesDCFId = null; - } - - public void resetFishingGearDCFModel() { - dcfGearSelectModel = null; - fishingGearDCFId = null; - } - - public void resetFacadeSelectModel() throws WaoException { - facadeSelectModel = null; - } - - public void resetSectorSelectModel() throws WaoException { - sectorSelectModel = null; - } - - public void resetProgramSelectModel() { - programSelectModel = null; - } - - public void initCompagnyFilter() { - // Very very important to do that at beginning - // Evo #2227 : Guest user has no default company filter - if (user.isCoordinatorOrObserver()) { - if (log.isDebugEnabled()) { - log.debug("Company filtered : " + user.getCompany().getName()); - } - getFilter().setCompany(user.getCompany()); - } - } - - public abstract E getFilter(); - - /** - * Method to initialize filter, is call on constructor - */ - public abstract void resetFilter(); - - public void resetModels() { - resetCompanySelectModel(); - resetFacadeSelectModel(); - resetObserverSelectModel(); - resetProgramSelectModel(); - resetSampleRowSelectModel(); - resetSectorSelectModel(); - resetTerrestrialDistrictModel(); - resetTargetSpeciesDCFModel(); - resetFishingGearDCFModel(); - } - - /** - * Used to show only active company and observers. - * - * @return true if only active users will be showed, false otherwise - */ - 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. - * - * @return the SelectModel for facade names - * @throws WaoException - */ - public SelectModel getFacadeSelectModel() throws WaoException { - return getFacadeSelectModel(false); - } - - public SelectModel getFacadeSelectModel(boolean useService) throws WaoException { - if (facadeSelectModel == null) { - List<OptionModel> options; - if (useService) { - options = getOptionModels(serviceReferential.getFacades(getFilter())); - } else { - options = getOptionModels(getPossibleValuesForFilter().getFacadeNamesAsList()); - } - facadeSelectModel = new SelectModelImpl(null, options); - } - return facadeSelectModel; - } - - /** - * Get select model for fishingZone sector. Depends on facadeName and - * company set in filter. - * - * @return the SelectModel for sector names - * @throws WaoException - */ - public SelectModel getSectorSelectModel() throws WaoException { - return getSectorSelectModel(false); - } - - public SelectModel getSectorSelectModel(boolean useService) throws WaoException { - if (sectorSelectModel == null) { - List<OptionModel> options; - if (useService) { - options = getOptionModels(serviceReferential.getSectors(getFilter())); - } else { - options = getOptionModels(getPossibleValuesForFilter().getSectorsNamesAsList()); - } - sectorSelectModel = new SelectModelImpl(null, options); - } - return sectorSelectModel; - } - - /** - * Get select model for sampleRows. Depends on filter (Sampling part only). - * The sampleRow set from filter is temporarly extracted to avoid returning - * only one element in the select. - * - * @return the GenericMultipleSelectModel<SampleRow> for sampleRows - * @throws WaoException - */ - public GenericMultipleSelectModel<SampleRow> getSampleRowSelectModel() throws WaoException { - if (sampleRowSelectModel == null) { - // WARN : no use of sampleRow filter - - List<SampleRow> rowsFiltered = getFilter().getSampleRows(); - getFilter().setSampleRows(null); - List<SampleRow> sampleRows = getPossibleValuesForFilter().getSampleRowsAsList(); - getFilter().setSampleRows(rowsFiltered); - - sampleRowSelectModel = new GenericMultipleSelectModel<SampleRow>(sampleRows, SampleRow.class, - SampleRow.PROPERTY_CODE, SampleRow.TOPIA_ID, propertyAccess); - } - return sampleRowSelectModel; - } - - /** - * Get select model for companies. Depends on - * {@link #isAvailableDataForFiltersOnly()} () } to return only activated - * companies. This select model is only used by admin users. - * - * @return the GenericSelectModel<Company> for companies - * @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; - 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; - } - - /** - * Get the select model for observers. Depends on - * {@link #isAvailableDataForFiltersOnly() } to return only activated - * companies. - * - * @return the GenericSelectModel<WaoUser> for observers - * @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; - if (useService) { - observers = - serviceUser.getObservers(getFilter().getCompany(), - isAvailableDataForFiltersOnly()); - } else { - observers = getPossibleValuesForFilter().getObserversAsList(); - } - - observerSelectModel = new GenericSelectModel<WaoUser>(observers, WaoUser.class, - "fullName", "topiaId", propertyAccess); - } - return observerSelectModel; - } - - /** - * Get select model for sampleRow program. Depends on company set in - * filter. - * - * @return the SelectModel for program names - * @throws WaoException - */ - public SelectModel getProgramSelectModel() throws WaoException { - return getProgramSelectModel(false); - } - - public SelectModel getProgramSelectModel(boolean useService) throws WaoException { - if (programSelectModel == null) { - List<OptionModel> options; - if (useService) { - options = getOptionModels(serviceSampling.getPrograms(getFilter().getCompany())); - } else { - options = getOptionModels(getPossibleValuesForFilter().getProgramsAsList()); - } - programSelectModel = new SelectModelImpl(null, options); - } - return programSelectModel; - } - - 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; - if (useService) { - fishingGearDCFs = serviceSampling.getDCFGears(getFilter()); - } else { - fishingGearDCFs = getPossibleValuesForFilter().getFishingGearDCFCodesAsList(); - } - getFilter().setFishingGearDCF(keptFishingGearDCF); - - dcfGearSelectModel = new GenericSelectModel<FishingGearDCF>(fishingGearDCFs, FishingGearDCF.class, - "fullDescription", FishingGearDCF.TOPIA_ID, propertyAccess); - } - return dcfGearSelectModel; - } - - 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; - if (useService) { - targetSpeciesDCFs = serviceSampling.getDCFSpecies(getFilter()); - } else { - targetSpeciesDCFs = getPossibleValuesForFilter().getTargetSpeciesDCFCodesAsList(); - } - getFilter().setTargetSpeciesDCF(keptTargetSpeciesDCF); - - dcfSpeciesSelectModel = new GenericSelectModel<TargetSpeciesDCF>(targetSpeciesDCFs, TargetSpeciesDCF.class, - "fullDescription", TargetSpeciesDCF.TOPIA_ID, propertyAccess); - } - return dcfSpeciesSelectModel; - } - - public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel() throws WaoException { - return getTerrestrialDistrictSelectModel(false); - } - public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel(boolean useService) throws WaoException { - if (terrestrialLocationSelectModel == null) { - 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(); - } -} Copied: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanFilterManager.java (from rev 1077, trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanModelFactory.java) =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanFilterManager.java (rev 0) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanFilterManager.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -0,0 +1,64 @@ +package fr.ifremer.wao.ui.base; + +import fr.ifremer.wao.bean.ConnectedUser; +import fr.ifremer.wao.bean.SamplingFilter; +import fr.ifremer.wao.bean.SamplingFilterImpl; +import fr.ifremer.wao.service.ServiceSampling; +import org.apache.tapestry5.annotations.InjectComponent; +import org.apache.tapestry5.annotations.Persist; +import org.apache.tapestry5.corelib.components.Form; +import org.nuiton.util.PeriodDates; + +import java.util.Calendar; +import java.util.GregorianCalendar; + +/** + * @author sletellier <letellier at codelutin.com> + */ +public class SamplingPlanFilterManager extends FilterManager<SamplingFilter> { + + @Persist + protected SamplingFilter filter; + + @InjectComponent + private Form filtersForm; + + public SamplingPlanFilterManager(ConnectedUser user, + ServiceSampling serviceSampling) { + + super(user, serviceSampling); + } + + @Override + public SamplingFilter getFilter() { + return filter; + } + + @Override + protected boolean isAvailableDataForFiltersOnly() { + return false; + } + + @Override + public void resetFilter() { + + filter = new SamplingFilterImpl(); + // Initialize period + PeriodDates period = PeriodDates.createMonthsPeriodFromToday(11); + + GregorianCalendar initialFromDate = new GregorianCalendar(); + // in the firsts months of a new year go from now to 6 months before + // in the rest of the year, just start at the beginning of the current year + if (initialFromDate.get(Calendar.MONTH) < 3) { + initialFromDate.add(Calendar.MONTH, -6); + } else { + initialFromDate.set(Calendar.DAY_OF_YEAR, 1); + } + period.setFromDate(initialFromDate.getTime()); + filter.setPeriod(period); + filter.setObsProgram(user.getProfile().getObsProgram()); + filter.setEstimatedTides(true); + + initCompagnyFilter(); + } +} Deleted: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanModelFactory.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanModelFactory.java 2011-03-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingPlanModelFactory.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -1,72 +0,0 @@ -package fr.ifremer.wao.ui.base; - -import fr.ifremer.wao.bean.ConnectedUser; -import fr.ifremer.wao.bean.SamplingFilter; -import fr.ifremer.wao.bean.SamplingFilterImpl; -import fr.ifremer.wao.service.ServiceBoat; -import fr.ifremer.wao.service.ServiceReferential; -import fr.ifremer.wao.service.ServiceSampling; -import fr.ifremer.wao.service.ServiceUser; -import org.apache.tapestry5.annotations.InjectComponent; -import org.apache.tapestry5.annotations.Persist; -import org.apache.tapestry5.corelib.components.Form; -import org.apache.tapestry5.ioc.services.PropertyAccess; -import org.nuiton.util.PeriodDates; - -import java.util.Calendar; -import java.util.GregorianCalendar; - -/** - * @author sletellier <letellier at codelutin.com> - */ -public class SamplingPlanModelFactory extends ModelFactory<SamplingFilter> { - - @Persist - protected SamplingFilter filter; - - @InjectComponent - private Form filtersForm; - - public SamplingPlanModelFactory(PropertyAccess propertyAccess, - ConnectedUser user, - ServiceReferential serviceReferential, - ServiceSampling serviceSampling, - ServiceBoat serviceBoat, - ServiceUser serviceUser) { - - super(propertyAccess, user, serviceReferential, serviceSampling, serviceBoat, serviceUser); - } - - @Override - public SamplingFilter getFilter() { - return filter; - } - - @Override - protected boolean isAvailableDataForFiltersOnly() { - return false; - } - - @Override - public void resetFilter() { - - filter = new SamplingFilterImpl(); - // Initialize period - PeriodDates period = PeriodDates.createMonthsPeriodFromToday(11); - - GregorianCalendar initialFromDate = new GregorianCalendar(); - // in the firsts months of a new year go from now to 6 months before - // in the rest of the year, just start at the beginning of the current year - if (initialFromDate.get(Calendar.MONTH) < 3) { - initialFromDate.add(Calendar.MONTH, -6); - } else { - initialFromDate.set(Calendar.DAY_OF_YEAR, 1); - } - period.setFromDate(initialFromDate.getTime()); - filter.setPeriod(period); - filter.setObsProgram(user.getProfile().getObsProgram()); - filter.setEstimatedTides(true); - - initCompagnyFilter(); - } -} 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-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -1,10 +1,9 @@ package fr.ifremer.wao.ui.components; import fr.ifremer.wao.bean.SamplingFilter; +import fr.ifremer.wao.bean.SamplingFilterValues; 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.base.FilterManager; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.Parameter; @@ -30,14 +29,11 @@ @Inject private ComponentResources resources; - @Inject - private ServiceSampling serviceSampling; - @InjectComponent private Form filtersForm; @Parameter(required = true) - private ModelFactory<? extends SamplingFilter> modelFactory; + private FilterManager<? extends SamplingFilter> filterManager; @Parameter(required = true) private String legendMsg; @@ -103,17 +99,21 @@ } public SamplingFilter getFilter() { - return modelFactory.getFilter(); + return filterManager.getFilter(); } - public ModelFactory getModelFactory() { - return modelFactory; + public SamplingFilterValues getPossibleValuesForFilter() { + return filterManager.getPossibleValuesForFilter(); } - public void setModelFactory(ModelFactory<? extends SamplingFilter> modelFactory) { - this.modelFactory = modelFactory; + public FilterManager getFilterManager() { + return filterManager; } + public void setFilterManager(FilterManager<? extends SamplingFilter> filterManager) { + this.filterManager = filterManager; + } + public DateFormat getDateFormat() { return new SimpleDateFormat("MM/yyyy"); } @@ -139,15 +139,12 @@ */ Object onSuccessFromFiltersForm() { if (refresh) { - getModelFactory().updateSearchFields(); return filtersZone.getBody(); } if (reset) { // Don't reset period in filters PeriodDates period = getFilter().getPeriod(); - getModelFactory().resetFilter(); - getModelFactory().resetModels(); - getModelFactory().updateSearchFields(); + getFilterManager().resetFilter(); getFilter().setPeriod(period); } Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java (rev 0) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -0,0 +1,135 @@ +package fr.ifremer.wao.ui.components; + +import org.apache.tapestry5.OptionGroupModel; +import org.apache.tapestry5.OptionModel; +import org.apache.tapestry5.annotations.Parameter; +import org.apache.tapestry5.internal.OptionModelImpl; +import org.apache.tapestry5.internal.SelectModelImpl; +import org.apache.tapestry5.ioc.annotations.Inject; +import org.apache.tapestry5.ioc.services.PropertyAccess; +import org.apache.tapestry5.util.AbstractSelectModel; +import org.slf4j.Logger; + +import java.util.ArrayList; +import java.util.List; + +/** + * Component to select one or many string + * + * @author sletellier <letellier at codelutin.com> + */ +public class SimpleSelector { + + @Inject + private Logger log; + + @Inject + private PropertyAccess propertyAccess; + + @Parameter(required = true) + private List<String> values; + + @Parameter(required = false) + private Boolean multiple; + + @Parameter(required = false) + private String selectedValue; + + @Parameter(required = false) + private List<String> selectedValues; + + @Parameter(required = false) + private Integer size; + + @Parameter(required = false) + private SimpleSelectorModel model; + + public SimpleSelectorModel getModel() { + if (model == null) { + model = new SimpleSelectorModel(); + } + return model; + } + + public void setModel(SimpleSelectorModel model) { + this.model = model; + } + + public String getSelectedValue() { + return selectedValue; + } + + public void setSelectedValue(String selectedValue) { + this.selectedValue = selectedValue; + } + + public List<String> getSelectedValues() { + return selectedValues; + } + + public void setSelectedValues(List<String> selectedValues) { + this.selectedValues = selectedValues; + } + + public List<String> getValues() { + return values; + } + + public void setValues(List<String> values) { + this.values = values; + } + + public Integer getSize() { + if (size == null) { + size = getValues().size(); + } + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public boolean getMultiple() { + if (multiple == null) { + multiple = false; + } + return multiple; + } + + public void setMultiple(Boolean multiple) { + this.multiple = multiple; + } + + /** + * Model used by {@link fr.ifremer.wao.ui.components.SimpleSelector} + * + * @author sletellier <letellier at codelutin.com> + */ + public class SimpleSelectorModel extends AbstractSelectModel { + + protected SelectModelImpl delegate; + + public SimpleSelectorModel() { + delegate = new SelectModelImpl(null, getOptionModels(getValues())); + } + + @Override + public List<OptionGroupModel> getOptionGroups() { + return delegate.getOptionGroups(); + } + + @Override + public List<OptionModel> getOptions() { + return delegate.getOptions(); + } + + protected List<OptionModel> getOptionModels(List<String> values) { + List<OptionModel> options = new ArrayList<OptionModel>(); + for (String value : values) { + options.add(new OptionModelImpl(value, value)); + } + return options; + } + } +} Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-03-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -796,7 +796,7 @@ // WARNING :: Reset sampleRow select for edition mode, no limit for // showing sampleRows instead of filters getFilter().setNbMonthFinishedFromToday(null); - getModelFactory().resetSampleRowSelectModel(); + resetSampleRowSelectModel(); getFilter().setNbMonthFinishedFromToday(-1); } return boatInfosZone.getBody(); 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-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -38,7 +38,7 @@ import fr.ifremer.wao.service.ServiceReferential; import fr.ifremer.wao.service.ServiceSampling; import fr.ifremer.wao.service.ServiceUser; -import fr.ifremer.wao.ui.base.SamplingPlanModelFactory; +import fr.ifremer.wao.ui.base.SamplingPlanFilterManager; import fr.ifremer.wao.ui.components.Layout; import fr.ifremer.wao.ui.components.SamplingFilterComponent; import fr.ifremer.wao.ui.data.ExportStreamResponse; @@ -52,7 +52,6 @@ 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; @@ -86,21 +85,9 @@ private Logger log; @Inject - private PropertyAccess propertyAccess; - - @Inject - private ServiceReferential serviceReferential; - - @Inject private ServiceSampling serviceSampling; @Inject - private ServiceBoat serviceBoat; - - @Inject - private ServiceUser serviceUser; - - @Inject private WaoManager manager; @Inject @@ -117,7 +104,7 @@ private ConnectedUser user; @Persist - private SamplingPlanModelFactory modelFactory; + private SamplingPlanFilterManager filterManager; private long nbTidesExpectedTime; @@ -127,16 +114,15 @@ private long totalTidesRealTime; - public SamplingPlanModelFactory getModelFactory() { - if (modelFactory == null) { - modelFactory = new SamplingPlanModelFactory(propertyAccess, - user, serviceReferential, serviceSampling, serviceBoat, serviceUser); + public SamplingPlanFilterManager getFilterManager() { + if (filterManager == null) { + filterManager = new SamplingPlanFilterManager(user, serviceSampling); } - return modelFactory; + return filterManager; } - public void setModelFactory(SamplingPlanModelFactory modelFactory) { - this.modelFactory = modelFactory; + public void setFilterManager(SamplingPlanFilterManager filterManager) { + this.filterManager = filterManager; } /** @@ -190,7 +176,7 @@ } public SamplingFilter getFilter() { - return getModelFactory().getFilter(); + return getFilterManager().getFilter(); } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2011-03-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2011-03-22 10:30:29 UTC (rev 1082) @@ -35,20 +35,14 @@ import fr.ifremer.wao.bean.GlobalSynthesisResult; import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.SamplingFilter; -import fr.ifremer.wao.bean.SamplingFilterImpl; import fr.ifremer.wao.bean.SynthesisId; import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.Indicator; import fr.ifremer.wao.entity.IndicatorLevel; -import fr.ifremer.wao.entity.SampleRow; -import fr.ifremer.wao.service.ServiceBoat; -import fr.ifremer.wao.service.ServiceReferential; import fr.ifremer.wao.service.ServiceSampling; import fr.ifremer.wao.service.ServiceSynthesis; -import fr.ifremer.wao.service.ServiceUser; -import fr.ifremer.wao.ui.base.AbstractFilteredPage; -import fr.ifremer.wao.ui.base.SamplingPlanModelFactory; +import fr.ifremer.wao.ui.base.SamplingPlanFilterManager; import fr.ifremer.wao.ui.components.SamplingFilterComponent; import fr.ifremer.wao.ui.data.ChartUtils; import fr.ifremer.wao.ui.data.ChartUtils.ChartType; @@ -69,7 +63,6 @@ import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; -import org.apache.tapestry5.ioc.services.PropertyAccess; import org.jfree.chart.JFreeChart; import org.nuiton.util.PeriodDates; import org.slf4j.Logger; @@ -102,24 +95,12 @@ private RenderSupport renderSupport; @Inject - private PropertyAccess propertyAccess; - - @Inject - private ServiceReferential serviceReferential; - - @Inject private ServiceSampling serviceSampling; @Inject - private ServiceBoat serviceBoat; + private WaoManager manager; @Inject - private ServiceUser serviceUser; - - @Inject - private WaoManager manager; - - @Inject private ServiceSynthesis serviceSynthesis; @Inject @@ -151,18 +132,17 @@ private Messages messages; @Persist - private SamplingPlanModelFactory modelFactory; + private SamplingPlanFilterManager filterManager; - public SamplingPlanModelFactory getModelFactory() { - if (modelFactory == null) { - modelFactory = new SamplingPlanModelFactory(propertyAccess, - user, serviceReferential, serviceSampling, serviceBoat, serviceUser); + public SamplingPlanFilterManager getFilterManager() { + if (filterManager == null) { + filterManager = new SamplingPlanFilterManager(user, serviceSampling); } - return modelFactory; + return filterManager; } - public void setModelFactory(SamplingPlanModelFactory modelFactory) { - this.modelFactory = modelFactory; + public void setFilterManager(SamplingPlanFilterManager filterManager) { + this.filterManager = filterManager; } void setupRender() { @@ -293,7 +273,7 @@ /********************* FILTERS ********************************************/ public SamplingFilter getFilter() throws WaoException { - return getModelFactory().getFilter(); + return getFilterManager().getFilter(); } public PeriodDates getPeriod() throws WaoException { 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-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-03-22 10:30:29 UTC (rev 1082) @@ -8,9 +8,13 @@ <t:errors/> <div style="float: left; margin-right: 15px;"> <label for="sampleRow">${message:wao.ui.field.SampleRow.code} :</label><br /> - <select t:type="ck/MultipleSelect" t:id="sampleRow" - t:model="modelFactory.sampleRowSelectModel" t:value="filter.sampleRows" size="6" - t:encoder="modelFactory.sampleRowSelectModel"/> + <t:topiaEntitySelector t:id="sampleRow" + t:multiple="true" + t:clazzName="SampleRow" + t:labelPropertyName="code" + t:values="possibleValuesForFilter.sampleRowsAsList" + t:selectedValues="filter.sampleRows" + size="6"/> </div> <div> <label for="periodBegin">${message:wao.ui.form.periodFrom}</label> @@ -21,30 +25,52 @@ t:validate="required"/> </div> <div> - <t:if t:test="modelFactory.user.admin"> + <t:if t:test="filterManager.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"/> + <t:topiaEntitySelector t:id="company" + t:clazzName="Company" + t:labelPropertyName="name" + t:values="possibleValuesForFilter.companiesAsList" + t:selectedValue="filter.company"/> </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"/> + <t:simpleSelector t:id="programName" + t:values="possibleValuesForFilter.programsAsList" + t:selectedValue="filter.programName"/> </div> <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"/> + <t:simpleSelector t:id="facadeName" + t:values="possibleValuesForFilter.facadeNamesAsList" + t:selectedValue="filter.facadeName"/> <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"/> - <t:if test="modelFactory.user.obsVente"> + <t:simpleSelector t:id="sectorName" + t:values="possibleValuesForFilter.sectorsNamesAsList" + t:selectedValue="filter.sectorName"/> + <t:if test="filterManager.user.obsVente"> <label>${message:wao.ui.field.SampleRow.terrestrialLocation} :</label> - <input t:type="select" t:id="terrestrialDistrict" t:model="modelFactory.terrestrialDistrictSelectModel" t:value="modelFactory.terrestrialDistrictId"/> + <t:topiaEntitySelector t:id="terrestrialDistrict" + t:clazzName="TerrestrialLocation" + t:labelPropertyName="description" + t:values="possibleValuesForFilter.terrestrialDistrictsAsList" + t:selectedValue="filter.terrestrialDistrict"/> </t:if> </div> <div> <label for="fishingGearDCF">${message:wao.ui.entity.fishingGearDCF} :</label> - <input t:type="select" t:id="fishingGearDCF" t:model="modelFactory.dcfGearSelectModel" t:value="modelFactory.fishingGearDCFId"/> + <t:topiaEntitySelector t:id="fishingGearDCF" + t:clazzName="FishingGearDCF" + t:labelPropertyName="fullDescription" + t:values="possibleValuesForFilter.fishingGearDCFCodesAsList" + t:selectedValue="filter.fishingGearDCF"/> <label for="targetSpeciesDCF">${message:wao.ui.entity.targetSpeciesDCF} :</label> - <input t:type="select" t:id="targetSpeciesDCF" t:model="modelFactory.dcfSpeciesSelectModel" t:value="modelFactory.targetSpeciesDCFId"/> - <t:if test="modelFactory.user.obsVente"> + <t:topiaEntitySelector t:id="targetSpeciesDCF" + t:clazzName="TargetSpeciesDCF" + t:labelPropertyName="fullDescription" + t:values="possibleValuesForFilter.targetSpeciesDCFCodesAsList" + t:selectedValue="filter.targetSpeciesDCF"/> + <t:if test="filterManager.user.obsVente"> <label t:for="samplingStrategy">${message:wao.ui.field.SampleRow.samplingStrategy} :</label> <input t:type="select" t:id="samplingStrategy" t:value="filter.samplingStrategy"/> </t:if> Added: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SimpleSelector.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SimpleSelector.tml (rev 0) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SimpleSelector.tml 2011-03-22 10:30:29 UTC (rev 1082) @@ -0,0 +1,17 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" + xmlns:p="tapestry:parameter"> + <t:if test="multiple"> + <select t:type="ck/MultipleSelect" + t:id="multipleSelect" + t:model="model" + t:value="selectedValues" + size="${size}"/> + <p:else> + <input t:type="select" + t:id="select" + t:model="model" + t:value="selectedValue"/> + </p:else> + </t:if> +</html> \ No newline at end of file Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-22 10:30:29 UTC (rev 1082) @@ -87,7 +87,7 @@ <!--FIXME sletellier 20110316 : visible on parameter dont work in this case....--> <t:samplingFilterComponent t:id="filterComponent" t:visibleOnStartup="false" - t:modelFactory="modelFactory" + t:filterManager="filterManager" t:legendMsg="${message:wao.ui.misc.advancedSearch}"/> </div> <t:zone t:id="samplingZone"> Modified: trunk/wao-ui/src/main/webapp/Synthesis.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Synthesis.tml 2011-03-21 23:53:13 UTC (rev 1081) +++ trunk/wao-ui/src/main/webapp/Synthesis.tml 2011-03-22 10:30:29 UTC (rev 1082) @@ -104,7 +104,7 @@ <t:samplingFilterComponent t:id="filterComponent" - t:modelFactory="modelFactory" + t:filterManager="filterManager" t:showEstimatedTides="true" t:legendMsg="${message:wao.ui.filters.filters}"/>