public Model ImportFile(string inputFilePath, DesignImportMode mode = DesignImportMode.CREATE_DS) { writeMessage(String.Format("Importing {0}", inputFilePath), MessageType.INFO); UnzipToTemp unzip = null; bool bZipArchive = Path.GetExtension(inputFilePath).Equals(".adp"); if (bZipArchive) { unzip = new UnzipToTemp(null); List <string> entries = unzip.UnzipFile(inputFilePath); inputFilePath = entries.Where(entry => Path.GetDirectoryName(entry) == "" && entry.ToLower().EndsWith(".adm")).FirstOrDefault(); if (inputFilePath != null) { inputFilePath = Path.Combine(unzip.TempDirDestination, inputFilePath); } } Model rtn = null; avm.Design ad_import = null; using (unzip) { using (StreamReader streamReader = new StreamReader(inputFilePath)) { ad_import = CyPhyDesignImporterInterpreter.DeserializeAvmDesignXml(streamReader); } if (ad_import == null) { throw new Exception("Could not load ADM file."); } rtn = ImportDesign(ad_import, mode); // Copy artifacts if (bZipArchive) { // Delete ADM file from tmp folder File.Delete(inputFilePath); foreach (var keyAndEntity in id2DesignEntity) { string id = keyAndEntity.Key; var ca = keyAndEntity.Value as CyPhy.ComponentAssembly; string tempPath = Path.Combine(unzip.TempDirDestination, id); if (Directory.Exists(tempPath)) { var pathCA = ca.GetDirectoryPath(ComponentLibraryManager.PathConvention.ABSOLUTE); DirectoryCopy(tempPath, pathCA, true); } } } } return(rtn); }
public Model[] ImportFiles(string[] fileNames, DesignImportMode mode = AVMDesignImporter.DesignImportMode.CREATE_DS) { List<Model> ret = new List<Model>(); CyPhy.RootFolder rootFolder = ISIS.GME.Common.Utils.CreateObject<CyPhyClasses.RootFolder>(project.RootFolder as MgaObject); Dictionary<string, CyPhy.Component> avmidComponentMap = CyPhyComponentImporterInterpreter.getCyPhyMLComponentDictionary_ByAVMID(rootFolder); foreach (var inputFilePath in fileNames) { var container = ImportFile(inputFilePath, mode); ret.Add(container); } return ret.ToArray(); }
public Model[] ImportFiles(string[] fileNames, DesignImportMode mode = AVMDesignImporter.DesignImportMode.CREATE_DS) { List <Model> ret = new List <Model>(); CyPhy.RootFolder rootFolder = ISIS.GME.Common.Utils.CreateObject <CyPhyClasses.RootFolder>(project.RootFolder as MgaObject); Dictionary <string, CyPhy.Component> avmidComponentMap = CyPhyComponentImporterInterpreter.getCyPhyMLComponentDictionary_ByAVMID(rootFolder); foreach (var inputFilePath in fileNames) { var container = ImportFile(inputFilePath, mode); ret.Add(container); } return(ret.ToArray()); }
public Model ImportFile(string inputFilePath, DesignImportMode mode = DesignImportMode.CREATE_DS) { writeMessage(String.Format("Importing {0}", inputFilePath), MessageType.INFO); avm.Design ad_import; using (StreamReader streamReader = new StreamReader(inputFilePath)) { ad_import = CyPhyDesignImporterInterpreter.DeserializeAvmDesignXml(streamReader); } if (ad_import == null) { throw new Exception("Could not load ACM file."); } return(ImportDesign(ad_import, mode)); }
public Model ImportFile(string inputFilePath, DesignImportMode mode = DesignImportMode.CREATE_DS) { writeMessage(String.Format("Importing {0}", inputFilePath), MessageType.INFO); avm.Design ad_import; using (StreamReader streamReader = new StreamReader(inputFilePath)) { ad_import = CyPhyDesignImporterInterpreter.DeserializeAvmDesignXml(streamReader); } if (ad_import == null) { throw new Exception("Could not load ACM file."); } return ImportDesign(ad_import, mode); }
public Model ImportDesign(avm.Design ad_import, DesignImportMode mode = DesignImportMode.CREATE_DS) { TellCyPhyAddonDontAssignIds(); // TODO: check ad_import.SchemaVersion CyPhy.DesignEntity cyphy_container; if (mode == DesignImportMode.CREATE_CA_IF_NO_DS_CONCEPTS) { bool containsNonCompound = false; Queue <avm.Container> containers = new Queue <avm.Container>(); containers.Enqueue(ad_import.RootContainer); if (ad_import.RootContainer == null) { throw new ApplicationException("No RootContainer, or unknown RootContainer type"); } while (containers.Count > 0) { avm.Container container = containers.Dequeue(); containsNonCompound |= container is avm.Optional || container is avm.Alternative; foreach (var subcontainer in container.Container1) { containers.Enqueue(subcontainer); } } if (containsNonCompound) { cyphy_container = CreateDesignSpaceRoot(ad_import); } else { cyphy_container = CreateComponentAssemblyRoot(ad_import); } } else if (mode == DesignImportMode.CREATE_CAS) { cyphy_container = CreateComponentAssemblyRoot(ad_import); } else if (mode == DesignImportMode.CREATE_DS) { cyphy_container = CreateDesignSpaceRoot(ad_import); } else { throw new ArgumentOutOfRangeException("Unrecognized mode " + mode.ToString()); } var ad_container = ad_import.RootContainer; ImportContainer(cyphy_container, ad_container); processValues(); processPorts(); Dictionary <avm.ConnectorCompositionTarget, avm.ConnectorCompositionTarget> connectorMap = new Dictionary <avm.ConnectorCompositionTarget, avm.ConnectorCompositionTarget>(); foreach (var obj in this._avmCyPhyMLObjectMap) { if (obj.Key is avm.ConnectorCompositionTarget) { avm.ConnectorCompositionTarget ad_compositionTarget1 = (avm.ConnectorCompositionTarget)obj.Key; foreach (var ad_compositionTarget2ID in ad_compositionTarget1.ConnectorComposition.Where(id => string.IsNullOrEmpty(id) == false)) { var ad_compositionTarget2 = _idConnectorMap[ad_compositionTarget2ID]; var cyphy_target = _avmCyPhyMLObjectMap[ad_compositionTarget2]; // TODO: handle lookup failure if (string.Compare(ad_compositionTarget1.ID, ad_compositionTarget2.ID) < 0) { continue; } connectAcrossHierarchy(obj.Value, cyphy_target, typeof(CyPhy.ConnectorComposition).Name); } } } AddReferenceCoordinateSystemForAssemblyRoot(ad_import, cyphy_container); DoLayout(); return((Model)cyphy_container); }
public Model ImportDesign(avm.Design ad_import, DesignImportMode mode = DesignImportMode.CREATE_DS) { TellCyPhyAddonDontAssignIds(); // TODO: check ad_import.SchemaVersion CyPhy.DesignEntity cyphy_container; if (mode == DesignImportMode.CREATE_CA_IF_NO_DS_CONCEPTS) { bool containsNonCompound = false; Queue<avm.Container> containers = new Queue<avm.Container>(); containers.Enqueue(ad_import.RootContainer); while (containers.Count > 0) { avm.Container container = containers.Dequeue(); containsNonCompound |= container is avm.Optional || container is avm.Alternative; foreach (var subcontainer in container.Container1) { containers.Enqueue(subcontainer); } } if (containsNonCompound) { cyphy_container = CreateDesignSpaceRoot(ad_import); } else { cyphy_container = CreateComponentAssemblyRoot(ad_import); } } else if (mode == DesignImportMode.CREATE_CAS) { cyphy_container = CreateComponentAssemblyRoot(ad_import); } else if (mode == DesignImportMode.CREATE_DS) { cyphy_container = CreateDesignSpaceRoot(ad_import); } else { throw new ArgumentOutOfRangeException("Unrecognized mode " + mode.ToString()); } var ad_container = ad_import.RootContainer; ImportContainer(cyphy_container, ad_container); processValues(); processPorts(); Dictionary<avm.ConnectorCompositionTarget, avm.ConnectorCompositionTarget> connectorMap = new Dictionary<avm.ConnectorCompositionTarget, avm.ConnectorCompositionTarget>(); foreach (var obj in this._avmCyPhyMLObjectMap) { if (obj.Key is avm.ConnectorCompositionTarget) { avm.ConnectorCompositionTarget ad_compositionTarget1 = (avm.ConnectorCompositionTarget)obj.Key; foreach (var ad_compositionTarget2ID in ad_compositionTarget1.ConnectorComposition.Where(id => string.IsNullOrEmpty(id) == false)) { var ad_compositionTarget2 = _idConnectorMap[ad_compositionTarget2ID]; var cyphy_target = _avmCyPhyMLObjectMap[ad_compositionTarget2]; // TODO: handle lookup failure if (string.Compare(ad_compositionTarget1.ID, ad_compositionTarget2.ID) < 0) { continue; } makeConnection(obj.Value, cyphy_target, typeof(CyPhy.ConnectorComposition).Name); } } } AddReferenceCoordinateSystemForAssemblyRoot(ad_import, cyphy_container); DoLayout(); return (Model)cyphy_container; }
public Model ImportFile(string inputFilePath, DesignImportMode mode = DesignImportMode.CREATE_DS) { writeMessage(String.Format("Importing {0}", inputFilePath), MessageType.INFO); UnzipToTemp unzip = null; bool bZipArchive = Path.GetExtension(inputFilePath).Equals(".adp"); if (bZipArchive) { unzip = new UnzipToTemp(null); List<string> entries = unzip.UnzipFile(inputFilePath); inputFilePath = entries.Where(entry => Path.GetDirectoryName(entry) == "" && entry.ToLower().EndsWith(".adm")).FirstOrDefault(); if (inputFilePath != null) { inputFilePath = Path.Combine(unzip.TempDirDestination, inputFilePath); } } Model rtn = null; avm.Design ad_import = null; using (unzip) { using (StreamReader streamReader = new StreamReader(inputFilePath)) { ad_import = CyPhyDesignImporterInterpreter.DeserializeAvmDesignXml(streamReader); } if (ad_import == null) { throw new Exception("Could not load ADM file."); } rtn = ImportDesign(ad_import, mode); // Copy artifacts if (bZipArchive) { // Delete ADM file from tmp folder File.Delete(inputFilePath); var caRtn = rtn as CyPhy.ComponentAssembly; var pathCA = caRtn.GetDirectoryPath(ComponentLibraryManager.PathConvention.ABSOLUTE); DirectoryCopy(unzip.TempDirDestination, pathCA, true); } } return rtn; }