1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.rule;
17
18 import org.apache.commons.lang.ObjectUtils;
19 import org.kuali.rice.core.api.util.collect.CollectionUtils;
20 import org.kuali.rice.kew.api.rule.RuleExtension;
21 import org.kuali.rice.kew.api.rule.RuleExtensionContract;
22 import org.kuali.rice.kew.rule.bo.RuleTemplateAttributeBo;
23
24 import javax.persistence.CascadeType;
25 import javax.persistence.Column;
26 import javax.persistence.Entity;
27 import javax.persistence.FetchType;
28 import javax.persistence.GeneratedValue;
29 import javax.persistence.Id;
30 import javax.persistence.JoinColumn;
31 import javax.persistence.ManyToOne;
32 import javax.persistence.OneToMany;
33 import javax.persistence.Table;
34 import javax.persistence.Version;
35 import java.io.Serializable;
36 import java.util.ArrayList;
37 import java.util.HashMap;
38 import java.util.List;
39 import java.util.Map;
40
41
42
43
44
45
46
47
48
49
50
51
52 @Entity
53 @Table(name="KREW_RULE_EXT_T")
54 public class RuleExtensionBo implements RuleExtensionContract, Serializable {
55
56 private static final long serialVersionUID = 8178135296413950516L;
57
58 @Id
59 @GeneratedValue(generator="KREW_RTE_TMPL_S")
60 @Column(name="RULE_EXT_ID")
61 private String ruleExtensionId;
62
63 @Column(name="RULE_TMPL_ATTR_ID", insertable=false, updatable=false)
64 private String ruleTemplateAttributeId;
65
66 @Column(name="RULE_ID", insertable = false, updatable = false)
67 private String ruleBaseValuesId;
68
69
70 @Version
71 @Column(name="VER_NBR")
72 private Long versionNumber;
73
74 @ManyToOne(fetch=FetchType.EAGER)
75 @JoinColumn(name="RULE_ID", nullable = false)
76 private RuleBaseValues ruleBaseValues;
77
78 @ManyToOne(fetch=FetchType.EAGER)
79 @JoinColumn(name="RULE_TMPL_ATTR_ID")
80 private RuleTemplateAttributeBo ruleTemplateAttribute;
81
82 @OneToMany(fetch=FetchType.EAGER, cascade={CascadeType.ALL}, mappedBy="extension")
83 private List<RuleExtensionValue> extensionValues;
84
85 public RuleExtensionBo() {
86 extensionValues = new ArrayList<RuleExtensionValue>();
87 }
88
89 public List<RuleExtensionValue> getExtensionValues() {
90 return extensionValues;
91 }
92
93 public void setExtensionValues(List<RuleExtensionValue> extensionValues) {
94 this.extensionValues = extensionValues;
95 }
96
97 @Override
98 public RuleTemplateAttributeBo getRuleTemplateAttribute() {
99 return ruleTemplateAttribute;
100 }
101
102 @Override
103 public Map<String, String> getExtensionValuesMap() {
104 Map<String, String> extensions = new HashMap<String, String>();
105 for (RuleExtensionValue value : getExtensionValues()) {
106 extensions.put(value.getKey(), value.getValue());
107 }
108 return extensions;
109 }
110
111 public void setRuleTemplateAttribute(RuleTemplateAttributeBo ruleTemplateAttribute) {
112 this.ruleTemplateAttribute = ruleTemplateAttribute;
113 }
114
115 public RuleExtensionValue getRuleExtensionValue(int index) {
116 while (getExtensionValues().size() <= index) {
117 getExtensionValues().add(new RuleExtensionValue());
118 }
119 return (RuleExtensionValue) getExtensionValues().get(index);
120 }
121
122 public RuleBaseValues getRuleBaseValues() {
123 return ruleBaseValues;
124 }
125
126 public void setRuleBaseValues(RuleBaseValues ruleBaseValues) {
127 this.ruleBaseValues = ruleBaseValues;
128 }
129
130 public Long getVersionNumber() {
131 return versionNumber;
132 }
133
134 public void setVersionNumber(Long versionNumber) {
135 this.versionNumber = versionNumber;
136 }
137
138 public String getRuleBaseValuesId() {
139 return ruleBaseValuesId;
140 }
141
142 public void setRuleBaseValuesId(String ruleBaseValuesId) {
143 this.ruleBaseValuesId = ruleBaseValuesId;
144 }
145
146 public String getRuleExtensionId() {
147 return ruleExtensionId;
148 }
149
150 public void setRuleExtensionId(String ruleExtensionId) {
151 this.ruleExtensionId = ruleExtensionId;
152 }
153
154 public String getRuleTemplateAttributeId() {
155 return ruleTemplateAttributeId;
156 }
157
158 public void setRuleTemplateAttributeId(String ruleTemplateAttributeId) {
159 this.ruleTemplateAttributeId = ruleTemplateAttributeId;
160 }
161
162 public boolean equals(Object o) {
163 if (o == null) return false;
164 if (!(o instanceof RuleExtensionBo)) return false;
165 RuleExtensionBo pred = (RuleExtensionBo) o;
166 return ObjectUtils.equals(ruleBaseValues.getRuleTemplate(), pred.getRuleBaseValues().getRuleTemplate()) &&
167 ObjectUtils.equals(ruleTemplateAttribute, pred.getRuleTemplateAttribute()) &&
168 CollectionUtils.collectionsEquivalent(extensionValues, pred.getExtensionValues());
169 }
170
171 public String toString() {
172 return "[RuleExtension:"
173 + " ruleExtensionId=" + ruleExtensionId
174 + ", ruleTemplateAttributeId=" + ruleTemplateAttributeId
175 + ", ruleBaseValuesId=" + ruleBaseValuesId
176 + ", ruleBaseValues=" + ruleBaseValues
177 + ", ruleTemplateAttribute=" + ruleTemplateAttributeId
178 + ", versionNumber=" + versionNumber
179 + "]";
180 }
181
182
183
184
185
186
187 public static RuleExtension to(RuleExtensionBo bo) {
188 if (bo == null) {
189 return null;
190 }
191 return RuleExtension.Builder.create(bo).build();
192 }
193
194 }