Revision f616b1c5
Added by Andreas Müller almost 5 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SingleTermUpdater.java | ||
---|---|---|
125 | 125 |
return; |
126 | 126 |
} |
127 | 127 |
|
128 |
Integer termId; |
|
129 |
String sqlMaxId = " SELECT max(id)+1 as maxId FROM " + caseType.transformTo("DefinedTermBase"); |
|
130 |
rs = datasource.executeQuery(sqlMaxId); |
|
131 |
if (rs.next()){ |
|
132 |
termId = rs.getInt("maxId"); |
|
133 |
}else{ |
|
134 |
String message = "No defined terms do exist yet. Can't update terms!"; |
|
135 |
monitor.warning(message); |
|
136 |
result.addError(message, getStepName() + ", SingleTermUpdater.invoke"); |
|
128 |
String sqlMaxId; |
|
129 |
Integer termId = getMaxId(datasource, monitor, caseType, result); |
|
130 |
if (termId == null){ |
|
137 | 131 |
return; |
138 |
}
|
|
132 |
}
|
|
139 | 133 |
|
140 | 134 |
String id = Integer.toString(termId); |
141 | 135 |
String created = getNowString(); |
... | ... | |
210 | 204 |
return; |
211 | 205 |
} |
212 | 206 |
|
207 |
/** |
|
208 |
* @param datasource |
|
209 |
* @param monitor |
|
210 |
* @param caseType |
|
211 |
* @param result |
|
212 |
* @return |
|
213 |
* @throws SQLException |
|
214 |
*/ |
|
215 |
protected Integer getMaxId(ICdmDataSource datasource, IProgressMonitor monitor, CaseType caseType, |
|
216 |
SchemaUpdateResult result) throws SQLException { |
|
217 |
|
|
218 |
// For some very strange reason max(id) gave back a wrong result when |
|
219 |
// executed here while updateing remote-webapp H2 test database, therefore |
|
220 |
// we took this workaround which worked. Can be removed when it does not |
|
221 |
// appear anymore |
|
222 |
|
|
223 |
// String sqlMaxId = " SELECT max(id)+1 as maxId" |
|
224 |
// + " FROM " + caseType.transformTo("DefinedTermBase"); |
|
225 |
String sqlMaxId = " SELECT id as maxId" |
|
226 |
+ " FROM " + caseType.transformTo("DefinedTermBase") + |
|
227 |
" ORDER BY id DESC "; |
|
228 |
ResultSet rs = datasource.executeQuery(sqlMaxId); |
|
229 |
while (rs.next()){ |
|
230 |
Integer termId = rs.getInt("maxId"); |
|
231 |
System.out.println(termId); |
|
232 |
return termId +1; |
|
233 |
} |
|
234 |
String message = "No defined terms do exist yet. Can't update terms!"; |
|
235 |
monitor.warning(message); |
|
236 |
result.addError(message, getStepName() + ", SingleTermUpdater.invoke"); |
|
237 |
return null; |
|
238 |
} |
|
239 |
|
|
213 | 240 |
private String nullSafeStr(String str) { |
214 | 241 |
if (str == null){ |
215 | 242 |
return " NULL "; |
Also available in: Unified diff
workaround for very strange max(id) behavior in remote-webapp H2 test database