1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portal.upgrade.v4_3_0;
21  
22  import com.liferay.portal.kernel.log.Log;
23  import com.liferay.portal.kernel.log.LogFactoryUtil;
24  import com.liferay.portal.upgrade.UpgradeException;
25  import com.liferay.portal.upgrade.UpgradeProcess;
26  import com.liferay.portal.upgrade.util.DefaultUpgradeTableImpl;
27  import com.liferay.portal.upgrade.util.SwapUpgradeColumnImpl;
28  import com.liferay.portal.upgrade.util.UpgradeColumn;
29  import com.liferay.portal.upgrade.util.UpgradeTable;
30  import com.liferay.portal.upgrade.v4_3_0.util.AvailableMappersUtil;
31  import com.liferay.portal.upgrade.v4_3_0.util.ValueMapperUtil;
32  
33  import java.sql.Types;
34  
35  /**
36   * <a href="UpgradeMappingTables.java.html"><b><i>View Source</i></b></a>
37   *
38   * @author Brian Wing Shun Chan
39   *
40   */
41  public class UpgradeMappingTables extends UpgradeProcess {
42  
43      public void upgrade() throws UpgradeException {
44          _log.info("Upgrading");
45  
46          try {
47              doUpgrade();
48          }
49          catch (Exception e) {
50              throw new UpgradeException(e);
51          }
52      }
53  
54      protected void doUpgrade() throws Exception {
55  
56          // Mappings
57  
58          UpgradeColumn upgradeGroupIdColumn = new SwapUpgradeColumnImpl(
59              "groupId", AvailableMappersUtil.getGroupIdMapper());
60  
61          UpgradeColumn upgradeOrganizationIdColumn = new SwapUpgradeColumnImpl(
62              "organizationId", AvailableMappersUtil.getOrganizationIdMapper());
63  
64          UpgradeColumn upgradeRoleIdColumn = new SwapUpgradeColumnImpl(
65              "roleId", AvailableMappersUtil.getRoleIdMapper());
66  
67          UpgradeColumn upgradeUserGroupIdColumn = new SwapUpgradeColumnImpl(
68              "userGroupId", AvailableMappersUtil.getUserGroupIdMapper());
69  
70          UpgradeColumn upgradeUserIdColumn = new SwapUpgradeColumnImpl(
71              "userId", new Integer(Types.VARCHAR),
72              AvailableMappersUtil.getUserIdMapper());
73  
74          // Groups_Orgs
75  
76          UpgradeTable upgradeTable = new DefaultUpgradeTableImpl(
77              _TABLE_GROUPS_ORGS, _COLUMNS_GROUPS_ORGS, upgradeGroupIdColumn,
78              upgradeOrganizationIdColumn);
79  
80          upgradeTable.setCreateSQL(_CREATE_GROUPS_ORGS);
81  
82          upgradeTable.updateTable();
83  
84          // Groups_Permissions
85  
86          upgradeTable = new DefaultUpgradeTableImpl(
87              _TABLE_GROUPS_PERMISSIONS, _COLUMNS_GROUPS_PERMISSIONS,
88              upgradeGroupIdColumn);
89  
90          upgradeTable.setCreateSQL(_CREATE_GROUPS_PERMISSIONS);
91  
92          upgradeTable.updateTable();
93  
94          // Groups_Roles
95  
96          upgradeTable = new DefaultUpgradeTableImpl(
97              _TABLE_GROUPS_ROLES, _COLUMNS_GROUPS_ROLES,
98              upgradeGroupIdColumn, upgradeRoleIdColumn);
99  
100         upgradeTable.setCreateSQL(_CREATE_GROUPS_ROLES);
101 
102         upgradeTable.updateTable();
103 
104         // Groups_UserGroups
105 
106         upgradeTable = new DefaultUpgradeTableImpl(
107             _TABLE_GROUPS_USERGROUPS, _COLUMNS_GROUPS_USERGROUPS,
108             upgradeGroupIdColumn, upgradeUserGroupIdColumn);
109 
110         upgradeTable.setCreateSQL(_CREATE_GROUPS_USERGROUPS);
111 
112         upgradeTable.updateTable();
113 
114         // Roles_Permissions
115 
116         upgradeTable = new DefaultUpgradeTableImpl(
117             _TABLE_ROLES_PERMISSIONS, _COLUMNS_ROLES_PERMISSIONS,
118             upgradeRoleIdColumn);
119 
120         upgradeTable.setCreateSQL(_CREATE_ROLES_PERMISSIONS);
121 
122         upgradeTable.updateTable();
123 
124         // Users_Groups
125 
126         upgradeTable = new DefaultUpgradeTableImpl(
127             _TABLE_USERS_GROUPS, _COLUMNS_USERS_GROUPS, upgradeUserIdColumn,
128             upgradeGroupIdColumn);
129 
130         upgradeTable.setCreateSQL(_CREATE_USERS_GROUPS);
131 
132         upgradeTable.updateTable();
133 
134         // Users_Orgs
135 
136         upgradeTable = new DefaultUpgradeTableImpl(
137             _TABLE_USERS_ORGS, _COLUMNS_USERS_ORGS, upgradeUserIdColumn,
138             upgradeOrganizationIdColumn);
139 
140         upgradeTable.setCreateSQL(_CREATE_USERS_ORGS);
141 
142         upgradeTable.updateTable();
143 
144         // Users_Permissions
145 
146         upgradeTable = new DefaultUpgradeTableImpl(
147             _TABLE_USERS_PERMISSIONS, _COLUMNS_USERS_PERMISSIONS,
148             upgradeUserIdColumn);
149 
150         upgradeTable.setCreateSQL(_CREATE_USERS_PERMISSIONS);
151 
152         upgradeTable.updateTable();
153 
154         // Users_Roles
155 
156         upgradeTable = new DefaultUpgradeTableImpl(
157             _TABLE_USERS_ROLES, _COLUMNS_USERS_ROLES, upgradeUserIdColumn,
158             upgradeRoleIdColumn);
159 
160         upgradeTable.setCreateSQL(_CREATE_USERS_ROLES);
161 
162         upgradeTable.updateTable();
163 
164         // Users_UserGroups
165 
166         upgradeTable = new DefaultUpgradeTableImpl(
167             _TABLE_USERS_USERGROUPS, _COLUMNS_USERS_USERGROUPS,
168             upgradeUserIdColumn, upgradeUserGroupIdColumn);
169 
170         upgradeTable.setCreateSQL(_CREATE_USERS_USERGROUPS);
171 
172         upgradeTable.updateTable();
173 
174         // Persist value mappers in case the portal was customized with
175         // additional tables that referenced these ids. This allows developers
176         // to retrieve the keys at a later point and build scripts to upgrade
177         // the other tables.
178 
179         ValueMapperUtil.persist(
180             AvailableMappersUtil.getBlogsEntryIdMapper(), "blogs-entry-id");
181 
182         ValueMapperUtil.persist(
183             AvailableMappersUtil.getBookmarksFolderIdMapper(),
184             "bookmarks-folder-id");
185 
186         ValueMapperUtil.persist(
187             AvailableMappersUtil.getBookmarksEntryIdMapper(),
188             "bookmarks-entry-id");
189 
190         ValueMapperUtil.persist(
191             AvailableMappersUtil.getCalEventIdMapper(), "cal-event-id");
192 
193         ValueMapperUtil.persist(
194             AvailableMappersUtil.getCompanyIdMapper(), "company-id");
195 
196         ValueMapperUtil.persist(
197             AvailableMappersUtil.getContactIdMapper(), "contact-id");
198 
199         ValueMapperUtil.persist(
200             AvailableMappersUtil.getDLFileEntryIdMapper(), "dl-file-entry-id");
201 
202         ValueMapperUtil.persist(
203             AvailableMappersUtil.getDLFileShortcutIdMapper(),
204             "dl-file-shortcut-id");
205 
206         ValueMapperUtil.persist(
207             AvailableMappersUtil.getDLFolderIdMapper(), "dl-folder-id");
208 
209         ValueMapperUtil.persist(
210             AvailableMappersUtil.getGroupIdMapper(), "group-id");
211 
212         ValueMapperUtil.persist(
213             AvailableMappersUtil.getIGFolderIdMapper(), "ig-folder-id");
214 
215         ValueMapperUtil.persist(
216             AvailableMappersUtil.getIGImageIdMapper(), "ig-image-id");
217 
218         ValueMapperUtil.persist(
219             AvailableMappersUtil.getImageIdMapper(), "image-id");
220 
221         ValueMapperUtil.persist(
222             AvailableMappersUtil.getJournalArticleIdMapper(),
223             "journal-article-id");
224 
225         ValueMapperUtil.persist(
226             AvailableMappersUtil.getJournalStructureIdMapper(),
227             "journal-structure-id");
228 
229         ValueMapperUtil.persist(
230             AvailableMappersUtil.getJournalTemplateIdMapper(),
231             "journal-template-id");
232 
233         ValueMapperUtil.persist(
234             AvailableMappersUtil.getLayoutPlidMapper(), "layout-plid");
235 
236         ValueMapperUtil.persist(
237             AvailableMappersUtil.getMBCategoryIdMapper(), "mb-category-id");
238 
239         ValueMapperUtil.persist(
240             AvailableMappersUtil.getMBMessageIdMapper(), "mb-message-id");
241 
242         ValueMapperUtil.persist(
243             AvailableMappersUtil.getMBThreadIdMapper(), "mb-thread-id");
244 
245         ValueMapperUtil.persist(
246             AvailableMappersUtil.getOrganizationIdMapper(), "organization-id");
247 
248         ValueMapperUtil.persist(
249             AvailableMappersUtil.getPollsQuestionIdMapper(),
250             "polls-question-id");
251 
252         ValueMapperUtil.persist(
253             AvailableMappersUtil.getRoleIdMapper(), "role-id");
254 
255         ValueMapperUtil.persist(
256             AvailableMappersUtil.getShoppingCategoryIdMapper(),
257             "shopping-category-id");
258 
259         ValueMapperUtil.persist(
260             AvailableMappersUtil.getShoppingItemIdMapper(), "shopping-item-id");
261 
262         ValueMapperUtil.persist(
263             AvailableMappersUtil.getUserGroupIdMapper(), "user-group-id");
264 
265         ValueMapperUtil.persist(
266             AvailableMappersUtil.getUserIdMapper(), "user-id");
267 
268         ValueMapperUtil.persist(
269             AvailableMappersUtil.getWikiNodeIdMapper(), "wiki-node-id");
270 
271         ValueMapperUtil.persist(
272             AvailableMappersUtil.getWikiPageIdMapper(), "wiki-page-id");
273     }
274 
275     private static final String _TABLE_GROUPS_ORGS = "Groups_Orgs";
276 
277     private static final String _TABLE_GROUPS_ROLES = "Groups_Roles";
278 
279     private static final String _TABLE_GROUPS_PERMISSIONS =
280         "Groups_Permissions";
281 
282     private static final String _TABLE_GROUPS_USERGROUPS = "Groups_UserGroups";
283 
284     private static final String _TABLE_ROLES_PERMISSIONS = "Roles_Permissions";
285 
286     private static final String _TABLE_USERS_GROUPS = "Users_Groups";
287 
288     private static final String _TABLE_USERS_ORGS = "Users_Orgs";
289 
290     private static final String _TABLE_USERS_PERMISSIONS = "Users_Permissions";
291 
292     private static final String _TABLE_USERS_ROLES = "Users_Roles";
293 
294     private static final String _TABLE_USERS_USERGROUPS = "Users_UserGroups";
295 
296     private static final Object[][] _COLUMNS_GROUPS_ORGS = {
297         {"groupId", new Integer(Types.BIGINT)},
298         {"organizationId", new Integer(Types.BIGINT)}
299     };
300 
301     private static final Object[][] _COLUMNS_GROUPS_PERMISSIONS = {
302         {"groupId", new Integer(Types.BIGINT)},
303         {"permissionId", new Integer(Types.BIGINT)}
304     };
305 
306     private static final Object[][] _COLUMNS_GROUPS_ROLES = {
307         {"groupId", new Integer(Types.BIGINT)},
308         {"roleId", new Integer(Types.BIGINT)}
309     };
310 
311     private static final Object[][] _COLUMNS_GROUPS_USERGROUPS = {
312         {"groupId", new Integer(Types.BIGINT)},
313         {"userGroupId", new Integer(Types.BIGINT)}
314     };
315 
316     private static final Object[][] _COLUMNS_ROLES_PERMISSIONS = {
317         {"roleId", new Integer(Types.BIGINT)},
318         {"permissionId", new Integer(Types.BIGINT)}
319     };
320 
321     private static final Object[][] _COLUMNS_USERS_GROUPS = {
322         {"userId", new Integer(Types.BIGINT)},
323         {"groupId", new Integer(Types.BIGINT)}
324     };
325 
326     private static final Object[][] _COLUMNS_USERS_ORGS = {
327         {"userId", new Integer(Types.BIGINT)},
328         {"organizationId", new Integer(Types.BIGINT)}
329     };
330 
331     private static final Object[][] _COLUMNS_USERS_PERMISSIONS = {
332         {"userId", new Integer(Types.BIGINT)},
333         {"permissionId", new Integer(Types.BIGINT)}
334     };
335 
336     private static final Object[][] _COLUMNS_USERS_ROLES = {
337         {"userId", new Integer(Types.BIGINT)},
338         {"roleId", new Integer(Types.BIGINT)}
339     };
340 
341     private static final Object[][] _COLUMNS_USERS_USERGROUPS = {
342         {"userId", new Integer(Types.BIGINT)},
343         {"userGroupId", new Integer(Types.BIGINT)}
344     };
345 
346     private static final String _CREATE_GROUPS_ORGS =
347         "create table Groups_Orgs (" +
348             "groupId LONG not null," +
349             "organizationId LONG not null," +
350             "primary key (groupId, organizationId)" +
351         ")";
352 
353     private static final String _CREATE_GROUPS_PERMISSIONS =
354         "create table Groups_Permissions (" +
355             "groupId LONG not null," +
356             "permissionId LONG not null," +
357             "primary key (groupId, permissionId)" +
358         ")";
359 
360     private static final String _CREATE_GROUPS_ROLES =
361         "create table Groups_Roles (" +
362             "groupId LONG not null," +
363             "roleId LONG not null," +
364             "primary key (groupId, roleId)" +
365         ")";
366 
367     private static final String _CREATE_GROUPS_USERGROUPS =
368         "create table Groups_UserGroups (" +
369             "groupId LONG not null," +
370             "userGroupId LONG not null," +
371             "primary key (groupId, userGroupId)" +
372         ")";
373 
374     private static final String _CREATE_ROLES_PERMISSIONS =
375         "create table Roles_Permissions (" +
376             "roleId LONG not null," +
377             "permissionId LONG not null," +
378             "primary key (roleId, permissionId)" +
379         ")";
380 
381     private static final String _CREATE_USERS_GROUPS =
382         "create table Users_Groups (" +
383             "userId LONG not null," +
384             "groupId LONG not null," +
385             "primary key (userId, groupId)" +
386         ")";
387 
388     private static final String _CREATE_USERS_ORGS =
389         "create table Users_Orgs (" +
390             "userId LONG not null," +
391             "organizationId LONG not null," +
392             "primary key (userId, organizationId)" +
393         ")";
394 
395     private static final String _CREATE_USERS_PERMISSIONS =
396         "create table Users_Permissions (" +
397             "userId LONG not null," +
398             "permissionId LONG not null," +
399             "primary key (userId, permissionId)" +
400         ")";
401 
402     private static final String _CREATE_USERS_ROLES =
403         "create table Users_Roles (" +
404             "userId LONG not null," +
405             "roleId LONG not null," +
406             "primary key (userId, roleId)" +
407         ")";
408 
409     private static final String _CREATE_USERS_USERGROUPS =
410         "create table Users_UserGroups (" +
411             "userId LONG not null," +
412             "userGroupId LONG not null," +
413             "primary key (userId, userGroupId)" +
414         ")";
415 
416     private static Log _log = LogFactoryUtil.getLog(UpgradeMappingTables.class);
417 
418 }