001package org.kuali.rice.krms.tree; 002 003import org.apache.commons.lang.StringEscapeUtils; 004import org.apache.commons.lang.StringUtils; 005import org.kuali.rice.krms.api.repository.NaturalLanguageTree; 006import org.kuali.rice.krms.api.repository.RuleManagementService; 007import org.kuali.rice.krms.api.repository.language.NaturalLanguageUsage; 008import org.kuali.rice.krms.api.repository.proposition.PropositionDefinition; 009import org.kuali.rice.krms.api.repository.proposition.PropositionDefinitionContract; 010import org.kuali.rice.krms.api.repository.rule.RuleDefinitionContract; 011import org.kuali.rice.krms.dto.PropositionEditor; 012import org.kuali.rice.krms.dto.RuleEditor; 013import org.kuali.student.enrollment.class1.krms.dto.EnrolPropositionEditor; 014import org.kuali.student.enrollment.class1.krms.dto.EnrolRuleEditor; 015import org.kuali.student.enrollment.class2.courseoffering.service.decorators.PermissionServiceConstants; 016import org.kuali.student.krms.naturallanguage.util.KsKrmsConstants; 017 018import java.io.Serializable; 019import java.util.Iterator; 020import java.util.LinkedList; 021import 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 */ 030public 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}