1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.jumpmind.symmetric.upgrade;
22
23 import java.sql.ResultSet;
24 import java.sql.SQLException;
25
26 import org.apache.commons.logging.Log;
27 import org.apache.commons.logging.LogFactory;
28 import org.jumpmind.symmetric.model.Node;
29 import org.springframework.jdbc.core.RowCallbackHandler;
30
31 public class SqlDrivenUpgradeTask extends AbstractSqlUpgradeTask {
32
33 private static final Log logger = LogFactory.getLog(SqlDrivenUpgradeTask.class);
34
35 protected String driverSql;
36
37 protected String updateSql;
38
39 public void upgrade(final Node node, int[] fromVersion) {
40 String sql = prepareSql(node, driverSql);
41 logger.warn("Upgrade for each: " + sql);
42 logger.warn("Upgrade do: " + updateSql);
43 jdbcTemplate.query(sql, new RowCallbackHandler() {
44 public void processRow(ResultSet rs) throws SQLException {
45 int count = rs.getMetaData().getColumnCount();
46 Object[] params = new Object[count];
47 for (int i = 0; i < count; i++) {
48 params[i] = rs.getObject(i + 1);
49 }
50 jdbcTemplate.update(prepareSql(node, updateSql), params);
51 }
52 });
53 }
54
55 public void setDriverSql(String driverSql) {
56 this.driverSql = driverSql;
57 }
58
59 public void setUpdateSql(String updateSql) {
60 this.updateSql = updateSql;
61 }
62
63 }