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.mail.model.CyrusUser;
26  import com.liferay.mail.model.CyrusVirtual;
27  import com.liferay.portal.kernel.log.Log;
28  import com.liferay.portal.kernel.log.LogFactoryUtil;
29  import com.liferay.portal.model.impl.AccountImpl;
30  import com.liferay.portal.model.impl.ContactImpl;
31  import com.liferay.portal.model.impl.PasswordTrackerImpl;
32  import com.liferay.portal.model.impl.UserImpl;
33  import com.liferay.portal.upgrade.UpgradeException;
34  import com.liferay.portal.upgrade.UpgradeProcess;
35  import com.liferay.portal.upgrade.util.DefaultPKMapper;
36  import com.liferay.portal.upgrade.util.DefaultUpgradeTableImpl;
37  import com.liferay.portal.upgrade.util.PKUpgradeColumnImpl;
38  import com.liferay.portal.upgrade.util.SwapUpgradeColumnImpl;
39  import com.liferay.portal.upgrade.util.TempUpgradeColumnImpl;
40  import com.liferay.portal.upgrade.util.UpgradeColumn;
41  import com.liferay.portal.upgrade.util.UpgradeTable;
42  import com.liferay.portal.upgrade.util.ValueMapper;
43  import com.liferay.portal.upgrade.v4_3_0.util.AvailableMappersUtil;
44  import com.liferay.portal.upgrade.v4_3_0.util.UserPortraitIdUpgradeColumnImpl;
45  
46  import java.sql.Types;
47  
48  /**
49   * <a href="UpgradeUser.java.html"><b><i>View Source</i></b></a>
50   *
51   * @author Alexander Chow
52   * @author Brian Wing Shun Chan
53   * @author Bruno Farache
54   *
55   */
56  public class UpgradeUser extends UpgradeProcess {
57  
58      public void upgrade() throws UpgradeException {
59          _log.info("Upgrading");
60  
61          try {
62              doUpgrade();
63          }
64          catch (Exception e) {
65              throw new UpgradeException(e);
66          }
67      }
68  
69      protected void doUpgrade() throws Exception {
70  
71          // User_
72  
73          PKUpgradeColumnImpl upgradePKColumn =
74              new PKUpgradeColumnImpl("userId", new Integer(Types.VARCHAR), true);
75  
76          UpgradeColumn upgradeCompanyIdColumn = new TempUpgradeColumnImpl(
77              "companyId", new Integer(Types.VARCHAR));
78  
79          UpgradeColumn upgradeContactIdColumn = new TempUpgradeColumnImpl(
80              "contactId", new Integer(Types.VARCHAR));
81  
82          UpgradeColumn upgradeUserPortraitIdColumn =
83              new UserPortraitIdUpgradeColumnImpl(
84                  upgradePKColumn, AvailableMappersUtil.getImageIdMapper());
85  
86          UpgradeTable upgradeTable = new DefaultUpgradeTableImpl(
87              UserImpl.TABLE_NAME, UserImpl.TABLE_COLUMNS, upgradePKColumn,
88              upgradeCompanyIdColumn, upgradeContactIdColumn,
89              upgradeUserPortraitIdColumn);
90  
91          upgradeTable.updateTable();
92  
93          ValueMapper userIdMapper = new DefaultPKMapper(
94              upgradePKColumn.getValueMapper());
95  
96          AvailableMappersUtil.setUserIdMapper(userIdMapper);
97  
98          UpgradeColumn upgradeUserIdColumn = new SwapUpgradeColumnImpl(
99              "userId", new Integer(Types.VARCHAR), userIdMapper);
100 
101         // Account
102 
103         upgradeTable = new DefaultUpgradeTableImpl(
104             AccountImpl.TABLE_NAME, AccountImpl.TABLE_COLUMNS,
105             upgradeUserIdColumn);
106 
107         upgradeTable.setCreateSQL(AccountImpl.TABLE_SQL_CREATE);
108 
109         upgradeTable.updateTable();
110 
111         // Contact
112 
113         UpgradeColumn upgradeAccountIdColumn = new TempUpgradeColumnImpl(
114             "accountId", new Integer(Types.VARCHAR));
115 
116         UpgradeColumn upgradeParentContactIdColumn = new TempUpgradeColumnImpl(
117             "parentContactId", new Integer(Types.VARCHAR));
118 
119         UpgradeColumn upgradePrefixIdColumn = new TempUpgradeColumnImpl(
120             "prefixId", new Integer(Types.VARCHAR));
121 
122         UpgradeColumn upgradeSuffixIdColumn = new TempUpgradeColumnImpl(
123             "suffixId", new Integer(Types.VARCHAR));
124 
125         upgradeTable = new DefaultUpgradeTableImpl(
126             ContactImpl.TABLE_NAME, ContactImpl.TABLE_COLUMNS,
127             upgradeContactIdColumn, upgradeCompanyIdColumn, upgradeUserIdColumn,
128             upgradeAccountIdColumn, upgradeParentContactIdColumn,
129             upgradePrefixIdColumn, upgradeSuffixIdColumn);
130 
131         upgradeTable.updateTable();
132 
133         // CyrusUser
134 
135         upgradeTable = new DefaultUpgradeTableImpl(
136             CyrusUser.TABLE_NAME, CyrusUser.TABLE_COLUMNS, upgradeUserIdColumn);
137 
138         upgradeTable.updateTable();
139 
140         // CyrusVirtual
141 
142         upgradeTable = new DefaultUpgradeTableImpl(
143             CyrusVirtual.TABLE_NAME, CyrusVirtual.TABLE_COLUMNS,
144             upgradeUserIdColumn);
145 
146         upgradeTable.updateTable();
147 
148         // PasswordTracker
149 
150         upgradeTable = new DefaultUpgradeTableImpl(
151             PasswordTrackerImpl.TABLE_NAME, PasswordTrackerImpl.TABLE_COLUMNS,
152             new PKUpgradeColumnImpl("passwordTrackerId", false),
153             upgradeUserIdColumn);
154 
155         upgradeTable.setCreateSQL(PasswordTrackerImpl.TABLE_SQL_CREATE);
156 
157         upgradeTable.updateTable();
158     }
159 
160     private static Log _log = LogFactoryUtil.getLog(UpgradeUser.class);
161 
162 }