/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.domain.departmentSelection.conditions; import java.util.ArrayList; import java.util.List; import org.esupportail.helpdesk.domain.departmentSelection.DepartmentSelectionCompileError; import org.esupportail.helpdesk.domain.departmentSelection.UserDefinedConditions; /** * This abstract class represents AND/OR operator. */ @SuppressWarnings("serial") public abstract class AbstractAndOrCondition extends AbstractCondition { /** * a list of conditions. */ private List<Condition> conditions; /** * Empty constructor (for Digester). */ protected AbstractAndOrCondition() { super(); this.conditions = new ArrayList<Condition>(); } /** * @return the operator used by toString() */ protected abstract String getToStringOperator(); /** * @see java.lang.Object#toString() */ @Override public String toString() { if (conditions.isEmpty()) { return "<" + getToStringOperator() + " />"; } if (conditions.size() == 1) { return conditions.get(0).toString(); } String str = "<" + getToStringOperator() + ">"; for (Condition condition : conditions) { str += condition; } str += "</" + getToStringOperator() + ">"; return str; } /** * Add a condition. * @param condition the condition */ public void addCondition( final Condition condition) { conditions.add(condition); } /** * @return the check error message */ protected abstract String getCheckErrorMessage(); /** * @see org.esupportail.helpdesk.domain.departmentSelection.conditions.AbstractCondition#checkInternal() */ @Override public void checkInternal() throws DepartmentSelectionCompileError { if (conditions.isEmpty()) { throw new DepartmentSelectionCompileError(getCheckErrorMessage()); } } /** * @throws DepartmentSelectionCompileError * @see org.esupportail.helpdesk.domain.departmentSelection.conditions.AbstractCondition#compileInternal( * org.esupportail.helpdesk.domain.departmentSelection.UserDefinedConditions) */ @Override public void compileInternal( final UserDefinedConditions userDefinedConditions) throws DepartmentSelectionCompileError { for (Condition condition : conditions) { condition.compile(userDefinedConditions); } } /** * @see org.esupportail.helpdesk.domain.departmentSelection.conditions.Condition#getSubConditions() */ @Override public List<Condition> getSubConditions() { return conditions; } /** * @see org.esupportail.helpdesk.domain.departmentSelection.conditions.Condition * #refactorNamedConditions(java.lang.String, java.lang.String) */ @Override public void refactorNamedConditions( final String oldName, final String newName) { for (Condition condition : conditions) { condition.refactorNamedConditions(oldName, newName); } } }