Author: sletellier Date: 2011-03-15 17:26:14 +0000 (Tue, 15 Mar 2011) New Revision: 1064 Log: Introduce ModelFactory, deprectated AbstractFilteredPage delegate to this one Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.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/pages/Boats.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/base/AbstractFilteredPage.java 2011-03-15 15:40:11 UTC (rev 1063) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2011-03-15 17:26:14 UTC (rev 1064) @@ -27,7 +27,6 @@ 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; @@ -40,13 +39,9 @@ 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.Property; 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; @@ -113,47 +108,95 @@ private ServiceUser serviceUser; @Persist - private GenericSelectModel<SampleRow> sampleRowSelectModel; + private ModelFactory modelFactory; - @Property - private String sampleRowId; - - @Persist - private SelectModel facadeSelectModel; + public boolean isObserverSelect() { + return getModelFactory().isObserverSelect(); + } - @Persist - private SelectModel sectorSelectModel; + public boolean isProgramSelect() { + return getModelFactory().isProgramSelect(); + } - @Persist - private GenericSelectModel<Company> companySelectModel; + public String getSampleRowId() { + return getModelFactory().getSampleRowId(); + } - @Property - private String companyId; + public void setSampleRowId(String sampleRowId) { + getModelFactory().setSampleRowId(sampleRowId); + } - @Persist - private GenericSelectModel<WaoUser> observerSelectModel; + public String getCompanyId() { + return getModelFactory().getCompanyId(); + } - @Property - private String observerId; + public void setCompanyId(String companyId) { + getModelFactory().setCompanyId(companyId); + } - @Persist - private SelectModel programSelectModel; + public String getObserverId() { + return getModelFactory().getObserverId(); + } - @Persist - private boolean observerSelect; + public void setObserverId(String observerId) { + getModelFactory().setObserverId(observerId); + } - @Persist - private boolean programSelect; + public String getFishingGearDCFId() { + return getModelFactory().getFishingGearDCFId(); + } + public void setFishingGearDCFId(String fishingGearDCFId) { + getModelFactory().setFishingGearDCFId(fishingGearDCFId); + } + + public String getTargetSpeciesDCFId() { + return getModelFactory().getTargetSpeciesDCFId(); + } + + public void setTargetSpeciesDCFId(String targetSpeciesDCFId) { + getModelFactory().setTargetSpeciesDCFId(targetSpeciesDCFId); + } + + public String getTerrestrialDistrictId() { + return getModelFactory().getTerrestrialDistrictId(); + } + + public void setTerrestrialDistrictId(String terrestrialDistrictId) { + getModelFactory().setTerrestrialDistrictId(terrestrialDistrictId); + } + + public ModelFactory getModelFactory() { + if (modelFactory == null) { + modelFactory = new ModelFactory<SamplingFilter>(propertyAccess, + serviceReferential, + serviceSampling, + serviceBoat, + serviceUser) { + + @Override + public SamplingFilter getFilter() { + return AbstractFilteredPage.this.getFilter(); + } + + @Override + protected boolean isAvailableDataForFiltersOnly() { + return AbstractFilteredPage.this.isAvailableDataForFiltersOnly(); + } + }; + } + return modelFactory; + } + public void onSelectedFromAddSampleRowCode() { - if (sampleRowId != null) { + if (getSampleRowId() != null) { List<SampleRow> rows = getFilter().getSampleRows(); if (rows == null) { rows = new ArrayList<SampleRow>(); getFilter().setSampleRows(rows); } - SampleRow sampleRow = getSampleRowSelectModel().findObject(sampleRowId); + SampleRow sampleRow = getSampleRowSelectModel().findObject(getSampleRowId()); if ( ! rows.contains(sampleRow)) { rows.add(sampleRow); } @@ -163,8 +206,8 @@ } public void onSelectedFromRemoveSampleRowCode() { - if (sampleRowId != null) { - getFilter().getSampleRows().remove(getSampleRowSelectModel().findObject(sampleRowId)); + if (getSampleRowId() != null) { + getFilter().getSampleRows().remove(getSampleRowSelectModel().findObject(getSampleRowId())); edited = true; } } @@ -185,229 +228,68 @@ } /** - * Initialize all select for filters. By default, only facade, sector and - * sampleRow selects will be initialized. - * - * @param companySelect if true, company select will be initialized - * @param observerSelect if true, observer select will be initialized - * @param programSelect - * @throws WaoException + * @see ModelFactory#initSelectFilters(fr.ifremer.wao.bean.ConnectedUser, boolean, boolean, boolean) */ protected void initSelectFilters(boolean companySelect, boolean observerSelect, boolean programSelect) throws WaoException { - this.observerSelect = observerSelect; - this.programSelect = programSelect; - if (getFilter().getSampleRow() != null) { - if (log.isDebugEnabled()) { - log.debug("SampleRow filtered : " + getFilter().getSampleRow()); - } - sampleRowId = getFilter().getSampleRow().getTopiaId(); - } - - if (user.isAdmin() && companySelect) { - resetCompanySelect(); - if (getFilter().getCompany() != null) { - companyId = getFilter().getCompany().getTopiaId(); - } - } -// else if (!user.isAdmin()) { -// if (log.isDebugEnabled()) { -// log.debug("Company filtered : " + user.getCompany()); -// } -// getFilter().setCompany(user.getCompany()); -// } - - if (observerSelect) { - observerSelectModel = null; - getObserverSelectModel(); - - if (getFilter().getObserver() != null) { - observerId = getFilter().getObserver().getTopiaId(); - } - } - - if (programSelect) { - programSelectModel = null; - getProgramSelectModel(); - } - - resetFacadeSelect(); - resetSectorSelect(); - resetSampleRowSelect(); + getModelFactory().initSelectFilters(user, companySelect, observerSelect, programSelect); } - protected void resetCompanySelect() throws WaoException { - companySelectModel = null; - getCompanySelectModel(); - } - - protected void resetFacadeSelect() throws WaoException { - facadeSelectModel = null; - getFacadeSelectModel(); - } - - protected void resetSectorSelect() throws WaoException { - sectorSelectModel = null; - getSectorSelectModel(); - } - - protected void resetSampleRowSelect() throws WaoException { - sampleRowSelectModel = null; - getSampleRowSelectModel(); - } - /** - * Get select model for fishingZone facade. Depends on company set in - * filter. - * - * @return the SelectModel for facade names - * @throws WaoException + * @see ModelFactory#getFacadeSelectModel() */ public SelectModel getFacadeSelectModel() throws WaoException { - if (facadeSelectModel == null) { - List<OptionModel> options = new ArrayList<OptionModel>(); - for (String facadeName : serviceReferential.getFacades(getFilter())) { - options.add(new OptionModelImpl(facadeName,facadeName)); - } - facadeSelectModel = new SelectModelImpl(null, options); - } - return facadeSelectModel; + return getModelFactory().getFacadeSelectModel(); } /** - * Get select model for fishingZone sector. Depends on facadeName and - * company set in filter. - * - * @return the SelectModel for sector names - * @throws WaoException + * @see ModelFactory#getSectorSelectModel() */ public SelectModel getSectorSelectModel() throws WaoException { - if (sectorSelectModel == null) { - List<OptionModel> options = new ArrayList<OptionModel>(); - for (String sectorName : serviceReferential.getSectors(getFilter())) { - options.add(new OptionModelImpl(sectorName,sectorName)); - } - sectorSelectModel = new SelectModelImpl(null, options); - } - return sectorSelectModel; + return getModelFactory().getSectorSelectModel(); } /** - * 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 GenericSelectModel<SampleRow> for sampleRows - * @throws WaoException + * @see ModelFactory#getSampleRowSelectModel() */ public GenericSelectModel<SampleRow> getSampleRowSelectModel() throws WaoException { - if (sampleRowSelectModel == null) { - // WARN : no use of sampleRow filter - - List<SampleRow> rowsFiltered = getFilter().getSampleRows(); - getFilter().setSampleRows(null); - List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter()); - getFilter().setSampleRows(rowsFiltered); - - sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class, - SampleRow.PROPERTY_CODE, SampleRow.TOPIA_ID, propertyAccess); - } - return sampleRowSelectModel; + return getModelFactory().getSampleRowSelectModel(); } /** - * 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 + * @see ModelFactory#getCompanySelectModel() */ public GenericSelectModel<Company> getCompanySelectModel() throws WaoException { - if (companySelectModel == null) { - List<Company> companies = serviceUser.getCompanies(isAvailableDataForFiltersOnly()); - companySelectModel = new GenericSelectModel<Company>(companies,Company.class, - Company.PROPERTY_NAME, Company.TOPIA_ID, propertyAccess); - } - return companySelectModel; + return getModelFactory().getCompanySelectModel(); } /** - * Get the select model for observers. Depends on - * {@link #isAvailableDataForFiltersOnly() } to return only activated - * companies. - * - * @return the GenericSelectModel<WaoUser> for observers - * @throws WaoException + * @see ModelFactory#getObserverSelectModel() */ public GenericSelectModel<WaoUser> getObserverSelectModel() throws WaoException { - if (observerSelectModel == null) { - List<WaoUser> observers = - serviceUser.getObservers(getFilter().getCompany(), - isAvailableDataForFiltersOnly()); - observerSelectModel = new GenericSelectModel<WaoUser>(observers,WaoUser.class, - "fullName", "topiaId", propertyAccess); - } - return observerSelectModel; + return getModelFactory().getObserverSelectModel(); } /** - * Get select model for sampleRow program. Depends on company set in - * filter. - * - * @return the SelectModel for program names - * @throws WaoException + * @see ModelFactory#getProgramSelectModel() */ public SelectModel getProgramSelectModel() throws WaoException { - if (programSelectModel == null) { - List<OptionModel> options = new ArrayList<OptionModel>(); - for (String programName : serviceSampling.getPrograms(getFilter().getCompany())) { - options.add(new OptionModelImpl(programName, programName)); - } - programSelectModel = new SelectModelImpl(null, options); - } - return programSelectModel; + return getModelFactory().getProgramSelectModel(); } - @Property - @Persist - private String fishingGearDCFId; - - private GenericSelectModel<FishingGearDCF> dcfGearSelectModel; - + /** + * @see ModelFactory#getDcfGearSelectModel() + */ public GenericSelectModel<FishingGearDCF> getDcfGearSelectModel() 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()); - getFilter().setFishingGearDCF(keptFishingGearDCF); - - dcfGearSelectModel = new GenericSelectModel<FishingGearDCF>(fishingGearDCFs, FishingGearDCF.class, - "fullDescription", FishingGearDCF.TOPIA_ID, propertyAccess); - } - return dcfGearSelectModel; + return getModelFactory().getDcfGearSelectModel(); } - @Property - @Persist - private String targetSpeciesDCFId; - - private GenericSelectModel<TargetSpeciesDCF> dcfSpeciesSelectModel; - + /** + * @see ModelFactory#getDcfSpeciesSelectModel() + */ public GenericSelectModel<TargetSpeciesDCF> getDcfSpeciesSelectModel() 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()); - getFilter().setTargetSpeciesDCF(keptTargetSpeciesDCF); - - dcfSpeciesSelectModel = new GenericSelectModel<TargetSpeciesDCF>(targetSpeciesDCFs, TargetSpeciesDCF.class, - "fullDescription", TargetSpeciesDCF.TOPIA_ID, propertyAccess); - } - return dcfSpeciesSelectModel; + return getModelFactory().getDcfSpeciesSelectModel(); } protected abstract SamplingFilter getFilter() throws WaoException; @@ -424,6 +306,7 @@ return results.toArray(new String[results.size()]); } + /** * Called when search submit button is pressed. This method is useful to * refresh all filters data from selects. @@ -433,19 +316,19 @@ public void onSelectedFromSearch() throws WaoException { if (log.isDebugEnabled()) { log.debug("REFRESH FILTERS DATA"); - log.debug("observerSelect : " + observerSelect); + log.debug("observerSelect : " + isObserverSelect()); } //SampleRow row = getSampleRowSelectModel().findObject(sampleRowId); // getFilter().setSampleRow(row); if (user.isAdmin()) { - Company company = getCompanySelectModel().findObject(companyId); + Company company = getCompanySelectModel().findObject(getCompanyId()); getFilter().setCompany(company); } else { getFilter().setCompany(user.getCompany()); } - if (observerSelect) { - WaoUser observer = getObserverSelectModel().findObject(observerId); + if (isObserverSelect()) { + WaoUser observer = getObserverSelectModel().findObject(getObserverId()); if (log.isDebugEnabled()) { log.debug("Observer selected : " + (observer != null ? observer.getFullName() : "null")); @@ -453,15 +336,17 @@ getFilter().setObserver(observer); } + String fishingGearDCFId = getFishingGearDCFId(); if (fishingGearDCFId != null) { FishingGearDCF fishingGearDCF = getDcfGearSelectModel().findObject(fishingGearDCFId); getFilter().setFishingGearDCF(fishingGearDCF); } + String targetSpeciesDCFId = getTargetSpeciesDCFId(); if (targetSpeciesDCFId != null) { TargetSpeciesDCF targetSpeciesDCF = getDcfSpeciesSelectModel().findObject(targetSpeciesDCFId); getFilter().setTargetSpeciesDCF(targetSpeciesDCF); } - updateLocation(terrestrialDistrictId); + updateLocation(getTerrestrialDistrictId()); } public void updateLocation(String terrestrialDistrictId) { @@ -487,14 +372,14 @@ // Reset programs (the behavior is needed even if programSelect is false) getFilter().setProgramName(null); onSelectedFromRefreshByProgram(); - if (observerSelect) { + if (isObserverSelect()) { // Reset observers getFilter().setObserver(null); - observerSelectModel = null; + getModelFactory().resetObserverSelectModel(); getObserverSelectModel(); } - if (programSelect) { - programSelectModel = null; + if (isProgramSelect()) { + getModelFactory().resetProgramSelectModel(); getProgramSelectModel(); } edited = true; @@ -513,7 +398,7 @@ // Reset facades getFilter().setFacadeName(null); onSelectedFromRefreshByFacade(); - resetFacadeSelect(); + getModelFactory().resetFacadeSelect(); } /** @@ -529,7 +414,7 @@ // Reset sectors getFilter().setSectorName(null); onSelectedFromRefreshBySector(); - resetSectorSelect(); + getModelFactory().resetSectorSelect(); } /** @@ -546,7 +431,7 @@ onSelectedFromSearch(); // Reset sampleRows; getFilter().setSampleRow(null); - resetSampleRowSelect(); + getModelFactory().resetSampleRowSelect(); edited = true; } @@ -559,18 +444,10 @@ return edited; } - @Property - @Persist - private String terrestrialDistrictId; - - private GenericSelectModel<TerrestrialLocation> terrestrialLocationSelectModel; - + /** + * @see ModelFactory#getTerrestrialDistrictSelectModel() + */ public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel() throws WaoException { - if (terrestrialLocationSelectModel == null) { - List<TerrestrialLocation> districts = serviceReferential.getAllTerrestrialDistricts(new SamplingFilterImpl()); - terrestrialLocationSelectModel = new GenericSelectModel<TerrestrialLocation>(districts, TerrestrialLocation.class, - "description", SampleRow.TOPIA_ID, propertyAccess); - } - return terrestrialLocationSelectModel; + return getModelFactory().getTerrestrialDistrictSelectModel(); } } Added: 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 (rev 0) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java 2011-03-15 17:26:14 UTC (rev 1064) @@ -0,0 +1,385 @@ +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.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 java.util.ArrayList; +import java.util.List; + +/** + * @author sletellier + */ +public abstract class ModelFactory <E extends SamplingFilter> { + + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(ModelFactory.class); + + protected PropertyAccess propertyAccess; + + private boolean observerSelect; + private boolean programSelect; + + /** + * Services + */ + protected ServiceReferential serviceReferential; + protected ServiceSampling serviceSampling; + protected ServiceBoat serviceBoat; + protected ServiceUser serviceUser; + + /** + * Generic select models + */ + protected GenericSelectModel<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 sampleRowId; + protected String companyId; + protected String observerId; + protected String fishingGearDCFId; + protected String targetSpeciesDCFId; + protected String terrestrialDistrictId; + + public ModelFactory(PropertyAccess propertyAccess, ServiceReferential serviceReferential, ServiceSampling serviceSampling, ServiceBoat serviceBoat, ServiceUser serviceUser) { + this.propertyAccess = propertyAccess; + + this.serviceReferential = serviceReferential; + this.serviceSampling = serviceSampling; + this.serviceBoat = serviceBoat; + this.serviceUser = serviceUser; + } + + public boolean isObserverSelect() { + return observerSelect; + } + + public boolean isProgramSelect() { + return programSelect; + } + + public String getSampleRowId() { + return sampleRowId; + } + + public void setSampleRowId(String sampleRowId) { + this.sampleRowId = sampleRowId; + } + + public String getCompanyId() { + return companyId; + } + + public void setCompanyId(String companyId) { + this.companyId = companyId; + } + + public String getObserverId() { + return observerId; + } + + public void setObserverId(String observerId) { + this.observerId = observerId; + } + + public String getFishingGearDCFId() { + return fishingGearDCFId; + } + + public void setFishingGearDCFId(String fishingGearDCFId) { + this.fishingGearDCFId = fishingGearDCFId; + } + + public String getTargetSpeciesDCFId() { + return targetSpeciesDCFId; + } + + public void setTargetSpeciesDCFId(String targetSpeciesDCFId) { + this.targetSpeciesDCFId = targetSpeciesDCFId; + } + + public String getTerrestrialDistrictId() { + return terrestrialDistrictId; + } + + public void setTerrestrialDistrictId(String terrestrialDistrictId) { + this.terrestrialDistrictId = terrestrialDistrictId; + } + + public void resetCompanySelect() throws WaoException { + companySelectModel = null; + getCompanySelectModel(); + } + + public void resetFacadeSelect() throws WaoException { + facadeSelectModel = null; + getFacadeSelectModel(); + } + + public void resetSectorSelect() throws WaoException { + sectorSelectModel = null; + getSectorSelectModel(); + } + + public void resetSampleRowSelect() throws WaoException { + sampleRowSelectModel = null; + getSampleRowSelectModel(); + } + + public void resetObserverSelectModel() { + observerSelectModel = null; + } + + public void resetProgramSelectModel() { + programSelectModel = null; + } + + + /** + * Initialize all select for filters. By default, only facade, sector and + * sampleRow selects will be initialized. + * + * @param companySelect if true, company select will be initialized + * @param observerSelect if true, observer select will be initialized + * @param programSelect + * @throws WaoException + */ + public void initSelectFilters(ConnectedUser user, boolean companySelect, + boolean observerSelect, boolean programSelect) throws WaoException { + + this.observerSelect = observerSelect; + this.programSelect = programSelect; + + if (getFilter().getSampleRow() != null) { + if (log.isDebugEnabled()) { + log.debug("SampleRow filtered : " + getFilter().getSampleRow()); + } + setSampleRowId(getFilter().getSampleRow().getTopiaId()); + } + + if (user.isAdmin() && companySelect) { + resetCompanySelect(); + if (getFilter().getCompany() != null) { + setCompanyId(getFilter().getCompany().getTopiaId()); + } + } +// else if (!user.isAdmin()) { +// if (log.isDebugEnabled()) { +// log.debug("Company filtered : " + user.getCompany()); +// } +// getFilter().setCompany(user.getCompany()); +// } + + if (observerSelect) { + resetObserverSelectModel(); + getObserverSelectModel(); + + if (getFilter().getObserver() != null) { + setObserverId(getFilter().getObserver().getTopiaId()); + } + } + + if (programSelect) { + resetProgramSelectModel(); + getProgramSelectModel(); + } + + resetFacadeSelect(); + resetSectorSelect(); + resetSampleRowSelect(); + } + + public abstract E getFilter(); + + /** + * Used to show only active company and observers. + * + * @return true if only active users will be showed, false otherwise + */ + protected abstract boolean isAvailableDataForFiltersOnly(); + + /** + * 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 = new ArrayList<OptionModel>(); + for (String facadeName : serviceReferential.getFacades(getFilter())) { + options.add(new OptionModelImpl(facadeName,facadeName)); + } + 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 = new ArrayList<OptionModel>(); + for (String sectorName : serviceReferential.getSectors(getFilter())) { + options.add(new OptionModelImpl(sectorName,sectorName)); + } + 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 GenericSelectModel<SampleRow> for sampleRows + * @throws WaoException + */ + public GenericSelectModel<SampleRow> getSampleRowSelectModel() throws WaoException { + if (sampleRowSelectModel == null) { + // WARN : no use of sampleRow filter + + List<SampleRow> rowsFiltered = getFilter().getSampleRows(); + getFilter().setSampleRows(null); + List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter()); + getFilter().setSampleRows(rowsFiltered); + + sampleRowSelectModel = new GenericSelectModel<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 { + if (companySelectModel == null) { + List<Company> companies = serviceUser.getCompanies(isAvailableDataForFiltersOnly()); + 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 { + if (observerSelectModel == null) { + List<WaoUser> observers = + serviceUser.getObservers(getFilter().getCompany(), + isAvailableDataForFiltersOnly()); + 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 { + if (programSelectModel == null) { + List<OptionModel> options = new ArrayList<OptionModel>(); + for (String programName : serviceSampling.getPrograms(getFilter().getCompany())) { + options.add(new OptionModelImpl(programName, programName)); + } + programSelectModel = new SelectModelImpl(null, options); + } + return programSelectModel; + } + + public GenericSelectModel<FishingGearDCF> getDcfGearSelectModel() 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()); + getFilter().setFishingGearDCF(keptFishingGearDCF); + + dcfGearSelectModel = new GenericSelectModel<FishingGearDCF>(fishingGearDCFs, FishingGearDCF.class, + "fullDescription", FishingGearDCF.TOPIA_ID, propertyAccess); + } + return dcfGearSelectModel; + } + + public GenericSelectModel<TargetSpeciesDCF> getDcfSpeciesSelectModel() 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()); + getFilter().setTargetSpeciesDCF(keptTargetSpeciesDCF); + + dcfSpeciesSelectModel = new GenericSelectModel<TargetSpeciesDCF>(targetSpeciesDCFs, TargetSpeciesDCF.class, + "fullDescription", TargetSpeciesDCF.TOPIA_ID, propertyAccess); + } + return dcfSpeciesSelectModel; + } + + public GenericSelectModel<TerrestrialLocation> getTerrestrialDistrictSelectModel() throws WaoException { + if (terrestrialLocationSelectModel == null) { + List<TerrestrialLocation> districts = serviceReferential.getAllTerrestrialDistricts(new SamplingFilterImpl()); + terrestrialLocationSelectModel = new GenericSelectModel<TerrestrialLocation>(districts, TerrestrialLocation.class, + "description", SampleRow.TOPIA_ID, propertyAccess); + } + return terrestrialLocationSelectModel; + } +} 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-15 15:40:11 UTC (rev 1063) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-03-15 17:26:14 UTC (rev 1064) @@ -790,7 +790,7 @@ // WARNING :: Reset sampleRow select for edition mode, no limit for // showing sampleRows instead of filters getFilter().setNbMonthFinishedFromToday(null); - resetSampleRowSelect(); + getModelFactory().resetSampleRowSelect(); getFilter().setNbMonthFinishedFromToday(-1); } return boatInfosZone.getBody();