// ---------------------------------------------------------------------------------------------- public static IDiskEntity GetEntity(string pEntityPath, string pArchivedPath, IReportWriter pReportWriter) { IDiskEntity diskEntity = null; if (pReportWriter == null) { pReportWriter = new NullReportWriter(); } switch (DiskEntityBase.GetEntityType(pEntityPath)) { case DiskEntityType.Folder: diskEntity = new DiskEntityFolder(pEntityPath, pArchivedPath, pReportWriter); break; case DiskEntityType.AddonFolder: diskEntity = new DiskEntityAddonFolder(pEntityPath, pArchivedPath, pReportWriter); break; case DiskEntityType.Archive: diskEntity = new DiskEntityArchive(pEntityPath, pArchivedPath, pReportWriter); break; case DiskEntityType.SketchupFile: diskEntity = new DiskEntitySketchup(pEntityPath, pArchivedPath, pReportWriter); break; case DiskEntityType.AddonFile: diskEntity = new DiskEntityAddon(pEntityPath, pArchivedPath, pReportWriter); break; } return(diskEntity); }
protected static DiskEntityType GetEntityType(string pEntityPath, out string pAbsolutePath, out string pName) { DiskEntityType diskEntityType = DiskEntityType.Unknown; pAbsolutePath = pName = null; try { if (File.Exists(pEntityPath)) { string extension = Path.GetExtension(pEntityPath); switch (extension?.Trim().ToLower()) { case ".addon": diskEntityType = DiskEntityType.AddonFile; break; case ".zip": case ".rar": case ".7z": diskEntityType = DiskEntityType.Archive; break; case ".skp": diskEntityType = DiskEntityType.SketchupFile; break; default: return(DiskEntityType.Unknown); } } else if (Directory.Exists(pEntityPath)) { diskEntityType = DiskEntityFolder.IsAddonFolder(pEntityPath) ? DiskEntityType.AddonFolder : DiskEntityType.Folder; } else { return(DiskEntityType.Unknown); } pAbsolutePath = Path.GetFullPath(pEntityPath); pName = Path.GetFileName(pEntityPath); } catch // (Exception exception) { diskEntityType = DiskEntityType.Unknown; } return(diskEntityType); }