r108 - in trunk: cantharella.service/src/main/java/nc/ird/cantharella/service/services cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search
Author: echatellier Date: 2013-02-14 16:39:46 +0100 (Thu, 14 Feb 2013) New Revision: 108 Url: http://forge.codelutin.com/projects/cantharella/repository/revisions/108 Log: Merge SearchPage datatable with ListMoleculesPage datatable (common code) Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java =================================================================== --- trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java 2013-02-14 15:01:31 UTC (rev 107) +++ trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java 2013-02-14 15:39:46 UTC (rev 108) @@ -84,6 +84,16 @@ List<MoleculeProvenanceBean> listMoleculeProvenances(Utilisateur utilisateur); /** + * List molecule provenance and molecule without provenance or provenance + * not visible by current user. + * + * @param molecules molecules list to transform + * @param utilisateur utilisateur to filter results + * @return Molecules + */ + List<MoleculeProvenanceBean> listMoleculeProvenances(List<Molecule> molecules, Utilisateur utilisateur); + + /** * Charge une molecule * @param numero numero * @return Le lot correspondant Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java =================================================================== --- trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java 2013-02-14 15:01:31 UTC (rev 107) +++ trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java 2013-02-14 15:39:46 UTC (rev 108) @@ -104,9 +104,16 @@ /** {@inheritDoc} */ @Override public List<MoleculeProvenanceBean> listMoleculeProvenances(Utilisateur utilisateur) { + List<Molecule> molecules = listMolecules(); + List<MoleculeProvenanceBean> result = listMoleculeProvenances(molecules, utilisateur); + return result; + } + + /** {@inheritDoc} */ + @Override + public List<MoleculeProvenanceBean> listMoleculeProvenances(List<Molecule> molecules, Utilisateur utilisateur) { List<MoleculeProvenanceBean> result = new ArrayList<MoleculeProvenanceBean>(); - List<Molecule> molecules = listMolecules(); - + for (Molecule molecule : molecules) { boolean isOneProductVisible = false; Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java 2013-02-14 15:01:31 UTC (rev 107) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java 2013-02-14 15:39:46 UTC (rev 108) @@ -96,32 +96,52 @@ // Liste des molecules Utilisateur utilisateur = getSession().getUtilisateur(); final List<MoleculeProvenanceBean> moleculeProvenances = moleculeService.listMoleculeProvenances(utilisateur); + + DataTable<MoleculeProvenanceBean> moleculesDataTable = initMoleculesListTable(this, + "ListMoleculesPage.Molecules", currentPage, moleculeProvenances); + moleculesRefresh.add(moleculesDataTable); + } + /** + * Init data table with molecule provenances list. + * + * This method is static to be resued in several places. + * + * @param templatePage parent page + * @param componentId data table id + * @param callerPage caller page + * @param moleculeProvenances molecules provenance list + * @return data table component + */ + public static DataTable<MoleculeProvenanceBean> initMoleculesListTable(final TemplatePage templatePage, + final String componentId, final CallerPage callerPage, + List<MoleculeProvenanceBean> moleculeProvenances) { + SimpleSortableListDataProvider<MoleculeProvenanceBean> moleculesDataProvider = new SimpleSortableListDataProvider<MoleculeProvenanceBean>( - moleculeProvenances, getSession().getLocale()); + moleculeProvenances, templatePage.getSession().getLocale()); List<IColumn<MoleculeProvenanceBean>> columns = new ArrayList<IColumn<MoleculeProvenanceBean>>(); columns.add(new LinkableImagePropertyColumn<MoleculeProvenanceBean>( - "images/read.png", getString("Read"), getString("Read")) { + "images/read.png", templatePage.getString("Read"), templatePage.getString("Read")) { @Override public void onClick(Item<ICellPopulator<MoleculeProvenanceBean>> item, String componentId, IModel<MoleculeProvenanceBean> model) { - setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), currentPage)); + templatePage.setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), callerPage)); } }); columns.add(new LinkPropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.idMolecule")), + new Model<String>(templatePage.getString("Molecule.idMolecule")), "idMolecule", "idMolecule") { @Override public void onClick(Item<ICellPopulator<MoleculeProvenanceBean>> item, String componentId, IModel<MoleculeProvenanceBean> model) { - setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), currentPage)); + templatePage.setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), callerPage)); } }); columns.add(new AbstractColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.formuleDevMol"))) { + new Model<String>(templatePage.getString("Molecule.formuleDevMol"))) { public void populateItem(Item<ICellPopulator<MoleculeProvenanceBean>> cellItem, String componentId, IModel<MoleculeProvenanceBean> rowModel) { cellItem.add(new Label(componentId, "-") .add(new MoleculeViewBehavior(new PropertyModel<String>(rowModel, "molecule.formuleDevMol")))); @@ -129,26 +149,26 @@ }); columns.add(new PropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.nomCommun")), + new Model<String>(templatePage.getString("Molecule.nomCommun")), "molecule.nomCommun", "molecule.nomCommun")); columns.add(new PropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.familleChimique")), + new Model<String>(templatePage.getString("Molecule.familleChimique")), "molecule.familleChimique", "molecule.familleChimique")); columns.add(new PropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.formuleBrute")), + new Model<String>(templatePage.getString("Molecule.formuleBrute")), "molecule.formuleBrute", "molecule.formuleBrute")); columns.add(new DecimalPropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.masseMolaire")), - "molecule.masseMolaire", "molecule.masseMolaire", DecimalDisplFormat.SMALL, getLocale())); + new Model<String>(templatePage.getString("Molecule.masseMolaire")), + "molecule.masseMolaire", "molecule.masseMolaire", DecimalDisplFormat.SMALL, templatePage.getLocale())); columns.add(new LinkableImagePropertyColumn<MoleculeProvenanceBean>( - "images/attachment.png", getString("Read"), getString("Read")) { + "images/attachment.png", templatePage.getString("Read"), templatePage.getString("Read")) { @Override public void onClick(Item<ICellPopulator<MoleculeProvenanceBean>> item, String componentId, IModel<MoleculeProvenanceBean> model) { - setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), currentPage)); + templatePage.setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), callerPage)); } @Override @@ -158,23 +178,23 @@ }); columns.add(new BooleanPropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.nouvMolecul")), - "molecule.nouvMolecul", "molecule.nouvMolecul", this)); + new Model<String>(templatePage.getString("Molecule.nouvMolecul")), + "molecule.nouvMolecul", "molecule.nouvMolecul", templatePage)); columns.add(new PropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.provenance.embranchement")), + new Model<String>(templatePage.getString("Molecule.provenance.embranchement")), "lot.specimenRef.embranchement", "lot.specimenRef.embranchement")); columns.add(new PropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.provenance.genre")), + new Model<String>(templatePage.getString("Molecule.provenance.genre")), "lot.specimenRef.genre", "lot.specimenRef.genre")); columns.add(new PropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.provenance.espece")), + new Model<String>(templatePage.getString("Molecule.provenance.espece")), "lot.specimenRef.espece", "lot.specimenRef.espece")); columns.add(new LinkPropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.provenance.lot.ref")), + new Model<String>(templatePage.getString("Molecule.provenance.lot.ref")), "lot.ref", "lot.ref") { @Override public void onClick(Item<ICellPopulator<MoleculeProvenanceBean>> item, @@ -182,29 +202,28 @@ Lot lot = model.getObject().getLot(); if (lot != null) { int idLot = lot.getIdLot(); - setResponsePage(new ReadLotPage(idLot, currentPage)); + templatePage.setResponsePage(new ReadLotPage(idLot, callerPage)); } } }); columns.add(new PropertyColumn<MoleculeProvenanceBean>( - new Model<String>(getString("Molecule.provenance.programme")), + new Model<String>(templatePage.getString("Molecule.provenance.programme")), "lot.campagne.programme", "lot.campagne.programme")); columns.add(new LinkableImagePropertyColumn<MoleculeProvenanceBean>( - "images/edit.png", getString("Update"), getString("Update")) { + "images/edit.png", templatePage.getString("Update"), templatePage.getString("Update")) { @Override public void onClick(Item<ICellPopulator<MoleculeProvenanceBean>> item, String componentId, IModel<MoleculeProvenanceBean> model) { int idMolecule = model.getObject().getIdMolecule(); - setResponsePage(new ManageMoleculePage(idMolecule, currentPage)); + templatePage.setResponsePage(new ManageMoleculePage(idMolecule, callerPage)); } }); final DataTable<MoleculeProvenanceBean> moleculesDataTable = new AjaxFallbackDefaultDataTable<MoleculeProvenanceBean>( - "ListMoleculesPage.Molecules", columns, - moleculesDataProvider, WebContext.ROWS_PER_PAGE); - moleculesRefresh.add(moleculesDataTable); + componentId, columns, moleculesDataProvider, WebContext.ROWS_PER_PAGE); + return moleculesDataTable; } } Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java 2013-02-14 15:01:31 UTC (rev 107) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java 2013-02-14 15:39:46 UTC (rev 108) @@ -36,7 +36,9 @@ import nc.ird.cantharella.data.model.Specimen; import nc.ird.cantharella.data.model.Station; import nc.ird.cantharella.data.model.Utilisateur; +import nc.ird.cantharella.service.model.MoleculeProvenanceBean; import nc.ird.cantharella.service.model.SearchResult; +import nc.ird.cantharella.service.services.MoleculeService; import nc.ird.cantharella.service.services.SearchService; import nc.ird.cantharella.web.config.WebContext; import nc.ird.cantharella.web.pages.TemplatePage; @@ -45,14 +47,12 @@ import nc.ird.cantharella.web.pages.domain.campagne.ReadCampagnePage; import nc.ird.cantharella.web.pages.domain.extraction.ReadExtractionPage; import nc.ird.cantharella.web.pages.domain.lot.ReadLotPage; -import nc.ird.cantharella.web.pages.domain.molecule.ReadMoleculePage; +import nc.ird.cantharella.web.pages.domain.molecule.ListMoleculesPage; import nc.ird.cantharella.web.pages.domain.purification.ReadPurificationPage; -import nc.ird.cantharella.web.pages.domain.specimen.ListSpecimensPage; import nc.ird.cantharella.web.pages.domain.specimen.ReadSpecimenPage; import nc.ird.cantharella.web.pages.domain.station.ReadStationPage; import nc.ird.cantharella.web.pages.domain.testBio.ReadTestBioPage; import nc.ird.cantharella.web.utils.CallerPage; -import nc.ird.cantharella.web.utils.behaviors.MoleculeViewBehavior; import nc.ird.cantharella.web.utils.behaviors.ReplaceEmptyLabelBehavior; import nc.ird.cantharella.web.utils.columns.BooleanPropertyColumn; import nc.ird.cantharella.web.utils.columns.DecimalPropertyColumn; @@ -76,7 +76,6 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; @@ -103,6 +102,10 @@ @SpringBean protected SearchService searchService; + /** Molecule service. */ + @SpringBean + protected MoleculeService moleculeService; + /** Nombre d'extraits affichés dans la colonne de résumés des extraits. */ private static final int MAX_EXTRAITS_DISPLAY = 4; @@ -114,7 +117,7 @@ public SearchPage(String query) { super(SearchPage.class); this.query = query; - final CallerPage currentPage = new CallerPage(ListSpecimensPage.class); + final CallerPage currentPage = new CallerPage(SearchPage.class); // ca sert a rien, mais wicket est pas content ExternalLink link = new ExternalLink("advancedLink", "http://lucene.apache.org/core/3_6_2/queryparsersyntax.html"); @@ -138,7 +141,16 @@ addPurificationsTable(currentPage, searchResult); addTestBiosTable(currentPage, searchResult); addStationsTable(currentPage, searchResult); - addMoleculesTable(currentPage, searchResult); + + // additionnal transformation for molecule provenances + List<Molecule> molecules = searchResult.getMolecules(); + List<MoleculeProvenanceBean> moleculeProvenances = moleculeService.listMoleculeProvenances(molecules, utilisateur); + + // call static methods in ListXXXPage + DataTable<MoleculeProvenanceBean> moleculesDataTable = ListMoleculesPage.initMoleculesListTable(this, + "SearchPage.Molecules.Results", currentPage, moleculeProvenances); + add(moleculesDataTable); + add(new CsvExportLink("SearchPage.Molecules.ExportCSV", moleculesDataTable, "molecules.csv")); } /** @@ -604,66 +616,4 @@ add(stationsDataTable); add(new CsvExportLink("SearchPage.Stations.ExportCSV", stationsDataTable, "stations.csv")); } - - /** - * Format molécules result into table. - * - * @param currentPage current page - * @param searchResult search results - */ - protected void addMoleculesTable(final CallerPage currentPage, SearchResult searchResult) { - - // Liste des molecules - final List<Molecule> molecules = searchResult.getMolecules(); - - LoadableDetachableSortableListDataProvider<Molecule> moleculesDataProvider = new LoadableDetachableSortableListDataProvider<Molecule>( - molecules, getSession().getLocale()); - - List<IColumn<Molecule>> columns = new ArrayList<IColumn<Molecule>>(); - - columns.add(new LinkableImagePropertyColumn<Molecule>("images/read.png", getString("Read"), getString("Read")) { - @Override - public void onClick(Item<ICellPopulator<Molecule>> item, String componentId, IModel<Molecule> model) { - setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), currentPage)); - } - }); - columns.add(new LinkPropertyColumn<Molecule>(new Model<String>(getString("Molecule.idMolecule")), "idMolecule", "idMolecule", - getString("Read")) { - @Override - public void onClick(Item<ICellPopulator<Molecule>> item, String componentId, IModel<Molecule> model) { - setResponsePage(new ReadMoleculePage(model.getObject().getIdMolecule(), currentPage)); - } - }); - columns.add(new AbstractColumn<Molecule>(new Model<String>(getString("Molecule.formuleDevMol"))) { - public void populateItem(Item<ICellPopulator<Molecule>> cellItem, String componentId, IModel<Molecule> rowModel) { - cellItem.add(new Label(componentId, "-") - .add(new MoleculeViewBehavior(new PropertyModel<String>(rowModel, "formuleDevMol")))); - } - }); - columns.add(new PropertyColumn<Molecule>(new Model<String>(getString("Molecule.nomCommun")), "nomCommun", - "nomCommun")); - columns.add(new PropertyColumn<Molecule>(new Model<String>(getString("Molecule.familleChimique")), "familleChimique", - "familleChimique")); - columns.add(new PropertyColumn<Molecule>(new Model<String>(getString("Molecule.formuleBrute")), "formuleBrute", - "formuleBrute")); - columns.add(new DecimalPropertyColumn<Molecule>(new Model<String>(getString("Molecule.masseMolaire")), "masseMolaire", - "masseMolaire", DecimalDisplFormat.SMALL, getLocale())); - columns.add(new BooleanPropertyColumn<Molecule>(new Model<String>(getString("Molecule.nouvMolecul")), "nouvMolecul", - "nouvMolecul", this)); - columns.add(new LinkPropertyColumn<Molecule>(new Model<String>(getString("Molecule.campagne")), "campagne", - "campagne", getString("Read")) { - @Override - public void onClick(Item<ICellPopulator<Molecule>> item, String componentId, IModel<Molecule> model) { - setResponsePage(new ReadCampagnePage(model.getObject().getCampagne().getIdCampagne(), currentPage)); - } - }); - columns.add(new PropertyColumn<Molecule>(new Model<String>(getString("Molecule.identifieePar")), "identifieePar", - "identifieePar")); - - final DataTable<Molecule> moleculesDataTable = new AjaxFallbackDefaultDataTable<Molecule>( - getResource() + ".Molecules.Results", columns, - moleculesDataProvider, WebContext.ROWS_PER_PAGE); - add(moleculesDataTable); - add(new CsvExportLink("SearchPage.Molecules.ExportCSV", moleculesDataTable, "molecules.csv")); - } }
participants (1)
-
echatellier@users.forge.codelutin.com