View Javadoc

1   package org.kuali.student.lum.workflow.qualifierresolver;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import org.apache.commons.lang.StringUtils;
7   import org.kuali.rice.kew.engine.RouteContext;
8   import org.kuali.rice.kew.engine.node.RouteNodeUtils;
9   import org.kuali.rice.kim.bo.types.dto.AttributeSet;
10  import org.kuali.rice.student.bo.KualiStudentKimAttributes;
11  
12  public class OrganizationQualifierResolver extends
13  		AbstractOrganizationServiceQualifierResolver {
14      protected static final String ROUTE_NODE_XML_ORG_ID_QUALIFIER_KEY = "organizationIdQualifierKey";
15      protected static final String ROUTE_NODE_XML_USE_NON_DERIVED_ROLES = "useNonDerivedRoles";
16      
17  	@Override
18  	public List<AttributeSet> resolve(RouteContext context) {
19          List<AttributeSet> attributeSets = new ArrayList<AttributeSet>();
20          String orgIdKey = getNodeSpecificOrganizationIdAttributeSetKey(context);
21          for (String orgId : getOrganizationIdsFromDocumentContent(context)) {
22          	AttributeSet attributeSet = new AttributeSet();
23          	attributeSet.put(orgIdKey, orgId);
24          	attributeSet.put(KualiStudentKimAttributes.QUALIFICATION_ORG_ID, orgId);
25          	attributeSets.add(attributeSet);
26          }
27          return attributeSets;
28  	}
29  	
30      public String getNodeSpecificOrganizationIdAttributeSetKey(RouteContext context) {
31          String organizationIdFieldKey = RouteNodeUtils.getValueOfCustomProperty(context.getNodeInstance().getRouteNode(), ROUTE_NODE_XML_ORG_ID_QUALIFIER_KEY);
32          if (StringUtils.isBlank(organizationIdFieldKey)) {
33              if (usesNonDerivedOrganizationRoles(context)) {
34                  throw new RuntimeException("Cannot find required XML element '" + ROUTE_NODE_XML_ORG_ID_QUALIFIER_KEY + "' on the Route Node XML configuration.");
35              }
36          }
37          return organizationIdFieldKey;
38      }
39      
40      public Boolean usesNonDerivedOrganizationRoles(RouteContext context) {
41          String useNonDerivedOrganizationRoles = RouteNodeUtils.getValueOfCustomProperty(context.getNodeInstance().getRouteNode(), ROUTE_NODE_XML_USE_NON_DERIVED_ROLES);
42          if (StringUtils.isNotBlank(useNonDerivedOrganizationRoles)) {
43              return Boolean.valueOf(useNonDerivedOrganizationRoles);
44          }
45          return true;
46      }
47  }