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