From f5bafdbc6a15273afc73ef805d414f3dfb37d0c0 Mon Sep 17 00:00:00 2001 From: mguessan Date: Wed, 7 Oct 2009 20:53:21 +0000 Subject: [PATCH] Another fix from Dan Foody: improve dumpICS debug option git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@771 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/Settings.java | 4 +- .../davmail/exchange/ExchangeSession.java | 38 +++++++++++++++++-- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/java/davmail/Settings.java b/src/java/davmail/Settings.java index dd21c79b..89881f24 100644 --- a/src/java/davmail/Settings.java +++ b/src/java/davmail/Settings.java @@ -162,7 +162,7 @@ public final class Settings { public static String getLogFileDirectory() { String logFilePath = getLogFilePath(); if (logFilePath == null || logFilePath.length() == 0) { - return ""; + return "."; } int lastSlashIndex = logFilePath.lastIndexOf('/'); if (lastSlashIndex == -1) { @@ -171,7 +171,7 @@ public final class Settings { if (lastSlashIndex >= 0) { return logFilePath.substring(0, lastSlashIndex); } else { - return ""; + return "."; } } diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index af479f6e..db0c1126 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -1726,14 +1726,46 @@ public class ExchangeSession { return event; } - private static int dumpIndex = 1; + private static int dumpIndex; private String defaultSound = "Basso"; protected void dumpICS(String icsBody, boolean fromServer, boolean after) { + String logFileDirectory = Settings.getLogFileDirectory(); + // additional setting to activate ICS dump (not available in GUI) - if (Settings.getBooleanProperty("davmail.dumpICS")) { + int dumpMax = Settings.getIntProperty("davmail.dumpICS"); + if (dumpMax > 0) { + if (dumpIndex > dumpMax) { + // Delete the oldest dump file + final int oldest = dumpIndex - dumpMax; + try { + File[] oldestFiles = (new File(logFileDirectory)).listFiles(new FilenameFilter() { + public boolean accept(File dir, String name) { + if (name.endsWith(".ics")) { + int dashIndex = name.indexOf('-'); + if (dashIndex > 0) { + try { + int fileIndex = Integer.parseInt(name.substring(0, dashIndex)); + return fileIndex < oldest; + } catch (NumberFormatException nfe) { + // ignore + } + } + } + return false; + } + }); + for (File file : oldestFiles) { + //noinspection ResultOfMethodCallIgnored + file.delete(); + } + } catch (Exception ex) { + LOGGER.warn("Error deleting ics dump: " + ex.getMessage()); + } + } + StringBuilder filePath = new StringBuilder(); - filePath.append(Settings.getLogFileDirectory()).append('/') + filePath.append(logFileDirectory).append('/') .append(dumpIndex) .append(after ? "-to" : "-from") .append((after ^ fromServer) ? "-server" : "-client")