/// <summary> /// Création du fichier modèle à partir du nom sélectionné ou un fichier vide /// si problème /// </summary> /// <param name="template">The template.</param> /// <param name="targetFileName">Name of the target file.</param> private static void CreateModelFileName(string template, string targetFileName) { bool createEmpty = true; if (File.Exists(targetFileName)) { createEmpty = false; } else if (template != null) { try { createEmpty = !RepositoryManager.Instance.GetFileFromRepository(RepositoryCategory.Configuration, template, targetFileName); } catch { } } if (createEmpty) { CandleModel model = ModelLoader.CreateModel(Path.GetFileNameWithoutExtension(targetFileName), new VersionInfo(1, 0, 0, 0)); SerializationResult result = new SerializationResult(); CandleSerializationHelper.Instance.SaveModel(result, model, targetFileName); } // Modification de l'identifiant du modele Dictionary <string, Guid> affectedIds = ReplaceAllIdsInModel(targetFileName); // Le diagramme associé template = template + ".diagram"; targetFileName += ".diagram"; if ( RepositoryManager.Instance.GetFileFromRepository(RepositoryCategory.Configuration, template, targetFileName)) { ReplaceAllIdsInDiagram(targetFileName, affectedIds); } }
/// <summary> /// Sélection d'un modèle /// </summary> /// <param name="component">The component.</param> /// <param name="metaData">The meta data.</param> /// <returns></returns> bool IModelsMetadata.SelectModel(ExternalComponent component, out ComponentModelMetadata metaData) { metaData = null; // Ici on veut saisir le fichier décrivant le système ComponentType?ct = null; if (component.MetaData != null) { ct = component.MetaData.ComponentType; } RepositoryTreeForm wizard = new RepositoryTreeForm(true, ct); if (wizard.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // On doit le créer if (wizard.SelectedItem == null) { // // Création d'un composant externe // if (component.Name == String.Empty) { PromptBox pb = new PromptBox("Name of the new component"); if (pb.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return(false); } // Vérification des doublons. if (_metadatas.NameExists(pb.Value)) { IIDEHelper ide = ServiceLocator.Instance.IDEHelper; if (ide != null) { ide.ShowMessage("This model already exists in this model."); } return(false); } component.Name = pb.Value; } // Création d'un modèle vide dans un répertoire temporaire string relativeModelFileName = component.Name + ModelConstants.FileNameExtension; string fn = Utils.GetTemporaryFileName(relativeModelFileName); Directory.CreateDirectory(System.IO.Path.GetDirectoryName(fn)); // Persistence du modèle CandleModel model = ModelLoader.CreateModel(component.Name, component.Version); component.ModelMoniker = model.Id; SerializationResult result = new SerializationResult(); CandleSerializationHelper.Instance.SaveModel(result, model, fn); // Et ouverture du modèle ServiceLocator.Instance.ShellHelper.Solution.DTE.ItemOperations.OpenFile(fn, EnvDTE.Constants.vsViewKindDesigner); } else // Sinon affectation { metaData = wizard.SelectedItem; ExternalComponent externalComponent = component.Model.FindExternalComponent(metaData.Id); if (externalComponent != null) { IIDEHelper ide = ServiceLocator.Instance.IDEHelper; if (ide != null) { ide.ShowMessage("This model already exists in this model."); } return(false); } metaData.UpdateComponent(component); } return(true); // On ne passe pas dans le rollback } return(false); }