public static Graph LoadMultipleFiles(IEnumerable <string> resourcePaths, IFileProvider fileProvider, ExternalRessourcesLoadingPolicy loadingPolicy) { if (fileProvider == null) { throw new NullReferenceException("FileProvider implementation is not specified."); } IEnumerable <StreamReader> streams = new List <StreamReader>(); streams = resourcePaths.Select(p => fileProvider.GetFileReader(p)); List <GraphXmlDeserializer> deserializers = new List <GraphXmlDeserializer>(); foreach (StreamReader stream in streams) { XDocument xdoc = XDocument.Load(stream); stream.Close(); GraphXmlDeserializer gds = new GraphXmlDeserializer(); gds.ParseFile(xdoc); deserializers.Add(gds); } GraphXmlDeserializer main = deserializers[0]; for (int i = 1; i < deserializers.Count; i++) { main.Merge(deserializers[i]); } main.ResolveExternalEdges(); main.ResolveAnnotationDeclarations(); Graph g = new Graph(); foreach (IVertex v in main.vertexInstances.Values) { g.AddVertex(v); } foreach (var annotationPair in main.annotationsTable) { IGraphObject target = g.GetElementById(annotationPair.Key); g.AddAnnotations(target, annotationPair.Value); } return(g); }
public static Graph GetGraphInstance(string resourcePath, IFileProvider fileProvider, ExternalRessourcesLoadingPolicy loadingPolicy) { GraphXmlDeserializer parser = new GraphXmlDeserializer() { localFileProvider = fileProvider, FileLoadingPolicy = loadingPolicy }; return(parser.LoadFile(resourcePath)); }