Coverage Report - org.kuali.rice.kew.docsearch.DocumentSearchCustomizationServiceImpl
 
Classes in this File Line Coverage Branch Coverage Complexity
DocumentSearchCustomizationServiceImpl
0%
0/31
0%
0/18
5
 
 1  
 package org.kuali.rice.kew.docsearch;
 2  
 
 3  
 import org.apache.commons.lang.StringUtils;
 4  
 import org.apache.log4j.Logger;
 5  
 import org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
 6  
 import org.kuali.rice.core.api.exception.RiceRemoteServiceConnectionException;
 7  
 import org.kuali.rice.core.api.uif.RemotableAttributeField;
 8  
 import org.kuali.rice.kew.api.document.attribute.AttributeFields;
 9  
 import org.kuali.rice.kew.docsearch.xml.GenericXMLSearchableAttribute;
 10  
 import org.kuali.rice.kew.framework.docsearch.DocumentSearchCustomizationService;
 11  
 import org.kuali.rice.kew.framework.docsearch.SearchableAttribute;
 12  
 import org.kuali.rice.kew.rule.bo.RuleAttribute;
 13  
 import org.kuali.rice.kew.rule.service.RuleAttributeService;
 14  
 import org.kuali.rice.kew.util.KEWConstants;
 15  
 
 16  
 import java.util.ArrayList;
 17  
 import java.util.Collections;
 18  
 import java.util.List;
 19  
 
 20  
 /**
 21  
  * TODO...
 22  
  * 
 23  
  */
 24  0
 public class DocumentSearchCustomizationServiceImpl implements DocumentSearchCustomizationService {
 25  
 
 26  0
     private static final Logger LOG = Logger.getLogger(DocumentSearchCustomizationServiceImpl.class);
 27  
 
 28  
     private RuleAttributeService ruleAttributeService;
 29  
 
 30  
     @Override
 31  
     public List<AttributeFields> getSearchAttributeFields(String documentTypeName, List<String> searchableAttributeNames) {
 32  0
         if (StringUtils.isBlank(documentTypeName)) {
 33  0
             throw new RiceIllegalArgumentException("documentTypeName was null or blank");
 34  
         }
 35  0
         if (searchableAttributeNames == null || searchableAttributeNames.isEmpty()) {
 36  0
             return Collections.emptyList();
 37  
         }
 38  
         try {
 39  0
             List<AttributeFields> searchAttributeFields = new ArrayList<AttributeFields>();
 40  0
             for (String searchableAttributeName : searchableAttributeNames) {
 41  0
                 RuleAttribute ruleAttribute = getRuleAttributeService().findByName(searchableAttributeName);
 42  0
                 if (ruleAttribute == null) {
 43  0
                     throw new RiceIllegalArgumentException("Failed to locate a searchable attribute with the given name: " + searchableAttributeName);
 44  
                 }
 45  0
                 SearchableAttribute searchableAttribute = loadSearchableAttribute(ruleAttribute);
 46  
 
 47  
                 // TODO temporary, remove once SearchableAttributeOld has been removed from the picture
 48  0
                 if (searchableAttribute == null) continue;
 49  
 
 50  0
                 List<RemotableAttributeField> attributeSearchFields = searchableAttribute.getSearchFields(documentTypeName);
 51  0
                 searchAttributeFields.add(AttributeFields.create(searchableAttributeName, attributeSearchFields));
 52  0
             }
 53  0
             return Collections.unmodifiableList(searchAttributeFields);
 54  0
         } catch (RiceRemoteServiceConnectionException e) {
 55  0
             LOG.warn("Unable to connect to load searchable attributes for document type: " + documentTypeName, e);
 56  0
             return Collections.emptyList();
 57  
         }
 58  
     }
 59  
 
 60  
     protected SearchableAttribute loadSearchableAttribute(RuleAttribute ruleAttribute) {
 61  0
         Object ruleAttributeService = getRuleAttributeService().loadRuleAttributeService(ruleAttribute);
 62  0
         if (ruleAttributeService == null) {
 63  0
             throw new RiceIllegalArgumentException("Failed to load search attribute for: " + ruleAttribute);
 64  
         }
 65  
 
 66  
         // TODO temporary, remove once SearchableAttributeOld has been removed from the picture
 67  0
         if (!(ruleAttributeService instanceof SearchableAttribute)) {
 68  0
             return null;
 69  
         }
 70  
 
 71  0
         if (KEWConstants.SEARCHABLE_XML_ATTRIBUTE_TYPE.equals(ruleAttribute.getType())) {
 72  
             //required to make it work because ruleAttribute XML is required to construct fields
 73  0
             ((GenericXMLSearchableAttribute) ruleAttributeService).setRuleAttribute(ruleAttribute);
 74  
         }
 75  0
         return (SearchableAttribute)ruleAttributeService;
 76  
     }
 77  
 
 78  
     protected RuleAttributeService getRuleAttributeService() {
 79  0
         return ruleAttributeService;
 80  
     }
 81  
 
 82  
     public void setRuleAttributeService(RuleAttributeService ruleAttributeService) {
 83  0
         this.ruleAttributeService = ruleAttributeService;
 84  0
     }
 85  
 
 86  
 }