/* * 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.List; import de.rcenvironment.core.component.api.LoopComponentConstants; import de.rcenvironment.core.component.api.LoopComponentConstants.LoopBehaviorInCaseOfFailure; import de.rcenvironment.core.component.model.api.ComponentDescription; import de.rcenvironment.core.component.validation.api.ComponentValidationMessage; /** * Validator for loop components. * * @author Doreen Seider * @author Jascha Riedel */ public abstract class AbstractLoopComponentValidator extends AbstractComponentValidator { protected abstract List<ComponentValidationMessage> validateLoopComponentSpecific( ComponentDescription componentDescription); @Override protected List<ComponentValidationMessage> validateComponentSpecific(ComponentDescription componentDescription) { List<ComponentValidationMessage> messages = new ArrayList<>(); LoopBehaviorInCaseOfFailure loopBehaviorInCaseOfFailure = LoopBehaviorInCaseOfFailure.fromString( getProperty(componentDescription, LoopComponentConstants.CONFIG_KEY_LOOP_FAULT_TOLERANCE_NAV)); if (loopBehaviorInCaseOfFailure.equals(LoopBehaviorInCaseOfFailure.RerunAndFail)) { if (getProperty(componentDescription, LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_FAIL_NAV) == null || getProperty(componentDescription, LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_FAIL_NAV) .isEmpty()) { messages.add(new ComponentValidationMessage(ComponentValidationMessage.Type.ERROR, LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_FAIL_NAV, "Define maximum of reruns", "Maximum of reruns missing")); } } if (loopBehaviorInCaseOfFailure.equals(LoopBehaviorInCaseOfFailure.RerunAndDiscard)) { if (getProperty(componentDescription, LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_DISCARD_NAV) == null || getProperty(componentDescription, LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_DISCARD_NAV) .isEmpty()) { messages.add(new ComponentValidationMessage(ComponentValidationMessage.Type.ERROR, LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_DISCARD_NAV, "Define maximum of reruns", "Maximum of reruns missing")); } } List<ComponentValidationMessage> loopComponentSpecificMessages = validateLoopComponentSpecific(componentDescription); if (loopComponentSpecificMessages != null) { messages.addAll(loopComponentSpecificMessages); } return messages; } }