View Javadoc

1   /**
2    * Copyright 2005-2013 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krms.impl.ui;
17  
18  import org.kuali.rice.krad.service.BusinessObjectService;
19  import org.kuali.rice.krad.service.KRADServiceLocator;
20  import org.kuali.rice.krms.api.repository.proposition.PropositionParameterType;
21  import org.kuali.rice.krms.api.repository.proposition.PropositionType;
22  import org.kuali.rice.krms.impl.repository.PropositionBo;
23  import org.kuali.rice.krms.impl.repository.PropositionParameterBo;
24  import org.kuali.rice.krms.impl.repository.TermBo;
25  
26  import java.util.List;
27  
28  /**
29   * abstract data class for the rule tree {@link Node}s
30   * 
31   * @author Kuali Rice Team (rice.collab@kuali.org)
32   *
33   */
34  public class SimplePropositionEditNode extends RuleTreeNode {
35  
36      private static final long serialVersionUID = -5650654824214437325L;
37  
38      public static final String NODE_TYPE = "ruleTreeNode simplePropositionEditNode";
39      protected String parameterDisplayString;
40  
41      public SimplePropositionEditNode(PropositionBo proposition){
42          super(proposition);
43          setupParameterDisplayString();
44      }
45      
46      private void setupParameterDisplayString(){
47          if (proposition != null && proposition.getPropositionTypeCode().equalsIgnoreCase(PropositionType.SIMPLE.getCode())){
48              // Simple Propositions should have 3 parameters ordered in reverse polish notation.
49              // TODO: enhance to get term names for term type parameters.
50              List<PropositionParameterBo> parameters = proposition.getParameters();
51              if (parameters != null && parameters.size() == 3){
52                  setParameterDisplayString(getParamValue(parameters.get(0)) 
53                          + " " + getParamValue(parameters.get(2))
54                          + " " + getParamValue(parameters.get(1)));
55              } else {
56                  // should not happen
57              }
58          }
59      }
60      
61      private String getParamValue(PropositionParameterBo prop){
62          if (PropositionParameterType.TERM.getCode().equalsIgnoreCase(prop.getParameterType())){
63              //TODO: use termBoService
64              String termName = "";
65              String termId = prop.getValue();
66              if (termId != null && termId.length() > 0){
67                  TermBo term = getBoService().findBySinglePrimaryKey(TermBo.class,termId);
68                  if (term != null){
69                      termName = term.getSpecification().getName();
70                  }
71              }
72              return termName;
73          } else {
74              return prop.getValue();
75          }
76      }
77      /**
78       * @return the parameterDisplayString
79       */
80      public String getParameterDisplayString() {
81          return this.parameterDisplayString;
82      }
83  
84      /**
85       * @param parameterDisplayString the parameterDisplayString to set
86       */
87      public void setParameterDisplayString(String parameterDisplayString) {
88          this.parameterDisplayString = parameterDisplayString;
89      }
90  
91      public BusinessObjectService getBoService() {
92          return KRADServiceLocator.getBusinessObjectService();
93      }
94      
95  }