1
14
15 package com.liferay.portal.upgrade;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.kernel.upgrade.UpgradeException;
20 import com.liferay.portal.kernel.upgrade.UpgradeProcess;
21
22
29 public class UpgradeProcessUtil {
30
31 public static boolean upgradeProcess(
32 int buildNumber, String[] upgradeProcessClassNames,
33 ClassLoader classLoader)
34 throws UpgradeException {
35
36 boolean ranUpgradeProcess = false;
37
38 for (String upgradeProcessClassName : upgradeProcessClassNames) {
39 boolean tempRanUpgradeProcess = _upgradeProcess(
40 buildNumber, upgradeProcessClassName, classLoader);
41
42 if (tempRanUpgradeProcess) {
43 ranUpgradeProcess = true;
44 }
45 }
46
47 return ranUpgradeProcess;
48 }
49
50 private static boolean _upgradeProcess(
51 int buildNumber, String upgradeProcessClassName,
52 ClassLoader classLoader)
53 throws UpgradeException {
54
55 if (_log.isDebugEnabled()) {
56 _log.debug("Initializing upgrade " + upgradeProcessClassName);
57 }
58
59 UpgradeProcess upgradeProcess = null;
60
61 try {
62 upgradeProcess = (UpgradeProcess)classLoader.loadClass(
63 upgradeProcessClassName).newInstance();
64 }
65 catch (Exception e) {
66 _log.error(e, e);
67 }
68
69 if (upgradeProcess == null) {
70 _log.error(upgradeProcessClassName + " cannot be found");
71
72 return false;
73 }
74
75 if ((upgradeProcess.getThreshold() == 0) ||
76 (upgradeProcess.getThreshold() > buildNumber)) {
77
78 if (_log.isDebugEnabled()) {
79 _log.debug("Running upgrade " + upgradeProcessClassName);
80 }
81
82 upgradeProcess.upgrade();
83
84 if (_log.isDebugEnabled()) {
85 _log.debug("Finished upgrade " + upgradeProcessClassName);
86 }
87
88 return true;
89 }
90 else {
91 if (_log.isDebugEnabled()) {
92 _log.debug(
93 "Upgrade threshold " + upgradeProcess.getThreshold() +
94 " will not trigger upgrade");
95
96 _log.debug("Skipping upgrade " + upgradeProcessClassName);
97 }
98
99 return false;
100 }
101 }
102
103 private static Log _log = LogFactoryUtil.getLog(UpgradeProcessUtil.class);
104
105 }