public Model Deserialize(Stream source, Uri modelUri, IModelRepository repository, bool addToRepository) { var reader = XmlReader.Create(source); var root = CreateRoot(reader); var model = CreateModelForRoot(root); model.ModelUri = modelUri; if (addToRepository) { repository.Models.Add(modelUri, model); } var context = new ModelSerializationContext(repository, model); Initialize(reader, root, context); foreach (var pair in context.IDs) { var modelElement = pair.Value as ModelElement; if (modelElement != null) { model.RegisterId(pair.Key, modelElement); } } context.Cleanup(); return(model); }
public Model Deserialize(Stream source, Uri modelUri, IModelRepository repository, bool addToRepository) { var reader = XmlReader.Create(source); var root = CreateRoot(reader); var model = CreateModelForRoot(root); model.ModelUri = modelUri; if (addToRepository) repository.Models.Add(modelUri, model); var context = new ModelSerializationContext(repository, model); Initialize(reader, root, context); foreach (var pair in context.IDs) { var modelElement = pair.Value as ModelElement; if (modelElement != null) { model.RegisterId(pair.Key, modelElement); } } context.Cleanup(); return model; }
public Model Deserialize(Stream source, Uri modelUri, IModelRepository repository, bool addToRepository) { var reader = XmlReader.Create(source); var root = CreateRoot(reader); var model = CreateModelForRoot(root); model.ModelUri = modelUri; if (addToRepository) repository.Models.Add(modelUri, model); var context = new ModelSerializationContext(repository, model); Initialize(reader, root, context); var idStore = new Dictionary<string, IModelElement>(); foreach (var pair in context.IDs) { var modelElement = pair.Value as IModelElement; if (modelElement != null && !idStore.ContainsKey(pair.Key)) { idStore.Add(pair.Key, modelElement); } } if (idStore.Count > 0) { model.IdStore = idStore; } context.Cleanup(); return model; }