summaryrefslogtreecommitdiff
path: root/src/traffic-incidents-service/org.genivi.trafficinfo.dbus-java/src/main/java/org/freedesktop/dbus/viewer/FileSaver.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/traffic-incidents-service/org.genivi.trafficinfo.dbus-java/src/main/java/org/freedesktop/dbus/viewer/FileSaver.java')
-rwxr-xr-xsrc/traffic-incidents-service/org.genivi.trafficinfo.dbus-java/src/main/java/org/freedesktop/dbus/viewer/FileSaver.java191
1 files changed, 191 insertions, 0 deletions
diff --git a/src/traffic-incidents-service/org.genivi.trafficinfo.dbus-java/src/main/java/org/freedesktop/dbus/viewer/FileSaver.java b/src/traffic-incidents-service/org.genivi.trafficinfo.dbus-java/src/main/java/org/freedesktop/dbus/viewer/FileSaver.java
new file mode 100755
index 0000000..789aa65
--- /dev/null
+++ b/src/traffic-incidents-service/org.genivi.trafficinfo.dbus-java/src/main/java/org/freedesktop/dbus/viewer/FileSaver.java
@@ -0,0 +1,191 @@
+/*
+ D-Bus Java Viewer
+ Copyright (c) 2006 Peter Cox
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of either the GNU Lesser General Public License Version 2 or the
+ Academic Free Licence Version 2.1.
+
+ Full licence texts are included in the COPYING file with this program.
+*/
+package org.freedesktop.dbus.viewer;
+
+import static org.freedesktop.dbus.Gettext._;
+
+import java.awt.Component;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Iterator;
+
+import javax.swing.JOptionPane;
+
+final class FileSaver implements Runnable
+{
+ private static final String CANCEL = "Cancel";
+
+ private static final String SKIP_ALL = "Skip All";
+
+ private static final String SKIP = "Skip";
+
+ private static final String OVERWRITE = "Overwrite";
+
+ private static final String OVERWRITE_ALL = "Overwrite All";
+
+ private final File parentDirectory;
+
+ private final Component parentComponent;
+
+ private final Iterable<TextFile> textFiles;
+
+ FileSaver(Component parentComponent, File parentDirectory,
+ Iterable<TextFile> files)
+ {
+ this.parentComponent = parentComponent;
+ this.parentDirectory = parentDirectory;
+ this.textFiles = files;
+ }
+
+ /** {@inheritDoc} */
+ public void run()
+ {
+ saveFiles();
+ }
+
+ private void saveFiles()
+ {
+ String overwritePolicy = null;
+ final Iterator<TextFile> iterator = textFiles.iterator();
+ while (iterator.hasNext())
+ {
+ final TextFile textFile = iterator.next();
+ String fileName = textFile.getFileName();
+ File fileToSave = new File(parentDirectory, fileName);
+ File parentFile = fileToSave.getParentFile();
+ if (parentFile.exists() || parentFile.mkdirs())
+ {
+ boolean doSave = !fileToSave.exists()
+ || OVERWRITE_ALL.equals(overwritePolicy);
+ if (!doSave && !SKIP_ALL.equals(overwritePolicy))
+ {
+ String[] selectionValues;
+ if (iterator.hasNext())
+ {
+ selectionValues = new String[] { OVERWRITE,
+ OVERWRITE_ALL, SKIP, SKIP_ALL, CANCEL };
+ }
+ else
+ {
+ selectionValues = new String[] { OVERWRITE, CANCEL };
+ }
+ int option = JOptionPane.showOptionDialog(parentComponent,
+ "File exists: " + fileName, "Save",
+ JOptionPane.YES_NO_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE, null,
+ selectionValues, null);
+ if (option == -1)
+ {
+ break;
+ }
+ overwritePolicy = selectionValues[option];
+ if (CANCEL.equals(overwritePolicy))
+ {
+ break;
+ }
+
+ doSave = OVERWRITE.equals(overwritePolicy)
+ || OVERWRITE_ALL.equals(overwritePolicy);
+ }
+ if (doSave)
+ {
+ try
+ {
+ String contents = textFile.getContents();
+ writeFile(fileToSave, contents);
+ }
+ catch (final IOException ex)
+ {
+ /* Can't access parent directory for saving */
+ final String errorMessage = "Could not save "
+ + fileName + ": " + ex.getLocalizedMessage();
+ if (iterator.hasNext())
+ {
+
+ int confirm = JOptionPane.showConfirmDialog(
+ parentComponent, errorMessage
+ + ".\n"+_("Try saving other files?"),
+ _("Save Failed"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.ERROR_MESSAGE);
+ if (confirm != JOptionPane.OK_OPTION)
+ {
+ break;
+ }
+ }
+ else
+ {
+ JOptionPane.showMessageDialog(parentComponent,
+ errorMessage + ".", _("Save Failed"),
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ }
+ }
+ else
+ {
+
+ final String errorMessage = _("Could not access parent directory for ")
+ + fileName;
+ if (iterator.hasNext())
+ {
+
+ int confirm = JOptionPane.showConfirmDialog(
+ parentComponent, errorMessage
+ + ".\n"+_("Try saving other files?"),
+ _("Save Failed"), JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.ERROR_MESSAGE);
+ if (confirm != JOptionPane.OK_OPTION)
+ {
+ break;
+ }
+ }
+ else
+ {
+ JOptionPane.showMessageDialog(parentComponent, errorMessage
+ + ".", _("Save Failed"), JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ }
+ }
+
+ /**
+ * @param fileToSave
+ * @param contents
+ * @throws IOException
+ */
+ private void writeFile(File fileToSave, String contents) throws IOException
+ {
+ FileWriter fileWriter = null;
+ try
+ {
+ fileWriter = new FileWriter(fileToSave);
+ BufferedWriter writer = new BufferedWriter(fileWriter);
+ writer.append(contents);
+ writer.flush();
+ }
+ finally
+ {
+ if (fileWriter != null)
+ {
+ try
+ {
+ fileWriter.close();
+ }
+ catch (IOException e1)
+ {
+ }
+ }
+ }
+ }
+}