/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.validation.spi;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import de.rcenvironment.core.component.executor.SshExecutorConstants;
import de.rcenvironment.core.component.model.api.ComponentDescription;
import de.rcenvironment.core.component.validation.api.ComponentValidationMessage;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* A {@link AbstractWorkflowNodeValidator} implementation to validate cluster
* component configuration.
*
* @author Doreen Seider
* @author Jascha Riedel
*/
public abstract class AbstractSshExecutorComponentValidator extends AbstractComponentValidator {
/**
* Return null if there are no validation steps necessary.
*
* @param componentDescription
* @return
*/
protected abstract List<ComponentValidationMessage> validateSshComponentSpecific(
ComponentDescription componentDescription);
@Override
protected List<ComponentValidationMessage> validateComponentSpecific(ComponentDescription componentDescription) {
final List<ComponentValidationMessage> messages = new ArrayList<>();
messages.addAll(checkIfStringIsConfigured(componentDescription, SshExecutorConstants.CONFIG_KEY_HOST));
messages.addAll(checkIfStringIsConfigured(componentDescription, SshExecutorConstants.CONFIG_KEY_PORT));
messages.addAll(checkIfStringIsConfigured(componentDescription, SshExecutorConstants.CONFIG_KEY_SANDBOXROOT));
messages.addAll(checkIfStringIsConfigured(componentDescription, SshExecutorConstants.CONFIG_KEY_SCRIPT));
List<ComponentValidationMessage> componentSpecificMessages = validateSshComponentSpecific(componentDescription);
if (componentSpecificMessages != null) {
messages.addAll(validateSshComponentSpecific(componentDescription));
}
return messages;
}
protected List<ComponentValidationMessage> checkIfStringIsConfigured(ComponentDescription componentDescription,
String configurationKey) {
final List<ComponentValidationMessage> messages = new LinkedList<>();
final String value = getProperty(componentDescription, configurationKey);
if (value == null || value.isEmpty()) {
ComponentValidationMessage validationMessage = new ComponentValidationMessage(
ComponentValidationMessage.Type.ERROR, configurationKey,
StringUtils.format("%s must be configured", configurationKey),
StringUtils.format("%s must be configured", configurationKey));
messages.add(validationMessage);
}
return messages;
}
}