Beispiel #1
0
 /// <summary>
 /// Nettoyage du cache
 /// </summary>
 public void Clear()
 {
     lock (sync)
     {
         _taggings     = null;
         _models       = null;
         _dependencies = null;
         _artifactsCache.Clear();
         ModelLoader.ClearCache();
     }
 }
Beispiel #2
0
        /// <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;
            }
        }