View Javadoc
1   /**
2    * Copyright 2005-2014 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.data.DataObjectService;
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 {@link org.kuali.rice.krms.impl.ui.RuleTreeNode}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 = getDataObjectService().find(TermBo.class, termId);
68  
69                  if (term != null){
70                      termName = term.getSpecification().getName();
71                  }
72              }
73              return termName;
74          } else {
75              return prop.getValue();
76          }
77      }
78      /**
79       * @return the parameterDisplayString
80       */
81      public String getParameterDisplayString() {
82          return this.parameterDisplayString;
83      }
84  
85      /**
86       * @param parameterDisplayString the parameterDisplayString to set
87       */
88      public void setParameterDisplayString(String parameterDisplayString) {
89          this.parameterDisplayString = parameterDisplayString;
90      }
91  
92      public DataObjectService getDataObjectService() {
93          return KRADServiceLocator.getDataObjectService();
94      }
95      
96  }