/***************************************************************/
Type AnnuaireUpsOrb Implemente Public : IAnnuaire Defaut Final
/* Objet : Type des objets correspondant aux annuaires. */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'IAnnuaire. */
/*-------------------------------------------------------------*/
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;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'IAnnuaire. */
/*-------------------------------------------------------------*/
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);
/*-------------------------------------------------------------*/
/* Methodes propres. */
/*-------------------------------------------------------------*/
Public :
Constructeur(NomDeLAnnuaire : Caractere);
Operateur Optimiser(Invariant, NulAbsorbant) ==(A : Nul Ou AnnuaireUpsOrb) Retourner Nul Ou Booleen;
Operateur Optimiser(Invariant, NulAbsorbant) !=(A : Nul Ou AnnuaireUpsOrb) Retourner Nul Ou Booleen;
Procedure Habilitation Enregistrer(Format : FormatsRessourceSupportes=FormatRessourceAutomatique);
Procedure Habilitation Enregistrer(Flux : Nul Ou IFlux, Format : FormatsRessourceSupportes=FormatRessourceAutomatique);
Procedure Habilitation Enregistrer(NomFichier : Nul Ou Caractere, Format : FormatsRessourceSupportes=FormatRessourceAutomatique);
Fonction Habilitation Optimiser(NulAbsorbant) Exporter(NomDuFichier : Nul Ou Caractere, NomEntree : Nul Ou Caractere, Format : FormatsRessourceSupportes=FormatRessourceAutomatique,
EnvoyerErreur : Nul Ou Procedure (MessageEnvoye : Caractere, NumeroColonne : Entier, NumeroLigne : Entier,
NomFichierSource : Nul Ou Caractere)=Nul) Retourner Nul Ou Booleen;
Fonction Habilitation Optimiser(NulAbsorbant) Importer(NomDuFichier : Nul Ou Caractere, Format : FormatsRessourceSupportes=FormatRessourceAutomatique,
EnvoyerErreur : Nul Ou Procedure (MessageEnvoye : Caractere, NumeroColonne : Entier, NumeroLigne : Entier,
NomFichierSource : Nul Ou Caractere)=Nul) Retourner Nul Ou Booleen;
Procedure Habilitation Supprimer();
Procedure MarquerModifie();
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type AnnuaireUpsOrb modélise un annuaire en technologie d'Up ! Virtual Technical Machine.
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 /"
.
Les annuaires sont des objets persistants même si le programme n'est pas persistant.
Il existe un annuaire particulier au programme. Il est identifié par la variable AnnuaireLocal chargé à partir du paramètre UpsOrb.AnnuaireUpsOrb.
Le type AnnuaireUpsOrb possède un constructeur explicite. Le paramètre NomDeLAnnuaire est le nom donné à l'annuaire. Il sert également à rechercher son fichier dans le chemin donné par le paramètre UpsBlb.CheminRessources.
/****************************************************************/
Procedure AfficherContenuAnnuaire(A: Nul Ou AnnuaireUpsOrb, 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
/*******/
Debut
AnnuaireLocal.AfficherContenuAnnuaire("/");
Fin Principal
- | - | - | - | - | - | - | - | - |