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.DefaultPKMapper;
30  import com.liferay.portal.upgrade.util.DefaultUpgradeTableImpl;
31  import com.liferay.portal.upgrade.util.LazyPKUpgradeColumnImpl;
32  import com.liferay.portal.upgrade.util.PKUpgradeColumnImpl;
33  import com.liferay.portal.upgrade.util.SwapUpgradeColumnImpl;
34  import com.liferay.portal.upgrade.util.UpgradeColumn;
35  import com.liferay.portal.upgrade.util.UpgradeTable;
36  import com.liferay.portal.upgrade.util.ValueMapper;
37  import com.liferay.portal.upgrade.v4_3_0.util.AvailableMappersUtil;
38  import com.liferay.portal.upgrade.v4_3_0.util.ClassNameIdUpgradeColumnImpl;
39  import com.liferay.portal.upgrade.v4_3_0.util.ClassPKContainer;
40  import com.liferay.portal.upgrade.v4_3_0.util.ClassPKUpgradeColumnImpl;
41  import com.liferay.portal.upgrade.v4_3_0.util.MBCategoryIdUpgradeColumnImpl;
42  import com.liferay.portal.upgrade.v4_3_0.util.MBMessageAttachmentsUpgradeColumnImpl;
43  import com.liferay.portal.util.PortalUtil;
44  import com.liferay.portlet.blogs.model.BlogsEntry;
45  import com.liferay.portlet.messageboards.model.impl.MBCategoryImpl;
46  import com.liferay.portlet.messageboards.model.impl.MBDiscussionImpl;
47  import com.liferay.portlet.messageboards.model.impl.MBMessageFlagImpl;
48  import com.liferay.portlet.messageboards.model.impl.MBMessageImpl;
49  import com.liferay.portlet.messageboards.model.impl.MBStatsUserImpl;
50  import com.liferay.portlet.messageboards.model.impl.MBThreadImpl;
51  
52  import java.sql.Types;
53  
54  import java.util.HashMap;
55  import java.util.Map;
56  
57  /**
58   * <a href="UpgradeMessageBoards.java.html"><b><i>View Source</i></b></a>
59   *
60   * @author Brian Wing Shun Chan
61   *
62   */
63  public class UpgradeMessageBoards extends UpgradeProcess {
64  
65      public void upgrade() throws UpgradeException {
66          _log.info("Upgrading");
67  
68          try {
69              doUpgrade();
70          }
71          catch (Exception e) {
72              throw new UpgradeException(e);
73          }
74      }
75  
76      protected void doUpgrade() throws Exception {
77  
78          // MBCategory
79  
80          UpgradeColumn upgradeCompanyIdColumn = new SwapUpgradeColumnImpl(
81              "companyId", new Integer(Types.VARCHAR),
82              AvailableMappersUtil.getCompanyIdMapper());
83  
84          UpgradeColumn upgradeGroupIdColumn = new SwapUpgradeColumnImpl(
85              "groupId", AvailableMappersUtil.getGroupIdMapper());
86  
87          UpgradeColumn upgradeUserIdColumn = new SwapUpgradeColumnImpl(
88              "userId", new Integer(Types.VARCHAR),
89              AvailableMappersUtil.getUserIdMapper());
90  
91          PKUpgradeColumnImpl upgradePKColumn =
92              new MBCategoryIdUpgradeColumnImpl();
93  
94          UpgradeTable upgradeTable = new DefaultUpgradeTableImpl(
95              MBCategoryImpl.TABLE_NAME, MBCategoryImpl.TABLE_COLUMNS,
96              upgradePKColumn, upgradeGroupIdColumn, upgradeUserIdColumn);
97  
98          upgradeTable.setCreateSQL(MBCategoryImpl.TABLE_SQL_CREATE);
99  
100         upgradeTable.updateTable();
101 
102         ValueMapper categoryIdMapper = new DefaultPKMapper(
103             upgradePKColumn.getValueMapper());
104 
105         AvailableMappersUtil.setMBCategoryIdMapper(categoryIdMapper);
106 
107         UpgradeColumn upgradeParentCategoryIdColumn = new SwapUpgradeColumnImpl(
108             "parentCategoryId", categoryIdMapper);
109 
110         upgradeTable = new DefaultUpgradeTableImpl(
111             MBCategoryImpl.TABLE_NAME, MBCategoryImpl.TABLE_COLUMNS,
112             upgradeParentCategoryIdColumn);
113 
114         upgradeTable.updateTable();
115 
116         UpgradeColumn upgradeCategoryIdColumn = new SwapUpgradeColumnImpl(
117             "categoryId", categoryIdMapper);
118 
119         // MBMessage
120 
121         upgradePKColumn = new PKUpgradeColumnImpl("messageId", true);
122 
123         PKUpgradeColumnImpl upgradeThreadIdPKColumn =
124             new LazyPKUpgradeColumnImpl("threadId");
125 
126         UpgradeColumn upgradeAttachmentsColumn =
127             new MBMessageAttachmentsUpgradeColumnImpl(
128                 upgradePKColumn, upgradeCompanyIdColumn,
129             upgradeThreadIdPKColumn);
130 
131         upgradeTable = new DefaultUpgradeTableImpl(
132             MBMessageImpl.TABLE_NAME, MBMessageImpl.TABLE_COLUMNS,
133             upgradePKColumn, upgradeCompanyIdColumn, upgradeUserIdColumn,
134             upgradeCategoryIdColumn, upgradeThreadIdPKColumn,
135             upgradeAttachmentsColumn);
136 
137         upgradeTable.setCreateSQL(MBMessageImpl.TABLE_SQL_CREATE);
138 
139         upgradeTable.updateTable();
140 
141         ValueMapper messageIdMapper = new DefaultPKMapper(
142             upgradePKColumn.getValueMapper());
143 
144         AvailableMappersUtil.setMBMessageIdMapper(messageIdMapper);
145 
146         ValueMapper threadIdMapper = upgradeThreadIdPKColumn.getValueMapper();
147 
148         AvailableMappersUtil.setMBThreadIdMapper(threadIdMapper);
149 
150         UpgradeColumn upgradeParentMessageIdColumn = new SwapUpgradeColumnImpl(
151             "parentMessageId", messageIdMapper);
152 
153         upgradeTable = new DefaultUpgradeTableImpl(
154             MBMessageImpl.TABLE_NAME, MBMessageImpl.TABLE_COLUMNS,
155             upgradeParentMessageIdColumn);
156 
157         upgradeTable.updateTable();
158 
159         UpgradeColumn upgradeMessageIdColumn = new SwapUpgradeColumnImpl(
160             "messageId", messageIdMapper);
161 
162         UpgradeColumn upgradeRootMessageIdColumn = new SwapUpgradeColumnImpl(
163             "rootMessageId", messageIdMapper);
164 
165         // MBMessageFlag
166 
167         upgradePKColumn = new PKUpgradeColumnImpl("messageFlagId", true);
168 
169         upgradeTable = new DefaultUpgradeTableImpl(
170             MBMessageFlagImpl.TABLE_NAME, MBMessageFlagImpl.TABLE_COLUMNS,
171             upgradePKColumn, upgradeUserIdColumn, upgradeMessageIdColumn);
172 
173         upgradeTable.setCreateSQL(MBMessageFlagImpl.TABLE_SQL_CREATE);
174 
175         upgradeTable.updateTable();
176 
177         // MBStatsUser
178 
179         upgradeTable = new DefaultUpgradeTableImpl(
180             MBStatsUserImpl.TABLE_NAME, MBStatsUserImpl.TABLE_COLUMNS,
181             new PKUpgradeColumnImpl("statsUserId", false),
182             upgradeGroupIdColumn, upgradeUserIdColumn);
183 
184         upgradeTable.setCreateSQL(MBStatsUserImpl.TABLE_SQL_CREATE);
185 
186         upgradeTable.updateTable();
187 
188         // MBThread
189 
190         UpgradeColumn upgradeThreadIdColumn = new SwapUpgradeColumnImpl(
191             "threadId", threadIdMapper);
192 
193         UpgradeColumn upgradeLastPostByUserIdColumn = new SwapUpgradeColumnImpl(
194             "lastPostByUserId", new Integer(Types.VARCHAR),
195             AvailableMappersUtil.getUserIdMapper());
196 
197         upgradeTable = new DefaultUpgradeTableImpl(
198             MBThreadImpl.TABLE_NAME, MBThreadImpl.TABLE_COLUMNS,
199             upgradeThreadIdColumn, upgradeCategoryIdColumn,
200             upgradeRootMessageIdColumn, upgradeLastPostByUserIdColumn);
201 
202         upgradeTable.setCreateSQL(MBThreadImpl.TABLE_SQL_CREATE);
203 
204         upgradeTable.updateTable();
205 
206         // MBDiscussion
207 
208         ClassNameIdUpgradeColumnImpl classNameIdColumn =
209             new ClassNameIdUpgradeColumnImpl();
210 
211         Map<Long, ClassPKContainer> classPKContainers =
212             new HashMap<Long, ClassPKContainer>();
213 
214         classPKContainers.put(
215             new Long(PortalUtil.getClassNameId(BlogsEntry.class.getName())),
216             new ClassPKContainer(
217                 AvailableMappersUtil.getBlogsEntryIdMapper(), true));
218 
219         UpgradeColumn upgradeClassPKColumn = new ClassPKUpgradeColumnImpl(
220             classNameIdColumn, classPKContainers);
221 
222         upgradeTable = new DefaultUpgradeTableImpl(
223             MBDiscussionImpl.TABLE_NAME, MBDiscussionImpl.TABLE_COLUMNS,
224             new PKUpgradeColumnImpl("discussionId", false),
225             classNameIdColumn, upgradeClassPKColumn, upgradeThreadIdColumn);
226 
227         upgradeTable.setCreateSQL(MBDiscussionImpl.TABLE_SQL_CREATE);
228 
229         upgradeTable.updateTable();
230     }
231 
232     private static Log _log = LogFactoryUtil.getLog(UpgradeMessageBoards.class);
233 
234 }