diff options
| author | tkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7> | 2013-04-10 18:56:29 +0000 | 
|---|---|---|
| committer | tkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7> | 2013-04-10 18:56:29 +0000 | 
| commit | 12fe32df6f5b17abb5d1f9bac9f5fb87b961f0c2 (patch) | |
| tree | 814ddcd71dee2298e62825a615e37da72cdc123a | |
| parent | 9cdc13fdb999f0e3482e22c1eb63ed0ee4d72c6f (diff) | |
| download | pdf-over-12fe32df6f5b17abb5d1f9bac9f5fb87b961f0c2.tar.gz pdf-over-12fe32df6f5b17abb5d1f9bac9f5fb87b961f0c2.tar.bz2 pdf-over-12fe32df6f5b17abb5d1f9bac9f5fb87b961f0c2.zip | |
Configuration Changes
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@49 174cde9d-5d70-4d2a-aa98-46368bc2aaf7
45 files changed, 2898 insertions, 148 deletions
| diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/DeveloperMain.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/DeveloperMain.java index a27113f9..1fdb550d 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/DeveloperMain.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/DeveloperMain.java @@ -18,6 +18,8 @@ package at.asit.pdfover.gui;  //Imports  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.cliarguments.ArgumentHandler;  import at.asit.pdfover.gui.workflow.StateMachineImpl;  /** @@ -41,12 +43,12 @@ public class DeveloperMain {  		// Set PDF-AS log4j configuration:  		//System.setProperty("log4j.configuration", "log4j.properties"); -		StateMachineImpl flow = new StateMachineImpl(args); -		log.debug("Starting workflow ..."); +		StateMachineImpl stateMachine = new StateMachineImpl(args); +		log.debug("Starting stateMachine ..."); -		flow.start(); +		stateMachine.start(); -		log.debug("Ended workflow ..."); +		log.debug("Ended stateMachine ...");  	}  } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java index 1e465467..b8cd9ea7 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java @@ -24,6 +24,7 @@ import org.eclipse.swt.custom.CLabel;  import org.eclipse.swt.custom.StackLayout;  import org.eclipse.swt.events.SelectionAdapter;  import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener;  import org.eclipse.swt.layout.FormAttachment;  import org.eclipse.swt.layout.FormData;  import org.eclipse.swt.layout.FormLayout; @@ -37,6 +38,7 @@ import org.slf4j.LoggerFactory;  import at.asit.pdfover.gui.composites.StateComposite;  import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.states.ConfigurationUIState;  import at.asit.pdfover.gui.workflow.states.OpenState;  import at.asit.pdfover.gui.workflow.states.PositioningState; @@ -46,6 +48,29 @@ import at.asit.pdfover.gui.workflow.states.PositioningState;  public class MainWindow {  	/** +	 *  +	 */ +	private final class ConfigSelectionListener implements SelectionListener { +		/** +		 *  +		 */ +		public ConfigSelectionListener() { +			// Nothing to do here +		} + +		@Override +		public void widgetSelected(SelectionEvent e) { +			MainWindow.this.stateMachine.jumpToState(new ConfigurationUIState( +					MainWindow.this.stateMachine)); +		} + +		@Override +		public void widgetDefaultSelected(SelectionEvent e) { +			// Nothing to do here +		} +	} + +	/**  	 * Selection Listener for Position Button  	 */  	private final class PositionSelectionListener extends SelectionAdapter { @@ -220,6 +245,7 @@ public class MainWindow {  		fd_config.bottom = new FormAttachment(100, 0);  		this.btn_config.setLayoutData(fd_config);  		this.btn_config.setText("Config ..."); +		this.btn_config.addSelectionListener(new ConfigSelectionListener());  		this.buttonMap.put(Buttons.CONFIG, this.btn_config);  		this.btn_open = new Button(composite, SWT.NONE); diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/ArgumentHandler.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/ArgumentHandler.java new file mode 100644 index 00000000..f43b636c --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/ArgumentHandler.java @@ -0,0 +1,115 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.cliarguments; + +// Imports +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.exceptions.InitializationException; +import at.asit.pdfover.gui.workflow.StateMachine; + +/** + *  + */ +public class ArgumentHandler { +	/** +	 * SLF4J Logger instance +	 **/ +	@SuppressWarnings("unused") +	private static final Logger log = LoggerFactory +			.getLogger(ArgumentHandler.class); + +	private Map<String, CLIArgument> cliArguments = new HashMap<String, CLIArgument>(); +	 +	private StateMachine stateMachine = null; +	 +	private boolean requiredExit = false; +	 +	/** +	 * Constructor +	 * @param stateMachine  +	 */ +	public ArgumentHandler(StateMachine stateMachine) { +		this.stateMachine = stateMachine; +	} +	 +	/** +	 * Gets available Arguments +	 * @return the list of available arguments +	 */ +	public Set<CLIArgument> getArguments() { +		return new HashSet<CLIArgument>(this.cliArguments.values()); +	} +	 +	/** +	 * Adds a CLIArgument to the handler +	 *  +	 * @param arg +	 */ +	public void addCLIArgument(CLIArgument arg) { +		if(arg == null) { +			return; +		} +		 +		String[] commandOptions = arg.getCommandOptions(); +		 +		if(commandOptions == null) { +			return; +		} +		 +		for(int i = 0; i < commandOptions.length; i++) +		{ +			this.cliArguments.put(commandOptions[i], arg); +		} +	} +	 +	/** +	 * Handle CLI Arguments +	 *  +	 * @param args +	 * @throws InitializationException  +	 */ +	public void handleArguments(String[] args) throws InitializationException { +		for(int i = 0; i < args.length; i++) { +			if(this.cliArguments.containsKey(args[i])) { +				this.cliArguments.get(args[i]).handleArgument(args, i, this.stateMachine, this); +			} +		} +	} +	 +	/** +	 * Set by an cli argument if it wants the program to exit +	 * @param requireExit +	 */ +	public void setRequireExit(boolean requireExit) { +		this.requiredExit = requireExit; +	} +	 +	/** +	 * Checks if one argument required the program to exit again +	 *  +	 * @return true or false +	 */ +	public boolean IsRequireExit() { +		return this.requiredExit; +	} +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/BKUArgument.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/BKUArgument.java new file mode 100644 index 00000000..e8d721ca --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/BKUArgument.java @@ -0,0 +1,67 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.cliarguments; + +import at.asit.pdfover.gui.exceptions.InitializationException; +import at.asit.pdfover.gui.workflow.ConfigManipulator; +import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.signator.BKUs; + +/** + *  + */ +public class BKUArgument extends CLIArgument { +	/** +	 * Constructor +	 */ +	public BKUArgument() { +		super( +				new String[] { "-b" }, "Select the BKU to use values are: LOCAL, MOBILE (example: -b <option>"); //$NON-NLS-1$ +	} + +	/* +	 * (non-Javadoc) +	 *  +	 * @see +	 * at.asit.pdfover.gui.cliarguments.CLIArgument#handleArgument(java.lang +	 * .String[], int, at.asit.pdfover.gui.workflow.StateMachine, +	 * at.asit.pdfover.gui.cliarguments.ArgumentHandler) +	 */ +	@Override +	public int handleArgument(String[] args, int argOffset, +			StateMachine stateMachine, ArgumentHandler handler) +			throws InitializationException { +		try { +			if (args.length > argOffset + 1) { + +				BKUs argumentValue = BKUs.valueOf(args[argOffset + 1]); + +				ConfigManipulator configManipulator = stateMachine.getConfigManipulator(); +				 +				configManipulator.setDefaultBKU(argumentValue); +				 +				return argOffset + 1; +			} +		} catch (Exception ex) { +			throw new InitializationException( +					"BKU Argument invalid! Use: " + this.getHelpText(), ex); //$NON-NLS-1$ +		} + +		throw new InitializationException( +				"BKU Argument invalid! Use: " + this.getHelpText(), null); //$NON-NLS-1$ +	} + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/CLIArgument.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/CLIArgument.java new file mode 100644 index 00000000..7f8d4366 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/CLIArgument.java @@ -0,0 +1,102 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.cliarguments; + +import at.asit.pdfover.gui.exceptions.InitializationException; +import at.asit.pdfover.gui.workflow.StateMachine; + +/** + *  + */ +public abstract class CLIArgument { +	 +	private String helpText = null; +	 +	private String[] commandOptions = null; +	 +	/** +	 * @param commandOptions +	 * @param helpText +	 */ +	protected CLIArgument(String[] commandOptions, String helpText) { +		this.helpText = helpText; +		this.commandOptions = commandOptions; +	} +	 +	/** +	 * Set help text +	 *  +	 * @param value +	 */ +	protected void setHelpText(String value) { +		this.helpText = value; +	} +	 +	/** +	 * Gets help text +	 *  +	 * @return help text +	 */ +	public String getHelpText() { +		return this.helpText; +	} +	 +	/** +	 * Set the command option in format: -... +	 *  +	 * Examples: -h +	 *  +	 * @param value +	 */ +	protected void setCommandOptions(String[] value) { +		this.commandOptions = value; +	} +	 +	/** +	 * Get the command option +	 *  +	 * Examples: -h +	 * @return the command option +	 */ +	public String[] getCommandOptions() { +		return this.commandOptions; +	} +	 +	/** +	 * Invokes the argument to set stuff within the stateMachine +	 *  +	 * It should return the offset within the args array where the last used argument of this CLIArgument was used. +	 *  +	 * Example: +	 * args[] = { "-h", "-b", "LOCAL" } +	 *  +	 * Help Argument call: +	 *     offset = 0 +	 *     returns 0 +	 *      +	 * BKU Argument call: +	 *     offset = 1 +	 *     returns 2 +	 *  +	 * @param stateMachine +	 * @param args +	 * @param argOffset +	 * @param handler  +	 * @return returns the argumentOffset ending the section of this Argument +	 * @throws InitializationException  +	 */ +	public abstract int handleArgument(String[] args, int argOffset, StateMachine stateMachine, ArgumentHandler handler) throws InitializationException; +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/ConfigFileArgument.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/ConfigFileArgument.java new file mode 100644 index 00000000..9ddeaf6c --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/ConfigFileArgument.java @@ -0,0 +1,72 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.cliarguments; + +// Imports +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.exceptions.InitializationException; +import at.asit.pdfover.gui.workflow.ConfigManipulator; +import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.states.mobilebku.ATrustHelper; + +/** + *  + */ +public class ConfigFileArgument extends CLIArgument { +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(ConfigFileArgument.class); + +	/** +	 * Constructor +	 */ +	public ConfigFileArgument() { +		super(new String[] {"-c"}, "Defines which configuration file to use. Example: -c <config file>"); //$NON-NLS-1$ +	} +	 +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.cliarguments.CLIArgument#handleArgument(java.lang.String[], int, at.asit.pdfover.gui.workflow.StateMachine, at.asit.pdfover.gui.cliarguments.ArgumentHandler) +	 */ +	@Override +	public int handleArgument(String[] args, int argOffset, +			StateMachine stateMachine, ArgumentHandler handler) +			throws InitializationException { +		try { +			if (args.length > argOffset + 1) { + +				String configFile = args[argOffset + 1]; +				 +				ConfigManipulator configManipulator = stateMachine.getConfigManipulator(); +				 +				configManipulator.setConfigurationFile(configFile); +				 +				return argOffset + 1; +			} +		} catch (Exception ex) { +			log.error("Configuration File Argument invalid!", ex); //$NON-NLS-1$ +			throw new InitializationException( +					"Configuration File Argument invalid! Use: " + this.getHelpText(), ex); //$NON-NLS-1$ +		} + +		throw new InitializationException( +				"Configuration File invalid! Use: " + this.getHelpText(), null); //$NON-NLS-1$ +	} + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/HelpArgument.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/HelpArgument.java new file mode 100644 index 00000000..8087807c --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/HelpArgument.java @@ -0,0 +1,71 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.cliarguments; + +// Imports +import java.util.Iterator; +import java.util.Set; + +import at.asit.pdfover.gui.exceptions.InitializationException; +import at.asit.pdfover.gui.workflow.StateMachine; + +/** + *  + */ +public class HelpArgument extends CLIArgument { +	 +	/** +	 * Constructor +	 */ +	public HelpArgument() { +		super(new String[] {"-h", "-?" }, "shows this help message"); //$NON-NLS-1$ //$NON-NLS-2$ +	} +	 +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.cliarguments.CLIArgument#handleArgument(java.lang.String[], int, at.asit.pdfover.gui.workflow.StateMachine, at.asit.pdfover.gui.cliarguments.ArgumentHandler) +	 */ +	@Override +	public int handleArgument(String[] args, int argOffset, +			StateMachine stateMachine, ArgumentHandler handler) +			throws InitializationException { +		Set<CLIArgument> arguments = handler.getArguments(); +		 +		Iterator<CLIArgument> argumentIterator = arguments.iterator(); +		 +		System.out.println("The following options are available"); //$NON-NLS-1$ +		 +		while(argumentIterator.hasNext()) { +			CLIArgument agrument = argumentIterator.next(); +			StringBuilder sb = new StringBuilder(); +			 +			for(int i = 0; i < agrument.getCommandOptions().length; i++) { +				sb.append(agrument.getCommandOptions()[i]); +				 +				if(i < agrument.getCommandOptions().length -1) { +					sb.append(", "); //$NON-NLS-1$ +				} +			} +			 +			System.out.println(sb.toString() + ":"); //$NON-NLS-1$ +			System.out.println("\t" + agrument.getHelpText()); //$NON-NLS-1$ +		} +		 +		handler.setRequireExit(true); +		 +		return argOffset; +	} + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/PhoneNumberArgument.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/PhoneNumberArgument.java new file mode 100644 index 00000000..255b4f91 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/cliarguments/PhoneNumberArgument.java @@ -0,0 +1,77 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.cliarguments; + +// Imports +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.exceptions.InitializationException; +import at.asit.pdfover.gui.workflow.ConfigManipulator; +import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.states.mobilebku.ATrustHelper; + +/** + *  + */ +public class PhoneNumberArgument extends CLIArgument { +	/** +	 * Constructor +	 */ +	public PhoneNumberArgument() { +		super(new String[] {"-n" }, "Sets the telephone number to use for mobile bku. Example: -n <number>"); //$NON-NLS-1$ +	} + + +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(PhoneNumberArgument.class); + +	 +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.cliarguments.CLIArgument#handleArgument(java.lang.String[], int, at.asit.pdfover.gui.workflow.StateMachine, at.asit.pdfover.gui.cliarguments.ArgumentHandler) +	 */ +	@Override +	public int handleArgument(String[] args, int argOffset, +			StateMachine stateMachine, ArgumentHandler handler) +			throws InitializationException { + +		try { +			if (args.length > argOffset + 1) { + +				String number = args[argOffset + 1]; + +				number = ATrustHelper.normalizeMobileNumber(number); +				 +				ConfigManipulator configManipulator = stateMachine.getConfigManipulator(); +				 +				configManipulator.setDefaultMobileNumber(number); +				 +				return argOffset + 1; +			} +		} catch (Exception ex) { +			log.error("Phone Number Argument invalid!", ex); //$NON-NLS-1$ +			throw new InitializationException( +					"Phone Number Argument invalid! Use: " + this.getHelpText(), ex); //$NON-NLS-1$ +		} + +		throw new InitializationException( +				"Phone Number invalid! Use: " + this.getHelpText(), null); //$NON-NLS-1$ +	} + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java new file mode 100644 index 00000000..5b826097 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java @@ -0,0 +1,60 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.composites; + +// Imports +import org.eclipse.swt.widgets.Composite; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.workflow.states.State; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.SWT; + +/** + *  + */ +public class AdvancedConfigurationComposite extends BaseConfigurationComposite { +	/** +	 * @param parent +	 * @param style +	 * @param state +	 */ +	public AdvancedConfigurationComposite(Composite parent, int style, +			State state, ConfigurationContainer container) { +		super(parent, style, state, container); +		 +		Label lblAdvancedConfigLayout = new Label(this, SWT.NONE); +		lblAdvancedConfigLayout.setBounds(113, 126, 243, 15); +		lblAdvancedConfigLayout.setText("Advanced Config Layout!"); +		// TODO Auto-generated constructor stub +	} + +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(AdvancedConfigurationComposite.class); + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.StateComposite#doLayout() +	 */ +	@Override +	public void doLayout() { +		// TODO Auto-generated method stub +		 +	} +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BaseConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BaseConfigurationComposite.java new file mode 100644 index 00000000..831a4aa6 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BaseConfigurationComposite.java @@ -0,0 +1,42 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.composites; + + +import org.eclipse.swt.widgets.Composite; +import at.asit.pdfover.gui.workflow.states.State; + +/** + *  + */ +public abstract class BaseConfigurationComposite extends StateComposite { +	 +	/** +	 * the configuration container +	 */ +	protected ConfigurationContainer configurationContainer; +	 +	/** +	 * @param parent +	 * @param style +	 * @param state +	 * @param configuration  +	 */ +	public BaseConfigurationComposite(Composite parent, int style, State state, ConfigurationContainer configuration) { +		super(parent, style, state); +		this.configurationContainer = configuration; +	} +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java new file mode 100644 index 00000000..db58ae4a --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java @@ -0,0 +1,218 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.composites; + +// Imports +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.workflow.ConfigManipulator; +import at.asit.pdfover.gui.workflow.states.State; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.custom.StackLayout; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormAttachment; + +/** + *  + */ +public class ConfigurationComposite extends StateComposite { +	 +	/** +	 *  +	 */ +	private final class ConfigurationModeSelectionListener implements +			SelectionListener { +		/** +		 *  +		 */ +		public ConfigurationModeSelectionListener() { +			// Nothing to do +		} + +		@Override +		public void widgetSelected(SelectionEvent e) { +			if (ConfigurationComposite.this.configComposite instanceof SimpleConfigurationComposite) { +				// switch to advanced +				ConfigurationComposite.this.configComposite.dispose(); +				ConfigurationComposite.this.configComposite = new AdvancedConfigurationComposite( +						ConfigurationComposite.this.containerComposite,  +						ConfigurationComposite.this.style, +						ConfigurationComposite.this.state, +						ConfigurationComposite.this.configurationContainer); +				ConfigurationComposite.this.btnAdvanced.setText("Simple"); +			} else { +				// switch to simple +				ConfigurationComposite.this.configComposite.dispose(); +				ConfigurationComposite.this.configComposite = new SimpleConfigurationComposite( +						ConfigurationComposite.this.containerComposite,  +						ConfigurationComposite.this.style, +						ConfigurationComposite.this.state, +						ConfigurationComposite.this.configurationContainer); +				ConfigurationComposite.this.btnAdvanced.setText("Advanced"); +			} +			 +			ConfigurationComposite.this.compositeStack.topControl = ConfigurationComposite.this.configComposite; +			ConfigurationComposite.this.doLayout(); +		} + +		@Override +		public void widgetDefaultSelected(SelectionEvent e) { +			// Nothing to do +		} +	} + +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(ConfigurationComposite.class); + +	ConfigManipulator configManipulator = null; + +	BaseConfigurationComposite configComposite; + +	ConfigurationContainer configurationContainer = new ConfigurationContainerImpl(); +	 +	StackLayout compositeStack = new StackLayout(); + +	int style; + +	Composite containerComposite; + +	boolean userDone = false; + +	Button btnAdvanced; + +	/** +	 * Sets the configuration manipulator +	 *  +	 * @param manipulator +	 */ +	public void setConfigManipulator(ConfigManipulator manipulator) { +		this.configManipulator = manipulator; +	} + +	/** +	 * Create the composite. +	 *  +	 * @param parent +	 * @param style +	 * @param state +	 */ +	public ConfigurationComposite(Composite parent, int style, State state) { +		super(parent, SWT.FILL | style, state); +		this.style = SWT.FILL | style; + +		this.setLayout(new FormLayout()); + +		this.containerComposite = new Composite(this, SWT.FILL | SWT.RESIZE); + +		this.configComposite = new SimpleConfigurationComposite( +				this.containerComposite, SWT.FILL | style, state, this.configurationContainer); + +		FormData fd_composite = new FormData(); +		fd_composite.top = new FormAttachment(0, 5); +		fd_composite.bottom = new FormAttachment(90, -5); +		fd_composite.left = new FormAttachment(0, 5); +		fd_composite.right = new FormAttachment(100, -5); +		this.containerComposite.setLayoutData(fd_composite); +		this.containerComposite.setLayout(this.compositeStack); +		this.compositeStack.topControl = this.configComposite; + +		this.doLayout(); + +		Button btnSpeichern = new Button(this, SWT.NONE); +		FormData fd_btnSpeichern = new FormData(); +		fd_btnSpeichern.left = new FormAttachment(0, 5); +		fd_btnSpeichern.bottom = new FormAttachment(100, -5); +		btnSpeichern.setLayoutData(fd_btnSpeichern); +		btnSpeichern.addSelectionListener(new SelectionAdapter() { +			@Override +			public void widgetSelected(SelectionEvent e) { +			} +		}); +		btnSpeichern.setText("Speichern"); + +		Button btnAbbrechen = new Button(this, SWT.NONE); +		FormData fd_btnAbrechen = new FormData(); +		fd_btnAbrechen.left = new FormAttachment(btnSpeichern, 10); +		fd_btnAbrechen.bottom = new FormAttachment(100, -5); +		btnAbbrechen.setLayoutData(fd_btnAbrechen); +		btnAbbrechen.setText("Abbrechen"); +		btnAbbrechen.addSelectionListener(new SelectionAdapter() { +			@Override +			public void widgetSelected(SelectionEvent e) { +				ConfigurationComposite.this.userDone = true; +				ConfigurationComposite.this.state.updateStateMachine(); +			} +		}); + +		this.btnAdvanced = new Button(this, SWT.NONE); +		FormData fd_btnAdvanced = new FormData(); +		fd_btnAdvanced.right = new FormAttachment(100, -5); +		fd_btnAdvanced.bottom = new FormAttachment(100, -5); +		this.btnAdvanced.setLayoutData(fd_btnAdvanced); +		this.btnAdvanced.setText("Advanced"); +		this.btnAdvanced +				.addSelectionListener(new ConfigurationModeSelectionListener()); + +	} + +	private void storeConfiguration() { +		// TODO: Collect info from UI and set in ConfigManipulator + +		// TODO: call save configuration in ConfigManipulator +	} + +	/** +	 * Checks if the user has finished working with the configuration composite +	 *  +	 * @return +	 */ +	public boolean isUserDone() { +		return this.userDone; +	} + +	@Override +	protected void checkSubclass() { +		// Disable the check that prevents subclassing of SWT components +	} + +	/* +	 * (non-Javadoc) +	 *  +	 * @see at.asit.pdfover.gui.composites.StateComposite#doLayout() +	 */ +	@Override +	public void doLayout() { +		Control ctrl = this.compositeStack.topControl; +		this.containerComposite.layout(true, true); +		this.getShell().layout(true, true); +		// Note: SWT only layouts children! No grandchildren! +		if (ctrl instanceof StateComposite) { +			((StateComposite) ctrl).doLayout(); +		} +	} +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainer.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainer.java new file mode 100644 index 00000000..dbc32206 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainer.java @@ -0,0 +1,114 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.composites; + +import at.asit.pdfover.gui.exceptions.InvalidEmblemFile; +import at.asit.pdfover.gui.exceptions.InvalidNumberException; +import at.asit.pdfover.gui.exceptions.InvalidPortException; +import at.asit.pdfover.signator.BKUs; + +/** + *  + */ +public interface ConfigurationContainer { +	 +	/** +	 * Gets the configured emblem +	 * @return the configured emblem +	 */ +	public String getEmblem(); +	 +	/** +	 * Sets the emblem +	 * @param emblem the emblem +	 * @throws InvalidEmblemFile +	 */ +	public void setEmblem(String emblem) throws InvalidEmblemFile; +	 +	/** +	 * Gets the mobile phone number +	 * @return the mobile phone number +	 */ +	public String getNumber(); +	 +	/** +	 * Sets the mobile phone number  +	 * @param number the mobile phone number +	 * @throws InvalidNumberException +	 */ +	public void setNumber(String number) throws InvalidNumberException; +	 +	/** +	 * Gets the proxy host +	 * @return the proxy host +	 */ +	public String getProxyHost(); +	 +	/** +	 * Sets the proxy host +	 * @param host the proxy host +	 */ +	public void setProxyHost(String host); +	 +	/** +	 * Gets the proxy port +	 * @return the proxy port +	 */ +	public int getProxyPort(); +	 +	/** +	 * Sets the proxy port +	 * @param port the proxy port +	 * @throws InvalidPortException +	 */ +	public void setProxyPort(int port) throws InvalidPortException; +	 +	/** +	 * Gets the automatic position +	 * @return the automatic position +	 */ +	public boolean getAutomaticPosition(); +	 +	/** +	 * Sets the automatic position +	 * @param automatic the automatic position +	 */ +	public void setAutomaticPosition(boolean automatic); +	 +	/** +	 * Gets the default BKU +	 * @return the default BKU +	 */ +	public BKUs getBKUSelection(); +	 +	/** +	 * Sets the default BKU  +	 * @param bkuSelection the default BKU +	 */ +	public void setBKUSelection(BKUs bkuSelection); +	 +	/** +	 * Gets the default output folder +	 * @return the default output folder +	 */ +	public String getOutputFolder(); +	 +	/** +	 * Sets the default output folder +	 * @param folder the default output folder +	 */ +	public void setOutputFolder(String folder); +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainerImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainerImpl.java new file mode 100644 index 00000000..f8489d71 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainerImpl.java @@ -0,0 +1,227 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.composites; + +// Imports +import java.io.File; +import java.io.FileNotFoundException; + +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.widgets.Display; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.exceptions.InvalidEmblemFile; +import at.asit.pdfover.gui.exceptions.InvalidNumberException; +import at.asit.pdfover.gui.exceptions.InvalidPortException; +import at.asit.pdfover.gui.workflow.states.mobilebku.ATrustHelper; +import at.asit.pdfover.signator.BKUs; + +/** + *  + */ +public class ConfigurationContainerImpl implements ConfigurationContainer { +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(ConfigurationContainerImpl.class); + + +	/** +	 * the emblem File +	 */ +	protected String emblemFile = null; + +	/** +	 * The mobile phone number  +	 */ +	protected String mobileNumber = null; +	 +	/** +	 * Holds the proxy Host  +	 */ +	protected String proxyHost = null; +	 +	/** +	 * Holds the proxy port number +	 */ +	protected int proxyPort = -1; +	 +	/** +	 * Holds the output folder +	 */ +	protected String folder = null; +	 +	/** +	 * Holds the default BKU to use +	 */ +	protected BKUs defaulBKU = BKUs.NONE; +	 +	/** +	 * Holds the automatic positioning value +	 */ +	protected boolean automaticPositioning = false; + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#getEmblem() +	 */ +	@Override +	public String getEmblem() { +		return this.emblemFile; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#setEmblem(java.lang.String) +	 */ +	@Override +	public void setEmblem(String emblemFile) throws InvalidEmblemFile { +		if (this.emblemFile == null || this.emblemFile.trim().equals("")) { //$NON-NLS-1$ +			// Ok to set no file ... +		} else { +			File imageFile = new File(emblemFile); +			if (!imageFile.exists()) { +				throw new InvalidEmblemFile(imageFile, +						new FileNotFoundException(emblemFile)); +			} + +			try { +				Image img = new Image(Display.getDefault(), new ImageData( +						emblemFile)); + +				img.dispose(); +			} catch (Exception ex) { +				throw new InvalidEmblemFile(imageFile, ex); +			} +		} + +		this.emblemFile = emblemFile; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#getNumber() +	 */ +	@Override +	public String getNumber() { +		return this.mobileNumber; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#setNumber(java.lang.String) +	 */ +	@Override +	public void setNumber(String number) throws InvalidNumberException { +		this.mobileNumber = ATrustHelper.normalizeMobileNumber(number); +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#getProxyHost() +	 */ +	@Override +	public String getProxyHost() { +		return this.proxyHost; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#setProxyHost(java.lang.String) +	 */ +	@Override +	public void setProxyHost(String host) { +		this.proxyHost = host; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#getProxyPort() +	 */ +	@Override +	public int getProxyPort() { +		return this.proxyPort; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#setProxyPort(int) +	 */ +	@Override +	public void setProxyPort(int port) throws InvalidPortException { +		if(port > 0 && port < 0xFFFF) { +			this.proxyPort = port; +		} +		throw new InvalidPortException(port); +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#getAutomaticPosition() +	 */ +	@Override +	public boolean getAutomaticPosition() { +		return this.automaticPositioning; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#setAutomaticPosition(boolean) +	 */ +	@Override +	public void setAutomaticPosition(boolean automatic) { +		this.automaticPositioning = automatic; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#getBKUSelection() +	 */ +	@Override +	public BKUs getBKUSelection() { +		return this.defaulBKU; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#setBKUSelection(at.asit.pdfover.signator.BKUs) +	 */ +	@Override +	public void setBKUSelection(BKUs bkuSelection) { +		this.defaulBKU = bkuSelection; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#getOutputFolder() +	 */ +	@Override +	public String getOutputFolder() { +		return this.folder; +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.ConfigurationContainer#setOutputFolder(java.lang.String) +	 */ +	@Override +	public void setOutputFolder(String folder) { +		this.folder = folder; +	} +	 +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java index c1a72fb2..bd630f8e 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java @@ -32,7 +32,17 @@ import org.eclipse.swt.widgets.Text;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import at.asit.pdfover.gui.exceptions.InvalidNumberException; +import at.asit.pdfover.gui.exceptions.InvalidPasswordException;  import at.asit.pdfover.gui.workflow.states.State; +import at.asit.pdfover.gui.workflow.states.mobilebku.ATrustHelper; + +import org.eclipse.swt.custom.StackLayout; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout;  /**   *  @@ -47,18 +57,8 @@ public class MobileBKUEnterNumberComposite extends StateComposite {  	/**  	 *   	 */ -	private final class OkSelectionListener extends SelectionAdapter { -		/** -		 * Regular expression for mobile phone numbers: -		 * this allows the entrance of mobile numbers in the following formats: -		 *  -		 * +(countryCode)99999999999 -		 * 00(countryCode)99999999999 -		 * 099999999999 -		 * 1030199999999999 (A-Trust Test bku) -		 */ -		private static final String NUMBER_REGEX = "^((\\+[\\d]{2})|(00[\\d]{2})|(0)|(10301))([1-9][\\d]+)$"; //$NON-NLS-1$ - +	private final class OkSelectionListener implements SelectionListener { +		  		/**  		 * Empty constructor  		 */ @@ -71,40 +71,9 @@ public class MobileBKUEnterNumberComposite extends StateComposite {  				String number = MobileBKUEnterNumberComposite.this.txt_number  						.getText(); -				// Verify number and normalize - -				// Compile and use regular expression -				Pattern pattern = Pattern.compile(NUMBER_REGEX); -				Matcher matcher = pattern.matcher(number); - -				if (!matcher.find()) { -					MobileBKUEnterNumberComposite.this -							.setErrorMessage("Given phone number is invalid! Example: +43664123456789"); -					return; -				} - -				if (matcher.groupCount() != 6) { -					MobileBKUEnterNumberComposite.this -							.setErrorMessage("Given phone number is invalid! Example: +43664123456789"); -					return; -				} - -				String countryCode = matcher.group(1); - -				String normalNumber = matcher.group(6); - -				if (countryCode.equals("10301")) { //$NON-NLS-1$ -					// A-Trust Testnumber! -				} else { - -					countryCode = countryCode.replace("00", "+"); //$NON-NLS-1$ //$NON-NLS-2$ - -					if (countryCode.equals("0")) { //$NON-NLS-1$ -						countryCode = "+43"; //$NON-NLS-1$ -					} - -					number = countryCode + normalNumber; -				} +				 +				number = ATrustHelper.normalizeMobileNumber(number); +				  				MobileBKUEnterNumberComposite.this.setMobileNumber(number);  				MobileBKUEnterNumberComposite.this.mobileNumber = number; @@ -112,30 +81,37 @@ public class MobileBKUEnterNumberComposite extends StateComposite {  				String password = MobileBKUEnterNumberComposite.this.txt_password  						.getText(); -				// TODO: Logic to verify password - -				if (password.length() < 6 || password.length() > 20) { -					if (password.length() < 6) { -						MobileBKUEnterNumberComposite.this -								.setErrorMessage("Given password is too short!"); -					} else { -						MobileBKUEnterNumberComposite.this -								.setErrorMessage("Given password is too long!"); -					} -					return; -				} +				ATrustHelper.validatePassword(password);  				MobileBKUEnterNumberComposite.this.mobilePassword = password;  				MobileBKUEnterNumberComposite.this.setUserAck(true); -			} catch (Exception ex) { +			} catch(InvalidNumberException ex) { +				log.error("Validating input for Mobile BKU failed!", ex); //$NON-NLS-1$ +				MobileBKUEnterNumberComposite.this +				.setErrorMessage("Given phone number is invalid! Example: +43664123456789"); +			} catch(InvalidPasswordException ex) { +				log.error("Validating input for Mobile BKU failed!", ex); //$NON-NLS-1$ +				MobileBKUEnterNumberComposite.this +				.setErrorMessage(ex.getMessage()); +			} +			catch (Exception ex) {  				log.error("Validating input for Mobile BKU failed!", ex); //$NON-NLS-1$ -				// TODO: NOT VALID  				MobileBKUEnterNumberComposite.this  						.setErrorMessage("Given phone number is invalid! Example: +43664123456789");  				return;  			} +			  			MobileBKUEnterNumberComposite.this.state.updateStateMachine();  		} + +		/* (non-Javadoc) +		 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent) +		 */ +		@Override +		public void widgetDefaultSelected(SelectionEvent e) { +			// TODO Auto-generated method stub +			 +		}  	}  	String mobileNumber; diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java new file mode 100644 index 00000000..b8f31dec --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java @@ -0,0 +1,349 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.composites; + +// Imports +import java.io.File; +import java.io.FileNotFoundException; + +import org.apache.fontbox.afm.Composite; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.events.FocusListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.TraverseEvent; +import org.eclipse.swt.events.TraverseListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.workflow.states.State; + +/** + *  + */ +public class SimpleConfigurationComposite extends BaseConfigurationComposite { +	 +	private Label lblEmblem; +	private Text text; +	private Text text_1; +	private Text txtMobileNumber; +	Text txtEmblemFile; +	private Image origEmblem = null; +	 +	 + +	void recalculateEmblemSize() { +		if (this.origEmblem != null) { + +			int width = this.origEmblem.getBounds().width; +			int height = this.origEmblem.getBounds().height; + +			int scaledWidth = this.lblEmblem.getSize().x; +			int scaledHeight = this.lblEmblem.getSize().y; + +			float scaleFactorWidth = (float) scaledWidth / (float) width; +			float scaleFactorHeight = (float) scaledHeight / (float) height; + +			float betterFactor = 1; + +			int testHeight = (int) (height * scaleFactorWidth); +			int testWidth = (int) (width * scaleFactorHeight); + +			// check for better scale factor ... + +			if (testHeight > scaledHeight) { +				// width scaling fails!! use Height scaling +				betterFactor = scaleFactorHeight; +			} else if (testWidth > scaledWidth) { +				// height scaling fails!! use Width scaling +				betterFactor = scaleFactorWidth; +			} else { +				// Both are ok test* < scaled* + +				int heightDiff = scaledHeight - testHeight; + +				int widthDiff = scaledWidth - testWidth; + +				if (widthDiff < heightDiff) { +					// width diff better use scaleFactorHeight +					betterFactor = scaleFactorHeight; +				} else { +					// height diff better or equal so use scaleFactorWidth +					betterFactor = scaleFactorWidth; +				} +			} + +			log.debug("Scaling factor: " + betterFactor); //$NON-NLS-1$ + +			Image emblem = new Image(this.getDisplay(), this.origEmblem +					.getImageData().scaledTo((int) (width * betterFactor), +							(int) (height * betterFactor))); + +			Image old = this.lblEmblem.getImage(); +			 +			if(old != null) { +				old.dispose(); +			} +			 +			this.lblEmblem.setText(""); //$NON-NLS-1$ +			this.lblEmblem.setImage(emblem); +		} +	} + +	private void setEmblemFileInternal(final String filename) throws Exception { +		if (this.configurationContainer.getEmblem() != null) { +			if (this.configurationContainer.getEmblem().equals(filename)) { +				return; // Ignore ... +			} +		} + +		try { +			this.configurationContainer.setEmblem(filename); +			 +			this.txtEmblemFile.setText(this.configurationContainer.getEmblem()); + +			if(this.origEmblem != null) { +				this.origEmblem.dispose(); +			} +			 +			this.origEmblem = new Image(this.getDisplay(), new ImageData( +					filename));			 + +			this.lblEmblem.setText(""); //$NON-NLS-1$ +			 +			this.recalculateEmblemSize(); +		} catch (Exception e) { +			this.lblEmblem.setText("No Image"); +			this.lblEmblem.setImage(null); +			if(this.origEmblem != null) { +				this.origEmblem.dispose(); +			} +			this.origEmblem = null; +			throw e; +		} + +		this.lblEmblem.pack(); +		this.lblEmblem.getParent().pack(); +		this.doLayout(); +	} + +	void processEmblemChanged() { +		try { +			String filename = this.txtEmblemFile.getText(); +			this.setEmblemFileInternal(filename); +		} catch (Exception ex) { +			// TODO: Show error message! +			log.error("processEmblemChanged: ", ex); //$NON-NLS-1$ +		} +	} +	 +	ConfigurationComposite configurationComposite; +	 +	/** +	 * @return the configurationComposite +	 */ +	public ConfigurationComposite getConfigurationComposite() { +		return this.configurationComposite; +	} + +	/** +	 * @param configurationComposite the configurationComposite to set +	 */ +	public void setConfigurationComposite( +			ConfigurationComposite configurationComposite) { +		this.configurationComposite = configurationComposite; +	} + +	/** +	 * @param parent +	 * @param style +	 * @param state +	 * @param container  +	 */ +	public SimpleConfigurationComposite( +			org.eclipse.swt.widgets.Composite parent, int style, State state, ConfigurationContainer container) { +		super(parent, style, state, container); +		setLayout(new FormLayout()); + +		Group grpHandySignatur = new Group(this, SWT.NONE | SWT.RESIZE); +		FormData fd_grpHandySignatur = new FormData(); +		fd_grpHandySignatur.right = new FormAttachment(100, -5); +		fd_grpHandySignatur.left = new FormAttachment(0, 5); +		fd_grpHandySignatur.top = new FormAttachment(0, 5); +		fd_grpHandySignatur.bottom = new FormAttachment(20, -5); +		grpHandySignatur.setLayoutData(fd_grpHandySignatur); +		grpHandySignatur.setText("Handy Signatur"); +		grpHandySignatur.setLayout(new GridLayout(2, false)); + +		Label lblMobileNumber = new Label(grpHandySignatur, SWT.NONE +				| SWT.RESIZE); +		lblMobileNumber.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, +				false, 1, 1)); +		lblMobileNumber.setText("Handy Nummer:"); + +		this.txtMobileNumber = new Text(grpHandySignatur, SWT.BORDER +				| SWT.RESIZE); +		this.txtMobileNumber.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, +				true, false, 1, 1)); + +		Group grpBildmarke = new Group(this, SWT.NONE); +		FormData fd_grpBildmarke = new FormData(); +		fd_grpBildmarke.left = new FormAttachment(0, 5); +		fd_grpBildmarke.right = new FormAttachment(100, -5); +		fd_grpBildmarke.bottom = new FormAttachment(65, -5); +		fd_grpBildmarke.top = new FormAttachment(20, 5); +		grpBildmarke.setLayoutData(fd_grpBildmarke); +		grpBildmarke.setLayout(new GridLayout(3, false)); +		grpBildmarke.setText("Bildmarke"); + +		this.lblEmblem = new Label(grpBildmarke, SWT.BORDER | SWT.RESIZE); +		this.lblEmblem.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, +				true, 1, 4)); +		this.lblEmblem.setAlignment(SWT.CENTER); +		this.lblEmblem.setText("No Image"); +		this.lblEmblem.addListener(SWT.Resize, new Listener() { +			 +			@Override +			public void handleEvent(Event event) { +				SimpleConfigurationComposite.this.recalculateEmblemSize(); +			} +		}); + +		Label lblDateiname = new Label(grpBildmarke, SWT.NONE); +		lblDateiname.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, +				false, 1, 1)); +		lblDateiname.setText("Dateiname:"); +		new Label(grpBildmarke, SWT.NONE); + +		this.txtEmblemFile = new Text(grpBildmarke, SWT.BORDER); +		GridData gd_txtEmblemFile = new GridData(SWT.FILL, SWT.FILL, false, +				false, 2, 1); +		gd_txtEmblemFile.widthHint = 123; +		this.txtEmblemFile.setLayoutData(gd_txtEmblemFile); +		this.txtEmblemFile.addFocusListener(new FocusListener() { + +			@Override +			public void focusLost(FocusEvent e) { +				processEmblemChanged(); +			} + +			@Override +			public void focusGained(FocusEvent e) { +				// Nothing to do here! +			} +		}); +		this.txtEmblemFile.addTraverseListener(new TraverseListener() { + +			@Override +			public void keyTraversed(TraverseEvent e) { +				if (e.detail == SWT.TRAVERSE_RETURN) { +					processEmblemChanged(); +				} +			} +		}); +		new Label(grpBildmarke, SWT.NONE); + +		Button btnBrowseEmblem = new Button(grpBildmarke, SWT.NONE); +		btnBrowseEmblem.addSelectionListener(new SelectionAdapter() { +			@Override +			public void widgetSelected(SelectionEvent e) { +				FileDialog dialog = new FileDialog(SimpleConfigurationComposite.this +						.getShell(), SWT.OPEN); +				dialog.setFilterExtensions(new String[] { "*.jpg", "*.gif" }); //$NON-NLS-1$ //$NON-NLS-2$ +				dialog.setFilterNames(new String[] { "JPG Dateien", +						"Gif Dateien" }); +				String fileName = dialog.open(); +				File file = null; +				if (fileName != null) { +					file = new File(fileName); +					if (file.exists()) { +						SimpleConfigurationComposite.this.txtEmblemFile +								.setText(fileName); +						processEmblemChanged(); +					} +				} +			} +		}); +		btnBrowseEmblem.setText("Browse"); + +		Label label = new Label(grpBildmarke, SWT.NONE); +		GridData gd_label = new GridData(SWT.FILL, SWT.FILL, false, true, 2, 1); +		gd_label.widthHint = 189; +		label.setLayoutData(gd_label); + +		Group grpProxy = new Group(this, SWT.NONE); +		FormData fd_grpProxy = new FormData(); +		fd_grpProxy.right = new FormAttachment(100, -5); +		fd_grpProxy.top = new FormAttachment(65, 5); +		fd_grpProxy.left = new FormAttachment(0, 5); +		fd_grpProxy.bottom = new FormAttachment(90, -5); +		grpProxy.setLayoutData(fd_grpProxy); +		grpProxy.setText("Proxy"); +		grpProxy.setLayout(new GridLayout(2, false)); + +		Label lblNewLabel = new Label(grpProxy, SWT.NONE); +		GridData gd_lblNewLabel = new GridData(SWT.LEFT, SWT.CENTER, false, +				false, 1, 1); +		gd_lblNewLabel.widthHint = 66; +		lblNewLabel.setLayoutData(gd_lblNewLabel); +		lblNewLabel.setBounds(0, 0, 57, 15); +		lblNewLabel.setText("Host:"); + +		this.text = new Text(grpProxy, SWT.BORDER); +		this.text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, +				1, 1)); + +		Label lblNewLabel_1 = new Label(grpProxy, SWT.NONE); +		lblNewLabel_1.setBounds(0, 0, 57, 15); +		lblNewLabel_1.setText("Port:"); + +		this.text_1 = new Text(grpProxy, SWT.BORDER); +		this.text_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, +				1, 1)); + +	} + +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(SimpleConfigurationComposite.class); + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.composites.StateComposite#doLayout() +	 */ +	@Override +	public void doLayout() { +		// TODO Auto-generated method stub +		 +	} + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InitializationException.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InitializationException.java new file mode 100644 index 00000000..d54b5d0b --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InitializationException.java @@ -0,0 +1,35 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.exceptions; + +/** + *  + */ +public class InitializationException extends Exception { +	/** +	 *  +	 */ +	private static final long serialVersionUID = 433744698649684034L; +	 +	/** +	 * @param msg +	 * @param cause +	 */ +	public InitializationException(String msg, Throwable cause) { +		super(msg, cause); +	} +	 +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidEmblemFile.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidEmblemFile.java new file mode 100644 index 00000000..9ba8f66a --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidEmblemFile.java @@ -0,0 +1,53 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.exceptions; + +// Imports +import java.io.File; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + *  + */ +public class InvalidEmblemFile extends Exception { +	/** +	 *  +	 */ +	private static final long serialVersionUID = -5826910929131650685L; +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(InvalidEmblemFile.class); + +	/** +	 * Constructor +	 * @param file +	 */ +	public InvalidEmblemFile(final File file) { +		super("File: " + file.getAbsolutePath() + " is an invalid emblem file!"); +	} +	 +	/** +	 * Constructor +	 * @param file +	 */ +	public InvalidEmblemFile(final File file, Throwable reason) { +		super("File: " + file.getAbsolutePath() + " is an invalid emblem file!", reason); +	} +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidNumberException.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidNumberException.java new file mode 100644 index 00000000..467ff327 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidNumberException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.exceptions; + +// Imports + +/** + *  + */ +public class InvalidNumberException extends Exception { +	/** +	 *  +	 */ +	private static final long serialVersionUID = -4201886410518715443L; + +	/** +	 *  +	 */ +	public InvalidNumberException() { +		 +	} +	 +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidPasswordException.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidPasswordException.java new file mode 100644 index 00000000..06bf279f --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidPasswordException.java @@ -0,0 +1,35 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.exceptions; + +/** + * Base Class for Invalid password exceptions + */ +public abstract class InvalidPasswordException extends Exception { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 6735754648793405145L; + +	/** +	 * Invalid Password  +	 * @param msg  +	 */ +	public InvalidPasswordException(String msg) { +		super(msg); +	} +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidPortException.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidPortException.java new file mode 100644 index 00000000..923a04a5 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/InvalidPortException.java @@ -0,0 +1,35 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.exceptions; + +/** + *  + */ +public class InvalidPortException extends Exception { +	/** +	 *  +	 */ +	private static final long serialVersionUID = -4809078091773253962L; +	 +		 +	/** +	 * Constructor +	 * @param port +	 */ +	public InvalidPortException(int port) { +		super("Port " + port + " is invalid has to be between 1 and " + 0xffff); +	} +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/PasswordTooLongException.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/PasswordTooLongException.java new file mode 100644 index 00000000..ac578664 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/PasswordTooLongException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.exceptions; + +// Imports + +/** + *  + */ +public class PasswordTooLongException extends InvalidPasswordException { +	 +	/** +	 * Constructor +	 */ +	public PasswordTooLongException() { +		super("Given password is too long!"); +	} +	/** +	 *  +	 */ +	private static final long serialVersionUID = -3268343884240608304L; + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/PasswordTooShortException.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/PasswordTooShortException.java new file mode 100644 index 00000000..0e6a98f7 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/exceptions/PasswordTooShortException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.exceptions; + +// Imports + +/** + *  + */ +public class PasswordTooShortException extends InvalidPasswordException { +	/** +	 *  +	 */ +	private static final long serialVersionUID = 3015765967751806169L; +	 +	/** +	 * Constructor +	 */ +	public PasswordTooShortException() { +		super("Given password is too short!"); +	} + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigManipulator.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigManipulator.java new file mode 100644 index 00000000..702fa6bb --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigManipulator.java @@ -0,0 +1,126 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.workflow; + +import java.io.IOException; + +import at.asit.pdfover.signator.BKUs; +import at.asit.pdfover.signator.SignaturePosition; + +/** + *  + */ +public interface ConfigManipulator { +	 +	/** +	 * The default config file location +	 */ +	public static final String DEFAULT_CONFIG_FILE = "PDFOver.config"; //$NON-NLS-1$ +	 +	/** +	 * The bku config parameter +	 */ +	public static final String BKU_CONFIG = "BKU"; //$NON-NLS-1$ +	 +	/** +	 * The value for the Singature position in the configuration file +	 * values for this entry are: +	 *  +	 * x=vx;y=vy;p=vp or auto +	 *  +	 * vx:= float value +	 * vy:= float value +	 * vp:= integer value +	 */ +	public static final String SIGNATURE_POSITION_CONFIG = "SIGNATURE_POSITION"; //$NON-NLS-1$ +	 +	/** +	 * The mobile number config parameter +	 */ +	public static final String MOBILE_NUMBER_CONFIG = "MOBILE_NUMBER"; //$NON-NLS-1$ +	 +	/** +	 * The emblem config parameter +	 */ +	public static final String EMBLEM_CONFIG = "EMBLEM"; //$NON-NLS-1$ +	 +	/** +	 * The proxy host config parameter +	 */ +	public static final String PROXY_HOST_CONFIG = "PROXY_HOST"; //$NON-NLS-1$ +	 +	/** +	 * The proxy port config parameter +	 */ +	public static final String PROXY_PORT_CONFIG = "PROXY_PORT"; //$NON-NLS-1$ +	 +	/** +	 * Sets the default bku type +	 * @param bku the bku type +	 */ +	public void setDefaultBKU(BKUs bku); +	 +	/** +	 * Sets the default signature position +	 *  +	 * @param signaturePosition the default signature position +	 */ +	public void setDefaultSignaturePosition(SignaturePosition signaturePosition); +	 +	/** +	 * Sets the default mobile number +	 * @param number the default mobile number +	 */ +	public void setDefaultMobileNumber(String number); +	 +	/** +	 * Sets the default password +	 * @param password the default password +	 */ +	public void setDefaultPassword(String password); +	 +	/** +	 * Sets the default emblem +	 *  +	 * @param emblem the default emblem +	 */ +	public void setDefaultEmblem(String emblem); +	 +	/** +	 * Sets the proxy host +	 * @param host the proxy host +	 */ +	public void setProxyHost(String host); +	 +	/** +	 * Sets the proxy port +	 *  +	 * @param port the proxy port +	 */ +	public void setProxyPort(int port); +	 +	/** +	 * Sets the configuration file +	 * @param configurationFile +	 */ +	public void setConfigurationFile(String configurationFile); +	 +	/** +	 * Saves the current configuration to the current configuration file +	 * @throws IOException  +	 */ +	public void saveCurrentConfiguration() throws IOException; +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java index b2f1336b..8ada4d2d 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java @@ -25,6 +25,42 @@ public interface ConfigProvider {  	//TODO: define interface for config provider ....  	/** +	 * Gets the configuration file +	 * @return the configuration file +	 */ +	public String getConfigurationFile(); +	 +	/** +	 * Gets the default Mobile number +	 * @return the default mobile number +	 */ +	public String getDefaultMobileNumber(); +	 +	/** +	 * Gets the password to use for Mobile BKU +	 * @return the password +	 */ +	public String getDefaultPassword(); +	 +	/** +	 * Gets the filename of the default emblem +	 * @return the emblem +	 */ +	public String getDefaultEmblem(); +	 +	/** +	 * Gets the proxy host +	 * @return the proxy hostname or ip address +	 */ +	public String getProxyHost(); +	 +	/** +	 * Gets the proxy port +	 * @return the proxy port +	 */ +	public int getProxyPort(); +	 +	/**  	 * Get the default configured BKU  	 * @return the default configured BKU  	 */ diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java index adedd1b0..6a128e73 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java @@ -16,6 +16,11 @@  package at.asit.pdfover.gui.workflow;  // Imports +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Properties; +  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -25,30 +30,219 @@ import at.asit.pdfover.signator.SignaturePosition;  /**   *    */ -public class ConfigProviderImpl implements ConfigProvider { +public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator {  	/**  	 * SLF4J Logger instance  	 **/  	@SuppressWarnings("unused")  	private static final Logger log = LoggerFactory  			.getLogger(ConfigProviderImpl.class); - +	 +	private BKUs defaultBKU = BKUs.NONE; +	 +	private SignaturePosition defaultSignaturePosition = null; +	 +	private String defaultMobileNumber = null; +	 +	private String defaultPassword = null; +	 +	private String emblem = null; +	 +	private String proxyHost = null; +	 +	private String configurationFile = ConfigManipulator.DEFAULT_CONFIG_FILE; +	 +	private int proxyPort = -1; +	 +	/** +	 * Sets the default bku type +	 * @param bku the bku type +	 */ +	@Override +	public void setDefaultBKU(BKUs bku) { +		this.defaultBKU = bku; +	} +	  	/* (non-Javadoc)  	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultBKU()  	 */  	@Override  	public BKUs getDefaultBKU() { -		// TODO Read Config -		return BKUs.NONE; +		return this.defaultBKU;  	} +	/** +	 * Sets the default signature position +	 *  +	 * @param signaturePosition the default signature position +	 */ +	@Override +	public void setDefaultSignaturePosition(SignaturePosition signaturePosition) { +		this.defaultSignaturePosition = signaturePosition; +	} +	  	/* (non-Javadoc)  	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultSignaturePosition()  	 */  	@Override  	public SignaturePosition getDefaultSignaturePosition() { -		// TODO Read Config -		return null; +		return this.defaultSignaturePosition;  	} +	/** +	 * Sets the default mobile number +	 * @param number the default mobile number +	 */ +	@Override +	public void setDefaultMobileNumber(String number) { +		if(number == null || number.trim().equals("")) { //$NON-NLS-1$ +			this.defaultMobileNumber = null; +		} else { +			this.defaultMobileNumber = number; +		} +	} +	 +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultMobileNumber() +	 */ +	@Override +	public String getDefaultMobileNumber() { +		return this.defaultMobileNumber; +	} +	 +	/** +	 * Sets the default password +	 * @param password the default password +	 */ +	@Override +	public void setDefaultPassword(String password) { +		if(password == null || password.trim().equals("")) { //$NON-NLS-1$ +			this.defaultPassword = null; +		} else { +			this.defaultPassword = password; +		} +	} + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultPassword() +	 */ +	@Override +	public String getDefaultPassword() { +		return this.defaultPassword; +	} + +	/** +	 * Sets the default emblem +	 *  +	 * @param emblem the default emblem +	 */ +	@Override +	public void setDefaultEmblem(String emblem) { +		if(emblem == null || emblem.trim().equals("")) { //$NON-NLS-1$ +			this.emblem = null; +		} else { +			this.emblem = emblem; +		} +	} +	 +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultEmblem() +	 */ +	@Override +	public String getDefaultEmblem() { +		return this.emblem; +	} + +	/** +	 * Sets the proxy host +	 * @param host the proxy host +	 */ +	@Override +	public void setProxyHost(String host) { +		if(host == null || host.trim().equals("")) { //$NON-NLS-1$ +			this.emblem = null; +		} else { +			this.emblem = host; +		} +	} +	 +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getProxyHost() +	 */ +	@Override +	public String getProxyHost() { +		return this.proxyHost; +	} + +	/** +	 * Sets the proxy port +	 *  +	 * @param port the proxy port +	 */ +	@Override +	public void setProxyPort(int port) { +		this.proxyPort = port; +	} +	 +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getProxyPort() +	 */ +	@Override +	public int getProxyPort() { +		return this.proxyPort; +	} + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigManipulator#setConfigurationFile(java.lang.String) +	 */ +	@Override +	public void setConfigurationFile(String configurationFile) { +		this.configurationFile = configurationFile; +	} + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigProvider#getConfigurationFile() +	 */ +	@Override +	public String getConfigurationFile() { +		return this.configurationFile; +	} + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.ConfigManipulator#saveCurrentConfiguration() +	 */ +	@Override +	public void saveCurrentConfiguration() throws IOException{ +		String filename = this.getConfigurationFile(); +		 +		File configFile = new File(filename); +		 +		Properties props = new Properties(); +		 +		props.setProperty(BKU_CONFIG, this.getDefaultBKU().toString()); +		props.setProperty(PROXY_HOST_CONFIG, this.getProxyHost()); +		props.setProperty(PROXY_PORT_CONFIG, Integer.toString(this.getProxyPort())); +		props.setProperty(EMBLEM_CONFIG, this.getDefaultEmblem()); +		props.setProperty(MOBILE_NUMBER_CONFIG, this.getDefaultMobileNumber()); +		 +		SignaturePosition pos = this.getDefaultSignaturePosition(); +		 +		if(pos == null) { +			props.setProperty(SIGNATURE_POSITION_CONFIG, ""); //$NON-NLS-1$ +		} else if(pos.useAutoPositioning()) { +			props.setProperty(SIGNATURE_POSITION_CONFIG, "auto"); //$NON-NLS-1$ +		} else { +			props.setProperty(SIGNATURE_POSITION_CONFIG,  +					String.format("x=%f;y=%f;p=%d",  //$NON-NLS-1$ +							pos.getX(), +							pos.getY(), +							pos.getPage())); +		} +		 +		FileOutputStream outputstream = new FileOutputStream(configFile, false); +		 +		props.store(outputstream, "Configuration file was generated!"); //$NON-NLS-1$ +		 +	} +	  } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java index c98d9895..9bcc757e 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java @@ -28,6 +28,12 @@ public interface StateMachine {  	public ConfigProvider getConfigProvider();  	/** +	 * Gets the Config Manipulator +	 * @return the config manipulator +	 */ +	public ConfigManipulator getConfigManipulator(); +	 +	/**  	 * Get the PDF Signer  	 * @return the PDF Signer  	 */ @@ -75,4 +81,11 @@ public interface StateMachine {  	 * Exit state machine execution  	 */  	public void exit(); +	 +	/** +	 * Gets the command line arguments +	 *  +	 * @return the command line arguments +	 */ +	public String[] getCmdArgs();  } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java index cf764a73..90b2fba9 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java @@ -80,32 +80,45 @@ public class StateMachineImpl implements StateMachine, GUIProvider {  		State next = null;  		while (this.status.getCurrentState() != null) {  			State current = this.status.getCurrentState(); -			try -			{ +			try {  				current.run(); -			} -			catch(Exception e) { +			} catch (Exception e) {  				log.error("StateMachine update: ", e); //$NON-NLS-1$  				// TODO: GOTO generic error state!  			} -			if (this.mainWindow != null -					&& !this.mainWindow.getShell().isDisposed()) { -				log.debug("Allowing MainWindow to update its state for " //$NON-NLS-1$ -						+ current); -				current.updateMainWindowBehavior(); -				this.mainWindow.applyBehavior(); -				this.mainWindow.doLayout(); -			} -			next = current.nextState(); -			if (next == current) { -				break; + +			if (this.exit) { +				// exit request ignore +				next = null; +				this.status.setCurrentState(next); +			} else { + +				if (this.mainWindow != null +						&& !this.mainWindow.getShell().isDisposed()) { +					log.debug("Allowing MainWindow to update its state for " //$NON-NLS-1$ +							+ current); +					current.updateMainWindowBehavior(); +					this.mainWindow.applyBehavior(); +					this.mainWindow.doLayout(); +				} +				next = current.nextState(); +				if (next == current) { +					break; +				} + +				if (next == null) { +					log.info("Next state is null -> exit"); //$NON-NLS-1$ +					this.status.setCurrentState(next); +					break; +				} + +				log.debug("Changing state from: " //$NON-NLS-1$ +						+ current + " to " //$NON-NLS-1$ +						+ next.toString()); +				this.status.setCurrentState(next);  			} -			log.debug("Changing state from: " //$NON-NLS-1$ -					+ current + " to " //$NON-NLS-1$ -					+ next.toString()); -			this.status.setCurrentState(next);  		} -		 +  		// TODO: Remove following line when releasing ...  		if (this.status.getCurrentState() != null) {  			this.setCurrentStateMessage(this.status.getCurrentState() @@ -205,9 +218,8 @@ public class StateMachineImpl implements StateMachine, GUIProvider {  					Composite.class, int.class, State.class);  			composite = constructor.newInstance(getComposite(), style, state);  		} catch (Exception e) { -			log.error( -					"Could not create Composite for Class " //$NON-NLS-1$ -							+ compositeClass.getName(), e); +			log.error("Could not create Composite for Class " //$NON-NLS-1$ +					+ compositeClass.getName(), e);  		}  		return composite;  	} @@ -221,12 +233,17 @@ public class StateMachineImpl implements StateMachine, GUIProvider {  		return this.shell;  	} +	private boolean exit = false; +  	/**  	 * Exists the Workflow  	 */  	@Override  	public void exit() { -		this.shell.dispose(); +		this.exit = true; +		if (this.shell != null) { +			this.shell.dispose(); +		}  	}  	/** @@ -249,6 +266,12 @@ public class StateMachineImpl implements StateMachine, GUIProvider {  		Shell shell = this.nonCreatingGetShell();  		Display display = this.nonCreatingGetDisplay(); +		if (this.status.getCurrentState() == null) { +			if (shell != null) { +				this.shell.dispose(); +			} +		} +  		if (shell != null && display != null) {  			while (!shell.isDisposed()) {  				if (!display.readAndDispatch()) { @@ -288,8 +311,10 @@ public class StateMachineImpl implements StateMachine, GUIProvider {  	public PDFSigner getPDFSigner() {  		return this.pdfSigner;  	} -	 -	/* (non-Javadoc) + +	/* +	 * (non-Javadoc) +	 *   	 * @see at.asit.pdfover.gui.workflow.StateMachine#getGUIProvider()  	 */  	@Override @@ -318,7 +343,16 @@ public class StateMachineImpl implements StateMachine, GUIProvider {  	 *   	 * @return the command line arguments  	 */ +	@Override  	public String[] getCmdArgs() {  		return this.cmdLineArgs;  	} + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.StateMachine#getConfigManipulator() +	 */ +	@Override +	public ConfigManipulator getConfigManipulator() { +		return this.configProvider; +	}  } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java index 355ab6bd..b60608b6 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java @@ -71,8 +71,8 @@ public class StatusImpl implements Status {  	 * @param currentState the current State  	 */  	public void setCurrentState(State currentState) { -		if (this.previousState == this.currentState) -			log.error("Changing to same state? " + this.currentState); //$NON-NLS-1$ +		//if (this.previousState == this.currentState) +		//	log.error("Changing to same state? " + this.currentState); //$NON-NLS-1$  		if (this.previousState != null && this.previousState != currentState)  		{ diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java new file mode 100644 index 00000000..4b468ad8 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java @@ -0,0 +1,93 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +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.composites.ConfigurationComposite; +import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.Status; + +/** + *  + */ +public class ConfigurationUIState extends State { +	/** +	 * SLF4J Logger instance +	 **/ +	private static final Logger log = LoggerFactory +			.getLogger(ConfigurationUIState.class); + +	 +	private ConfigurationComposite configurationComposite = null; + +	private ConfigurationComposite getConfigurationComposite() { +		if (this.configurationComposite == null) { +			this.configurationComposite = +					this.stateMachine.getGUIProvider().createComposite(ConfigurationComposite.class, SWT.RESIZE, this); +			this.configurationComposite.setConfigManipulator(this.stateMachine.getConfigManipulator()); +		} + +		return this.configurationComposite; +	} +	 +	/** +	 * @param stateMachine +	 */ +	public ConfigurationUIState(StateMachine stateMachine) { +		super(stateMachine); +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.states.State#run() +	 */ +	@Override +	public void run() { +		Status status = this.stateMachine.getStatus(); + +		ConfigurationComposite config = this.getConfigurationComposite(); +		 +		this.stateMachine.getGUIProvider().display(config); + +		if(config.isUserDone()) +		{ +			this.setNextState(status.getPreviousState()); +		} +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() +	 */ +	@Override +	public void cleanUp() { +		if(this.configurationComposite != null) +			this.configurationComposite.dispose(); +	} + + +	/* (non-Javadoc) +	 * @see at.asit.pdfover.gui.workflow.states.State#updateMainWindowBehavior() +	 */ +	@Override +	public void updateMainWindowBehavior() { +		// Leave the state as it is +	} + +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java index 47485a0c..af648dfd 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java @@ -22,7 +22,6 @@ import org.slf4j.LoggerFactory;  import at.asit.pdfover.gui.composites.ErrorComposite;  import at.asit.pdfover.gui.workflow.StateMachine; -import at.asit.pdfover.gui.workflow.Status;  /**   *  @@ -67,8 +66,6 @@ public class ErrorState extends State {  	 */  	@Override  	public void run() { -		Status status = this.stateMachine.getStatus(); -		  		ErrorComposite errorComposite = this.getComposite();  		if(this.exception != null && !errorComposite.isUserOk()) { @@ -94,7 +91,8 @@ public class ErrorState extends State {  	 */  	@Override  	public void cleanUp() { -		// TODO +		if (this.errorComposite != null) +			this.errorComposite.dispose();  	}  	/* (non-Javadoc) 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 deec44dd..ca0e164c 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 @@ -121,6 +121,8 @@ public class LocalBKUState extends State {  			} catch (Exception e) {  				log.error("SignLocalBKUThread: ", e); //$NON-NLS-1$ +				// TODO: Is local BKU running? +				this.state.threadException = e;  			} finally {  				this.state.stateMachine.invokeUpdate();  			} 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 25df5b7e..234cd215 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 @@ -199,7 +199,7 @@ public class MobileBKUState extends State {  					postCredentialsThread.start();  				} else { -					// We need at least number of password => show UI! +					// We need number and password => show UI!  					// set possible error message  					ui.setErrorMessage(mobileStatus.getErrorMessage()); @@ -257,7 +257,12 @@ public class MobileBKUState extends State {  	 */  	@Override  	public void cleanUp() { -		// No composite - no cleanup necessary +		if(this.mobileBKUEnterNumberComposite != null) +			this.mobileBKUEnterNumberComposite.dispose(); +		if(this.mobileBKUEnterTANComposite != null) +			this.mobileBKUEnterTANComposite.dispose(); +		if(this.waitingComposite != null) +			this.waitingComposite.dispose();  	}  	/* @@ -280,6 +285,9 @@ public class MobileBKUState extends State {  		return this.getClass().getName();  	} +	/** +	 * invoke state machine update in main thread +	 */  	public void invokeUpdate() {  		this.stateMachine.invokeUpdate();  	} 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 2a71890d..b4b05318 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,12 +16,28 @@  package at.asit.pdfover.gui.workflow.states;  //Imports +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import at.asit.pdfover.gui.cliarguments.ArgumentHandler; +import at.asit.pdfover.gui.cliarguments.BKUArgument; +import at.asit.pdfover.gui.cliarguments.ConfigFileArgument; +import at.asit.pdfover.gui.cliarguments.HelpArgument; +import at.asit.pdfover.gui.cliarguments.PhoneNumberArgument; +import at.asit.pdfover.gui.exceptions.InitializationException; +import at.asit.pdfover.gui.workflow.ConfigManipulator;  import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.signator.BKUs;  import at.asit.pdfover.signator.Signator; - +import at.asit.pdfover.signator.SignaturePosition;  /**   * Starting state of workflow proccess @@ -31,34 +47,221 @@ import at.asit.pdfover.signator.Signator;  public class PrepareConfigurationState extends State {  	/** +	 * Regex for parsing signature position +	 */ +	public static final String SIGN_POS_REGEX = "(x=(\\d\\.?\\d?);y=(\\d\\.?\\d?);p=(\\d))|(auto)|(x=(\\d\\.?\\d?);y=(\\d\\.?\\d?))"; //$NON-NLS-1$ + +	/**  	 * @param stateMachine  	 */  	public PrepareConfigurationState(StateMachine stateMachine) {  		super(stateMachine); +		this.handler = new ArgumentHandler(this.stateMachine); +		this.handler.addCLIArgument(new HelpArgument()); +		this.handler.addCLIArgument(new BKUArgument()); +		this.handler.addCLIArgument(new PhoneNumberArgument()); + +		// adding config file argument to this handler so it appears in help +		this.handler.addCLIArgument(new ConfigFileArgument()); + +		this.configFilehandler = new ArgumentHandler(this.stateMachine); +		this.configFilehandler.addCLIArgument(new ConfigFileArgument());  	} +	private ArgumentHandler handler; + +	private ArgumentHandler configFilehandler; +  	/**  	 * SFL4J Logger instance  	 **/ -	@SuppressWarnings("unused")  	private static final Logger log = LoggerFactory  			.getLogger(PrepareConfigurationState.class); +	private void initializeFromConfigurationFile(String filename) +			throws InitializationException { +		try { +			Properties config = new Properties(); + +			try { +				config.load(new FileInputStream(filename)); +			} catch (FileNotFoundException ex) { +				if (filename.equals(ConfigManipulator.DEFAULT_CONFIG_FILE)) { +					// we only check for resource config file if it is the +					// default value! +					try { +						InputStream is = this.getClass().getResourceAsStream( +								"/" + filename); //$NON-NLS-1$ +						config.load(is); +					} catch (Exception eex) { +						throw ex; +					} +				} else { +					throw ex; +				} +			} + +			// Load ok ... +			ConfigManipulator configManipulator = this.stateMachine +					.getConfigManipulator(); + +			// Set Emblem +			configManipulator.setDefaultEmblem(config +					.getProperty(ConfigManipulator.EMBLEM_CONFIG)); + +			// Set Mobile Phone Number +			configManipulator.setDefaultMobileNumber(config +					.getProperty(ConfigManipulator.MOBILE_NUMBER_CONFIG)); + +			// Set Proxy Host +			configManipulator.setProxyHost(config +					.getProperty(ConfigManipulator.PROXY_HOST_CONFIG)); + +			// Set Proxy Port +			String proxyPortString = config +					.getProperty(ConfigManipulator.PROXY_PORT_CONFIG); + +			if (proxyPortString != null && !proxyPortString.trim().equals("")) { //$NON-NLS-1$ +				int port = Integer.parseInt(proxyPortString); + +				if (port > 0 && port <= 0xFFFF) { +					configManipulator.setProxyPort(port); +				} else { +					log.warn("Proxy port is out of range!: " + port); //$NON-NLS-1$ +				} +			} + +			// Set Default BKU +			String bkuString = config.getProperty(ConfigManipulator.BKU_CONFIG); + +			BKUs defaultBKU = BKUs.NONE; + +			try { +				defaultBKU = BKUs.valueOf(bkuString); +			} catch (IllegalArgumentException ex) { +				log.error("Invalid BKU config value " + bkuString + " using none!"); //$NON-NLS-1$ //$NON-NLS-2$ +				defaultBKU = BKUs.NONE; +			} catch (NullPointerException ex) { +				log.error("Invalid BKU config value " + bkuString + " using none!"); //$NON-NLS-1$ //$NON-NLS-2$ +				defaultBKU = BKUs.NONE; +			} + +			configManipulator.setDefaultBKU(defaultBKU); + +			// Set Signature Position +			String signaturePosition = config +					.getProperty(ConfigManipulator.SIGNATURE_POSITION_CONFIG); + +			SignaturePosition position = null; + +			if (signaturePosition != null +					&& !signaturePosition.trim().equals("")) { //$NON-NLS-1$ + +				signaturePosition = signaturePosition.trim().toLowerCase(); + +				Pattern pattern = Pattern.compile(SIGN_POS_REGEX); + +				Matcher matcher = pattern.matcher(signaturePosition); + +				if (matcher.matches()) { +					if (matcher.groupCount() == 8) { +						if (matcher.group(1) != null) { +							// we have format: x=..;y=..;p=... +							try { +								// group 2 = x value +								float x = Float.parseFloat(matcher.group(2)); + +								// group 3 = y value +								float y = Float.parseFloat(matcher.group(3)); + +								// group 4 = p value +								int p = Integer.parseInt(matcher.group(3)); + +								position = new SignaturePosition(x, y, p); +							} catch (NumberFormatException ex) { +								log.error( +										"Signature Position read from config failed: Not a valid number", ex); //$NON-NLS-1$ +							} +						} else if (matcher.group(5) != null) { +							// we have format auto +							position = new SignaturePosition(); +						} else if (matcher.group(6) != null) { +							// we have format x=...;y=...; +							// group 7 = x value +							float x = Float.parseFloat(matcher.group(7)); + +							// group 8 = y value +							float y = Float.parseFloat(matcher.group(8)); + +							position = new SignaturePosition(x, y); +						} +					} else { +						log.error("Signature Position read from config failed: wrong group Count!"); //$NON-NLS-1$ +					} +				} else { +					log.error("Signature Position read from config failed: not matching string"); //$NON-NLS-1$ +				} + +			} + +			configManipulator.setDefaultSignaturePosition(position); + +		} catch (IOException ex) { +			throw new InitializationException( +					"Failed to read configuration from config file", ex); //$NON-NLS-1$ +		} +	} + +	private void initializeFromArguments(String[] args, ArgumentHandler handler) +			throws InitializationException { +		handler.handleArguments(args); + +		if (handler.IsRequireExit()) { +			this.stateMachine.exit(); +		} +	} +  	@Override  	public void run() { -		// TODO: Read config file and command line arguments -		// Set usedSignerLib ... -		this.stateMachine.getPDFSigner().setUsedPDFSignerLibrary(Signator.Signers.PDFAS); -		 -		// Create PDF Signer -		this.stateMachine.getStatus().setBKU(this.stateMachine.getConfigProvider().getDefaultBKU()); -		 -		this.stateMachine.getStatus().setSignaturePosition(this.stateMachine.getConfigProvider().getDefaultSignaturePosition()); -		 -		this.setNextState(new OpenState(this.stateMachine)); +		// Read config file +		try { +			// Read cli arguments with for config file! +			this.initializeFromArguments(this.stateMachine.getCmdArgs(), +					this.configFilehandler); + +			// initialize from config file +			this.initializeFromConfigurationFile(this.stateMachine +					.getConfigProvider().getConfigurationFile()); + +			// Read cli arguments +			this.initializeFromArguments(this.stateMachine.getCmdArgs(), +					this.handler); + +			// Set usedSignerLib ... +			this.stateMachine.getPDFSigner().setUsedPDFSignerLibrary( +					Signator.Signers.PDFAS); + +			// Create PDF Signer +			this.stateMachine.getStatus().setBKU( +					this.stateMachine.getConfigProvider().getDefaultBKU()); + +			this.stateMachine.getStatus().setSignaturePosition( +					this.stateMachine.getConfigProvider() +							.getDefaultSignaturePosition()); + +			this.setNextState(new OpenState(this.stateMachine)); + +		} catch (InitializationException e) { +			log.error("Failed to initialize: ", e); //$NON-NLS-1$ +			ErrorState error = new ErrorState(this.stateMachine); +			error.setException(e); +			this.setNextState(error); +		}  	} -	/* (non-Javadoc) +	/* +	 * (non-Javadoc) +	 *   	 * @see at.asit.pdfover.gui.workflow.states.State#cleanUp()  	 */  	@Override @@ -66,16 +269,18 @@ public class PrepareConfigurationState extends State {  		// No composite - no cleanup necessary  	} -	/* (non-Javadoc) +	/* +	 * (non-Javadoc) +	 *   	 * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()  	 */  	@Override  	public void updateMainWindowBehavior() { -		//no behavior necessary yet +		// no behavior necessary yet  	}  	@Override -	public String toString()  { +	public String toString() {  		return this.getClass().getName();  	}  } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ASITTrustManager.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ASITTrustManager.java index 2428ef65..6f557bc6 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ASITTrustManager.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ASITTrustManager.java @@ -16,13 +16,22 @@  package at.asit.pdfover.gui.workflow.states.mobilebku;  // Imports +import java.security.KeyStore;  import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory;  import java.security.cert.X509Certificate; - +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory;  import javax.net.ssl.X509TrustManager; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.apache.commons.lang.ArrayUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList;  /**   *  @@ -34,31 +43,181 @@ public class ASITTrustManager implements X509TrustManager {  	private static final Logger log = LoggerFactory  			.getLogger(ASITTrustManager.class); -	/* (non-Javadoc) -	 * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String) +	/* +	 * The default X509TrustManager returned by SunX509. We'll delegate +	 * decisions to it, and fall back to the logic in this class if the default +	 * X509TrustManager doesn't trust it. +	 */ +	X509TrustManager sunJSSEX509TrustManager; + +	/** +	 * Trust Manager for A-Trust Certificates +	 */ +	X509TrustManager atrustTrustManager; + +	/** +	 * Constructs the TrustManager +	 *  +	 * @throws Exception +	 */ +	public ASITTrustManager() throws Exception { +		// create a "default" JSSE X509TrustManager. + +		TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); //$NON-NLS-1$ +		tmf.init((KeyStore) null); + +		TrustManager tms[] = tmf.getTrustManagers(); + +		/* +		 * Iterate over the returned trustmanagers, look for an instance of +		 * X509TrustManager. If found, use that as our "default" trust manager. +		 */ +		for (int i = 0; i < tms.length; i++) { +			if (tms[i] instanceof X509TrustManager) { +				this.sunJSSEX509TrustManager = (X509TrustManager) tms[i]; +				break; +			} +		} + +		/* +		 * A-Trust Certificates +		 */ + +		KeyStore atrustKeyStore = KeyStore.getInstance(KeyStore +				.getDefaultType()); + +		atrustKeyStore.load(null); + +		String usedCertificates = "/certificates/used_certificates.xml"; //$NON-NLS-1$ + +		Document doc = DocumentBuilderFactory.newInstance() +				.newDocumentBuilder() +				.parse(this.getClass().getResourceAsStream(usedCertificates)); + +		Node certificates = doc.getFirstChild(); + +		if (!certificates.getNodeName().equals("certificates")) { //$NON-NLS-1$ +			throw new Exception( +					"Used certificates xml is invalid! no certificates node"); //$NON-NLS-1$ +		} + +		NodeList certificateList = certificates.getChildNodes(); + +		for (int i = 0; i < certificateList.getLength(); i++) { +			try { + +				Node certificateNode = certificateList.item(i); + +				if (certificateNode.getNodeName().equals("#text")) { //$NON-NLS-1$ +					continue; // Ignore dummy text node .. +				} + +				if (!certificateNode.getNodeName().equals("certificate")) { //$NON-NLS-1$ +					log.warn("Ignoring XML node: " + certificateNode.getNodeName()); //$NON-NLS-1$ +					continue; +				} + +				String certResource = "/certificates/" + certificateNode.getTextContent() + ".crt"; //$NON-NLS-1$ //$NON-NLS-2$ + +				X509Certificate cert = (X509Certificate) CertificateFactory +						.getInstance("X509"). //$NON-NLS-1$ +						generateCertificate( +								this.getClass().getResourceAsStream( +										certResource)); + +				atrustKeyStore.setCertificateEntry(certificateNode.getTextContent(), cert); + +				log.debug("Loaded certificate : " + certResource); //$NON-NLS-1$ + +			} catch (Exception ex) { +				log.error("Failed to load certificate [" + "]", ex); //$NON-NLS-1$ //$NON-NLS-2$ +			} +		} + +		tmf.init(atrustKeyStore); + +		tms = tmf.getTrustManagers(); + +		/* +		 * Iterate over the returned trustmanagers, look for an instance of +		 * X509TrustManager. If found, use that as our "default" trust manager. +		 */ +		for (int i = 0; i < tms.length; i++) { +			if (tms[i] instanceof X509TrustManager) { +				this.atrustTrustManager = (X509TrustManager) tms[i]; +				break; +			} +		} + +		if (this.sunJSSEX509TrustManager != null +				&& this.atrustTrustManager != null) { +			return; +		} + +		/* +		 * Find some other way to initialize, or else we have to fail the +		 * constructor. +		 */ +		throw new Exception("Couldn't initialize ASITTrustManager"); //$NON-NLS-1$ +	} + +	/* +	 * (non-Javadoc) +	 *  +	 * @see +	 * javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert. +	 * X509Certificate[], java.lang.String)  	 */  	@Override  	public void checkClientTrusted(X509Certificate[] arg0, String arg1)  			throws CertificateException { -		// Ignore client certificates ... +		try { +			this.atrustTrustManager.checkServerTrusted(arg0, arg1); +		} catch (CertificateException ex) { +			try { +				this.sunJSSEX509TrustManager.checkClientTrusted(arg0, arg1); +			} catch (CertificateException ex2) { +				log.info("checkClientTrusted: ", ex2); //$NON-NLS-1$ +				throw ex2; +			} +		}  	} -	/* (non-Javadoc) -	 * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String) +	/* +	 * (non-Javadoc) +	 *  +	 * @see +	 * javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert. +	 * X509Certificate[], java.lang.String)  	 */  	@Override  	public void checkServerTrusted(X509Certificate[] arg0, String arg1)  			throws CertificateException { -		// TODO: Check trusted server certificate! +		try { +			this.atrustTrustManager.checkServerTrusted(arg0, arg1); +		} catch (CertificateException ex) { +			try { +				this.sunJSSEX509TrustManager.checkServerTrusted(arg0, arg1); +			} catch (CertificateException ex2) { +				log.info("checkServerTrusted: ", ex2); //$NON-NLS-1$ +				throw ex2; +			} +		}  	} -	/* (non-Javadoc) +	/* +	 * (non-Javadoc) +	 *   	 * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()  	 */  	@Override  	public X509Certificate[] getAcceptedIssuers() { -		// TODO: Build accepted issuers -		return null; + +		X509Certificate[] default_certs = this.sunJSSEX509TrustManager.getAcceptedIssuers(); + +		X509Certificate[] atrust_cerst = this.atrustTrustManager.getAcceptedIssuers(); +		 +		return (X509Certificate[]) ArrayUtils.addAll(default_certs, atrust_cerst);  	}  } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java index c9254317..1ea265ad 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java @@ -16,9 +16,18 @@  package at.asit.pdfover.gui.workflow.states.mobilebku;  // Imports +import java.util.regex.Matcher; +import java.util.regex.Pattern; +  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import at.asit.pdfover.gui.composites.MobileBKUEnterNumberComposite; +import at.asit.pdfover.gui.exceptions.InvalidNumberException; +import at.asit.pdfover.gui.exceptions.InvalidPasswordException; +import at.asit.pdfover.gui.exceptions.PasswordTooLongException; +import at.asit.pdfover.gui.exceptions.PasswordTooShortException; +  /**   *    */ @@ -30,36 +39,111 @@ public class ATrustHelper {  			.getLogger(ATrustHelper.class);  	/** +	 * Regular expression for mobile phone numbers: this allows the entrance of +	 * mobile numbers in the following formats: +	 *  +	 * +(countryCode)99999999999 00(countryCode)99999999999 099999999999 +	 * 1030199999999999 (A-Trust Test bku) +	 */ +	private static final String NUMBER_REGEX = "^((\\+[\\d]{2})|(00[\\d]{2})|(0)|(10301))([1-9][\\d]+)$"; //$NON-NLS-1$ + +	/** +	 * Extracts a substring from data starting after start and ending with end +	 *   	 * @param data +	 *            the whole data string  	 * @param start +	 *            the start marker  	 * @param end -	 * @return +	 *            the end marker +	 * @return the substring  	 * @throws Exception  	 */ -	public static String extractTag(String data, String start, String end) throws Exception { +	public static String extractTag(String data, String start, String end) +			throws Exception {  		int startidx = data.indexOf(start); -		if(startidx > 0) { -			startidx = startidx+start.length(); +		if (startidx > 0) { +			startidx = startidx + start.length();  			int endidx = data.indexOf(end, startidx); -			if(endidx > startidx) { +			if (endidx > startidx) {  				return data.substring(startidx, endidx); -			} else { -				// TODO: throw exception -				throw new Exception("end tag not available!");  			} -		} else { -			// TODO: throw exception -			throw new Exception("start tag not available!"); +			// TODO: throw proper exception +			log.error("extracting Tag: end tag not valid!: " + start + " ... " + end); //$NON-NLS-1$//$NON-NLS-2$ +			throw new Exception("end tag not available!"); //$NON-NLS-1$  		} +		// TODO: throw proper exception +		log.error("extracting Tag: start tag not valid!: " + start + " ... " + end); //$NON-NLS-1$//$NON-NLS-2$ +		throw new Exception("start tag not available!"); //$NON-NLS-1$  	} -	 + +	/** +	 * Validates the Mobile phone number +	 *  +	 * @param number +	 * @return the normalized Phone number +	 * @throws InvalidNumberException +	 */ +	public static String normalizeMobileNumber(String number) +			throws InvalidNumberException { +		// Verify number and normalize + +		// Compile and use regular expression +		Pattern pattern = Pattern.compile(NUMBER_REGEX); +		Matcher matcher = pattern.matcher(number); + +		if (!matcher.find()) { +			throw new InvalidNumberException(); +		} + +		if (matcher.groupCount() != 6) { +			throw new InvalidNumberException(); +		} + +		String countryCode = matcher.group(1); + +		String normalNumber = matcher.group(6); + +		if (countryCode.equals("10301")) { //$NON-NLS-1$ +			// A-Trust Testnumber! Don't change +			return number; +		} + +		countryCode = countryCode.replace("00", "+"); //$NON-NLS-1$ //$NON-NLS-2$ + +		if (countryCode.equals("0")) { //$NON-NLS-1$ +			countryCode = "+43"; //$NON-NLS-1$ +		} + +		return countryCode + normalNumber; +	} + +	/** +	 * Validate given Password for Mobile BKU +	 *  +	 * @param password +	 * @throws InvalidPasswordException +	 */ +	public static void validatePassword(String password) +			throws InvalidPasswordException { +		if (password.length() < 6 || password.length() > 20) { +			if (password.length() < 6) { +				throw new PasswordTooShortException(); +			} +			throw new PasswordTooLongException(); +		} +	} +  	/** +	 * Removes file extension from URL +	 *   	 * @param query -	 * @return +	 *            the url string +	 * @return the stripped url  	 */  	public static String stripQueryString(String query) {  		int pathidx = query.lastIndexOf('/'); -		if(pathidx > 0) { +		if (pathidx > 0) {  			return query.substring(0, pathidx);  		}  		return query; diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java index bfe84605..5e9d8159 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java @@ -46,8 +46,8 @@ public class TrustedSocketFactory implements ProtocolSocketFactory {  	private static final Logger log = LoggerFactory  			.getLogger(TrustedSocketFactory.class); -	private static SSLSocketFactory getFactory() throws NoSuchAlgorithmException, -			KeyManagementException { +	private SSLSocketFactory getFactory() throws NoSuchAlgorithmException, +			KeyManagementException, Exception {  		SSLContext sslContext = SSLContext.getInstance("TLS"); //$NON-NLS-1$  		sslContext.init(null, new TrustManager[] { new ASITTrustManager() },  				new java.security.SecureRandom()); diff --git a/pdf-over-gui/src/main/resources/PDFOver.config b/pdf-over-gui/src/main/resources/PDFOver.config new file mode 100644 index 00000000..9e117d03 --- /dev/null +++ b/pdf-over-gui/src/main/resources/PDFOver.config @@ -0,0 +1 @@ +BKU=MOBILE
\ No newline at end of file diff --git a/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-01a.crt b/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-01a.crtBinary files differ new file mode 100644 index 00000000..f9fef65f --- /dev/null +++ b/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-01a.crt diff --git a/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-02a.crt b/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-02a.crtBinary files differ new file mode 100644 index 00000000..36a442b8 --- /dev/null +++ b/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-02a.crt diff --git a/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-03a.crt b/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-03a.crtBinary files differ new file mode 100644 index 00000000..ab9e0cd7 --- /dev/null +++ b/pdf-over-gui/src/main/resources/certificates/A-Trust-Qual-03a.crt diff --git a/pdf-over-gui/src/main/resources/certificates/A-Trust-nQual-01a.crt b/pdf-over-gui/src/main/resources/certificates/A-Trust-nQual-01a.crtBinary files differ new file mode 100644 index 00000000..efa28178 --- /dev/null +++ b/pdf-over-gui/src/main/resources/certificates/A-Trust-nQual-01a.crt diff --git a/pdf-over-gui/src/main/resources/certificates/A-Trust-nQual-03.crt b/pdf-over-gui/src/main/resources/certificates/A-Trust-nQual-03.crtBinary files differ new file mode 100644 index 00000000..33e77636 --- /dev/null +++ b/pdf-over-gui/src/main/resources/certificates/A-Trust-nQual-03.crt diff --git a/pdf-over-gui/src/main/resources/certificates/used_certificates.xml b/pdf-over-gui/src/main/resources/certificates/used_certificates.xml new file mode 100644 index 00000000..255cbe9d --- /dev/null +++ b/pdf-over-gui/src/main/resources/certificates/used_certificates.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<certificates> +	<certificate>A-Trust-nQual-01a</certificate> +	<certificate>A-Trust-nQual-03</certificate> +	<certificate>A-Trust-Qual-01a</certificate> +	<certificate>A-Trust-Qual-02a</certificate> +	<certificate>A-Trust-Qual-03a</certificate> +</certificates>
\ No newline at end of file diff --git a/pdf-over-gui/src/main/resources/log4j.properties b/pdf-over-gui/src/main/resources/log4j.properties index 715eb0af..626c7e3a 100644 --- a/pdf-over-gui/src/main/resources/log4j.properties +++ b/pdf-over-gui/src/main/resources/log4j.properties @@ -5,16 +5,21 @@ log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender  log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout  log4j.appender.STDOUT.layout.ConversionPattern=%-5p | %d | %t | %c %x- %m%n +log4j.logger				  = INFO +  # DETAIL LEVELS PDF-Over  log4j.logger.at.asit.pdfover  = DEBUG  log4j.logger.at.gv.egiz.pdfas = INFO  log4j.logger.at.knowcenter    = INFO  log4j.logger.at.knowcenter.wag.egov.egiz.ldap = DEBUG -log4j.logger.org.apache.commons.httpclient.HttpMethodBase = ERROR +log4j.logger.org.apache.commons.httpclient = ERROR +log4j.logger.httpclient.wire = ERROR +  # DETAIL LEVELS PDF-AS  log4j.logger.org.pdfbox       = INFO +log4j.logger.org.apache.pdfbox.util  = INFO  log4j.logger.at.gv.egiz.pdfas = INFO  log4j.logger.at.knowcenter    = INFO  log4j.logger.at.knowcenter.wag.egov.egiz.ldap = DEBUG -log4j.logger.org.apache.commons.httpclient.HttpMethodBase = ERROR
\ No newline at end of file +log4j.logger.org.apache.commons.httpclient = ERROR
\ No newline at end of file diff --git a/pdf-over-gui/tmp_signed.pdf b/pdf-over-gui/tmp_signed.pdfBinary files differ new file mode 100644 index 00000000..2968b898 --- /dev/null +++ b/pdf-over-gui/tmp_signed.pdf | 
