001
014
015 package com.liferay.portal.upgrade.v6_1_0;
016
017 import com.liferay.portal.kernel.security.auth.FullNameGenerator;
018 import com.liferay.portal.kernel.security.auth.FullNameGeneratorFactory;
019 import com.liferay.portal.kernel.upgrade.UpgradeProcess;
020 import com.liferay.portal.kernel.util.LoggingTimer;
021 import com.liferay.portal.kernel.util.StringBundler;
022 import com.liferay.portal.kernel.util.StringPool;
023
024 import java.sql.PreparedStatement;
025 import java.sql.ResultSet;
026
027
030 public class UpgradeUserName extends UpgradeProcess {
031
032 @Override
033 protected void doUpgrade() throws Exception {
034 updateTable("BookmarksEntry", false);
035 updateTable("BookmarksFolder", false);
036 updateTable("IGFolder", false);
037 updateTable("IGImage", false);
038 updateTable("PollsVote", true);
039 }
040
041 protected void updateTable(String tableName, boolean setCompanyId)
042 throws Exception {
043
044 try (LoggingTimer loggingTimer = new LoggingTimer(tableName)) {
045 StringBundler sb = new StringBundler(11);
046
047 sb.append("select distinct User_.companyId, User_.userId, ");
048 sb.append("User_.firstName, User_.middleName, User_.lastName ");
049 sb.append("from User_ inner join ");
050 sb.append(tableName);
051 sb.append(" on ");
052 sb.append(tableName);
053 sb.append(".userId = User_.userId where ");
054 sb.append(tableName);
055 sb.append(".userName is null or ");
056 sb.append(tableName);
057 sb.append(".userName = ''");
058
059 try (PreparedStatement ps = connection.prepareStatement(
060 sb.toString());
061 ResultSet rs = ps.executeQuery()) {
062
063 while (rs.next()) {
064 long companyId = rs.getLong("companyId");
065 long userId = rs.getLong("userId");
066 String firstName = rs.getString("firstName");
067 String middleName = rs.getString("middleName");
068 String lastName = rs.getString("lastName");
069
070 FullNameGenerator fullNameGenerator =
071 FullNameGeneratorFactory.getInstance();
072
073 String fullName = fullNameGenerator.getFullName(
074 firstName, middleName, lastName);
075
076 fullName = fullName.replace(
077 StringPool.APOSTROPHE, StringPool.DOUBLE_APOSTROPHE);
078
079 if (setCompanyId) {
080 sb = new StringBundler(8);
081
082 sb.append("update ");
083 sb.append(tableName);
084 sb.append(" set companyId = ");
085 sb.append(companyId);
086 sb.append(", userName = '");
087 sb.append(fullName);
088 sb.append("' where userId = ");
089 sb.append(userId);
090 }
091 else {
092 sb = new StringBundler(6);
093
094 sb.append("update ");
095 sb.append(tableName);
096 sb.append(" set userName = '");
097 sb.append(fullName);
098 sb.append("' where userId = ");
099 sb.append(userId);
100 }
101
102 runSQL(sb.toString());
103 }
104 }
105 }
106 }
107
108 }