From e710a326314184f31cd50d4637959f44232a74ee Mon Sep 17 00:00:00 2001 From: tkellner Date: Wed, 10 Apr 2013 18:52:37 +0000 Subject: State Machine stuff git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@20 174cde9d-5d70-4d2a-aa98-46368bc2aaf7 --- .../gui/workflow/states/BKUSelectionState.java | 62 ++++++++++++++--- .../workflow/states/DataSourceSelectionState.java | 75 +++++++++----------- .../pdfover/gui/workflow/states/LocalBKUState.java | 14 ++-- .../gui/workflow/states/MobileBKUState.java | 13 ++-- .../pdfover/gui/workflow/states/OutputState.java | 13 ++-- .../gui/workflow/states/PositioningState.java | 27 ++++---- .../workflow/states/PrepareConfigurationState.java | 62 ++++++++++++++--- .../gui/workflow/states/PrepareSigningState.java | 80 +++++++++++++++++++--- .../pdfover/gui/workflow/states/SigningState.java | 14 ++-- 9 files changed, 241 insertions(+), 119 deletions(-) (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java index fdd160ac..2bd3361d 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java @@ -16,8 +16,11 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.components.BKUSelectionComposite; import at.asit.pdfover.gui.workflow.Workflow; import at.asit.pdfover.gui.workflow.WorkflowState; @@ -26,26 +29,65 @@ import at.asit.pdfover.gui.workflow.WorkflowState; */ public class BKUSelectionState extends WorkflowState { + /** + * Enumeration of available BKU type + */ + public enum BKUS { + /** + * Local bku + */ + LOCAL, + + /** + * Mobile bku + */ + MOBILE, + + /** + * None bku + */ + NONE + } + /** * SFL4J Logger instance **/ @SuppressWarnings("unused") private static final Logger log = LoggerFactory.getLogger(BKUSelectionState.class); + private BKUSelectionComposite selectionComposite = null; + + private BKUSelectionComposite getSelectionComposite(Workflow workflow) { + if (this.selectionComposite == null) { + this.selectionComposite = new BKUSelectionComposite( + workflow.getComposite(), SWT.RESIZE, workflow); + } + + return this.selectionComposite; + } + @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub - this.setNextState(state) - } + if(workflow.getSelectedBKU() == BKUS.NONE) { + BKUSelectionComposite selection = this + .getSelectionComposite(workflow); - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ - @Override - public void hideGUI() { - // TODO Auto-generated method stub + workflow.setTopControl(selection); + selection.layout(); + + workflow.setSelectedBKU(selection.getSelected()); + if(workflow.getSelectedBKU() == BKUS.NONE) { + this.setNextState(this); + return; + } + } + this.setNextState(new PrepareSigningState()); + } + + @Override + public String toString() { + return "BKUSelectionState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java index 223ba17d..10492dfe 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java @@ -16,10 +16,9 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import java.io.File; + import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,59 +34,47 @@ public class DataSourceSelectionState extends WorkflowState { /** * SFL4J Logger instance **/ - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(DataSourceSelectionState.class); - + private static final Logger log = LoggerFactory + .getLogger(DataSourceSelectionState.class); + private DataSourceSelectComposite selectionComposite = null; - + private DataSourceSelectComposite getSelectionComposite(Workflow workflow) { - if(this.selectionComposite == null) { - this.selectionComposite = new DataSourceSelectComposite(workflow.getComposite(), SWT.RESIZE, workflow); + if (this.selectionComposite == null) { + this.selectionComposite = new DataSourceSelectComposite( + workflow.getComposite(), SWT.RESIZE, workflow); } - + return this.selectionComposite; } - + @Override public void update(Workflow workflow) { - DataSourceSelectComposite selection = this.getSelectionComposite(workflow); - - workflow.setTopControl(selection); - selection.layout(); - - if(selection.isPress()) { - this.setNextState(new PositioningState()); - } else { - this.setNextState(this); - } - } - private void recursiveHide(Control ctrl) { - if(ctrl instanceof Composite) { - Composite comp = (Composite)ctrl; - Control[] childs = comp.getChildren(); - for(int i = 0; i < childs.length; i++) { - this.recursiveHide(childs[i]); + if (workflow.getDataSource() == null) { + DataSourceSelectComposite selection = this + .getSelectionComposite(workflow); + + workflow.setTopControl(selection); + selection.layout(); + + File source = selection.getSelected(); + if(source != null) { + workflow.setDataSource(source); } + + if (workflow.getDataSource() == null) { + // Not selected yet + this.setNextState(this); + return; + } } - ctrl.setVisible(false); + log.debug("Got Datasource: " + workflow.getDataSource().getAbsolutePath()); + this.setNextState(new PositioningState()); } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - /*if(this.selectionComposite != null) { - Shell shell = this.selectionComposite.getShell(); - Composite comp = this.selectionComposite.getParent(); - recursiveHide(this.selectionComposite); - this.selectionComposite.layout(); - //this.selectionComposite.setVisible(false); - comp.layout(); - //shell.pack(true); - shell.layout(true); - }*/ + public String toString() { + return "DataSourceSelectionState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java index 5f3a00d5..aa352be7 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java @@ -37,17 +37,13 @@ public class LocalBKUState extends WorkflowState { */ @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Process SL Request and set SL Response + this.setNextState(new SigningState()); } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "LocalBKUState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java index 9d88ce0c..643abd45 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java @@ -37,17 +37,14 @@ public class MobileBKUState extends WorkflowState { */ @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Process SL Request and set SL Response + + this.setNextState(new SigningState()); } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "MobileBKUState"; } - } 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 44d9a55f..d7df5c19 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 @@ -34,17 +34,14 @@ public class OutputState extends WorkflowState { @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Preform output operations ... end workflow + workflow.exitWorkflow(); } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "OutputState"; } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java index 9841ffce..180b98d9 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java @@ -49,23 +49,24 @@ public class PositioningState extends WorkflowState { @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub - PositioningComposite position = this.getPositioningComosite(workflow); - - workflow.setTopControl(position); + if(workflow.getParameter().getSignaturePosition() == null) { + PositioningComposite position = this.getPositioningComosite(workflow); + + workflow.setTopControl(position); + + workflow.getParameter().setSignaturePosition(position.getPosition()); + + if(workflow.getParameter().getSignaturePosition() == null) { + this.setNextState(this); + return; + } + } this.setNextState(new BKUSelectionState()); } - /* - * (non-Javadoc) - * - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "PositioningState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java index b90f38db..91ebf01b 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java @@ -16,10 +16,15 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import java.util.Properties; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.workflow.Workflow; import at.asit.pdfover.gui.workflow.WorkflowState; +import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUS; +import at.asit.pdfover.signator.Signator; +import at.asit.pdfover.signator.SignaturePosition; /** * Starting state of workflow proccess @@ -28,24 +33,65 @@ import at.asit.pdfover.gui.workflow.WorkflowState; */ public class PrepareConfigurationState extends WorkflowState { + public final static String BKU_SELECTION_CONFIG = "DEFAULT_BKU"; + /** * SFL4J Logger instance **/ @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(PrepareConfigurationState.class); - + private static final Logger log = LoggerFactory + .getLogger(PrepareConfigurationState.class); + @Override public void update(Workflow workflow) { + // TODO: Read config file and command line arguments + // Set usedSignerLib ... + + // Create PDF Signer + workflow.setPdfSigner(Signator.getSigner(workflow.getUsedSignerLib())); + + workflow.setParameter(workflow.getPdfSigner().newParameter()); + + workflow.setSelectedBKU(PrepareConfigurationState.readSelectedBKU(workflow.getConfigurationValues())); + + workflow.getParameter().setSignaturePosition(readDefinedPosition(workflow.getConfigurationValues())); + this.setNextState(new DataSourceSelectionState()); } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "PrepareConfigurationState"; } + /** + * Gets BKUS value from Properties + * @param props + * @return The BKUS value + */ + public static BKUS readSelectedBKU(final Properties props) { + if (props.containsKey(BKU_SELECTION_CONFIG)) { + String value = props.getProperty(BKU_SELECTION_CONFIG); + value = value.trim().toLowerCase(); + + if (value.equals(BKUS.LOCAL.toString().trim().toLowerCase())) { + + return BKUS.LOCAL; + } else if (value + .equals(BKUS.MOBILE.toString().trim().toLowerCase())) { + return BKUS.MOBILE; + } + } + return BKUS.NONE; + } + + /** + * Gets BKUS value from Properties + * @param props + * @return The BKUS value + */ + public static SignaturePosition readDefinedPosition(final Properties props) { + // TODO + return null; + } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java index a18dc389..f1c291f8 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java @@ -16,35 +16,95 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.components.WaitingComposite; import at.asit.pdfover.gui.workflow.Workflow; import at.asit.pdfover.gui.workflow.WorkflowState; +import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUS; /** * User waiting state, wait for PDF Signator library to prepare document for signing. */ public class PrepareSigningState extends WorkflowState { + /** + * Debug background thread + */ + private final class DebugSleeperThread implements Runnable { + + private Workflow workflow; + + /** + * Default constructor + * @param work + */ + public DebugSleeperThread(Workflow 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(); + } + } + /** * SFL4J Logger instance **/ - @SuppressWarnings("unused") private static final Logger log = LoggerFactory.getLogger(PrepareSigningState.class); + private WaitingComposite selectionComposite = null; + + private WaitingComposite getSelectionComposite(Workflow workflow) { + if (this.selectionComposite == null) { + this.selectionComposite = new WaitingComposite( + workflow.getComposite(), SWT.RESIZE, workflow); + } + + return this.selectionComposite; + } + + private boolean run = false; + @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO SHOW BACKGROUND ACTIVITY .... + WaitingComposite waiting = this.getSelectionComposite(workflow); + + workflow.setTopControl(waiting); + + if(!this.run) { + Thread t = new Thread(new DebugSleeperThread(workflow)); + this.run = true; + t.start(); + return; + } + // WAIT FOR SLREQUEST and dispatch according to BKU selection + + if(workflow.getSelectedBKU() == BKUS.LOCAL) { + this.setNextState(new LocalBKUState()); + } else if(workflow.getSelectedBKU() == BKUS.MOBILE) { + this.setNextState(new MobileBKUState()); + } else { + log.error("Invalid selected BKU Value \"NONE\" in PrepareSigningState!"); + this.setNextState(new BKUSelectionState()); + } } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "PrepareSigningState"; } - + + } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java index 2305c1c6..8b9a5475 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java @@ -34,17 +34,13 @@ public class SigningState extends WorkflowState { @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Wait until output ready and set output + this.setNextState(new OutputState()); } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "SigningState"; } - } -- cgit v1.2.3