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.util.List;
24
25 import org.apache.commons.logging.Log;
26 import org.apache.commons.logging.LogFactory;
27 import org.jumpmind.symmetric.db.IDbDialect;
28 import org.jumpmind.symmetric.model.Node;
29
30 public class SqlUpgradeTask extends AbstractSqlUpgradeTask {
31
32 private static final Log logger = LogFactory.getLog(SqlUpgradeTask.class);
33
34 protected IDbDialect dbDialect;
35
36 protected String dialectName;
37
38 protected List<String> sqlList;
39
40 protected boolean ignoreFailure;
41
42 public void upgrade(int[] fromVersion) {
43 for (String sql : sqlList) {
44 logger.warn("Upgrade: " + sql);
45 jdbcTemplate.update(sql);
46 }
47 }
48
49 public void upgrade(Node node, int[] fromVersion) {
50 if (dialectName == null || (dbDialect != null && dbDialect.getName().equalsIgnoreCase((dialectName)))) {
51 for (String sql : sqlList) {
52 sql = prepareSql(node, sql);
53 logger.warn("Upgrade: " + sql);
54 if (ignoreFailure) {
55 try {
56 jdbcTemplate.update(sql);
57 } catch (Exception e) {
58 logger.warn("Ignoring failure of last upgrade statement: " + e.getMessage());
59 }
60 } else {
61 jdbcTemplate.update(sql);
62 }
63 }
64 }
65 }
66
67 public void setSqlList(List<String> sqlList) {
68 this.sqlList = sqlList;
69 }
70
71 public void setIgnoreFailure(boolean ignoreFailure) {
72 this.ignoreFailure = ignoreFailure;
73 }
74
75 public void setDbDialect(IDbDialect dbDialect) {
76 this.dbDialect = dbDialect;
77 }
78
79 public void setDialectName(String dialectName) {
80 this.dialectName = dialectName;
81 }
82
83 }