001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.upgrade.v7_0_0;
016    
017    import com.liferay.portal.kernel.dao.orm.WildcardMode;
018    import com.liferay.portal.kernel.upgrade.UpgradeException;
019    import com.liferay.portal.kernel.upgrade.UpgradeProcess;
020    import com.liferay.portal.kernel.util.LoggingTimer;
021    import com.liferay.portal.kernel.util.StringBundler;
022    
023    /**
024     * @author Preston Crary
025     */
026    public class UpgradeKernelPackage extends UpgradeProcess {
027    
028            @Override
029            protected void doUpgrade() throws UpgradeException {
030                    try {
031                            upgradeTable(
032                                    "Counter", "name", getClassNames(), WildcardMode.SURROUND);
033                            upgradeTable(
034                                    "ClassName_", "value", getClassNames(), WildcardMode.SURROUND);
035                            upgradeTable(
036                                    "Lock_", "className", getClassNames(), WildcardMode.SURROUND);
037                            upgradeTable(
038                                    "ResourceAction", "name", getClassNames(),
039                                    WildcardMode.SURROUND);
040                            upgradeTable(
041                                    "ResourceBlock", "name", getClassNames(),
042                                    WildcardMode.SURROUND);
043                            upgradeTable(
044                                    "ResourcePermission", "name", getClassNames(),
045                                    WildcardMode.SURROUND);
046                            upgradeTable(
047                                    "UserNotificationEvent", "payload", getClassNames(),
048                                    WildcardMode.SURROUND);
049    
050                            upgradeTable(
051                                    "ListType", "type_", getClassNames(), WildcardMode.TRAILING);
052                            upgradeTable(
053                                    "ResourceAction", "name", getResourceNames(),
054                                    WildcardMode.LEADING);
055                            upgradeTable(
056                                    "ResourceBlock", "name", getResourceNames(),
057                                    WildcardMode.LEADING);
058                            upgradeTable(
059                                    "ResourcePermission", "name", getResourceNames(),
060                                    WildcardMode.LEADING);
061                            upgradeTable(
062                                    "UserNotificationEvent", "payload", getResourceNames(),
063                                    WildcardMode.LEADING);
064                    }
065                    catch (Exception e) {
066                            throw new UpgradeException(e);
067                    }
068            }
069    
070            protected String[][] getClassNames() {
071                    return _CLASS_NAMES;
072            }
073    
074            protected String[][] getResourceNames() {
075                    return _RESOURCE_NAMES;
076            }
077    
078            protected void upgradeTable(
079                            String tableName, String columnName, String[][] names,
080                            WildcardMode wildcardMode)
081                    throws Exception {
082    
083                    try (LoggingTimer loggingTimer = new LoggingTimer(tableName)) {
084                            StringBundler sb1 = new StringBundler(7);
085    
086                            sb1.append("update ");
087                            sb1.append(tableName);
088                            sb1.append(" set ");
089                            sb1.append(columnName);
090                            sb1.append(" = replace(");
091                            sb1.append(columnName);
092                            sb1.append(", '");
093    
094                            String tableSQL = sb1.toString();
095    
096                            StringBundler sb2 = new StringBundler(9);
097    
098                            for (String[] name : names) {
099                                    sb2.append(tableSQL);
100                                    sb2.append(name[0]);
101                                    sb2.append("', '");
102                                    sb2.append(name[1]);
103                                    sb2.append("') where ");
104                                    sb2.append(columnName);
105    
106                                    if (wildcardMode.equals(WildcardMode.LEADING) ||
107                                            wildcardMode.equals(WildcardMode.SURROUND)) {
108    
109                                            sb2.append(" like '%");
110                                    }
111                                    else {
112                                            sb2.append(" like '");
113                                    }
114    
115                                    sb2.append(name[0]);
116    
117                                    if (wildcardMode.equals(WildcardMode.SURROUND) ||
118                                            wildcardMode.equals(WildcardMode.TRAILING)) {
119    
120                                            sb2.append("%'");
121                                    }
122                                    else {
123                                            sb2.append("'");
124                                    }
125    
126                                    runSQL(sb2.toString());
127    
128                                    sb2.setIndex(0);
129                            }
130                    }
131            }
132    
133            private static final String[][] _CLASS_NAMES = new String[][] {
134                    {
135                            "com.liferay.counter.model.Counter",
136                            "com.liferay.counter.kernel.model.Counter"
137                    },
138                    {
139                            "com.liferay.portal.kernel.mail.Account",
140                            "com.liferay.mail.kernel.model.Account"
141                    },
142                    {
143                            "com.liferay.portal.model.BackgroundTask",
144                            "com.liferay.portal.background.task.model.BackgroundTask"
145                    },
146                    {
147                            "com.liferay.portal.model.Lock",
148                            "com.liferay.portal.lock.model.Lock"
149                    },
150                    {"com.liferay.portal.model.", "com.liferay.portal.kernel.model."},
151                    {
152                            "com.liferay.portlet.announcements.model.",
153                            "com.liferay.announcements.kernel.model."
154                    },
155                    {
156                            "com.liferay.portlet.asset.model.",
157                            "com.liferay.asset.kernel.model."
158                    },
159                    {
160                            "com.liferay.portlet.blogs.model.",
161                            "com.liferay.blogs.kernel.model."
162                    },
163                    {
164                            "com.liferay.portlet.documentlibrary.model.",
165                            "com.liferay.document.library.kernel.model."
166                    },
167                    {
168                            "com.liferay.portlet.documentlibrary.util.",
169                            "com.liferay.document.library.kernel.util."
170                    },
171                    {
172                            "com.liferay.portlet.expando.model.",
173                            "com.liferay.expando.kernel.model."
174                    },
175                    {
176                            "com.liferay.portlet.messageboards.model.",
177                            "com.liferay.message.boards.kernel.model."
178                    },
179                    {
180                            "com.liferay.portlet.mobiledevicerules.model.",
181                            "com.liferay.mobile.device.rules.model."
182                    },
183                    {
184                            "com.liferay.portlet.ratings.model.",
185                            "com.liferay.ratings.kernel.model."
186                    },
187                    {
188                            "com.liferay.portlet.social.model.",
189                            "com.liferay.social.kernel.model."
190                    },
191                    {
192                            "com.liferay.portlet.trash.model.",
193                            "com.liferay.trash.kernel.model."
194                    },
195                    {
196                            "com.liferay.socialnetworking.model.",
197                            "com.liferay.social.networking.model."
198                    }
199            };
200    
201            private static final String[][] _RESOURCE_NAMES = new String[][] {
202                    {"com.liferay.portlet.asset", "com.liferay.asset"},
203                    {"com.liferay.portlet.blogs", "com.liferay.blogs"},
204                    {
205                            "com.liferay.portlet.documentlibrary",
206                            "com.liferay.document.library"
207                    },
208                    {"com.liferay.portlet.messageboards", "com.liferay.message.boards"}
209            };
210    
211    }