From 969617f6557c559b173a8cc267c7cd37c6e2e088 Mon Sep 17 00:00:00 2001 From: tkellner Date: Fri, 24 Aug 2012 17:04:54 +0000 Subject: PDF-AS signature working with local BKU git-svn-id: https://svn.iaik.tugraz.at/svn/egiz/prj/current/12PDF-OVER-4.0@12391 3a0b52a2-8410-0410-bc02-ff6273a87459 --- .../gui/workflow/states/PrepareSigningState.java | 83 ++++++++++++---------- 1 file changed, 45 insertions(+), 38 deletions(-) (limited to 'trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java') diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java index db251ee6..9fc86f3b 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java @@ -24,7 +24,9 @@ import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.composites.WaitingComposite; import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.Status; import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs; +import at.asit.pdfover.signator.PDFFileDocumentSource; import at.asit.pdfover.signator.SignatureParameter; import at.asit.pdfover.signator.Signer; @@ -40,33 +42,6 @@ public class PrepareSigningState extends State { super(stateMachine); } - /** - * Debug background thread - */ - private final class DebugSleeperThread implements Runnable { - - private StateMachine workflow; - - /** - * Default constructor - * @param work - */ - public DebugSleeperThread(final StateMachine work) { - this.workflow = work; - } - - @Override - public void run() { - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - this.workflow.invokeUpdate(); - } - } - private final class PrepareDocumentThread implements Runnable { private PrepareSigningState state; @@ -82,10 +57,26 @@ public class PrepareSigningState extends State { @Override public void run() { try { + if(this.state.signer == null) { + this.state.signer = this.state.stateMachine.getPDFSigner().getPDFSigner(); + } + + if(this.state.signatureParameter == null) { + this.state.signatureParameter = this.state.signer.newParameter(); + } + + this.state.signatureParameter.setInputDocument(new PDFFileDocumentSource(this.state.stateMachine.getStatus().getDocument())); + this.state.signatureParameter.setSignaturePosition(this.state.stateMachine.getStatus().getSignaturePosition()); + + // TODO: Fill library specific signature Parameters ... + // TODO: setEmblem etc. + + this.state.signingState = this.state.signer.prepare(this.state.signatureParameter); } catch (Exception e) { - log.error("PrepareDocumentThread: ", e); + log.error("PrepareDocumentThread: ", e); //$NON-NLS-1$ + this.state.threadException = e; } finally { this.state.stateMachine.invokeUpdate(); @@ -96,9 +87,9 @@ public class PrepareSigningState extends State { /** * SFL4J Logger instance **/ - private static final Logger log = LoggerFactory.getLogger(PrepareSigningState.class); + static final Logger log = LoggerFactory.getLogger(PrepareSigningState.class); - private SignatureParameter signatureParameter; + SignatureParameter signatureParameter; private WaitingComposite waitingComposite = null; @@ -111,29 +102,45 @@ public class PrepareSigningState extends State { return this.waitingComposite; } - private boolean run = false; + at.asit.pdfover.signator.SigningState signingState = null; + + Signer signer; + + Exception threadException = null; @Override public void run() { - // TODO SHOW BACKGROUND ACTIVITY .... WaitingComposite waiting = this.getSelectionComposite(); this.stateMachine.getGUIProvider().display(waiting); - Signer signer = this.stateMachine.getPDFSigner().getPDFSigner(); + this.signer = this.stateMachine.getPDFSigner().getPDFSigner(); + + Status status = this.stateMachine.getStatus(); - if(signatureParameter == null) { -// signatureParameter = + if(this.signatureParameter == null) { + this.signatureParameter = this.signer.newParameter(); } - if(!this.run) { + if(this.signingState == null && this.threadException == null) { Thread t = new Thread(new PrepareDocumentThread(this)); - this.run = true; t.start(); return; + } + + if(this.threadException != null) { + // TODO: Jump to error state! } - // WAIT FOR SLREQUEST and dispatch according to BKU selection + if(this.signingState == null || this.signingState.getSignatureRequest() == null) { + // This shouldnot happen!! PrepareDocumentThread allready performed, either we have a valid signingState or an exception!! + // TODO: Jump to error state! + } + + // We got the Request set it into status and move on to next state ... + status.setSigningState(this.signingState); + + log.debug("SL REQUEST: " + this.signingState.getSignatureRequest().getRequest()); //$NON-NLS-1$ if(this.stateMachine.getStatus().getBKU() == BKUs.LOCAL) { this.setNextState(new LocalBKUState(this.stateMachine)); -- cgit v1.2.3