public IEnumerable <Path> GetDiagramPaths(Path packagePath) { if (_diagramPathsByPackagePath.ContainsKey(packagePath)) { return(_diagramPathsByPackagePath[packagePath]); } File file = FileNames.GetDiagramPathsByPackage(_folder, packagePath); if (file.Exists()) { var diagramPathList = _jsonSerializer.Value.DeserializeFromFile <PathList>(file.AbsolutePath); return(_diagramPathsByPackagePath[packagePath] = diagramPathList.Paths.Select(p => new Path(p))); } return(null); }
//private List<Package> GetChildPackages(Path packagePath, EA.Package package, List<Package> packages = null) //{ // packages = packages ?? new List<Package>(); // if (package == null) // { // return packages; // } // foreach (var childPackage in package.Packages.OfType<EA.Package>()) // { // var childPath = packagePath.CreateChild(childPackage.Name); // var cp = FromEaPackage(childPackage,) // } // return package; //} // TODO: support recursive public IEnumerable <Path> GetDiagramPaths(Path packagePath) { EA.Package package = GetPackage(packagePath); var paths = new List <Path>(); foreach (var diagram in package.Diagrams.Cast <EA.Diagram>()) { var path = packagePath.CreateChild(diagram.Name); paths.Add(path); } var file = FileNames.GetDiagramPathsByPackage(_folder, packagePath); var pathList = new PathList { Paths = paths.Select(p => p.ToString()).ToList() }; _jsonSerializer.Value.SerializeToFile(pathList, file.AbsolutePath); return(paths); }