r93 - 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
Author: echatellier Date: 2013-02-11 17:46:50 +0100 (Mon, 11 Feb 2013) New Revision: 93 Url: http://forge.codelutin.com/projects/cantharella/repository/revisions/93 Log: Correction des droits d'affichage de la liste de provenance en edition Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/ProduitService.java trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/ProduitServiceImpl.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/ProduitService.java =================================================================== --- trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/ProduitService.java 2013-02-11 16:33:39 UTC (rev 92) +++ trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/ProduitService.java 2013-02-11 16:46:50 UTC (rev 93) @@ -38,13 +38,6 @@ public interface ProduitService { /** - * Get total produit count in database. - * @return total produit count - */ - @Transactional(readOnly = true) - long countProduits(); - - /** * Liste les produits disponibles selon les droits d'un utilisateur (trié par réf) * @param utilisateur L'utilisateur * @return la liste des produits Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/ProduitServiceImpl.java =================================================================== --- trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/ProduitServiceImpl.java 2013-02-11 16:33:39 UTC (rev 92) +++ trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/ProduitServiceImpl.java 2013-02-11 16:46:50 UTC (rev 93) @@ -66,13 +66,6 @@ /** {@inheritDoc} */ @Override - public long countProduits() { - long result = dao.count(Extrait.class) + dao.count(Fraction.class); - return result; - } - - /** {@inheritDoc} */ - @Override public List<Produit> listProduits(Utilisateur utilisateur) { AssertTools.assertNotNull(utilisateur); Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java 2013-02-11 16:33:39 UTC (rev 92) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java 2013-02-11 16:46:50 UTC (rev 93) @@ -23,6 +23,7 @@ package nc.ird.cantharella.web.pages.domain.molecule; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import nc.ird.cantharella.data.exceptions.DataConstraintException; @@ -58,6 +59,7 @@ import nc.ird.cantharella.web.utils.panels.PropertyLabelLinkProduitPanel; import nc.ird.cantharella.web.utils.security.AuthRole; import nc.ird.cantharella.web.utils.security.AuthRoles; +import nc.ird.cantharella.web.utils.security.AuthSession; import org.apache.wicket.AttributeModifier; import org.apache.wicket.MarkupContainer; @@ -79,6 +81,7 @@ import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.AbstractPropertyModel; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.spring.injection.annot.SpringBean; @@ -351,9 +354,35 @@ resultNotAccessibleCont.setOutputMarkupPlaceholderTag(true); provenanceTable.add(resultNotAccessibleCont); + // chargement des données + Utilisateur utilisateur = getSession().getUtilisateur(); + final List<Produit> utilisateurProduits = produitService.listProduits(utilisateur); + + // Model de liste des provenances + final LoadableDetachableModel<List<MoleculeProvenance>> listProvenanceModel = new LoadableDetachableModel<List<MoleculeProvenance>>() { + @Override + protected List<MoleculeProvenance> load() { + boolean isOneResultNotAccessible = false; + + List<MoleculeProvenance> listResults = new ArrayList<MoleculeProvenance>(); + + for (MoleculeProvenance res : moleculeModel.getObject().getProvenances()) { + // les résultats de type blanc ou témoin sont tjr accessibles + if (moleculeService.isMoleculeProvenanceAccessibleByUser(res, + ((AuthSession) getPage().getSession()).getUtilisateur())) { + listResults.add(res); + } else { + isOneResultNotAccessible = true; + } + } + // si une des provenances est non accessible, on rend visible le message d'avertissement + resultNotAccessibleCont.setVisibilityAllowed(isOneResultNotAccessible); + return listResults; + } + }; + // Contenu tableaux provenance - provenanceTable.add(new ListView<MoleculeProvenance>("Molecule.provenance.List", - new PropertyModel<List<MoleculeProvenance>>(moleculeModel, "provenances")) { + provenanceTable.add(new ListView<MoleculeProvenance>("Molecule.provenance.List", listProvenanceModel) { @Override protected void populateItem(ListItem<MoleculeProvenance> item) { if (item.getIndex() % 2 == 1) { @@ -426,8 +455,6 @@ }); // champs d'input - Utilisateur utilisateur = getSession().getUtilisateur(); - List<Produit> utilisateurProduits = produitService.listProduits(utilisateur); final DropDownChoice<Produit> produitChoice = new DropDownChoice<Produit>( "Molecule.provenance.produit.ref", new PropertyModel<Produit>(newProvenanceModel, "produit"), utilisateurProduits, new ProduitRenderer()) { @@ -436,13 +463,6 @@ produitChoice.setNullValid(false); provenanceTable.add(produitChoice); - // si le compte des produit actuel est égal au total en base - // c'est que l'utilisateur a les droits sur tous les produits - long produitCount = produitService.countProduits(); - if (produitCount == utilisateurProduits.size()) { - resultNotAccessibleCont.setVisibilityAllowed(false); - } - final TextField<BigDecimal> presenceInput = new TextField<BigDecimal>("Molecule.provenance.presence", new PropertyModel<BigDecimal>(newProvenanceModel, "pourcentage")) { Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java 2013-02-11 16:33:39 UTC (rev 92) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java 2013-02-11 16:46:50 UTC (rev 93) @@ -33,8 +33,6 @@ import nc.ird.cantharella.data.model.MoleculeProvenance; import nc.ird.cantharella.data.model.Personne; import nc.ird.cantharella.data.model.Produit; -import nc.ird.cantharella.data.model.ResultatTestBio; -import nc.ird.cantharella.data.model.ResultatTestBio.TypeResultat; import nc.ird.cantharella.service.services.MoleculeService; import nc.ird.cantharella.web.pages.TemplatePage; import nc.ird.cantharella.web.pages.domain.extraction.ReadExtractionPage;
participants (1)
-
echatellier@users.forge.codelutin.com