001
014
015 package com.liferay.portal.upgrade.v6_2_0;
016
017 import com.liferay.portal.kernel.dao.jdbc.DataAccess;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.kernel.upgrade.UpgradeProcess;
021 import com.liferay.portal.kernel.util.GetterUtil;
022 import com.liferay.portal.kernel.util.StringBundler;
023
024 import java.sql.Connection;
025 import java.sql.PreparedStatement;
026 import java.sql.ResultSet;
027
028
031 public class UpgradePortletPreferences extends UpgradeProcess {
032
033 protected void deletePortletPreferences(long portletPreferencesId)
034 throws Exception {
035
036 if (_log.isDebugEnabled()) {
037 _log.debug("Deleting portlet preferences " + portletPreferencesId);
038 }
039
040 runSQL(
041 "delete from PortletPreferences where portletPreferencesId = " +
042 portletPreferencesId);
043 }
044
045 @Override
046 protected void doUpgrade() throws Exception {
047 Connection con = null;
048 PreparedStatement ps = null;
049 ResultSet rs = null;
050
051 try {
052 con = DataAccess.getUpgradeOptimizedConnection();
053
054 StringBundler sb = new StringBundler(4);
055
056 sb.append("select PortletPreferences.portletPreferencesId, ");
057 sb.append("PortletPreferences.plid,");
058 sb.append("PortletPreferences.portletId, Layout.typeSettings ");
059 sb.append("from PortletPreferences inner join Layout on ");
060 sb.append("PortletPreferences.plid = Layout.plid where ");
061 sb.append("preferences like '%<portlet-preferences />%'");
062
063 String sql = sb.toString();
064
065 ps = con.prepareStatement(sql);
066
067 rs = ps.executeQuery();
068
069 while (rs.next()) {
070 long portletPreferencesId = rs.getLong("portletPreferencesId");
071 String portletId = rs.getString("portletId");
072 String typeSettings = GetterUtil.getString(
073 rs.getString("typeSettings"));
074
075 if (typeSettings.contains(portletId)) {
076 continue;
077 }
078
079 deletePortletPreferences(portletPreferencesId);
080 }
081 }
082 finally {
083 DataAccess.cleanUp(con, ps, rs);
084 }
085 }
086
087 private static Log _log = LogFactoryUtil.getLog(
088 UpgradePortletPreferences.class);
089
090 }