| /** |
| * Copyright (c) 2006 IBM Corporation. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - Initial Implementation |
| * |
| */ |
| package org.eclipse.ptp.remotetools.environment.generichost.core; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.ptp.remotetools.RemotetoolsPlugin; |
| import org.eclipse.ptp.remotetools.environment.generichost.Activator; |
| import org.eclipse.ptp.remotetools.environment.generichost.conf.AttributeNames; |
| import org.eclipse.ptp.remotetools.environment.generichost.conf.DefaultValues; |
| import org.eclipse.ptp.remotetools.utils.verification.ControlAttributes; |
| import org.eclipse.ptp.remotetools.utils.verification.IllegalAttributeException; |
| |
| /** |
| * Defines rules to build the target configuration from an attribute hash map. |
| * |
| * @author Daniel Felix Ferber |
| * @since 1.4 |
| */ |
| public class ConfigFactory { |
| private ControlAttributes attributes = null; |
| |
| private static final String PREFIX = "org.eclipse.ptp.remotetools.environment.generichost"; //$NON-NLS-1$ |
| public static final String ATTR_LOCALHOST_SELECTION = PREFIX + ".localhost-selection"; //$NON-NLS-1$ |
| public static final String ATTR_LOGIN_USERNAME = PREFIX + ".login-username"; //$NON-NLS-1$ |
| public static final String ATTR_LOGIN_PASSWORD = PREFIX + ".login-password"; //$NON-NLS-1$ |
| public static final String ATTR_CONNECTION_ADDRESS = PREFIX + ".connection-address"; //$NON-NLS-1$ |
| public static final String ATTR_CONNECTION_PORT = PREFIX + ".connection-port"; //$NON-NLS-1$ |
| public static final String ATTR_KEY_PATH = PREFIX + ".key-path"; //$NON-NLS-1$ |
| public static final String ATTR_KEY_PASSPHRASE = PREFIX + ".key-passphrase"; //$NON-NLS-1$ |
| public static final String ATTR_IS_PASSWORD_AUTH = PREFIX + ".is-passwd-auth"; //$NON-NLS-1$ |
| public static final String ATTR_CONNECTION_TIMEOUT = PREFIX + ".connection-timeout"; //$NON-NLS-1$ |
| public static final String ATTR_CIPHER_TYPE = PREFIX + ".cipher-type"; //$NON-NLS-1$ |
| |
| public final static String[] KEY_ARRAY = { ATTR_LOCALHOST_SELECTION, ATTR_LOGIN_USERNAME, ATTR_CONNECTION_PORT, |
| ATTR_CONNECTION_ADDRESS, ATTR_KEY_PATH, ATTR_IS_PASSWORD_AUTH, ATTR_CONNECTION_TIMEOUT, ATTR_CIPHER_TYPE }; |
| |
| public final static String[] KEY_CIPHERED_ARRAY = { ATTR_KEY_PASSPHRASE, ATTR_LOGIN_PASSWORD }; |
| |
| public ConfigFactory() { |
| this(null); |
| } |
| |
| /** |
| * @since 5.0 |
| */ |
| public ConfigFactory(ControlAttributes attrs) { |
| if (attrs != null) { |
| attributes = attrs; |
| } else { |
| attributes = new ControlAttributes(); |
| } |
| createDefaultMap(); |
| if (attrs == null) { |
| createCurrentMapFromPreferences(); |
| } |
| } |
| |
| public ControlAttributes getAttributes() { |
| return attributes; |
| } |
| |
| private void createDefaultMap() { |
| attributes.setDefaultString(ATTR_LOCALHOST_SELECTION, DefaultValues.LOCALHOST_SELECTION); |
| attributes.setDefaultString(ATTR_LOGIN_USERNAME, DefaultValues.LOGIN_USERNAME); |
| attributes.setDefaultString(ATTR_LOGIN_PASSWORD, DefaultValues.LOGIN_PASSWORD); |
| attributes.setDefaultString(ATTR_CONNECTION_PORT, DefaultValues.CONNECTION_PORT); |
| attributes.setDefaultString(ATTR_CONNECTION_ADDRESS, DefaultValues.CONNECTION_ADDRESS); |
| attributes.setDefaultString(ATTR_KEY_PATH, DefaultValues.KEY_PATH); |
| attributes.setDefaultString(ATTR_KEY_PASSPHRASE, DefaultValues.KEY_PASSPHRASE); |
| attributes.setDefaultString(ATTR_IS_PASSWORD_AUTH, DefaultValues.IS_PASSWORD_AUTH); |
| attributes.setDefaultString(ATTR_CONNECTION_TIMEOUT, DefaultValues.CONNECTION_TIMEOUT); |
| attributes.setDefaultString(ATTR_CIPHER_TYPE, RemotetoolsPlugin.CIPHER_DEFAULT); |
| } |
| |
| private void createCurrentMapFromPreferences() { |
| IPreferenceStore store = Activator.getDefault().getPreferenceStore(); |
| attributes.setString(ATTR_LOGIN_USERNAME, store.getString(ATTR_LOGIN_USERNAME)); |
| attributes.setString(ATTR_CONNECTION_ADDRESS, store.getString(ATTR_CONNECTION_ADDRESS)); |
| attributes.setString(ATTR_CONNECTION_PORT, store.getString(ATTR_CONNECTION_PORT)); |
| } |
| |
| public TargetConfig createTargetConfig() throws CoreException { |
| try { |
| attributes.verifyInt(AttributeNames.CONNECTION_PORT, ATTR_CONNECTION_PORT); |
| attributes.verifyInt(AttributeNames.CONNECTION_TIMEOUT, ATTR_CONNECTION_TIMEOUT); |
| if (attributes.getBoolean(ATTR_LOCALHOST_SELECTION)) { |
| attributes.setString(ATTR_CONNECTION_ADDRESS, "localhost"); //$NON-NLS-1$ |
| } |
| return new TargetConfig(attributes); |
| } catch (IllegalAttributeException e) { |
| throw new CoreException(new Status(Status.ERROR, Activator.getDefault().getBundle().getSymbolicName(), 0, |
| e.getMessage(), e)); |
| } |
| } |
| } |