diff options
3 files changed, 36 insertions, 13 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java index 8c9e21c1..966a0708 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java @@ -44,6 +44,7 @@ import at.asit.pdfover.gui.Constants; import at.asit.pdfover.gui.controls.Dialog; import at.asit.pdfover.gui.controls.Dialog.BUTTONS; import at.asit.pdfover.gui.controls.Dialog.ICON; +import at.asit.pdfover.gui.controls.ErrorDialog; import at.asit.pdfover.gui.utils.Messages; import at.asit.pdfover.gui.workflow.states.State; import at.asit.pdfover.signator.DocumentSource; @@ -265,7 +266,7 @@ public class OutputComposite extends StateComposite { targetFile = new File(inputFolder, target); if (targetFile.exists()) { - Dialog dialog = new Dialog(this.getShell(), Messages.getString("common.warning"), //$NON-NLS-1$ + Dialog dialog = new Dialog(getShell(), Messages.getString("common.warning"), //$NON-NLS-1$ String.format(Messages.getString("output.file_ask_overwrite"), targetFile.getName()), //$NON-NLS-1$ BUTTONS.OK_CANCEL, ICON.QUESTION); if (dialog.open() == SWT.CANCEL) @@ -275,22 +276,42 @@ public class OutputComposite extends StateComposite { } DocumentSource source = this.getSignedDocument(); + boolean retry; - try { - FileOutputStream outstream = new FileOutputStream(targetFile); - outstream.write(source.getByteArray(), 0, - source.getByteArray().length); - outstream.close(); - } catch (FileNotFoundException e) { - log.debug("File not found", e); //$NON-NLS-1$ - return null; - } catch (IOException e) { - log.debug("IO Error", e); //$NON-NLS-1$ - return null; - } + do { + retry = false; + try { + FileOutputStream outstream = new FileOutputStream(targetFile); + outstream.write(source.getByteArray(), 0, + source.getByteArray().length); + outstream.close(); + } catch (FileNotFoundException e) { + log.error("File not found", e); //$NON-NLS-1$ + ErrorDialog dialog = new ErrorDialog(getShell(), + String.format(Messages.getString("output.save_failed"), //$NON-NLS-1$ + targetFile.getName(), e.getLocalizedMessage()), + BUTTONS.RETRY_CANCEL); + if (dialog.open() == SWT.CANCEL) + return null; + retry = true; + } catch (IOException e) { + log.error("IO Error", e); //$NON-NLS-1$ + ErrorDialog dialog = new ErrorDialog(getShell(), + String.format(Messages.getString("output.save_failed"), //$NON-NLS-1$ + targetFile.getName(), e.getLocalizedMessage()), + BUTTONS.RETRY_CANCEL); + if (dialog.open() == SWT.CANCEL) + return null; + retry = true; + } + } while (retry); if (!targetFile.exists()) + { + log.error("Tried to save file " + targetFile.getName() + //$NON-NLS-1$ + ", but it doesn't exist"); //$NON-NLS-1$ return null; + } return targetFile; } diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties index 5b945769..13798f7e 100644 --- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties +++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties @@ -103,6 +103,7 @@ mobileBKU.password=Password: output.file_ask_overwrite=File %s already exists, do you want to overwrite it? output.link_open_message=You can open the signed file <a>here</a> output.link_save_message=You can save the signed file +output.save_failed=Saving file %s failed: %s output.success_message=Signature was successful positioning.newPage=Create &new Page positioning.page=Page %d of %d diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties index a4f0dd8f..6f36a45c 100644 --- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties +++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties @@ -103,6 +103,7 @@ mobileBKU.password=Passwort: output.file_ask_overwrite=Datei %s existiert bereits, wollen Sie sie überschreiben? output.link_open_message=Sie können das signierte Dokument <a>hier</a> öffnen output.link_save_message=Sie können das signierte Dokument speichern +output.save_failed=Datei %s konnte nicht gespeichert werden: %s output.success_message=Signatur war erfolgreich positioning.newPage=&Neue Seite anlegen positioning.page=Seite %d von %d |