001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.upgrade.v4_3_0;
016    
017    import com.liferay.portal.kernel.upgrade.UpgradeProcess;
018    import com.liferay.portal.kernel.upgrade.util.DefaultPKMapper;
019    import com.liferay.portal.kernel.upgrade.util.SwapUpgradeColumnImpl;
020    import com.liferay.portal.kernel.upgrade.util.UpgradeColumn;
021    import com.liferay.portal.kernel.upgrade.util.UpgradeTable;
022    import com.liferay.portal.kernel.upgrade.util.UpgradeTableFactoryUtil;
023    import com.liferay.portal.kernel.upgrade.util.ValueMapper;
024    import com.liferay.portal.upgrade.util.LazyPKUpgradeColumnImpl;
025    import com.liferay.portal.upgrade.util.PKUpgradeColumnImpl;
026    import com.liferay.portal.upgrade.v4_3_0.util.AvailableMappersUtil;
027    import com.liferay.portal.upgrade.v4_3_0.util.ClassNameIdUpgradeColumnImpl;
028    import com.liferay.portal.upgrade.v4_3_0.util.ClassPKContainer;
029    import com.liferay.portal.upgrade.v4_3_0.util.ClassPKUpgradeColumnImpl;
030    import com.liferay.portal.upgrade.v4_3_0.util.MBCategoryIdUpgradeColumnImpl;
031    import com.liferay.portal.upgrade.v4_3_0.util.MBCategoryTable;
032    import com.liferay.portal.upgrade.v4_3_0.util.MBDiscussionTable;
033    import com.liferay.portal.upgrade.v4_3_0.util.MBMessageAttachmentsUpgradeColumnImpl;
034    import com.liferay.portal.upgrade.v4_3_0.util.MBMessageFlagTable;
035    import com.liferay.portal.upgrade.v4_3_0.util.MBMessageTable;
036    import com.liferay.portal.upgrade.v4_3_0.util.MBStatsUserTable;
037    import com.liferay.portal.upgrade.v4_3_0.util.MBThreadTable;
038    import com.liferay.portal.util.PortalUtil;
039    import com.liferay.portlet.blogs.model.BlogsEntry;
040    
041    import java.sql.Types;
042    
043    import java.util.HashMap;
044    import java.util.Map;
045    
046    /**
047     * @author Brian Wing Shun Chan
048     */
049    public class UpgradeMessageBoards extends UpgradeProcess {
050    
051            protected void doUpgrade() throws Exception {
052    
053                    // MBCategory
054    
055                    UpgradeColumn upgradeCompanyIdColumn = new SwapUpgradeColumnImpl(
056                            "companyId", new Integer(Types.VARCHAR),
057                            AvailableMappersUtil.getCompanyIdMapper());
058    
059                    UpgradeColumn upgradeGroupIdColumn = new SwapUpgradeColumnImpl(
060                            "groupId", AvailableMappersUtil.getGroupIdMapper());
061    
062                    UpgradeColumn upgradeUserIdColumn = new SwapUpgradeColumnImpl(
063                            "userId", new Integer(Types.VARCHAR),
064                            AvailableMappersUtil.getUserIdMapper());
065    
066                    PKUpgradeColumnImpl upgradePKColumn =
067                            new MBCategoryIdUpgradeColumnImpl();
068    
069                    UpgradeTable upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
070                            MBCategoryTable.TABLE_NAME, MBCategoryTable.TABLE_COLUMNS,
071                            upgradePKColumn, upgradeGroupIdColumn, upgradeUserIdColumn);
072    
073                    upgradeTable.setCreateSQL(MBCategoryTable.TABLE_SQL_CREATE);
074    
075                    upgradeTable.updateTable();
076    
077                    ValueMapper categoryIdMapper = new DefaultPKMapper(
078                            upgradePKColumn.getValueMapper());
079    
080                    AvailableMappersUtil.setMBCategoryIdMapper(categoryIdMapper);
081    
082                    UpgradeColumn upgradeParentCategoryIdColumn = new SwapUpgradeColumnImpl(
083                            "parentCategoryId", categoryIdMapper);
084    
085                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
086                            MBCategoryTable.TABLE_NAME, MBCategoryTable.TABLE_COLUMNS,
087                            upgradeParentCategoryIdColumn);
088    
089                    upgradeTable.updateTable();
090    
091                    UpgradeColumn upgradeCategoryIdColumn = new SwapUpgradeColumnImpl(
092                            "categoryId", categoryIdMapper);
093    
094                    // MBMessage
095    
096                    upgradePKColumn = new PKUpgradeColumnImpl("messageId", true);
097    
098                    PKUpgradeColumnImpl upgradeThreadIdPKColumn =
099                            new LazyPKUpgradeColumnImpl("threadId");
100    
101                    UpgradeColumn upgradeAttachmentsColumn =
102                            new MBMessageAttachmentsUpgradeColumnImpl(
103                                    upgradePKColumn, upgradeCompanyIdColumn,
104                            upgradeThreadIdPKColumn);
105    
106                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
107                            MBMessageTable.TABLE_NAME, MBMessageTable.TABLE_COLUMNS,
108                            upgradePKColumn, upgradeCompanyIdColumn, upgradeUserIdColumn,
109                            upgradeCategoryIdColumn, upgradeThreadIdPKColumn,
110                            upgradeAttachmentsColumn);
111    
112                    upgradeTable.setCreateSQL(MBMessageTable.TABLE_SQL_CREATE);
113    
114                    upgradeTable.updateTable();
115    
116                    ValueMapper messageIdMapper = new DefaultPKMapper(
117                            upgradePKColumn.getValueMapper());
118    
119                    AvailableMappersUtil.setMBMessageIdMapper(messageIdMapper);
120    
121                    ValueMapper threadIdMapper = upgradeThreadIdPKColumn.getValueMapper();
122    
123                    AvailableMappersUtil.setMBThreadIdMapper(threadIdMapper);
124    
125                    UpgradeColumn upgradeParentMessageIdColumn = new SwapUpgradeColumnImpl(
126                            "parentMessageId", messageIdMapper);
127    
128                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
129                            MBMessageTable.TABLE_NAME, MBMessageTable.TABLE_COLUMNS,
130                            upgradeParentMessageIdColumn);
131    
132                    upgradeTable.updateTable();
133    
134                    UpgradeColumn upgradeMessageIdColumn = new SwapUpgradeColumnImpl(
135                            "messageId", messageIdMapper);
136    
137                    UpgradeColumn upgradeRootMessageIdColumn = new SwapUpgradeColumnImpl(
138                            "rootMessageId", messageIdMapper);
139    
140                    // MBMessageFlag
141    
142                    upgradePKColumn = new PKUpgradeColumnImpl("messageFlagId", true);
143    
144                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
145                            MBMessageFlagTable.TABLE_NAME, MBMessageFlagTable.TABLE_COLUMNS,
146                            upgradePKColumn, upgradeUserIdColumn, upgradeMessageIdColumn);
147    
148                    upgradeTable.setCreateSQL(MBMessageFlagTable.TABLE_SQL_CREATE);
149    
150                    upgradeTable.updateTable();
151    
152                    // MBStatsUser
153    
154                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
155                            MBStatsUserTable.TABLE_NAME, MBStatsUserTable.TABLE_COLUMNS,
156                            new PKUpgradeColumnImpl("statsUserId", false),
157                            upgradeGroupIdColumn, upgradeUserIdColumn);
158    
159                    upgradeTable.setCreateSQL(MBStatsUserTable.TABLE_SQL_CREATE);
160    
161                    upgradeTable.updateTable();
162    
163                    // MBThread
164    
165                    UpgradeColumn upgradeThreadIdColumn = new SwapUpgradeColumnImpl(
166                            "threadId", threadIdMapper);
167    
168                    UpgradeColumn upgradeLastPostByUserIdColumn = new SwapUpgradeColumnImpl(
169                            "lastPostByUserId", new Integer(Types.VARCHAR),
170                            AvailableMappersUtil.getUserIdMapper());
171    
172                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
173                            MBThreadTable.TABLE_NAME, MBThreadTable.TABLE_COLUMNS,
174                            upgradeThreadIdColumn, upgradeCategoryIdColumn,
175                            upgradeRootMessageIdColumn, upgradeLastPostByUserIdColumn);
176    
177                    upgradeTable.setCreateSQL(MBThreadTable.TABLE_SQL_CREATE);
178    
179                    upgradeTable.updateTable();
180    
181                    // MBDiscussion
182    
183                    ClassNameIdUpgradeColumnImpl classNameIdColumn =
184                            new ClassNameIdUpgradeColumnImpl();
185    
186                    Map<Long, ClassPKContainer> classPKContainers =
187                            new HashMap<Long, ClassPKContainer>();
188    
189                    classPKContainers.put(
190                            new Long(PortalUtil.getClassNameId(BlogsEntry.class.getName())),
191                            new ClassPKContainer(
192                                    AvailableMappersUtil.getBlogsEntryIdMapper(), true));
193    
194                    UpgradeColumn upgradeClassPKColumn = new ClassPKUpgradeColumnImpl(
195                            classNameIdColumn, classPKContainers);
196    
197                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
198                            MBDiscussionTable.TABLE_NAME, MBDiscussionTable.TABLE_COLUMNS,
199                            new PKUpgradeColumnImpl("discussionId", false),
200                            classNameIdColumn, upgradeClassPKColumn, upgradeThreadIdColumn);
201    
202                    upgradeTable.setCreateSQL(MBDiscussionTable.TABLE_SQL_CREATE);
203    
204                    upgradeTable.updateTable();
205            }
206    
207    }