001 package org.kuali.rice.krms.tree; 002 003 import org.apache.commons.lang.StringEscapeUtils; 004 import org.apache.commons.lang.StringUtils; 005 import org.kuali.rice.krms.api.repository.NaturalLanguageTree; 006 import org.kuali.rice.krms.api.repository.RuleManagementService; 007 import org.kuali.rice.krms.api.repository.language.NaturalLanguageUsage; 008 import org.kuali.rice.krms.api.repository.proposition.PropositionDefinition; 009 import org.kuali.rice.krms.api.repository.proposition.PropositionDefinitionContract; 010 import org.kuali.rice.krms.api.repository.rule.RuleDefinitionContract; 011 import org.kuali.rice.krms.dto.PropositionEditor; 012 import org.kuali.rice.krms.dto.RuleEditor; 013 import org.kuali.student.enrollment.class1.krms.dto.EnrolPropositionEditor; 014 import org.kuali.student.enrollment.class1.krms.dto.EnrolRuleEditor; 015 import org.kuali.student.enrollment.class2.courseoffering.service.decorators.PermissionServiceConstants; 016 import org.kuali.student.krms.naturallanguage.util.KsKrmsConstants; 017 018 import java.io.Serializable; 019 import java.util.Iterator; 020 import java.util.LinkedList; 021 import java.util.Queue; 022 023 /** 024 * Created with IntelliJ IDEA. 025 * User: SW 026 * Date: 2013/02/25 027 * Time: 2:12 PM 028 * To change this template use File | Settings | File Templates. 029 */ 030 public abstract class AbstractTreeBuilder implements TreeBuilder { 031 032 private RuleManagementService ruleManagementService; 033 034 public RuleManagementService getRuleManagementService() { 035 return ruleManagementService; 036 } 037 038 public void setRuleManagementService(RuleManagementService ruleManagementService) { 039 this.ruleManagementService = ruleManagementService; 040 } 041 042 protected String buildNodeLabel(RuleDefinitionContract rule, PropositionDefinitionContract prop){ 043 return StringEscapeUtils.escapeHtml(this.getDescription(prop)); 044 } 045 046 protected String getDescription(PropositionDefinitionContract proposition) { 047 if (proposition == null) { 048 return StringUtils.EMPTY; 049 } 050 051 //Return translated nl if exist. 052 if (proposition instanceof PropositionEditor){ 053 PropositionEditor editor = (PropositionEditor) proposition; 054 return editor.getNaturalLanguageForUsage(this.getNaturalLanguageUsageKey()); 055 } 056 057 //Return the description 058 if (proposition.getDescription() != null){ 059 return proposition.getDescription(); 060 } 061 062 return StringUtils.EMPTY; 063 } 064 065 protected String getPropositionPrefix(RuleEditor rule, PropositionEditor prop){ 066 if (rule == null){ 067 return StringUtils.EMPTY; 068 } 069 070 //Add the proposition with alpha code in the map if it doesn't already exist. 071 if (null == prop.getKey()) { 072 prop.setKey((String) rule.getAlpha().next()); 073 } 074 075 //Build the prefix. 076 return "<b>" + prop.getKey() + ".</b> "; 077 } 078 079 public String getNaturalLanguageUsageKey(){ 080 return KsKrmsConstants.KRMS_NL_PREVIEW; 081 } 082 083 }