001 package org.kuali.rice.krms.dto;
002
003 import org.apache.commons.lang.StringUtils;
004 import org.kuali.rice.krms.api.repository.proposition.PropositionDefinitionContract;
005 import org.kuali.rice.krms.api.repository.proposition.PropositionParameterContract;
006 import org.kuali.rice.krms.api.repository.term.TermDefinition;
007 import org.kuali.rice.krms.impl.ui.TermParameter;
008
009 import java.io.Serializable;
010 import java.util.ArrayList;
011 import java.util.HashMap;
012 import java.util.List;
013 import java.util.Map;
014 import java.util.UUID;
015
016 /**
017 * Created with IntelliJ IDEA.
018 * User: SW
019 * Date: 2012/12/03
020 * Time: 11:41 AM
021 * To change this template use File | Settings | File Templates.
022 */
023 public class PropositionEditor implements PropositionDefinitionContract, Serializable {
024
025 private static final long serialVersionUID = 1L;
026
027 private String key;
028
029 private String id;
030 private String description;
031 private String ruleId;
032 private String compoundOpCode;
033 private String typeId;
034 private String propositionTypeCode;
035 private Long versionNumber;
036
037 private Map<String, String> naturalLanguage = new HashMap<String, String>();
038
039 private List<PropositionParameterEditor> parameters;
040 private List<PropositionEditor> compoundEditors;
041
042 private TermEditor term;
043 private String termParameter;
044 private List<TermParameter> termParameterList = new ArrayList<TermParameter>();
045 private String type;
046 private boolean editMode = false;
047 private boolean newProp = false;
048
049 private String newTermDescription = "new term " + UUID.randomUUID().toString();
050
051 public PropositionEditor() {
052 super();
053 }
054
055 /**
056 * Converts a immutable object to it's mutable bo counterpart
057 *
058 * @param definition immutable object
059 * @return the mutable bo
060 */
061 public PropositionEditor(PropositionDefinitionContract definition) {
062 this.id = definition.getId();
063 this.description = definition.getDescription();
064 this.ruleId = definition.getRuleId();
065
066 this.typeId = definition.getTypeId();
067 this.propositionTypeCode = definition.getPropositionTypeCode();
068 this.parameters = new ArrayList<PropositionParameterEditor>();
069 for (PropositionParameterContract parm : definition.getParameters()) {
070 this.parameters.add(new PropositionParameterEditor(parm));
071 }
072 this.compoundOpCode = definition.getCompoundOpCode();
073 this.compoundEditors = new ArrayList<PropositionEditor>();
074 for (PropositionDefinitionContract prop : definition.getCompoundComponents()) {
075 this.compoundEditors.add(createPropositionEditor(prop));
076 }
077 this.versionNumber = definition.getVersionNumber();
078 }
079
080 public String getKey() {
081 return key;
082 }
083
084 public void setKey(String key) {
085 this.key = key;
086 }
087
088 public String getId() {
089 return id;
090 }
091
092 public String getDescription() {
093 return description;
094 }
095
096 public String getCompoundOpCode() {
097 return compoundOpCode;
098 }
099
100 public void setId(String id) {
101 if (!StringUtils.isBlank(id)) {
102 this.id = id;
103 }
104 }
105
106 public void setDescription(String description) {
107 this.description = description;
108 }
109
110 public void setRuleId(String ruleId) {
111 this.ruleId = ruleId;
112 }
113
114 public void setCompoundOpCode(String compoundOpCode) {
115 this.compoundOpCode = compoundOpCode;
116 }
117
118 public void setParameters(List<PropositionParameterEditor> parameters) {
119 this.parameters = parameters;
120 }
121
122 public void setCompoundEditors(List<PropositionEditor> compoundEditors) {
123 this.compoundEditors = compoundEditors;
124 }
125
126 public List<PropositionEditor> getCompoundEditors() {
127 return compoundEditors;
128 }
129
130 @Override
131 public List<? extends PropositionDefinitionContract> getCompoundComponents() {
132 return compoundEditors;
133 }
134
135 public List<PropositionParameterEditor> getParameters() {
136 return parameters;
137 }
138
139 public String getTypeId() {
140 return typeId;
141 }
142
143 @Override
144 public String getRuleId() {
145 return this.ruleId;
146 }
147
148 public void setPropositionTypeCode(String propositionTypeCode) {
149 this.propositionTypeCode = propositionTypeCode;
150 }
151
152 @Override
153 public String getPropositionTypeCode() {
154 return propositionTypeCode;
155 }
156
157 public void setTypeId(String typeId) {
158 this.typeId = typeId;
159 }
160
161 public String getType() {
162 return type;
163 }
164
165 public void setType(String type) {
166 this.type = type;
167 }
168
169 public boolean isEditMode() {
170 return editMode;
171 }
172
173 public TermEditor getTerm() {
174 return term;
175 }
176
177 public void setTerm(TermEditor term) {
178 this.term = term;
179 }
180
181 public String getTermParameter() {
182 return termParameter;
183 }
184
185 public void setTermParameter(String termParameter) {
186 this.termParameter = termParameter;
187 }
188
189 public List<TermParameter> getTermParameterList() {
190 return termParameterList;
191 }
192
193 public void setTermParameterList(List<TermParameter> termParameterList) {
194 this.termParameterList = termParameterList;
195 }
196
197 public void setEditMode(boolean editMode) {
198 this.editMode = editMode;
199 }
200
201 @Override
202 public Long getVersionNumber() {
203 return this.versionNumber;
204 }
205
206 protected PropositionEditor createPropositionEditor(PropositionDefinitionContract definition) {
207 return new PropositionEditor(definition);
208 }
209
210 public String getNewTermDescription() {
211 return newTermDescription;
212 }
213
214 public boolean isNewProp() {
215 return newProp;
216 }
217
218 public void setNewProp(boolean newProp) {
219 this.newProp = newProp;
220 }
221
222 public Map<String, String> getNaturalLanguage() {
223 return naturalLanguage;
224 }
225
226 public void setNaturalLanguage(Map<String, String> naturalLanguage) {
227 this.naturalLanguage = naturalLanguage;
228 }
229
230 public Map<String, String> getNlParameters() {
231 return new HashMap<String, String>();
232 }
233
234 public String getNaturalLanguageForUsage(String usage){
235 String description = this.getNaturalLanguage().get(usage);
236
237 if (description == null){
238 return StringUtils.EMPTY;
239 }
240
241 return description;
242 }
243 }
244
245