/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.web.beans.departmentSelection; import java.net.InetAddress; import java.util.List; import org.esupportail.helpdesk.domain.DomainService; import org.esupportail.helpdesk.domain.beans.User; import org.esupportail.helpdesk.domain.departmentSelection.DepartmentSelectionCompileError; import org.esupportail.helpdesk.domain.departmentSelection.UserDefinedCondition; import org.esupportail.helpdesk.domain.departmentSelection.UserDefinedConditions; import org.esupportail.helpdesk.web.beans.AbstractFirstLastNode; /** * The node of user-defined conditions. */ public class UserDefinedConditionsNode extends AbstractFirstLastNode { /** * The serialization id. */ private static final long serialVersionUID = 3296479150461585008L; /** * Bean constructor. * @param userDefinedConditions */ @SuppressWarnings("unchecked") public UserDefinedConditionsNode( final UserDefinedConditions userDefinedConditions) { super("userDefinedConditions", "", true); int index = 0; for (String name : userDefinedConditions.getConditionNames()) { UserDefinedCondition userDefinedCondition = null; try { userDefinedCondition = userDefinedConditions.getUserDefinedCondition(name); } catch (DepartmentSelectionCompileError e) { // should never happen } UserDefinedConditionNode userDefinedConditionNode = new UserDefinedConditionNode(index, userDefinedCondition); getChildren().add(userDefinedConditionNode); setLeaf(false); index++; } markFirstAndLastChildNodes(); } /** * @return the sub nodes */ @SuppressWarnings({ "unchecked", "cast" }) public List<UserDefinedConditionNode> getUserDefinedConditionNodes() { return (List<UserDefinedConditionNode>) getChildren(); } /** * Evaluate the associated condition. * @param domainService * @param user * @param client */ public void eval( final DomainService domainService, final User user, final InetAddress client) { for (UserDefinedConditionNode userDefinedConditionNode : getUserDefinedConditionNodes()) { userDefinedConditionNode.eval(domainService, user, client); } } /** * Reset the evaluation. */ public void resetEval() { for (UserDefinedConditionNode userDefinedConditionNode : getUserDefinedConditionNodes()) { userDefinedConditionNode.resetEval(); } } }