1
14
15 package com.liferay.portal.tools;
16
17 import com.liferay.portal.events.StartupHelperUtil;
18 import com.liferay.portal.kernel.cache.CacheRegistry;
19 import com.liferay.portal.kernel.cache.MultiVMPoolUtil;
20 import com.liferay.portal.kernel.dao.db.DB;
21 import com.liferay.portal.kernel.dao.db.DBFactoryUtil;
22 import com.liferay.portal.kernel.exception.PortalException;
23 import com.liferay.portal.kernel.util.ReleaseInfo;
24 import com.liferay.portal.kernel.util.Time;
25 import com.liferay.portal.model.Release;
26 import com.liferay.portal.model.ReleaseConstants;
27 import com.liferay.portal.security.permission.ResourceActionsUtil;
28 import com.liferay.portal.service.ClassNameLocalServiceUtil;
29 import com.liferay.portal.service.ReleaseLocalServiceUtil;
30 import com.liferay.portal.service.ResourceActionLocalServiceUtil;
31 import com.liferay.portal.service.ResourceCodeLocalServiceUtil;
32 import com.liferay.portal.util.InitUtil;
33
34 import org.apache.commons.lang.time.StopWatch;
35
36
42 public class DBUpgrader {
43
44 public static void main(String[] args) {
45 try {
46 StopWatch stopWatch = new StopWatch();
47
48 stopWatch.start();
49
50 InitUtil.initWithSpring();
51
52 upgrade();
53 verify();
54
55 System.out.println(
56 "\nSuccessfully completed upgrade process in " +
57 (stopWatch.getTime() / Time.SECOND) + " seconds.");
58
59 System.exit(0);
60 }
61 catch (Exception e) {
62 e.printStackTrace();
63
64 System.exit(1);
65 }
66 }
67
68 public static void upgrade() throws Exception {
69
70
72 CacheRegistry.setActive(false);
73
74
76 int buildNumber = ReleaseLocalServiceUtil.getBuildNumberOrCreate();
77
78 if (buildNumber < ReleaseInfo.RELEASE_4_2_1_BUILD_NUMBER) {
79 String msg = "You must first upgrade to Liferay Portal 4.2.1";
80
81 System.out.println(msg);
82
83 throw new RuntimeException(msg);
84 }
85
86 StartupHelperUtil.upgradeProcess(buildNumber);
87
88
90 ClassNameLocalServiceUtil.checkClassNames();
91
92
94 ResourceActionsUtil.init();
95
96 ResourceActionLocalServiceUtil.checkResourceActions();
97
98
100 ResourceCodeLocalServiceUtil.checkResourceCodes();
101
102
104 _deleteTempImages();
105
106
108 if (StartupHelperUtil.isUpgraded()) {
109 MultiVMPoolUtil.clear();
110 }
111 }
112
113 public static void verify() throws Exception {
114
115
117 Release release = null;
118
119 try {
120 release = ReleaseLocalServiceUtil.getRelease(
121 ReleaseConstants.DEFAULT_SERVLET_CONTEXT_NAME,
122 ReleaseInfo.getBuildNumber());
123 }
124 catch (PortalException pe) {
125 release = ReleaseLocalServiceUtil.addRelease(
126 ReleaseConstants.DEFAULT_SERVLET_CONTEXT_NAME,
127 ReleaseInfo.getBuildNumber());
128 }
129
130 StartupHelperUtil.verifyProcess(release.isVerified());
131
132
134 if (StartupHelperUtil.isUpgraded()) {
135 StartupHelperUtil.updateIndexes();
136 }
137
138
140 boolean verified = StartupHelperUtil.isVerified();
141
142 if (release.isVerified()) {
143 verified = true;
144 }
145
146 ReleaseLocalServiceUtil.updateRelease(
147 release.getReleaseId(), ReleaseInfo.getBuildNumber(),
148 ReleaseInfo.getBuildDate(), verified);
149
150
152 CacheRegistry.setActive(true);
153 }
154
155 private static void _deleteTempImages() throws Exception {
156 DB db = DBFactoryUtil.getDB();
157
158 db.runSQL(_DELETE_TEMP_IMAGES_1);
159 db.runSQL(_DELETE_TEMP_IMAGES_2);
160 }
161
162 private static final String _DELETE_TEMP_IMAGES_1 =
163 "delete from Image where imageId IN (SELECT articleImageId FROM " +
164 "JournalArticleImage where tempImage = TRUE)";
165
166 private static final String _DELETE_TEMP_IMAGES_2 =
167 "delete from JournalArticleImage where tempImage = TRUE";
168
169 }