/* * Tanaguru - Automated webpage assessment * Copyright (C) 2008-2015 Tanaguru.org * * This file is part of Tanaguru. * * Tanaguru is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Contact us by mail: tanaguru AT tanaguru DOT org */ package org.tanaguru.webapp.action.voter; import org.tanaguru.webapp.action.Action; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.tanaguru.webapp.action.builder.ActionBuilder; /** * * @author jkowalczyk */ public class ResultActionHandlerImpl implements ActionHandler { private Map<String, ActionVoter> actionAccessibilityVoterMap; public Map<String, ActionVoter> getActionAccessibilityVoterMap() { return actionAccessibilityVoterMap; } public void setActionAccessibilityVoterMap( Map<String, ActionVoter> actionAccessibilityVoterMap) { this.actionAccessibilityVoterMap = actionAccessibilityVoterMap; } private List<ActionBuilder> actionBuilderList; public final void setActionBuilderList(List<ActionBuilder> actionBuilderList) { this.actionBuilderList = actionBuilderList; } @SuppressWarnings("unchecked") public List<Action> getActionList() { List<Action> actionList = new ArrayList<>(); for (ActionBuilder actionBuilder : actionBuilderList) { actionList.add(actionBuilder.build()); } return actionList; } private boolean isVoterInitialised = false; /** * This method initialises each voter with a copy of the contractAction * collection. Each voter, regarding its configuration will enable/disable * each action. */ protected void initialiseVoter() { if (!isVoterInitialised) { for (ActionVoter cav : actionAccessibilityVoterMap.values()) { List<Action> cal = getActionList(); cav.initialize(cal); } isVoterInitialised = true; } } /** * The action list is without condition for the moment * @param object * @return */ @Override public synchronized List<Action> getActionList( Object object) { initialiseVoter(); if (!(object instanceof String)) { return null; } String key = (String)object; ActionVoter actionAccessibilityVoter = chooseActionAccessibilityVoter(key); List<Action> userContractActionList = new ArrayList<Action>(); if (actionAccessibilityVoter != null) { userContractActionList = actionAccessibilityVoter.getActionList(); } return userContractActionList; } /** * * @param product * @return * the ContractActionVoter regarding the product */ private ActionVoter chooseActionAccessibilityVoter(String key) { if (actionAccessibilityVoterMap.containsKey(key)) { return actionAccessibilityVoterMap.get(key); } return null; } }