001package org.kuali.rice.krms.keyvalues; 002 003import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader; 004import org.kuali.rice.krms.api.KrmsConstants; 005import org.kuali.rice.krms.api.repository.RuleManagementService; 006import org.kuali.rice.krms.api.repository.language.NaturalLanguageTemplate; 007import org.kuali.rice.krms.api.repository.language.NaturalLanguageUsage; 008import org.kuali.rice.krms.api.repository.type.KrmsTypeRepositoryService; 009import org.kuali.rice.krms.api.repository.typerelation.TypeTypeRelation; 010import org.kuali.rice.krms.impl.repository.KrmsRepositoryServiceLocator; 011import org.kuali.rice.krms.impl.repository.NaturalLanguageTemplateBoService; 012import org.kuali.rice.krms.impl.repository.NaturalLanguageUsageBoService; 013import org.kuali.rice.krms.impl.repository.TypeTypeRelationBoService; 014import org.kuali.student.enrollment.class2.courseoffering.service.decorators.PermissionServiceConstants; 015import org.kuali.student.krms.naturallanguage.util.KsKrmsConstants; 016 017import javax.xml.namespace.QName; 018import java.io.Serializable; 019import java.util.HashMap; 020import java.util.List; 021import java.util.Map; 022import java.util.Set; 023 024public class RuleInstructionKeyValues implements Serializable { 025 026 private static final long serialVersionUID = 1L; 027 028 private transient RuleManagementService ruleManagementService; 029 030 031 public Map<String, String> getKeyValues(Set<String> ruleTypeIds) { 032 Map<String, String> keyValuesInstruction = new HashMap<String, String>(); 033 NaturalLanguageUsage usageInstruction = getRuleManagementService().getNaturalLanguageUsageByNameAndNamespace(PermissionServiceConstants.KS_SYS_NAMESPACE, KsKrmsConstants.KRMS_NL_TYPE_INSTRUCTION); 034 //Use Type Type Relation to get Rule Types 035 try { 036 for(String ruleTypeId : ruleTypeIds) { 037 NaturalLanguageTemplate templateInstruction = null; 038 try{ 039 templateInstruction = getRuleManagementService().findNaturalLanguageTemplateByLanguageCodeTypeIdAndNluId("en", ruleTypeId, usageInstruction.getId()); 040 }catch (IndexOutOfBoundsException e){ 041 //Ignore, rice error in NaturalLanguageTemplateBoServiceImpl line l 042 } 043 044 if (templateInstruction != null) { 045 keyValuesInstruction.put(ruleTypeId, templateInstruction.getTemplate()); 046 } else { 047 keyValuesInstruction.put(ruleTypeId, KsKrmsConstants.KRMS_NL_TYPE_INSTRUCTION); 048 } 049 }; 050 } catch (Exception ex) {} 051 return keyValuesInstruction; 052 } 053 054 public RuleManagementService getRuleManagementService() { 055 if (ruleManagementService == null) { 056 ruleManagementService = (RuleManagementService) GlobalResourceLoader.getService(new QName(KrmsConstants.Namespaces.KRMS_NAMESPACE_2_0, "ruleManagementService")); 057 } 058 return ruleManagementService; 059 } 060}