1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package ch.hortis.sonar.model;
21
22 import org.apache.commons.lang.StringUtils;
23 import org.apache.commons.lang.builder.EqualsBuilder;
24 import org.apache.commons.lang.builder.HashCodeBuilder;
25 import org.apache.commons.lang.builder.ReflectionToStringBuilder;
26
27 import javax.persistence.*;
28 import java.io.Serializable;
29 import java.util.ArrayList;
30 import java.util.List;
31
32 @Entity
33 @Table(name = "rule_failures")
34 public class RuleFailure implements Serializable {
35
36 private static final long serialVersionUID = 6573631005994829171L;
37
38 public static final int MESSAGE_COLUMN_SIZE = 500;
39
40 @Id
41 @Column(name = "id")
42 @SequenceGenerator(name = "RULE_FAILURES_SEQ", sequenceName = "RULE_FAILURES_SEQ")
43 @GeneratedValue(strategy = GenerationType.AUTO, generator = "RULE_FAILURES_SEQ")
44 private Integer id;
45
46 @Column(name = "snapshot_id")
47 protected Integer snapshotId;
48
49 @ManyToOne(fetch = FetchType.EAGER)
50 @JoinColumn(name = "rule_id")
51 private Rule rule;
52
53 @OneToMany(mappedBy = "ruleFailure", fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
54 private List<RuleFailureParam> params;
55
56 @Column(name = "failure_level", updatable = false, nullable = false)
57 @Enumerated(EnumType.ORDINAL)
58 private RuleFailureLevel failureLevel;
59
60 @Column(name = "message", updatable = false, nullable = true, length = MESSAGE_COLUMN_SIZE)
61 private String message;
62
63 public RuleFailure() {
64 }
65
66 public RuleFailure(Rule rule, RuleFailureLevel level) {
67 this.rule = rule;
68 this.failureLevel = level;
69 this.params = new ArrayList<RuleFailureParam>();
70 }
71
72 public RuleFailure(Rule rule, RuleFailureLevel level, Snapshot snapshot) {
73 this.rule = rule;
74 this.failureLevel = level;
75 this.params = new ArrayList<RuleFailureParam>();
76 this.snapshotId = snapshot.getId();
77 }
78
79 public String getMessage() {
80 return message;
81 }
82
83 public void setMessage(String message) {
84 this.message = StringUtils.abbreviate(message, MESSAGE_COLUMN_SIZE);
85 }
86
87 public Integer getId() {
88 return id;
89 }
90
91 public void setId(Integer id) {
92 this.id = id;
93 }
94
95 public void setSnapshot(Snapshot snapshot) {
96 this.snapshotId = snapshot.getId();
97 for (RuleFailureParam param : params) {
98 param.setSnapshot(snapshot);
99 }
100 }
101
102 public RuleFailureLevel getLevel() {
103 return failureLevel;
104 }
105
106 public void setLevel(RuleFailureLevel level) {
107 this.failureLevel = level;
108 }
109
110 public Rule getRule() {
111 return rule;
112 }
113
114 public void setRule(Rule rule) {
115 this.rule = rule;
116 }
117
118 public List<RuleFailureParam> getParameters() {
119 return params;
120 }
121
122 public void setParameters(List<RuleFailureParam> ruleFailureParams) {
123 this.params = ruleFailureParams;
124 }
125
126 public RuleFailureParam addParameter(String key, Double value) {
127 return addParameter(key, value, null);
128 }
129
130 public RuleFailureParam addParameter(String key, Double value, Double value2) {
131 if (params == null) {
132 params = new ArrayList<RuleFailureParam>();
133 }
134 RuleFailureParam param = new RuleFailureParam(key, value, value2);
135 param.setRuleFailure(this);
136 params.add(param);
137 return param;
138 }
139
140 public RuleFailureParam getParameter(String key) {
141 for (RuleFailureParam param : params) {
142 if (param!=null && param.getKey().equals(key)) {
143 return param;
144 }
145 }
146 return null;
147 }
148
149 public boolean equals(Object obj) {
150 if (!(obj instanceof RuleFailure)) {
151 return false;
152 }
153 if (this == obj) {
154 return true;
155 }
156 RuleFailure other = (RuleFailure) obj;
157 return new EqualsBuilder()
158 .append(id, other.getId()).isEquals();
159 }
160
161 public int hashCode() {
162 return new HashCodeBuilder(17, 37).
163 append(id).toHashCode();
164 }
165
166 public String toString() {
167 return ReflectionToStringBuilder.toString(this);
168 }
169 }