From cfaf1e64225d56cc24dbb657421094c0b58ef4db Mon Sep 17 00:00:00 2001 From: chenson42 Date: Mon, 11 Aug 2014 12:19:49 +0000 Subject: [PATCH] 0001870: Include directory listing of symmetricds installation in snapshot --- .../jumpmind/symmetric/util/SnapshotUtil.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java index 9b9b8f0f72..87c5c5e9eb 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java @@ -264,6 +264,7 @@ public static File createSnapshot(ISymmetricEngine engine) { writeRuntimeStats(engine, tmpDir); writeJobsStats(engine, tmpDir); + writeDirectoryListing(engine, tmpDir); fos = null; try { @@ -289,6 +290,46 @@ public static File createSnapshot(ISymmetricEngine engine) { } } + protected static void writeDirectoryListing(ISymmetricEngine engine, File tmpDir) { + try { + File home = new File(System.getProperty("user.dir")); + if (home.getName().equalsIgnoreCase("bin")) { + home = home.getParentFile(); + } + + StringBuilder output = new StringBuilder(); + printDirectoryContents(home, output); + FileUtils.write(new File(tmpDir, "directory-listing.txt"), output); + } catch (Exception ex) { + log.warn("Failed to output the direcetory listing" , ex); + } + } + + protected static void printDirectoryContents(File dir, StringBuilder output) throws IOException { + output.append("\n"); + output.append(dir.getCanonicalPath()); + output.append("\n"); + + File[] files = dir.listFiles(); + for (File file : files) { + if (file.isDirectory()) { + printDirectoryContents(file, output); + } else { + output.append(" "); + output.append(file.canRead() ? "r" : "-"); + output.append(file.canWrite() ? "w" : "-"); + output.append(file.canExecute() ? "x" : "-"); + output.append(StringUtils.leftPad(file.length() + "", 11)); + output.append(" "); + output.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date(file.lastModified()))); + output.append(" "); + output.append(file.getName()); + output.append("\n"); + } + } + + } + protected static void writeRuntimeStats(ISymmetricEngine engine, File tmpDir) { FileOutputStream fos = null; try {