r215 - in trunk: 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-05-02 18:01:08 +0200 (Thu, 02 May 2013) New Revision: 215 Url: http://forge.codelutin.com/projects/cantharella/repository/revisions/215 Log: fixes #2362 : Mol?\195?\169cules: Pb rafraichissement tableau provenance Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/LotServiceImpl.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/impl/LotServiceImpl.java =================================================================== --- trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/LotServiceImpl.java 2013-05-02 15:12:36 UTC (rev 214) +++ trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/LotServiceImpl.java 2013-05-02 16:01:08 UTC (rev 215) @@ -40,6 +40,8 @@ import nc.ird.cantharella.data.model.Utilisateur.TypeDroit; import nc.ird.cantharella.service.services.LotService; import nc.ird.cantharella.utils.AssertTools; +import nc.ird.cantharella.utils.BeanTools; +import nc.ird.cantharella.utils.CollectionTools; import org.hibernate.SessionFactory; import org.slf4j.Logger; @@ -165,14 +167,29 @@ if (utilisateur.getCampagnesCreees().contains(lot.getCampagne())) { return true; } + // accessible si l'utilisateur a le droit à la campagne - if (utilisateur.getCampagnesDroits().containsKey(lot.getCampagne())) { + // FIXME echatellier 20130502 ne fonctionne pas car les clés composites + // ne sont pas les mêmes instances que les clés + /*if (utilisateur.getCampagnesDroits().containsKey(lot.getCampagne())) { return true; } // accessible si l'utilisateur a le droit au lot if (utilisateur.getLotsDroits().containsKey(lot)) { return true; + }*/ + + // FIXME echatellier 20130502 code temporaire pour pallier au problème + // des clés composites + if (CollectionTools.containsWithValue(utilisateur.getCampagnesDroits().keySet(), "idCampagne", + BeanTools.AccessType.GETTER, lot.getCampagne().getIdCampagne())) { + return true; } + if (CollectionTools.containsWithValue(utilisateur.getLotsDroits().keySet(), "idLot", + BeanTools.AccessType.GETTER, lot.getIdLot())) { + return true; + } + // pas d'accès sinon return false; } 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-05-02 15:12:36 UTC (rev 214) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java 2013-05-02 16:01:08 UTC (rev 215) @@ -60,7 +60,6 @@ import nc.ird.cantharella.web.utils.panels.SimpleTooltipPanel; 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; @@ -363,7 +362,7 @@ provenanceTable.add(resultNotAccessibleCont); // chargement des données - Utilisateur utilisateur = getSession().getUtilisateur(); + final Utilisateur utilisateur = getSession().getUtilisateur(); final List<Produit> utilisateurProduits = produitService.listProduits(utilisateur); // Model de liste des provenances @@ -373,11 +372,9 @@ 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())) { + if (moleculeService.isMoleculeProvenanceAccessibleByUser(res, utilisateur)) { listResults.add(res); } else { isOneResultNotAccessible = true; @@ -547,7 +544,7 @@ MoleculeProvenance provenanceAdded = newProvenanceModel.getObject().clone(); moleculeModel.getObject().getProvenances().add(provenanceAdded); - List<String> errors = validator.validate(newProvenanceModel.getObject(), getSession().getLocale()); + List<String> errors = validator.validate(provenanceAdded, getSession().getLocale()); if (errors.isEmpty()) { // réinit des champs de la ligne "ajout" 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-05-02 15:12:36 UTC (rev 214) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java 2013-05-02 16:01:08 UTC (rev 215) @@ -33,6 +33,7 @@ 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.Utilisateur; import nc.ird.cantharella.service.services.MoleculeService; import nc.ird.cantharella.web.pages.TemplatePage; import nc.ird.cantharella.web.pages.domain.document.panel.ReadListDocumentsPanel; @@ -54,7 +55,6 @@ 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; @@ -224,11 +224,12 @@ protected List<MoleculeProvenance> load() { boolean isOneResultNotAccessible = false; + Utilisateur utilisateur = getSession().getUtilisateur(); + List<MoleculeProvenance> moleculeProvenances = moleculeModel.getObject().getProvenances(); List<MoleculeProvenance> listResults = new ArrayList<MoleculeProvenance>(); - for (MoleculeProvenance res : moleculeModel.getObject().getProvenances()) { + for (MoleculeProvenance res : moleculeProvenances) { // les résultats de type blanc ou témoin sont tjr accessibles - if (moleculeService.isMoleculeProvenanceAccessibleByUser(res, - ((AuthSession) getPage().getSession()).getUtilisateur())) { + if (moleculeService.isMoleculeProvenanceAccessibleByUser(res, utilisateur)) { listResults.add(res); } else { isOneResultNotAccessible = true;
participants (1)
-
echatellier@users.forge.codelutin.com