/// <summary> /// Chargement des metadata à partir du répertoire local et des serveurs distants /// </summary> /// <returns></returns> internal MetadataCollection LoadAll() { if (_models != null) { return(this); } // Vérouillage lock (_syncObject) { if (_models != null) { return(this); } ILogger logger = ServiceLocator.Instance.GetService <ILogger>(); // Lecture dans les référentiels - Local en premier _models = new List <ComponentModelMetadata>(); // Local en premier IRepositoryProvider localProvider = RepositoryManager.Instance.GetLocalProvider(); if (localProvider != null) { Merge(RepositoryLocation.Local, localProvider.GetAllMetadata()); } // Puis les serveurs foreach (IRepositoryProvider provider in RepositoryManager.Instance.GetRemoteProviders()) { try { List <ComponentModelMetadata> list = provider.GetAllMetadata(); if (list != null) { // On met à jour l'url du serveur d'origine list.ForEach(delegate(ComponentModelMetadata m) { m.ServerUrl = provider.Name; }); Merge(RepositoryLocation.Server, list); } } catch (Exception ex) { if (logger != null) { logger.WriteError("GetMetadatas", String.Format("Error when trying to retrieve the model list"), ex); } } } // Evénement fin de chargement OnMetadataLoaded(new EventArgs()); } return(this); }
/// <summary> /// Liste de tous les métadata des modèles du repository (Réactualisé lors de chaque publication) /// </summary> /// <returns></returns> public List <ComponentModelMetadata> GetAllMetadata() { if (_models == null) { lock (sync) { if (_models == null) { _models = _provider.GetAllMetadata(); } } } return(_models); }