1
22
23 package com.liferay.portal.upgrade.util;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.util.FileUtil;
28 import com.liferay.portal.kernel.util.Validator;
29 import com.liferay.portal.tools.sql.DBUtil;
30 import com.liferay.portal.upgrade.UpgradeException;
31
32
38 public abstract class BaseUpgradeTableImpl extends Table {
39
40 public BaseUpgradeTableImpl(String tableName) {
41 super(tableName);
42 }
43
44 public BaseUpgradeTableImpl(String tableName, Object[][] columns) {
45 super(tableName, columns);
46 }
47
48 public void setCreateSQL(String createSQL) throws Exception {
49 if (_calledUpdateTable) {
50 throw new UpgradeException(
51 "setCreateSQL is called after updateTable");
52 }
53
54 super.setCreateSQL(createSQL);
55 }
56
57 public void updateTable() throws Exception {
58 _calledUpdateTable = true;
59
60 String tempFileName = generateTempFile();
61
62 try {
63 DBUtil dbUtil = DBUtil.getInstance();
64
65 String createSQL = getCreateSQL();
66
67 if (Validator.isNotNull(createSQL)) {
68 dbUtil.runSQL("drop table " + getTableName());
69
70 dbUtil.runSQL(createSQL);
71 }
72
73 if (Validator.isNotNull(tempFileName)) {
74 String deleteSQL = getDeleteSQL();
75
76 dbUtil.runSQL(deleteSQL);
77
78 populateTable(tempFileName);
79 }
80 }
81 finally {
82 if (Validator.isNotNull(tempFileName)) {
83 FileUtil.delete(tempFileName);
84 }
85 }
86 }
87
88 static Log _log = LogFactoryUtil.getLog(BaseUpgradeTableImpl.class);
89
90 private boolean _calledUpdateTable;
91
92 }