1
22
23 package com.liferay.portal.upgrade.v5_2_3;
24
25 import com.liferay.portal.kernel.dao.jdbc.DataAccess;
26 import com.liferay.portal.kernel.log.Log;
27 import com.liferay.portal.kernel.log.LogFactoryUtil;
28 import com.liferay.portal.model.impl.UserImpl;
29 import com.liferay.portal.upgrade.UpgradeException;
30 import com.liferay.portal.upgrade.UpgradeProcess;
31 import com.liferay.portal.upgrade.util.DefaultUpgradeTableImpl;
32 import com.liferay.portal.upgrade.util.UpgradeTable;
33
34 import java.sql.Connection;
35 import java.sql.PreparedStatement;
36 import java.sql.ResultSet;
37
38
44 public class UpgradeUser extends UpgradeProcess {
45
46 public void upgrade() throws UpgradeException {
47 _log.info("Upgrading");
48
49 try {
50 doUpgrade();
51 }
52 catch (Exception e) {
53 throw new UpgradeException(e);
54 }
55 }
56
57 protected void doUpgrade() throws Exception {
58 if (isSupportsAlterColumnName()) {
59 runSQL("alter_column_type User_ greeting VARCHAR(255) null");
60 }
61 else {
62
63
65 UpgradeTable upgradeTable = new DefaultUpgradeTableImpl(
66 UserImpl.TABLE_NAME, UserImpl.TABLE_COLUMNS);
67
68 upgradeTable.setCreateSQL(UserImpl.TABLE_SQL_CREATE);
69
70 upgradeTable.updateTable();
71 }
72
73 if (isSupportsUpdateWithInnerJoin()) {
74 StringBuilder sb = new StringBuilder();
75
76 sb.append("update User_ inner join Contact_ on ");
77 sb.append("Contact_.contactId = User_.contactId set ");
78 sb.append("User_.firstName = Contact_.firstName, ");
79 sb.append("User_.middleName = Contact_.middleName, ");
80 sb.append("User_.lastName = Contact_.lastName, ");
81 sb.append("User_.jobTitle = Contact_.jobTitle");
82
83 runSQL(sb.toString());
84 }
85 else {
86 Connection con = null;
87 PreparedStatement ps = null;
88 ResultSet rs = null;
89
90 try {
91 con = DataAccess.getConnection();
92
93 ps = con.prepareStatement(
94 "select contactId, firstName, middleName, lastName, " +
95 "jobTitle from Contact_");
96
97 rs = ps.executeQuery();
98
99 while (rs.next()) {
100 long contactId = rs.getLong("contactId");
101 String firstName = rs.getString("firstName");
102 String middleName = rs.getString("middleName");
103 String lastName = rs.getString("lastName");
104 String jobTitle = rs.getString("jobTitle");
105
106 ps = con.prepareStatement(
107 "update User_ set firstName = ?, middleName = ?, " +
108 "lastName = ?, jobTitle = ? where contactId = ?");
109
110 ps.setString(1, firstName);
111 ps.setString(2, middleName);
112 ps.setString(3, lastName);
113 ps.setString(4, jobTitle);
114 ps.setLong(5, contactId);
115
116 ps.executeUpdate();
117
118 ps.close();
119 }
120 }
121 finally {
122 DataAccess.cleanUp(con, ps, rs);
123 }
124 }
125 }
126
127 private static Log _log = LogFactoryUtil.getLog(UpgradeUser.class);
128
129 }