From a1208626fad77d9e09f88f7b9fdaae13d1adf0f2 Mon Sep 17 00:00:00 2001 From: tkellner Date: Wed, 10 Apr 2013 19:22:50 +0000 Subject: Completely rework Output(State/Composite) Only save once Allow saving to input doc directory Ask whether to overwrite existing file git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@289 174cde9d-5d70-4d2a-aa98-46368bc2aaf7 --- .../pdfover/gui/workflow/states/OutputState.java | 67 ++++++---------------- 1 file changed, 17 insertions(+), 50 deletions(-) (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java index cdf8694a..64df41f6 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java @@ -17,30 +17,22 @@ package at.asit.pdfover.gui.workflow.states; //Imports import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; import org.eclipse.swt.SWT; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.composites.OutputComposite; -import at.asit.pdfover.gui.controls.Dialog; -import at.asit.pdfover.gui.controls.ErrorDialog; -import at.asit.pdfover.gui.controls.Dialog.BUTTONS; -import at.asit.pdfover.gui.controls.Dialog.ICON; -import at.asit.pdfover.gui.utils.Messages; import at.asit.pdfover.gui.workflow.StateMachine; import at.asit.pdfover.gui.workflow.Status; -import at.asit.pdfover.signator.DocumentSource; /** * Procduces the output of the signature process. (save file, open file) */ public class OutputState extends State { + private OutputComposite outputComposite = null; + /** * @param stateMachine */ @@ -48,15 +40,7 @@ public class OutputState extends State { super(stateMachine); } - /** - * SFL4J Logger instance - **/ - private static final Logger log = LoggerFactory - .getLogger(OutputState.class); - - private OutputComposite outputComposite = null; - - private OutputComposite getSelectionComposite() { + private OutputComposite getOutputComposite() { if (this.outputComposite == null) { this.outputComposite = this.stateMachine.getGUIProvider() .createComposite(OutputComposite.class, SWT.RESIZE, this); @@ -68,48 +52,31 @@ public class OutputState extends State { } this.outputComposite.setOutputDir(this.stateMachine.getConfigProvider().getDefaultOutputFolder()); - this.outputComposite.setTempDirectory(tmpDir.getAbsolutePath()); + this.outputComposite.setTempDir(tmpDir.getAbsolutePath()); this.outputComposite.setInputFile(this.stateMachine.getStatus().getDocument()); } return this.outputComposite; } - private boolean saved = false; - @Override public void run() { Status status = this.stateMachine.getStatus(); - if (status.getSignResult() != null) { - OutputComposite outputComposite = this.getSelectionComposite(); - outputComposite.setSignedDocument(status.getSignResult() - .getSignedDocument()); - this.stateMachine.getGUIProvider().display(outputComposite); - - if (!this.saved) { - this.saved = true; - String outputFolder = this.stateMachine.getConfigProvider() - .getDefaultOutputFolder(); - String fileName = status.getDocument().getName(); - if (outputFolder != null && !outputFolder.trim().equals("")) { //$NON-NLS-1$ - DocumentSource signedDocument = status.getSignResult().getSignedDocument(); - FileOutputStream output; - try { - output = new FileOutputStream(new File(outputFolder + "/" + fileName + "_signed.pdf")); //$NON-NLS-1$ //$NON-NLS-2$ - output.write(signedDocument.getByteArray(), 0, - signedDocument.getByteArray().length); - output.close(); - } catch (IOException e) { - log.error("Failed to save signed document to configured output folder.", e); //$NON-NLS-1$ - ErrorDialog dialog = new ErrorDialog(outputComposite.getShell(), - Messages.getString("error.SaveOutputFolder"), BUTTONS.OK); //$NON-NLS-1$ - dialog.open(); - } - } - } - + if (status.getSignResult() == null) { + // TODO + return; } + + OutputComposite outputComposite = this.getOutputComposite(); + outputComposite.setSignedDocument(status.getSignResult() + .getSignedDocument()); + + // Save signed document + outputComposite.saveDocument(); + + // Display dialog + this.stateMachine.getGUIProvider().display(outputComposite); } /* -- cgit v1.2.3