+ private static File nextTempFile(String filename, File dirFile)
+ throws IOException
+ {
+ File temp = null;
+ COUNT: for (int i = 1; i < 1000; i++)
+ {
+ File trythis = new File(dirFile,
+ filename + '~' + Integer.toString(i));
+ if (!trythis.exists())
+ {
+ temp = trythis;
+ break COUNT;
+ }
+
+ }
+ if (temp == null)
+ {
+ temp = File.createTempFile(filename, TEMP_FILE_EXT, dirFile);
+ }
+ return temp;
+ }
+
+ private void tidyUpFiles()
+ {
+ deleteOldFiles();
+ }
+
+ private static boolean confirmNewerDeleteFile(File fileToBeDeleted,
+ File replacementFile, boolean replace)
+ {
+ StringBuilder messageSB = new StringBuilder();
+
+ File ftbd = fileToBeDeleted;
+ String ftbdLMT = sdf.format(ftbd.lastModified());
+ String ftbdSize = Long.toString(ftbd.length());
+
+ File rf = replacementFile;
+ String rfLMT = sdf.format(rf.lastModified());
+ String rfSize = Long.toString(rf.length());
+
+ int confirmButton = JvOptionPane.NO_OPTION;
+ if (replace)
+ {
+ File saveFile = null;
+ try
+ {
+ saveFile = nextTempFile(ftbd.getName(), ftbd.getParentFile());
+ } catch (Exception e)
+ {
+ Console.error(
+ "Error when confirming to keep backup file newer than other backup files.");
+ e.printStackTrace();
+ }
+ messageSB.append(MessageManager.formatMessage(
+ "label.newerdelete_replacement_line", new String[]
+ { ftbd.getName(), rf.getName(), ftbdLMT, rfLMT, ftbdSize,
+ rfSize }));
+ // "Backup file\n''{0}''\t(modified {2}, size {4})\nis to be deleted and
+ // replaced by apparently older file \n''{1}''\t(modified {3}, size
+ // {5}).""
+ messageSB.append("\n\n");
+ messageSB.append(MessageManager.formatMessage(
+ "label.confirm_deletion_or_rename", new String[]
+ { ftbd.getName(), saveFile.getName() }));
+ // "Confirm deletion of ''{0}'' or rename to ''{1}''?"
+ String[] options = new String[] {
+ MessageManager.getString("label.delete"),
+ MessageManager.getString("label.rename") };
+
+ confirmButton = Platform.isHeadless() ? JvOptionPane.YES_OPTION
+ : JvOptionPane.showOptionDialog(Desktop.desktop,
+ messageSB.toString(),
+ MessageManager.getString(
+ "label.backupfiles_confirm_delete"),
+ // "Confirm delete"
+ JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.WARNING_MESSAGE, null, options,
+ options[0]);
+ }
+ else