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