/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.configuration;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.naming.ConfigurationException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import de.rcenvironment.core.communication.sshconnection.InitialSshConnectionConfig;
import de.rcenvironment.core.configuration.ConfigurationSegment;
/**
* Class providing the configuration for outgoing SSH connections.
*
* @author Brigitte Boden
*/
public class SshConnectionsConfiguration {
private List<InitialSshConnectionConfig> providedConnectionConfigs = new ArrayList<InitialSshConnectionConfig>();
private final Log log = LogFactory.getLog(getClass());
/**
* Default constructor for bean mapping and tests.
*/
public SshConnectionsConfiguration() {}
public SshConnectionsConfiguration(ConfigurationSegment configuration) {
Map<String, ConfigurationSegment> connectionElements = configuration.listElements("sshConnections");
if (connectionElements != null) {
for (Entry<String, ConfigurationSegment> entry : connectionElements.entrySet()) {
ConfigurationSegment configPart = entry.getValue();
String id = entry.getKey();
InitialSshConnectionConfig connection;
try {
connection = parseConnectionEntry(configPart);
connection.setId(id);
providedConnectionConfigs.add(connection);
} catch (ConfigurationException e) {
log.error("Error in connection entry " + entry.getKey(), e);
}
}
}
}
private InitialSshConnectionConfig parseConnectionEntry(ConfigurationSegment connectionPart) throws ConfigurationException {
InitialSshConnectionConfig connection = new InitialSshConnectionConfig();
connection.setHost(connectionPart.getString("host"));
connection.setPort(connectionPart.getLong("port").intValue());
connection.setUser(connectionPart.getString("loginName"));
connection.setDisplayName(connectionPart.getString("displayName"));
connection.setKeyFileLocation(connectionPart.getString("keyfileLocation"));
connection.setUsePassphrase(!connectionPart.getBoolean("noPassphrase", false));
return connection;
}
public List<InitialSshConnectionConfig> getProvidedConnectionConfigs() {
return providedConnectionConfigs;
}
}