/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.validation.internal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.LogFactory;
import de.rcenvironment.core.component.api.ComponentConstants;
import de.rcenvironment.core.component.model.api.ComponentDescription;
import de.rcenvironment.core.component.validation.api.ComponentValidationMessage;
import de.rcenvironment.core.component.validation.api.ComponentValidatorListService;
import de.rcenvironment.core.component.validation.spi.ComponentValidator;
/**
* Implementation of the {@link ComponentValidatorListService}.
*
* @author Jascha Riedel
*
*/
public class ComponentValidatorListServiceImpl implements ComponentValidatorListService {
private Map<String, ComponentValidator> validatorMap = new HashMap<>();
@Override
public List<ComponentValidationMessage> validateComponentDescription(ComponentDescription componentDescription,
boolean onWorkflowStart) {
String identifier = componentDescription.getComponentInterface().getIdentifier()
.split(ComponentConstants.ID_SEPARATOR)[0];
if (validatorMap.containsKey(identifier)) {
return validatorMap.get(identifier).validate(componentDescription, onWorkflowStart);
} else {
LogFactory.getLog(this.getClass()).debug("There is no validator registered for the identifier: "
+ identifier + ". Default Validator used for: " + componentDescription.getName());
return validatorMap.get(DefaultComponentValidator.DEFAULT_COMPONENT_VALIDATOR_ID)
.validate(componentDescription, onWorkflowStart);
}
}
/**
* Bind method to add the a componentValidator.
*
* @param componentValidator {@link ComponentValidator} to add
*/
public void addComponentValidator(ComponentValidator componentValidator) {
validatorMap.put(componentValidator.getIdentifier(), componentValidator);
}
/**
* Unbind method to remove a componentValidator.
*
* @param componentValidator {@link ComponentValidator} to remove
*/
public void removeComponentValidator(ComponentValidator componentValidator) {
validatorMap.remove(componentValidator.getIdentifier());
}
}