1
22
23 package com.liferay.portal.verify;
24
25 import com.liferay.portal.kernel.dao.jdbc.DataAccess;
26 import com.liferay.portal.kernel.util.StringPool;
27 import com.liferay.portlet.social.service.SocialActivityLocalServiceUtil;
28 import com.liferay.portlet.social.service.SocialRequestLocalServiceUtil;
29
30 import java.sql.Connection;
31 import java.sql.PreparedStatement;
32 import java.sql.ResultSet;
33
34
39 public class VerifySocial extends VerifyProcess {
40
41 protected void deleteDuplicateActivities() throws Exception {
42 StringBuilder sb = new StringBuilder();
43
44 sb.append("select distinct sa1.* from SocialActivity sa1 ");
45 sb.append("inner join SocialActivity sa2 on ");
46 sb.append("sa1.activityId != sa2.activityId and ");
47 sb.append("sa1.groupId = sa2.groupId and ");
48 sb.append("sa1.userId = sa2.userId and ");
49 sb.append("sa1.classNameId = sa2.classNameId and ");
50 sb.append("sa1.classPK = sa2.classPK and ");
51 sb.append("sa1.type_ = sa2.type_ and ");
52 sb.append("sa1.extraData = sa2.extraData and ");
53 sb.append("sa1.receiverUserId = sa2.receiverUserId ");
54 sb.append("where sa1.mirrorActivityId = 0 ");
55 sb.append("order by sa1.groupId, sa1.userId, sa1.classNameId, ");
56 sb.append("sa1.classPK, sa1.type_, sa1.extraData, ");
57 sb.append("sa1.receiverUserId, sa1.createDate desc");
58
59 String sql = sb.toString();
60
61 Connection con = null;
62 PreparedStatement ps = null;
63 ResultSet rs = null;
64
65 try {
66 con = DataAccess.getConnection();
67
68 ps = con.prepareStatement(sql);
69
70 rs = ps.executeQuery();
71
72 long groupId = 0;
73 long userId = 0;
74 long classNameId = 0;
75 long classPK = 0;
76 long type = 0;
77 String extraData = StringPool.BLANK;
78 long receiverUserId = 0;
79
80 while (rs.next()) {
81 long curActivityId = rs.getLong("activityId");
82 long curGroupId = rs.getLong("groupId");
83 long curUserId = rs.getLong("userId");
84 long curClassNameId = rs.getLong("classNameId");
85 long curClassPK = rs.getLong("classPK");
86 long curType = rs.getLong("type_");
87 String curExtraData = rs.getString("extraData");
88 long curReceiverUserId = rs.getLong("receiverUserId");
89
90 if ((curGroupId == groupId) && (curUserId == userId) &&
91 (curClassNameId == classNameId) &&
92 (curClassPK == classPK) && (curType == type) &&
93 (curExtraData.equals(extraData)) &&
94 (curReceiverUserId == receiverUserId)) {
95
96 SocialActivityLocalServiceUtil.deleteActivity(
97 curActivityId);
98 }
99 else {
100 groupId = curGroupId;
101 userId = curUserId;
102 classNameId = curClassNameId;
103 classPK = curClassPK;
104 type = curType;
105 extraData = curExtraData;
106 receiverUserId = curReceiverUserId;
107 }
108 }
109 }
110 finally {
111 DataAccess.cleanUp(con, ps, rs);
112 }
113 }
114
115 protected void deleteDuplicateRequests() throws Exception {
116 StringBuilder sb = new StringBuilder();
117
118 sb.append("select distinct sr1.* from SocialRequest sr1 ");
119 sb.append("inner join SocialRequest sr2 on ");
120 sb.append("sr1.requestId != sr2.requestId and ");
121 sb.append("sr1.groupId = sr2.groupId and ");
122 sb.append("sr1.userId = sr2.userId and ");
123 sb.append("sr1.classNameId = sr2.classNameId and ");
124 sb.append("sr1.classPK = sr2.classPK and ");
125 sb.append("sr1.type_ = sr2.type_ and ");
126 sb.append("sr1.extraData = sr2.extraData and ");
127 sb.append("sr1.receiverUserId = sr2.receiverUserId ");
128 sb.append("order by sr1.groupId, sr1.userId, sr1.classNameId, ");
129 sb.append("sr1.classPK, sr1.type_, sr1.extraData, ");
130 sb.append("sr1.receiverUserId, sr1.createDate desc");
131
132 String sql = sb.toString();
133
134 Connection con = null;
135 PreparedStatement ps = null;
136 ResultSet rs = null;
137
138 try {
139 con = DataAccess.getConnection();
140
141 ps = con.prepareStatement(sql);
142
143 rs = ps.executeQuery();
144
145 long groupId = 0;
146 long userId = 0;
147 long classNameId = 0;
148 long classPK = 0;
149 long type = 0;
150 String extraData = StringPool.BLANK;
151 long receiverUserId = 0;
152
153 while (rs.next()) {
154 long curRequestId = rs.getLong("requestId");
155 long curGroupId = rs.getLong("groupId");
156 long curUserId = rs.getLong("userId");
157 long curClassNameId = rs.getLong("classNameId");
158 long curClassPK = rs.getLong("classPK");
159 long curType = rs.getLong("type_");
160 String curExtraData = rs.getString("extraData");
161 long curReceiverUserId = rs.getLong("receiverUserId");
162
163 if ((curGroupId == groupId) && (curUserId == userId) &&
164 (curClassNameId == classNameId) &&
165 (curClassPK == classPK) && (curType == type) &&
166 (curExtraData.equals(extraData)) &&
167 (curReceiverUserId == receiverUserId)) {
168
169 SocialRequestLocalServiceUtil.deleteRequest(curRequestId);
170 }
171 else {
172 groupId = curGroupId;
173 userId = curUserId;
174 classNameId = curClassNameId;
175 classPK = curClassPK;
176 type = curType;
177 extraData = curExtraData;
178 receiverUserId = curReceiverUserId;
179 }
180 }
181 }
182 finally {
183 DataAccess.cleanUp(con, ps, rs);
184 }
185 }
186
187 protected void doVerify() throws Exception {
188
189
193 }
196
197 }