001    /*
002     * Copyright 2005-2007 The Kuali Foundation
003     * 
004     * 
005     * Licensed under the Educational Community License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * You may obtain a copy of the License at
008     * 
009     * http://www.opensource.org/licenses/ecl2.php
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.kuali.rice.kew.rule;
018    
019    import java.util.ArrayList;
020    import java.util.HashMap;
021    import java.util.Iterator;
022    import java.util.List;
023    import java.util.Map;
024    
025    import org.kuali.rice.kew.engine.RouteContext;
026    import org.kuali.rice.kew.routeheader.DocumentContent;
027    
028    
029    /**
030     * Another test attribute, this one doesn't implement {@link WorkflowAttributeXmlValidator}
031     * 
032     * @author Kuali Rice Team (rice.collab@kuali.org)
033     */
034    public class TestRuleAttributeDuex implements WorkflowAttribute, RoleAttribute {
035            
036            private static final long serialVersionUID = 1L;
037            private static Map roles = new HashMap();
038            private boolean required;
039                    
040        public boolean isMatch(DocumentContent documentContent, List ruleExtensions) {
041            return true;
042        }
043        
044        public List getRoleNames() {
045            List roleNames = new ArrayList();
046            for (Iterator iterator = roles.keySet().iterator(); iterator.hasNext();) {
047                String roleName = (String) iterator.next();
048                roleNames.add(new Role(getClass(), roleName, roleName));
049            }
050            return roleNames;
051        }
052    
053        public List getRuleRows() {
054            return new ArrayList();
055        }
056    
057        public List getRoutingDataRows() {
058            return new ArrayList();
059        }
060    
061        public String getDocContent() {
062            return "<testRuleAttributeContent/>";
063        }
064    
065        public List getRuleExtensionValues() {
066            return new ArrayList();
067        }
068    
069        public List validateRoutingData(Map paramMap) {
070            return new ArrayList();
071        }
072        
073        public String getAttributeLabel(){
074            return "";
075        }
076    
077        public List validateRuleData(Map paramMap) {
078            return new ArrayList();
079        }
080    
081        public void setRequired(boolean required) {
082            this.required = required;
083        }
084    
085        public boolean isRequired() {
086            return required;
087        }
088    
089            public List getQualifiedRoleNames(String roleName, DocumentContent documentContent) {
090                    ArrayList qualifiedRoleNames = new ArrayList();
091                    Map qualifiedRoles = (Map)roles.get(roleName);
092                    if (qualifiedRoles != null) {
093                            qualifiedRoleNames.addAll(qualifiedRoles.keySet());
094                    } else {
095                            throw new IllegalArgumentException("TestRuleAttribute does not support the given role " + roleName);
096                    }
097                    return qualifiedRoleNames;
098            }
099    
100            public ResolvedQualifiedRole resolveQualifiedRole(RouteContext routeContext, String roleName, String qualifiedRole) {
101                    ResolvedQualifiedRole resolved = new ResolvedQualifiedRole();
102                    Map qualifiedRoles = (Map)roles.get(roleName);
103                    if (qualifiedRoles != null) {
104                            List recipients = (List)qualifiedRoles.get(qualifiedRole);
105                            if (recipients != null) {
106                                    resolved.setQualifiedRoleLabel(qualifiedRole);
107                                    resolved.setRecipients(recipients);
108                            } else {
109                                    throw new IllegalArgumentException("TestRuleAttribute does not support the qualified role " + qualifiedRole);
110                            }
111                    } else {
112                            throw new IllegalArgumentException("TestRuleAttribute does not support the given role " + roleName);
113                    }
114                    return resolved;
115            }
116            
117            public static void addRole(String roleName) {
118                    roles.put(roleName, new HashMap());
119            }
120            
121            public static void removeRole(String roleName) {
122                    roles.remove(roleName);
123            }
124            
125            public static Map getRole(String roleName) {
126                    return (Map)roles.get(roleName);
127            }
128            
129            public static void addQualifiedRole(String roleName, String qualifiedRoleName) {
130                    getRole(roleName).put(qualifiedRoleName, new ArrayList());
131            }
132            
133            public static void removeQualifiedRole(String roleName, String qualifiedRoleName) {
134                    getRole(roleName).remove(qualifiedRoleName);
135            }
136            
137            public static void setRecipients(String roleName, String qualifiedRoleName, List recipients) {
138                    Map qualifiedRoles = getRole(roleName);
139                    qualifiedRoles.put(qualifiedRoleName, recipients);
140            }
141            
142            public static List getRecipients(String roleName, String qualifiedRoleName) {
143                    Map qualifiedRoles = getRole(roleName);
144                    return (List)qualifiedRoles.get(qualifiedRoleName);
145            }
146    }