/// <summary> /// Nettoyage du cache /// </summary> public void Clear() { lock (sync) { _taggings = null; _models = null; _dependencies = null; _artifactsCache.Clear(); ModelLoader.ClearCache(); } }
/// <summary> /// Mise à jour des métadata à partir du modèle /// </summary> /// <param name="item">Metadata à mettre à jour</param> /// <param name="fileName">Fichier contenant le modèle</param> internal static void UpdateMetadata(ComponentModelMetadata item, string fileName) { item.ModelFileName = System.IO.Path.GetFileName(fileName); ModelLoader loader = null; try { // Chargement du modèle pour récupèrer les metadata ModelLoader.ClearCache(fileName); loader = ModelLoader.GetLoader(fileName, true); item.Id = loader.Model.Id; item.Version = loader.Model.Version ?? new VersionInfo(); item.Name = loader.Model.Name; item.Path = loader.Model.Path; item.DocUrl = loader.Model.Url ?? String.Empty; item.TestBaseAddress = loader.Model.BaseAddress ?? String.Empty; item.Description = loader.Model.Comment ?? String.Empty; item.ComponentType = loader.Model.ComponentType; item.Location = RepositoryLocation.Local; // Toujours //item.ServerVersion = item.version.Revision; item.Visibility = loader.Model.Visibility; //item.LocalVersion = -1; } catch (Exception ex) { try { // On essaye de déduire le n° de version à partir du nom de fichier. // Idem pour l'id string v = System.IO.Path.GetDirectoryName(fileName); string[] parts = v.Split(System.IO.Path.DirectorySeparatorChar); if (parts.Length > 2) { item.Version = VersionInfo.TryParse(parts[parts.Length - 1]); item.Id = new Guid(parts[parts.Length - 2]); } } catch { item.Id = Guid.NewGuid(); item.Version = new VersionInfo(); } item.DocUrl = String.Empty; if (ModelLoader.LastSerializationResult != null && ModelLoader.LastSerializationResult.Failed) { StringBuilder sb = new StringBuilder(ex.Message); foreach (SerializationMessage msg in ModelLoader.LastSerializationResult) { sb.AppendLine(String.Format("{0} at {1},{2}", msg.Message, msg.Line, msg.Column)); } item.Description = sb.ToString(); } else { item.Description = ex.Message; } item.ServerVersion = -1; item.Location = RepositoryLocation.Local; // Toujours item.Name = String.Format("Loading error : {0}", System.IO.Path.GetFileNameWithoutExtension(fileName)); item.Path = "????"; item.Visibility = Visibility.Public; } }