/***************************************************************/
Interface IAnnuaire Defaut TailleSegment 2 ConserverObjets
/* Objet : Interface definissant un annuaire. */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Proprietes propres. */
/*-------------------------------------------------------------*/
Prive :
NomAnnuaire : Caractere Virtuel Lecture Public Trace;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet. */
/*-------------------------------------------------------------*/
Public :
Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
Procedure Convertir(O : Nul Ou Objet);
Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
Procedure SupprimerPropriete(NomPropriete : Caractere);
Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Methodes propres. */
/*-------------------------------------------------------------*/
Public :
Fonction HabilitationContextuelle Optimiser(NulAbsorbant) LireArborescence(Chemin : Nul Ou Caractere, CritereFiltre : Nul Ou Caractere=Nul, CritereTri : Nul Ou Caractere=Nul) Retourner Nul Ou IResultatRequeteDe Nul Ou Caractere;
Fonction HabilitationContextuelle Optimiser(NulAbsorbant) LireEntree(NomEntree : Nul Ou Caractere) Retourner Nul Ou Objet;
Procedure HabilitationContextuelle EcrireEntree(NomEntree : Nul Ou Caractere, ValeurEntree : Nul Ou Objet);
Procedure HabilitationContextuelle SupprimerEntree(NomEntree : Nul Ou Caractere, SupprimerRecursivement : Booleen=Faux);
Procedure HabilitationContextuelle RenommerEntree(NomEntreeAvant : Nul Ou Caractere, NomEntreeApres : Nul Ou Caractere, RenommerRecursivement : Booleen=Faux);
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
L'interface IAnnuaire modélise un annuaire indépendemment de la technologie employée.
Un annuaire est une classification de couples (Entree, Valeur) où Entree est une chaîne de caractères et Valeur est un objet quelconque. Les entrées de l'annuaire peuvent être organisées en hiérarchie.
Le nom complet de l'entrée est alors obtenu en concaténant successivement les noms des niveaux suivi du caractère division /
, servant de séparateur, puis le nom de l'entrée en elle-même.
Le niveau principal d'un annuaire est localisé par la chaîne de caractères /"
.
L'interface IAnnuaire ne possède pas de constructeur explicite.
/****************************************************************/
Procedure AfficherContenuAnnuaire(A: Nul Ou IAnnuaire, Chemin : Caractere)
/* Objet : Affiche le contenu de l'annuaire recursivement. */
/****************************************************************/
Variable
/******/
Entrees : Nul Ou IResultatRequeteDe Caractere;
NomEntree : Nul Ou Caractere;
Debut
Si Chemin!=" Alors
Ecran.Ecrire(Chemin);
Fin Si
Entrees=A.LireArborescence(Chemin);
Si Entrees!=Nul Alors
Pour NomEntree=Entrees.ParcoursAuDebut() JusquA Entrees.DernierElement() Faire
Fin Si
Si Chemin!=" Alors
AfficherContenuAnnuaire(A, Chemin+"/"+NomEntree);
Sinon
AfficherContenuAnnuaire(A, NomEntree);
Fin Si
Fin Pour
Fin Procedure
Principal
/*******/
Variable
/******/
A : Nul Ou IAnnuaire;
Debut
A.AfficherContenuAnnuaire("/");
Fin Principal
- | - | - | - | - | - | - | - | - |