[Suiviobsmer-commits] r625 - in trunk: wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/data wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/java/fr/ifremer/wao/ui/services
Author: fdesbois Date: 2010-07-24 12:35:32 +0000 (Sat, 24 Jul 2010) New Revision: 625 Log: Evo #2369 : - Refactor Company by ContactFilter for Contacts cartography - Create FiltersModel to manage Filter (AbstractFilteredPage need to be deprecated) Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/FiltersModel.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/KmlLoader.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategy.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategyContacts.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-24 10:40:35 UTC (rev 624) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-24 12:35:32 UTC (rev 625) @@ -24,6 +24,7 @@ import fr.ifremer.wao.WaoContext; import fr.ifremer.wao.WaoDAOHelper; import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactPieChartConstant; import fr.ifremer.wao.bean.ContactState; import fr.ifremer.wao.bean.PieChartData; @@ -155,7 +156,7 @@ @Override protected InputStream executeExportContactStatisticsKml(TopiaContext transaction, - Company company) + ContactFilter filter) throws TopiaException, IOException { BoatDistrictDAO dao = WaoDAOHelper.getBoatDistrictDAO(transaction); @@ -163,7 +164,7 @@ KmlWriter writer = KmlIOFactory.newContactWriterJak(); Map<String, PieChartData> districts = - serviceSynthesis.getContactPieChartDataByBoatDistrict(company); + serviceSynthesis.getContactPieChartDataByBoatDistrict(filter.getCompany()); NumberFormat numberFormat = NumberFormat.getInstance(); // Only 2 digits maximum after the comma Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/FiltersModel.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/FiltersModel.java (rev 0) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/FiltersModel.java 2010-07-24 12:35:32 UTC (rev 625) @@ -0,0 +1,115 @@ +package fr.ifremer.wao.ui.data; + +import fr.ifremer.wao.bean.ContactFilter; +import fr.ifremer.wao.bean.UserFilter; +import fr.ifremer.wao.bean.WaoFilter; +import fr.ifremer.wao.entity.Company; +import fr.ifremer.wao.service.ServiceUser; +import org.apache.tapestry5.annotations.Persist; +import org.apache.tapestry5.ioc.services.PropertyAccess; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * Created: 24 juil. 2010 + * + * @author fdesbois <fdesbois at codelutin.com> + * @version $Id$ + */ +public class FiltersModel<F extends WaoFilter> { + + private static final Logger logger = LoggerFactory.getLogger(FiltersModel.class); + + /** SERVICES */ + private PropertyAccess propertyAccess; + + private ServiceUser serviceUser; + + /** MODELS */ + private GenericSelectModel<Company> companySelectModel; + + /** DATA */ + private F filter; + + public FiltersModel(F filter, PropertyAccess propertyAccess) { + + this.filter = filter; + this.propertyAccess = propertyAccess; + } + + /** + * ServiceUser is used for filters : COMPANY. + * + * @param serviceUser ServiceUser to set + */ + public void setServiceUser(ServiceUser serviceUser) { + this.serviceUser = serviceUser; + } + + /** + * Retrieve Company SelectModel to used in page. + * + * @param activeOnly Will retrieve only activate companies + * @return the GenericSelectModel for Company + * @throws IllegalStateException if ServiceUser is not defined + * @see ServiceUser#getCompanies(boolean) + */ + public GenericSelectModel<Company> getCompanySelectModel(boolean activeOnly) + throws IllegalStateException { + + if (serviceUser == null) { + throw new IllegalStateException("ServiceUser not exists to retrieve companies"); + } + + if (companySelectModel == null) { + List<Company> companies = serviceUser.getCompanies(activeOnly); + companySelectModel = new GenericSelectModel<Company>( + companies, + Company.class, + Company.NAME, + Company.TOPIA_ID, + propertyAccess + ); + } + return companySelectModel; + } + + /** + * Set the company in filter from its {@code companyId}. The company + * object will be retrieve from the Company SelectModel. If you want + * to set directly the company, do it directly on the filter using + * {@link #getFilter()} method. + * + * @param companyId Id of the company to set + * @throws IllegalStateException if Company SelectModel is not defined + */ + public void setCompany(String companyId) throws IllegalStateException { + + if (companySelectModel == null) { + throw new IllegalStateException("Company selectModel not found !"); + } + + Company company = companySelectModel.findObject(companyId); + getUserFilter().setCompany(company); + } + + /** + * Get the filter. + * + * @return the current filter associated to this model. + */ + public F getFilter() { + return filter; + } + + protected UserFilter getUserFilter() { + if (!UserFilter.class.isAssignableFrom(filter.getClass())) { + throw new ClassCastException("UserFilter not assignable from " + + filter.getClass().getName()); + } + + return (UserFilter)filter; + } +} Property changes on: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/FiltersModel.java ___________________________________________________________________ Added: svn:keywords + Id HeadURL Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java 2010-07-24 10:40:35 UTC (rev 624) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java 2010-07-24 12:35:32 UTC (rev 625) @@ -23,10 +23,14 @@ import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ConnectedUser; +import fr.ifremer.wao.bean.ContactFilter; +import fr.ifremer.wao.bean.ContactFilterImpl; import fr.ifremer.wao.bean.UserRole; +import fr.ifremer.wao.bean.WaoFilter; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.service.ServiceCartography; import fr.ifremer.wao.service.ServiceUser; +import fr.ifremer.wao.ui.data.FiltersModel; import fr.ifremer.wao.ui.data.GenericSelectModel; import fr.ifremer.wao.ui.data.RequiresAuthentication; import org.apache.commons.lang.RandomStringUtils; @@ -36,6 +40,7 @@ import org.apache.tapestry5.annotations.SessionState; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; +import org.apache.tapestry5.services.ApplicationStateManager; import org.apache.tapestry5.services.PageRenderLinkSource; import org.slf4j.Logger; @@ -67,56 +72,78 @@ @Inject private ServiceUser serviceUser; + private String url; + + void setupRender() { + // Init filter if needed + initFilter(); + + // Init companyId for select + companyId = getCompany() != null ? getCompany().getTopiaId() : null; + } + + /**************************** FILTERS *************************************/ + + @SessionState(create = false) + private WaoFilter cartographyFilter; + @Persist - private GenericSelectModel<Company> companySelectModel; + private FiltersModel<ContactFilter> filtersModel; @Property private String companyId; - @Persist - private Company company; + protected void initFilter() { + if (cartographyFilter == null) { + cartographyFilter = new ContactFilterImpl(); + } + getFiltersModel(); + } - private String url; + public FiltersModel<ContactFilter> getFiltersModel() { + if (filtersModel == null) { - void setupRender() { + if (logger.isDebugEnabled()) { + logger.debug("Initialize FiltersModel"); + } - if (logger.isDebugEnabled()) { - String companyName = getCompany() != null ? getCompany().getName() : null; - logger.debug("Company selected : " + companyName); - } + filtersModel = new FiltersModel<ContactFilter>( + (ContactFilter)cartographyFilter, propertyAccess); - if (getCompany() != null) { - companyId = getCompany().getTopiaId(); + filtersModel.setServiceUser(serviceUser); + + // Initialize company + if (!user.isAdmin()) { + filtersModel.getFilter().setCompany(user.getCompany()); + } } + return filtersModel; } + public GenericSelectModel<Company> getCompanySelectModel() { + return getFiltersModel().getCompanySelectModel(true); + } + public Company getCompany() { - if (company == null && !user.isAdmin() && !user.isGuest()) { - company = user.getCompany(); - } - return company; + return getFiltersModel().getFilter().getCompany(); } - public GenericSelectModel<Company> getCompanySelectModel() throws WaoException { - if (companySelectModel == null) { - List<Company> companies = serviceUser.getCompanies(true); - companySelectModel = new GenericSelectModel<Company>( - companies, - Company.class, - Company.NAME, - Company.TOPIA_ID, - propertyAccess - ); - } - return companySelectModel; + void onSuccessFromFilters() { +// if (!user.isAdmin()) { +// throw new WaoException("Vous n'avez pas les droits nécessaires" + +// " pour filtrer sur une société", null); +// } + + getFiltersModel().setCompany(companyId); } + /**************************** URL *************************************/ + public String getUrl() throws IOException { if (url == null) { Link link = pageRender.createPageRenderLinkWithContext( KmlLoader.class, - KmlLoader.StrategyValues.CONTACTS, - companyId + KmlLoader.StrategyValues.CONTACTS ); url = link.toURI(); } @@ -129,19 +156,10 @@ public String getPageTitle() { String title = "Répartition des contacts par quartier des navires"; - if (company != null) { - title += " pour la société " + company.getName(); + if (getCompany() != null) { + title += " pour la société " + getCompany().getName(); } return title; } - - void onSuccessFromFilters() { - if (!user.isAdmin()) { - throw new WaoException("Vous n'avez pas les droits nécessaires" + - " pour filtrer sur une société", null); - } - - company = companySelectModel.findObject(companyId); - } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/KmlLoader.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/KmlLoader.java 2010-07-24 10:40:35 UTC (rev 624) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/KmlLoader.java 2010-07-24 12:35:32 UTC (rev 625) @@ -21,6 +21,8 @@ */ package fr.ifremer.wao.ui.pages; +import fr.ifremer.wao.bean.ContactFilter; +import fr.ifremer.wao.bean.WaoFilter; import fr.ifremer.wao.service.ServiceCartography; import fr.ifremer.wao.service.ServiceUser; import fr.ifremer.wao.ui.services.KmlLoaderStrategy; @@ -28,6 +30,7 @@ import fr.ifremer.wao.ui.data.RequiresAuthentication; import fr.ifremer.wao.ui.data.TapestryUtil; import org.apache.tapestry5.StreamResponse; +import org.apache.tapestry5.annotations.SessionState; import org.apache.tapestry5.ioc.annotations.Inject; import java.io.IOException; @@ -50,6 +53,9 @@ CONTACTS; } + @SessionState(create = false) + private WaoFilter cartographyFilter; + @Inject private ServiceCartography serviceCartography; @@ -65,7 +71,7 @@ * @param activationContext Context of the page. * @return the StreamResponse that contains Kml data. * @throws IOException - * @see KmlLoaderStrategy#getStreamResponse(Object...) + * @see KmlLoaderStrategy#getStreamResponse(WaoFilter) */ StreamResponse onActivate(Object... activationContext) throws IOException { // Retrive context data @@ -76,7 +82,7 @@ KmlLoaderStrategy strategy = createStrategy(StrategyValues.valueOf(first)); // Return the StreamResponse from the Strategy - return strategy.getStreamResponse(other); + return strategy.getStreamResponse(cartographyFilter); } /** Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-07-24 10:40:35 UTC (rev 624) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-07-24 12:35:32 UTC (rev 625) @@ -27,6 +27,8 @@ import fr.ifremer.wao.WaoContextImpl; import fr.ifremer.wao.bean.ConnectedUser; +import fr.ifremer.wao.bean.ContactFilter; +import fr.ifremer.wao.bean.ContactFilterImpl; import fr.ifremer.wao.bean.PieChartData; import fr.ifremer.wao.bean.PieChartDataImpl; import fr.ifremer.wao.service.ServiceBoat; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategy.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategy.java 2010-07-24 10:40:35 UTC (rev 624) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategy.java 2010-07-24 12:35:32 UTC (rev 625) @@ -21,6 +21,8 @@ */ package fr.ifremer.wao.ui.services; +import fr.ifremer.wao.bean.ContactFilter; +import fr.ifremer.wao.bean.WaoFilter; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.ui.pages.KmlLoader; import org.apache.tapestry5.StreamResponse; @@ -36,14 +38,14 @@ * @version $Id$ * @see KmlLoader */ -public interface KmlLoaderStrategy { +public interface KmlLoaderStrategy<F extends WaoFilter> { /** * Retrieve the StreamResponse for this Strategy. * - * @param context Strategy context + * @param filter Strategy filter * @return the StreamResponse to use in KmlLoader * @throws IOException for error on StreamResponse creation */ - StreamResponse getStreamResponse(Object... context) throws IOException; + StreamResponse getStreamResponse(F filter) throws IOException; } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategyContacts.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategyContacts.java 2010-07-24 10:40:35 UTC (rev 624) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/KmlLoaderStrategyContacts.java 2010-07-24 12:35:32 UTC (rev 625) @@ -21,11 +21,13 @@ */ package fr.ifremer.wao.ui.services; +import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.service.ServiceCartography; import fr.ifremer.wao.service.ServiceUser; import fr.ifremer.wao.ui.data.KmlStreamResponse; import org.apache.tapestry5.StreamResponse; +import org.apache.tapestry5.annotations.SessionState; import java.io.IOException; @@ -35,7 +37,7 @@ * @author fdesbois <fdesbois at codelutin.com> * @version $Id$ */ -public class KmlLoaderStrategyContacts implements KmlLoaderStrategy { +public class KmlLoaderStrategyContacts implements KmlLoaderStrategy<ContactFilter> { protected ServiceCartography serviceCartography; @@ -48,16 +50,16 @@ } @Override - public StreamResponse getStreamResponse(Object... context) throws IOException { + public StreamResponse getStreamResponse(ContactFilter filter) throws IOException { - Company company = null; - if (context != null && context.length > 0) { - String companyId = (String)context[0]; - company = serviceUser.getCompany(companyId); - } +// Company company = null; +// if (context != null && context.length > 0) { +// String companyId = (String)context[0]; +// company = serviceUser.getCompany(companyId); +// } return new KmlStreamResponse( - serviceCartography.exportContactStatisticsKml(company) + serviceCartography.exportContactStatisticsKml(filter) ); } }
participants (1)
-
fdesbois@users.labs.libre-entreprise.org