1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 package org.spf4j.concurrent.jdbc;
33
34 import java.io.Serializable;
35 import java.util.Objects;
36 import javax.annotation.ParametersAreNonnullByDefault;
37 import org.spf4j.jdbc.DbType;
38 import org.spf4j.jdbc.JdbcTemplate;
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 @ParametersAreNonnullByDefault
56 public final class HeartBeatTableDesc implements Serializable {
57
58 private static final long serialVersionUID = 1L;
59
60 public static final HeartBeatTableDesc DEFAULT = new HeartBeatTableDesc(
61 System.getProperty("spf4j.jdbc.heartBeats.sql.tableName", "HEARTBEATS"),
62 System.getProperty("spf4j.jdbc.heartBeats.sql.ownerColumn", "OWNER"),
63 System.getProperty("spf4j.jdbc.heartBeats.sql.intervalMillisColumn", "INTERVAL_MILLIS"),
64 System.getProperty("spf4j.jdbc.heartBeats.sql.lastHeartBeatMillisColumn", "LAST_HEARTBEAT_INSTANT_MILLIS"),
65 DbType.valueOf(System.getProperty("spf4j.jdbc.heartBeats.sql.dbType", "H2")));
66
67
68 private final String tableName;
69 private final String ownerColumn;
70 private final String intervalColumn;
71 private final String lastHeartbeatColumn;
72
73
74
75
76
77
78
79 private final DbType dbType;
80
81 public HeartBeatTableDesc(final String tableName, final String ownerColun,
82 final String intervalColumn, final String lastHeartbeatColumn, final DbType dbType) {
83 JdbcTemplate.checkJdbcObjectName(tableName);
84 JdbcTemplate.checkJdbcObjectName(ownerColun);
85 JdbcTemplate.checkJdbcObjectName(intervalColumn);
86 JdbcTemplate.checkJdbcObjectName(lastHeartbeatColumn);
87 this.tableName = tableName;
88 this.ownerColumn = ownerColun;
89 this.intervalColumn = intervalColumn;
90 this.lastHeartbeatColumn = lastHeartbeatColumn;
91 this.dbType = dbType;
92 }
93
94 public String getTableName() {
95 return tableName;
96 }
97
98 public String getOwnerColumn() {
99 return ownerColumn;
100 }
101
102 public String getIntervalColumn() {
103 return intervalColumn;
104 }
105
106 public String getLastHeartbeatColumn() {
107 return lastHeartbeatColumn;
108 }
109
110 public DbType getDbType() {
111 return dbType;
112 }
113
114 public HeartBeatTableDesc withDbType(final DbType pdbType) {
115 return new HeartBeatTableDesc(tableName, ownerColumn, intervalColumn, lastHeartbeatColumn, pdbType);
116 }
117
118 @Override
119 public int hashCode() {
120 return tableName.hashCode();
121 }
122
123 @Override
124 public boolean equals(final Object obj) {
125 if (this == obj) {
126 return true;
127 }
128 if (obj == null) {
129 return false;
130 }
131 if (getClass() != obj.getClass()) {
132 return false;
133 }
134 final HeartBeatTableDesc other = (HeartBeatTableDesc) obj;
135 if (!Objects.equals(this.tableName, other.tableName)) {
136 return false;
137 }
138 if (!Objects.equals(this.ownerColumn, other.ownerColumn)) {
139 return false;
140 }
141 if (!Objects.equals(this.intervalColumn, other.intervalColumn)) {
142 return false;
143 }
144 if (!Objects.equals(this.lastHeartbeatColumn, other.lastHeartbeatColumn)) {
145 return false;
146 }
147 return this.dbType == other.dbType;
148 }
149
150
151
152
153 @Override
154 public String toString() {
155 return "HeartbeatTableDesc{" + "tableName=" + tableName + ", ownerColun=" + ownerColumn + ", intervalColumn="
156 + intervalColumn + ", lastHeartbeatColumn=" + lastHeartbeatColumn + '}';
157 }
158
159 }