Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2668 connectés 

  FORUM HardWare.fr
  Programmation
  Java

   Imposer une methode Equals pour une recherche dans une List

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Imposer une methode Equals pour une recherche dans une List

n°1450741
PETOZAK
Posté le 02-10-2006 à 13:27:51  profilanswer
 

Bonjour,
J'ai 2 listes de droits ACL à comparer.
Je fais cela :
 
lppi.containsAll(defaultPermissions);
 
Le problème est que containsAll utilise la methose equals d'une classe (ProjectPermissionItem) que je ne peux overrider car privée. La méthode par défaut compare tous les champs un à un et aboutit à un resultat non pertinent. J'aimerais la overrider ou dire à à contains d'utiliser ma methode equals...
 
 
Comment faire (interface , heritage?)
 
 
Merci

mood
Publicité
Posté le 02-10-2006 à 13:27:51  profilanswer
 

n°1450744
noldor
Rockn'roll
Posté le 02-10-2006 à 13:33:57  profilanswer
 

equals dérive de Object, comment cette méthode peut elle être privée ?

n°1450747
PETOZAK
Posté le 02-10-2006 à 13:37:52  profilanswer
 

Au fait je me suis mal exprimer :)
Ce que je fais c'est etendre ma classe mere comme suit:
 

Code :
  1. public class C_ProjectPermissionItem extends ProjectPermissionItem {
  2. public C_ProjectPermissionItem(int type, String grantee, Project project)
  3.   throws InvalidDataException, PSException {
  4.  super(type, grantee, project);
  5.  // TODO Auto-generated constructor stub
  6. }
  7. public boolean equals(C_ProjectPermissionItem cppi) throws PSException {
  8.  // TODO Auto-generated method stub
  9.  if (this.getGranteeString().compareTo(cppi.getGranteeString()) == 0
  10.    && this.getPermission() == cppi.getPermission()
  11.    && this.getType() == cppi.getType())
  12.   return true;
  13.  else
  14.   return false;
  15. }
  16. }

n°1450748
PETOZAK
Posté le 02-10-2006 à 13:38:15  profilanswer
 

Je veux uiliser cet equal la et pas celui de la classe mere comment faire?

n°1450750
noldor
Rockn'roll
Posté le 02-10-2006 à 13:40:51  profilanswer
 

si les éléments que tu compares sont bien de type C_ProjectPermissionItem, c'est ta méthode equals qui sera utilisée

n°1450755
PETOZAK
Posté le 02-10-2006 à 13:47:02  profilanswer
 

Comment puis je caster une liste de type ProjectPermissionItem en C_ProjectPermissionItem ?
sachant que C_ProjectPermissionItem herite de ProjectPermissionItem?

n°1450757
noldor
Rockn'roll
Posté le 02-10-2006 à 13:49:29  profilanswer
 

tu peux pas
tu peux à la limite les wrapper dans C_ProjectPermissionItem, en ajoutant un constructeur  

Code :
  1. public C_ProjectPermissionItem(ProjectPermissionItem ppi) {
  2. ...
  3. }


et le code qui va bien

n°1450758
PETOZAK
Posté le 02-10-2006 à 13:50:32  profilanswer
 

List<C_ProjectPermissionItem> curPermissions = curProject
     .getProjectPermissions();
 
Est ce que ca c'est bon?

n°1450774
Bidem
Posté le 02-10-2006 à 14:08:21  profilanswer
 

Citation :

public boolean equals(C_ProjectPermissionItem cppi) throws PSException {
...
}


Citation :

Je veux uiliser cet equal la et pas celui de la classe mere comment faire?


 
tu redéfinis mal la méthode equals car elle doit prendre un Object en parametre :
 

Code :
  1. public boolean equals(Object cppi) throws PSException {
  2.   if (this == cppi) {
  3.     return true;
  4.   }
  5.   if (cppi instanceof C_ProjectPermissionItem) {
  6.     C_ProjectPermissionItem cp = (C_ProjectPermissionItem) cppi;
  7.     if (this.getGranteeString().equals(cp.getGranteeString())
  8.         && this.getPermission() == cp.getPermission()
  9.         && this.getType() == cp.getType()) {
  10.       return true;
  11.     } else {
  12.       return false;
  13.     }
  14.   }
  15.   return false;
  16. }


Message édité par Bidem le 02-10-2006 à 14:08:59
n°1450776
PETOZAK
Posté le 02-10-2006 à 14:10:47  profilanswer
 

Je teste ca :)

mood
Publicité
Posté le 02-10-2006 à 14:10:47  profilanswer
 

n°1450790
PETOZAK
Posté le 02-10-2006 à 14:33:06  profilanswer
 

Ca marche pas :(...
Voila ce que je fais en detail:
Je commence par recuperer une liste ACL de mes droits par defaut:

Code :
  1. public static List<C_ProjectPermissionItem> getDefaultRights()
  2.   throws DataFormatException, PSException {
  3.  if (projectMap == null)
  4.   projectMap = getProjectMap(myProjectList);
  5.  Project defaultRightedProject = (Project) projectMap
  6.    .get((String) defaultRightProjectID);
  7.  displayProjectPermissions(defaultRightedProject);
  8.  if (defaultRightedProject != null) {
  9.   return (defaultPermissions = defaultRightedProject
  10.     .getProjectPermissions());
  11.  } else
  12.   return null;
  13. }


n°1450791
PETOZAK
Posté le 02-10-2006 à 14:34:13  profilanswer
 

ensuite je compare les droits du projet courant à ces doits par defaut:

Code :
  1. public static boolean compareToDefaultRights(
  2.   List<C_ProjectPermissionItem> lppi) throws DataFormatException,
  3.   PSException {
  4.  lppi.containsAll(defaultPermissions);
  5.  return lppi.containsAll(defaultPermissions);
  6. }

n°1450792
PETOZAK
Posté le 02-10-2006 à 14:34:53  profilanswer
 

le retour de lppi.containsAll(defaultPermissions) n'est pas bon car il semble pas prendre le bon equals :(

n°1450806
PETOZAK
Posté le 02-10-2006 à 14:55:02  profilanswer
 

Je vous ai perdu?

n°1450823
PETOZAK
Posté le 02-10-2006 à 15:08:56  profilanswer
 

noldor a écrit :

tu peux pas
tu peux à la limite les wrapper dans C_ProjectPermissionItem, en ajoutant un constructeur  

Code :
  1. public C_ProjectPermissionItem(ProjectPermissionItem ppi) {
  2. ...
  3. }


et le code qui va bien


 
 
Mias je le wrappe à quel niveau?
Une fois que j'ai recupérés ma liste de  ProjectPermissionItem grace à getProjectPermissions() , je fais comment pour les transformer en liste de C_ProjectPermissionItem sans faire un truc bête...?
Sachant qu'à la base je veux simplement modifier la methose equals pour la rendre moins restrictive?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

   Imposer une methode Equals pour une recherche dans une List

 

Sujets relatifs
Faire une seule recherche de 2 types de chaine de caractèrerecherche de données dans excel sans ouvrir les fichiers
Outil pour convertir les caractères spéciauxRetour d'expérience sur la méthode de dév XP
[DirectX] Recherche programmeurs experimentés[wsh]WMI et methode qui ne fonctionne pas
recherche du nombre de colonnesSitemap (Plan du Site) et moteurs de recherche
Plus de sujets relatifs à : Imposer une methode Equals pour une recherche dans une List


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR