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.SwapUpgradeColumnImpl;
019    import com.liferay.portal.kernel.upgrade.util.UpgradeColumn;
020    import com.liferay.portal.kernel.upgrade.util.UpgradeTable;
021    import com.liferay.portal.kernel.upgrade.util.UpgradeTableFactoryUtil;
022    import com.liferay.portal.kernel.upgrade.util.ValueMapper;
023    import com.liferay.portal.upgrade.util.PKUpgradeColumnImpl;
024    import com.liferay.portal.upgrade.v4_3_0.util.AvailableMappersUtil;
025    import com.liferay.portal.upgrade.v4_3_0.util.PollsChoiceIdUpgradeColumnImpl;
026    import com.liferay.portal.upgrade.v4_3_0.util.PollsChoiceTable;
027    import com.liferay.portal.upgrade.v4_3_0.util.PollsQuestionTable;
028    import com.liferay.portal.upgrade.v4_3_0.util.PollsVoteChoiceIdUpgradeColumnImpl;
029    import com.liferay.portal.upgrade.v4_3_0.util.PollsVoteTable;
030    
031    import java.sql.Types;
032    
033    /**
034     * @author Brian Wing Shun Chan
035     */
036    public class UpgradePolls extends UpgradeProcess {
037    
038            protected void doUpgrade() throws Exception {
039    
040                    // PollsQuestion
041    
042                    UpgradeColumn upgradeGroupIdColumn = new SwapUpgradeColumnImpl(
043                            "groupId", AvailableMappersUtil.getGroupIdMapper());
044    
045                    UpgradeColumn upgradeUserIdColumn = new SwapUpgradeColumnImpl(
046                            "userId", new Integer(Types.VARCHAR),
047                            AvailableMappersUtil.getUserIdMapper());
048    
049                    PKUpgradeColumnImpl upgradePKColumn = new PKUpgradeColumnImpl(
050                            "questionId", true);
051    
052                    UpgradeTable upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
053                            PollsQuestionTable.TABLE_NAME, PollsQuestionTable.TABLE_COLUMNS,
054                            upgradePKColumn, upgradeGroupIdColumn, upgradeUserIdColumn);
055    
056                    upgradeTable.setCreateSQL(PollsQuestionTable.TABLE_SQL_CREATE);
057    
058                    upgradeTable.updateTable();
059    
060                    ValueMapper questionIdMapper = upgradePKColumn.getValueMapper();
061    
062                    AvailableMappersUtil.setPollsQuestionIdMapper(questionIdMapper);
063    
064                    UpgradeColumn upgradeQuestionIdColumn = new SwapUpgradeColumnImpl(
065                            "questionId", questionIdMapper);
066    
067                    // PollsChoice
068    
069                    PKUpgradeColumnImpl upgradeChoiceId =
070                            new PollsChoiceIdUpgradeColumnImpl(upgradeQuestionIdColumn);
071    
072                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
073                            PollsChoiceTable.TABLE_NAME, PollsChoiceTable.TABLE_COLUMNS,
074                            upgradeQuestionIdColumn, upgradeChoiceId);
075    
076                    upgradeTable.setCreateSQL(PollsChoiceTable.TABLE_SQL_CREATE);
077    
078                    upgradeTable.updateTable();
079    
080                    ValueMapper choiceIdMapper = upgradeChoiceId.getValueMapper();
081    
082                    // PollsVote
083    
084                    UpgradeColumn upgradeVoteChoiceIdColumn =
085                            new PollsVoteChoiceIdUpgradeColumnImpl(
086                                    upgradeQuestionIdColumn, choiceIdMapper);
087    
088                    upgradeTable = UpgradeTableFactoryUtil.getUpgradeTable(
089                            PollsVoteTable.TABLE_NAME, PollsVoteTable.TABLE_COLUMNS,
090                            new PKUpgradeColumnImpl("voteId", false), upgradeUserIdColumn,
091                            upgradeQuestionIdColumn, upgradeVoteChoiceIdColumn);
092    
093                    upgradeTable.setCreateSQL(PollsVoteTable.TABLE_SQL_CREATE);
094    
095                    upgradeTable.updateTable();
096            }
097    
098    }