001 package org.kuali.rice.krms.keyvalues; 002 003 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader; 004 import org.kuali.rice.krms.api.KrmsConstants; 005 import org.kuali.rice.krms.api.repository.RuleManagementService; 006 import org.kuali.rice.krms.api.repository.language.NaturalLanguageTemplate; 007 import org.kuali.rice.krms.api.repository.language.NaturalLanguageUsage; 008 import org.kuali.rice.krms.api.repository.type.KrmsTypeRepositoryService; 009 import org.kuali.rice.krms.api.repository.typerelation.TypeTypeRelation; 010 import org.kuali.rice.krms.impl.repository.KrmsRepositoryServiceLocator; 011 import org.kuali.rice.krms.impl.repository.NaturalLanguageTemplateBoService; 012 import org.kuali.rice.krms.impl.repository.NaturalLanguageUsageBoService; 013 import org.kuali.rice.krms.impl.repository.TypeTypeRelationBoService; 014 import org.kuali.student.enrollment.class2.courseoffering.service.decorators.PermissionServiceConstants; 015 import org.kuali.student.krms.naturallanguage.util.KsKrmsConstants; 016 017 import javax.xml.namespace.QName; 018 import java.io.Serializable; 019 import java.util.HashMap; 020 import java.util.List; 021 import java.util.Map; 022 import java.util.Set; 023 024 public 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 }