1   /**
2    * Copyright (c) 2000-2010 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   *
12   *
13   */
14  
15  package com.liferay.portal.upgrade.v4_3_0;
16  
17  import com.liferay.portal.kernel.upgrade.UpgradeProcess;
18  import com.liferay.portal.kernel.upgrade.util.DefaultPKMapper;
19  import com.liferay.portal.kernel.upgrade.util.SwapUpgradeColumnImpl;
20  import com.liferay.portal.kernel.upgrade.util.UpgradeColumn;
21  import com.liferay.portal.kernel.upgrade.util.UpgradeTable;
22  import com.liferay.portal.kernel.upgrade.util.UpgradeTableFactoryUtil;
23  import com.liferay.portal.kernel.upgrade.util.ValueMapper;
24  import com.liferay.portal.upgrade.util.LazyPKUpgradeColumnImpl;
25  import com.liferay.portal.upgrade.util.PKUpgradeColumnImpl;
26  import com.liferay.portal.upgrade.v4_3_0.util.AvailableMappersUtil;
27  import com.liferay.portal.upgrade.v4_3_0.util.ClassNameIdUpgradeColumnImpl;
28  import com.liferay.portal.upgrade.v4_3_0.util.ClassPKContainer;
29  import com.liferay.portal.upgrade.v4_3_0.util.ClassPKUpgradeColumnImpl;
30  import com.liferay.portal.upgrade.v4_3_0.util.MBCategoryIdUpgradeColumnImpl;
31  import com.liferay.portal.upgrade.v4_3_0.util.MBCategoryTable;
32  import com.liferay.portal.upgrade.v4_3_0.util.MBDiscussionTable;
33  import com.liferay.portal.upgrade.v4_3_0.util.MBMessageAttachmentsUpgradeColumnImpl;
34  import com.liferay.portal.upgrade.v4_3_0.util.MBMessageFlagTable;
35  import com.liferay.portal.upgrade.v4_3_0.util.MBMessageTable;
36  import com.liferay.portal.upgrade.v4_3_0.util.MBStatsUserTable;
37  import com.liferay.portal.upgrade.v4_3_0.util.MBThreadTable;
38  import com.liferay.portal.util.PortalUtil;
39  import com.liferay.portlet.blogs.model.BlogsEntry;
40  
41  import java.sql.Types;
42  
43  import java.util.HashMap;
44  import java.util.Map;
45  
46  /**
47   * <a href="UpgradeMessageBoards.java.html"><b><i>View Source</i></b></a>
48   *
49   * @author Brian Wing Shun Chan
50   */
51  public class UpgradeMessageBoards extends UpgradeProcess {
52  
53      protected void doUpgrade() throws Exception {
54  
55          // MBCategory
56  
57          UpgradeColumn upgradeCompanyIdColumn = new SwapUpgradeColumnImpl(
58              "companyId", new Integer(Types.VARCHAR),
59              AvailableMappersUtil.getCompanyIdMapper());
60  
61          UpgradeColumn upgradeGroupIdColumn = new SwapUpgradeColumnImpl(
62              "groupId", AvailableMappersUtil.getGroupIdMapper());
63  
64          UpgradeColumn upgradeUserIdColumn = new SwapUpgradeColumnImpl(
65              "userId", new Integer(Types.VARCHAR),
66              AvailableMappersUtil.getUserIdMapper());
67  
68          PKUpgradeColumnImpl upgradePKColumn =
69              new MBCategoryIdUpgradeColumnImpl();
70  
71          UpgradeTable upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
72              MBCategoryTable.TABLE_NAME, MBCategoryTable.TABLE_COLUMNS,
73              upgradePKColumn, upgradeGroupIdColumn, upgradeUserIdColumn);
74  
75          upgradeTable.setCreateSQL(MBCategoryTable.TABLE_SQL_CREATE);
76  
77          upgradeTable.updateTable();
78  
79          ValueMapper categoryIdMapper = new DefaultPKMapper(
80              upgradePKColumn.getValueMapper());
81  
82          AvailableMappersUtil.setMBCategoryIdMapper(categoryIdMapper);
83  
84          UpgradeColumn upgradeParentCategoryIdColumn = new SwapUpgradeColumnImpl(
85              "parentCategoryId", categoryIdMapper);
86  
87          upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
88              MBCategoryTable.TABLE_NAME, MBCategoryTable.TABLE_COLUMNS,
89              upgradeParentCategoryIdColumn);
90  
91          upgradeTable.updateTable();
92  
93          UpgradeColumn upgradeCategoryIdColumn = new SwapUpgradeColumnImpl(
94              "categoryId", categoryIdMapper);
95  
96          // MBMessage
97  
98          upgradePKColumn = new PKUpgradeColumnImpl("messageId", true);
99  
100         PKUpgradeColumnImpl upgradeThreadIdPKColumn =
101             new LazyPKUpgradeColumnImpl("threadId");
102 
103         UpgradeColumn upgradeAttachmentsColumn =
104             new MBMessageAttachmentsUpgradeColumnImpl(
105                 upgradePKColumn, upgradeCompanyIdColumn,
106             upgradeThreadIdPKColumn);
107 
108         upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
109             MBMessageTable.TABLE_NAME, MBMessageTable.TABLE_COLUMNS,
110             upgradePKColumn, upgradeCompanyIdColumn, upgradeUserIdColumn,
111             upgradeCategoryIdColumn, upgradeThreadIdPKColumn,
112             upgradeAttachmentsColumn);
113 
114         upgradeTable.setCreateSQL(MBMessageTable.TABLE_SQL_CREATE);
115 
116         upgradeTable.updateTable();
117 
118         ValueMapper messageIdMapper = new DefaultPKMapper(
119             upgradePKColumn.getValueMapper());
120 
121         AvailableMappersUtil.setMBMessageIdMapper(messageIdMapper);
122 
123         ValueMapper threadIdMapper = upgradeThreadIdPKColumn.getValueMapper();
124 
125         AvailableMappersUtil.setMBThreadIdMapper(threadIdMapper);
126 
127         UpgradeColumn upgradeParentMessageIdColumn = new SwapUpgradeColumnImpl(
128             "parentMessageId", messageIdMapper);
129 
130         upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
131             MBMessageTable.TABLE_NAME, MBMessageTable.TABLE_COLUMNS,
132             upgradeParentMessageIdColumn);
133 
134         upgradeTable.updateTable();
135 
136         UpgradeColumn upgradeMessageIdColumn = new SwapUpgradeColumnImpl(
137             "messageId", messageIdMapper);
138 
139         UpgradeColumn upgradeRootMessageIdColumn = new SwapUpgradeColumnImpl(
140             "rootMessageId", messageIdMapper);
141 
142         // MBMessageFlag
143 
144         upgradePKColumn = new PKUpgradeColumnImpl("messageFlagId", true);
145 
146         upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
147             MBMessageFlagTable.TABLE_NAME, MBMessageFlagTable.TABLE_COLUMNS,
148             upgradePKColumn, upgradeUserIdColumn, upgradeMessageIdColumn);
149 
150         upgradeTable.setCreateSQL(MBMessageFlagTable.TABLE_SQL_CREATE);
151 
152         upgradeTable.updateTable();
153 
154         // MBStatsUser
155 
156         upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
157             MBStatsUserTable.TABLE_NAME, MBStatsUserTable.TABLE_COLUMNS,
158             new PKUpgradeColumnImpl("statsUserId", false),
159             upgradeGroupIdColumn, upgradeUserIdColumn);
160 
161         upgradeTable.setCreateSQL(MBStatsUserTable.TABLE_SQL_CREATE);
162 
163         upgradeTable.updateTable();
164 
165         // MBThread
166 
167         UpgradeColumn upgradeThreadIdColumn = new SwapUpgradeColumnImpl(
168             "threadId", threadIdMapper);
169 
170         UpgradeColumn upgradeLastPostByUserIdColumn = new SwapUpgradeColumnImpl(
171             "lastPostByUserId", new Integer(Types.VARCHAR),
172             AvailableMappersUtil.getUserIdMapper());
173 
174         upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
175             MBThreadTable.TABLE_NAME, MBThreadTable.TABLE_COLUMNS,
176             upgradeThreadIdColumn, upgradeCategoryIdColumn,
177             upgradeRootMessageIdColumn, upgradeLastPostByUserIdColumn);
178 
179         upgradeTable.setCreateSQL(MBThreadTable.TABLE_SQL_CREATE);
180 
181         upgradeTable.updateTable();
182 
183         // MBDiscussion
184 
185         ClassNameIdUpgradeColumnImpl classNameIdColumn =
186             new ClassNameIdUpgradeColumnImpl();
187 
188         Map<Long, ClassPKContainer> classPKContainers =
189             new HashMap<Long, ClassPKContainer>();
190 
191         classPKContainers.put(
192             new Long(PortalUtil.getClassNameId(BlogsEntry.class.getName())),
193             new ClassPKContainer(
194                 AvailableMappersUtil.getBlogsEntryIdMapper(), true));
195 
196         UpgradeColumn upgradeClassPKColumn = new ClassPKUpgradeColumnImpl(
197             classNameIdColumn, classPKContainers);
198 
199         upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
200             MBDiscussionTable.TABLE_NAME, MBDiscussionTable.TABLE_COLUMNS,
201             new PKUpgradeColumnImpl("discussionId", false),
202             classNameIdColumn, upgradeClassPKColumn, upgradeThreadIdColumn);
203 
204         upgradeTable.setCreateSQL(MBDiscussionTable.TABLE_SQL_CREATE);
205 
206         upgradeTable.updateTable();
207     }
208 
209 }