1
22
23 package com.liferay.portal.upgrade.v4_3_0;
24
25 import com.liferay.portal.kernel.util.ArrayUtil;
26 import com.liferay.portal.model.impl.PortletPreferencesImpl;
27 import com.liferay.portal.upgrade.UpgradeException;
28 import com.liferay.portal.upgrade.UpgradeProcess;
29 import com.liferay.portal.upgrade.util.DefaultUpgradeTableImpl;
30 import com.liferay.portal.upgrade.util.PKUpgradeColumnImpl;
31 import com.liferay.portal.upgrade.util.TempUpgradeColumnImpl;
32 import com.liferay.portal.upgrade.util.UpgradeColumn;
33 import com.liferay.portal.upgrade.util.UpgradeTable;
34 import com.liferay.portal.upgrade.util.ValueMapper;
35 import com.liferay.portal.upgrade.v4_3_0.util.AvailableMappersUtil;
36 import com.liferay.portal.upgrade.v4_3_0.util.PrefsOwnerIdUpgradeColumnImpl;
37 import com.liferay.portal.upgrade.v4_3_0.util.PrefsOwnerTypeUpgradeColumnImpl;
38 import com.liferay.portal.upgrade.v4_3_0.util.PrefsPlidUpgradeColumnImpl;
39 import com.liferay.portal.upgrade.v4_3_0.util.PrefsXMLUpgradeColumnImpl;
40 import com.liferay.portal.util.PortletKeys;
41
42 import java.sql.Types;
43
44 import java.util.Iterator;
45
46 import org.apache.commons.logging.Log;
47 import org.apache.commons.logging.LogFactory;
48
49
55 public class UpgradePortletPreferences extends UpgradeProcess {
56
57 public void upgrade() throws UpgradeException {
58 _log.info("Upgrading");
59
60 try {
61 doUpgrade();
62 }
63 catch (Exception e) {
64 throw new UpgradeException(e);
65 }
66 }
67
68 protected void doUpgrade() throws Exception {
69
70
72 runSQL(
73 "delete from PortletPreferences where ownerId = '0' and " +
74 "ownerType = " + PortletKeys.PREFS_OWNER_TYPE_COMPANY);
75
76 ValueMapper companyIdMapper = AvailableMappersUtil.getCompanyIdMapper();
77
78 Iterator itr = companyIdMapper.iterator();
79
80 while (itr.hasNext()) {
81 String webId = (String)itr.next();
82
83 Long companyIdObj = (Long)companyIdMapper.getNewValue(webId);
84
85 runSQL(
86 "delete from PortletPreferences where ownerId = '" +
87 companyIdObj.longValue() + "' and ownerType = " +
88 PortletKeys.PREFS_OWNER_TYPE_COMPANY);
89 }
90
91 Object[][] prefsColumns1 = {{"layoutId", new Integer(Types.VARCHAR)}};
92 Object[][] prefsColumns2 =
93 (Object[][])PortletPreferencesImpl.TABLE_COLUMNS.clone();
94
95 Object[][] prefsColumns =
96 ArrayUtil.append(prefsColumns1, prefsColumns2);
97
98 PrefsOwnerIdUpgradeColumnImpl upgradeOwnerIdColumn =
99 new PrefsOwnerIdUpgradeColumnImpl(
100 AvailableMappersUtil.getCompanyIdMapper(),
101 AvailableMappersUtil.getGroupIdMapper(),
102 AvailableMappersUtil.getUserIdMapper());
103
104 UpgradeColumn upgradeOwnerTypeColumn =
105 new PrefsOwnerTypeUpgradeColumnImpl(upgradeOwnerIdColumn);
106
107 UpgradeColumn upgradeLayoutIdColumn =
108 new TempUpgradeColumnImpl("layoutId");
109
110 UpgradeColumn upgradePlidColumn = new PrefsPlidUpgradeColumnImpl(
111 upgradeOwnerIdColumn, upgradeLayoutIdColumn,
112 AvailableMappersUtil.getLayoutPlidMapper());
113
114 UpgradeColumn upgradePortletIdColumn =
115 new TempUpgradeColumnImpl("portletId");
116
117 UpgradeColumn upgradePreferencesColumn = new PrefsXMLUpgradeColumnImpl(
118 upgradePortletIdColumn, AvailableMappersUtil.getGroupIdMapper(),
119 AvailableMappersUtil.getPollsQuestionIdMapper(),
120 AvailableMappersUtil.getWikiNodeIdMapper());
121
122 UpgradeTable upgradeTable = new DefaultUpgradeTableImpl(
123 PortletPreferencesImpl.TABLE_NAME, prefsColumns,
124 new PKUpgradeColumnImpl("portletPreferencesId", false),
125 upgradeOwnerIdColumn, upgradeOwnerTypeColumn, upgradeLayoutIdColumn,
126 upgradePlidColumn, upgradePortletIdColumn,
127 upgradePreferencesColumn);
128
129 String createSQL = PortletPreferencesImpl.TABLE_SQL_CREATE;
130
131 createSQL =
132 createSQL.substring(0, createSQL.length() - 1) +
133 ",layoutId VARCHAR(75) null)";
134
135 upgradeTable.setCreateSQL(createSQL);
136
137 upgradeTable.updateTable();
138
139
141 runSQL(_UPGRADE_SCHEMA);
142 }
143
144 private static final String[] _UPGRADE_SCHEMA = {
145 "alter table PortletPreferences drop column layoutId"
146 };
147
148 private static Log _log =
149 LogFactory.getLog(UpgradePortletPreferences.class);
150
151 }