001
014
015 package com.liferay.portal.upgrade.v6_1_0;
016
017 import com.liferay.portal.kernel.dao.jdbc.DataAccess;
018 import com.liferay.portal.kernel.json.JSONFactoryUtil;
019 import com.liferay.portal.kernel.json.JSONObject;
020 import com.liferay.portal.kernel.log.Log;
021 import com.liferay.portal.kernel.log.LogFactoryUtil;
022 import com.liferay.portal.kernel.upgrade.UpgradeProcess;
023 import com.liferay.portal.kernel.util.GetterUtil;
024 import com.liferay.portal.kernel.util.StringBundler;
025 import com.liferay.portal.kernel.util.StringPool;
026 import com.liferay.portal.kernel.util.Tuple;
027 import com.liferay.portal.model.User;
028 import com.liferay.portal.security.permission.ActionKeys;
029 import com.liferay.portal.util.PortalUtil;
030 import com.liferay.portlet.blogs.model.BlogsEntry;
031 import com.liferay.portlet.journal.model.JournalArticle;
032 import com.liferay.portlet.messageboards.model.MBCategory;
033 import com.liferay.portlet.messageboards.model.MBMessage;
034 import com.liferay.portlet.messageboards.model.MBThread;
035 import com.liferay.portlet.social.model.SocialActivityConstants;
036 import com.liferay.portlet.social.model.SocialActivityCounterConstants;
037 import com.liferay.portlet.social.model.SocialActivityCounterDefinition;
038 import com.liferay.portlet.social.util.SocialCounterPeriodUtil;
039 import com.liferay.portlet.wiki.model.WikiNode;
040 import com.liferay.portlet.wiki.model.WikiPage;
041
042 import java.sql.Connection;
043 import java.sql.PreparedStatement;
044 import java.sql.ResultSet;
045
046 import java.util.Date;
047 import java.util.HashMap;
048 import java.util.Map;
049
050
053 public class UpgradeSocial extends UpgradeProcess {
054
055 public UpgradeSocial() {
056 putEquityToActivityMap(
057 BlogsEntry.class, ActionKeys.ADD_DISCUSSION,
058 SocialActivityConstants.TYPE_ADD_COMMENT);
059 putEquityToActivityMap(BlogsEntry.class, ActionKeys.ADD_ENTRY, 2);
060 putEquityToActivityMap(
061 BlogsEntry.class, ActionKeys.ADD_VOTE,
062 SocialActivityConstants.TYPE_ADD_VOTE);
063 putEquityToActivityMap(
064 BlogsEntry.class, ActionKeys.SUBSCRIBE,
065 SocialActivityConstants.TYPE_SUBSCRIBE);
066 putEquityToActivityMap(BlogsEntry.class, ActionKeys.UPDATE, 3);
067 putEquityToActivityMap(
068 BlogsEntry.class, ActionKeys.VIEW,
069 SocialActivityConstants.TYPE_VIEW);
070
071 putEquityToActivityMap(JournalArticle.class, ActionKeys.ADD_ARTICLE, 1);
072 putEquityToActivityMap(
073 JournalArticle.class, ActionKeys.ADD_DISCUSSION,
074 SocialActivityConstants.TYPE_ADD_COMMENT);
075 putEquityToActivityMap(JournalArticle.class, ActionKeys.UPDATE, 2);
076 putEquityToActivityMap(
077 JournalArticle.class, ActionKeys.VIEW,
078 SocialActivityConstants.TYPE_VIEW);
079
080 putEquityToActivityMap(
081 MBCategory.class, ActionKeys.SUBSCRIBE,
082 SocialActivityConstants.TYPE_SUBSCRIBE);
083 putEquityToActivityMap(MBMessage.class, ActionKeys.ADD_MESSAGE, 1);
084 putEquityToActivityMap(
085 MBMessage.class, ActionKeys.ADD_VOTE,
086 SocialActivityConstants.TYPE_ADD_VOTE);
087 putEquityToActivityMap(MBMessage.class, ActionKeys.REPLY_TO_MESSAGE, 2);
088 putEquityToActivityMap(
089 MBMessage.class, ActionKeys.VIEW,
090 SocialActivityConstants.TYPE_VIEW);
091 putEquityToActivityMap(
092 MBThread.class, ActionKeys.SUBSCRIBE, MBMessage.class,
093 SocialActivityConstants.TYPE_SUBSCRIBE);
094
095 putEquityToActivityMap(
096 WikiNode.class, ActionKeys.SUBSCRIBE,
097 SocialActivityConstants.TYPE_SUBSCRIBE);
098 putEquityToActivityMap(
099 WikiPage.class, ActionKeys.ADD_ATTACHMENT,
100 SocialActivityConstants.TYPE_ADD_ATTACHMENT);
101 putEquityToActivityMap(
102 WikiPage.class, ActionKeys.ADD_DISCUSSION,
103 SocialActivityConstants.TYPE_ADD_COMMENT);
104 putEquityToActivityMap(WikiPage.class, ActionKeys.ADD_PAGE, 1);
105 putEquityToActivityMap(
106 WikiPage.class, ActionKeys.SUBSCRIBE,
107 SocialActivityConstants.TYPE_SUBSCRIBE);
108 putEquityToActivityMap(WikiPage.class, ActionKeys.UPDATE, 2);
109 putEquityToActivityMap(
110 WikiPage.class, ActionKeys.VIEW, SocialActivityConstants.TYPE_VIEW);
111 }
112
113 protected void addActivityCounter(
114 long activityCounterId, long groupId, long companyId,
115 long classNameId, long classPK, String name, int ownerType,
116 int currentValue, int totalValue, int graceValue, int startPeriod,
117 int endPeriod)
118 throws Exception {
119
120 Connection con = null;
121 PreparedStatement ps = null;
122 ResultSet rs = null;
123
124 try {
125 con = DataAccess.getUpgradeOptimizedConnection();
126
127 StringBundler sb = new StringBundler(5);
128
129 sb.append("insert into SocialActivityCounter (activityCounterId, ");
130 sb.append("groupId, companyId, classNameId, classPK, name, ");
131 sb.append("ownerType, currentValue, totalValue, graceValue, ");
132 sb.append("startPeriod, endPeriod) values (?, ?, ?, ?, ?, ?, ?, ");
133 sb.append("?, ?, ?, ?, ?)");
134
135 ps = con.prepareStatement(sb.toString());
136
137 ps.setLong(1, activityCounterId);
138 ps.setLong(2, groupId);
139 ps.setLong(3, companyId);
140 ps.setLong(4, classNameId);
141 ps.setLong(5, classPK);
142 ps.setString(6, name);
143 ps.setInt(7, ownerType);
144 ps.setInt(8, currentValue);
145 ps.setInt(9, totalValue);
146 ps.setInt(10, graceValue);
147 ps.setInt(11, startPeriod);
148 ps.setInt(12, endPeriod);
149
150 ps.executeUpdate();
151 }
152 finally {
153 DataAccess.cleanUp(con, ps, rs);
154 }
155 }
156
157 protected void addActivitySetting(
158 long groupId, long companyId, long classNameId, int activityType,
159 String name, int ownerType, int limitValue, int value)
160 throws Exception {
161
162 JSONObject valueJSONObject = JSONFactoryUtil.createJSONObject();
163
164 valueJSONObject.put("enabled", true);
165 valueJSONObject.put(
166 "limitPeriod", SocialActivityCounterDefinition.LIMIT_PERIOD_DAY);
167 valueJSONObject.put("limitValue", limitValue);
168 valueJSONObject.put("ownerType", ownerType);
169 valueJSONObject.put("value", value);
170
171 addActivitySetting(
172 increment(), groupId, companyId, classNameId, activityType, name,
173 valueJSONObject.toString());
174 }
175
176 protected void addActivitySetting(
177 long activitySettingId, long groupId, long companyId,
178 long classNameId, int activityType, String name, String value)
179 throws Exception {
180
181 Connection con = null;
182 PreparedStatement ps = null;
183 ResultSet rs = null;
184
185 try {
186 con = DataAccess.getUpgradeOptimizedConnection();
187
188 ps = con.prepareStatement(
189 "insert into SocialActivitySetting (activitySettingId, " +
190 "groupId, companyId, classNameId, activityType, name, " +
191 "value) values (?, ?, ?, ?, ?, ?, ?)");
192
193 ps.setLong(1, activitySettingId);
194 ps.setLong(2, groupId);
195 ps.setLong(3, companyId);
196 ps.setLong(4, classNameId);
197 ps.setInt(5, activityType);
198 ps.setString(6, name);
199 ps.setString(7, value);
200
201 ps.executeUpdate();
202 }
203 finally {
204 DataAccess.cleanUp(con, ps, rs);
205 }
206 }
207
208 @Override
209 protected void doUpgrade() throws Exception {
210 migrateEquityGroupSettings();
211 migrateEquitySettings();
212 migrateEquityLogs();
213
214 dropEquityTables();
215 }
216
217 protected void dropEquityTables() throws Exception {
218 runSQL("drop table SocialEquityAssetEntry");
219 runSQL("drop table SocialEquityGroupSetting");
220 runSQL("drop table SocialEquityHistory");
221 runSQL("drop table SocialEquityLog");
222 runSQL("drop table SocialEquitySetting");
223 runSQL("drop table SocialEquityUser");
224 }
225
226 protected String encodeEquityToActivityKey(
227 long classNameId, String actionId) {
228
229 StringBundler sb = new StringBundler(3);
230
231 sb.append(classNameId);
232 sb.append(StringPool.POUND);
233 sb.append(actionId);
234
235 return sb.toString();
236 }
237
238 protected Object[] getActivityCounter(
239 long groupId, long classNameId, long classPK, String name,
240 int ownerType, int startPeriod, int endPeriod)
241 throws Exception {
242
243 Connection con = null;
244 PreparedStatement ps = null;
245 ResultSet rs = null;
246
247 try {
248 con = DataAccess.getUpgradeOptimizedConnection();
249
250 StringBundler sb = new StringBundler(4);
251
252 sb.append("select activityCounterId, totalValue from ");
253 sb.append("SocialActivityCounter where groupId = ? and ");
254 sb.append("classNameId = ? and classPK = ? and name = ? and ");
255 sb.append("ownerType = ? and startPeriod = ? and endPeriod = ?");
256
257 ps = con.prepareStatement(sb.toString());
258
259 ps.setLong(1, groupId);
260 ps.setLong(2, classNameId);
261 ps.setLong(3, classPK);
262 ps.setString(4, name);
263 ps.setInt(5, ownerType);
264 ps.setInt(6, startPeriod);
265 ps.setInt(7, endPeriod);
266
267 rs = ps.executeQuery();
268
269 if (rs.next()) {
270 long activityCounterId = rs.getLong("activityCounterId");
271 int totalValue = rs.getInt("totalValue");
272
273 return new Object[] {activityCounterId, totalValue};
274 }
275
276 return null;
277 }
278 finally {
279 DataAccess.cleanUp(con, ps, rs);
280 }
281 }
282
283 protected long[] getAssetEntryArray(long assetEntryId) throws Exception {
284 Connection con = null;
285 PreparedStatement ps = null;
286 ResultSet rs = null;
287
288 try {
289 con = DataAccess.getUpgradeOptimizedConnection();
290
291 ps = con.prepareStatement(
292 "select groupId, companyId, userId, classNameId, classPK " +
293 "from AssetEntry where entryId = " + assetEntryId);
294
295 rs = ps.executeQuery();
296
297 if (rs.next()) {
298 long groupId = rs.getLong("groupId");
299 long companyId = rs.getLong("companyId");
300 long userId = rs.getLong("userId");
301 long classNameId = rs.getLong("classNameId");
302 long classPK = rs.getLong("classPK");
303
304 return new long[] {
305 groupId, companyId, userId, classNameId, classPK
306 };
307 }
308
309 return null;
310 }
311 finally {
312 DataAccess.cleanUp(con, ps, rs);
313 }
314 }
315
316 protected long[] getAssetEntryArray(String className, long classPK)
317 throws Exception {
318
319 Connection con = null;
320 PreparedStatement ps = null;
321 ResultSet rs = null;
322
323 try {
324 con = DataAccess.getUpgradeOptimizedConnection();
325
326 long classNameId = PortalUtil.getClassNameId(className);
327
328 StringBundler sb = new StringBundler(5);
329
330 sb.append("select groupId, companyId, userId from AssetEntry ");
331 sb.append("where classNameId = ");
332 sb.append(classNameId);
333 sb.append(" and classPK = ");
334 sb.append(classPK);
335
336 ps = con.prepareStatement(sb.toString());
337
338 rs = ps.executeQuery();
339
340 if (rs.next()) {
341 long groupId = rs.getLong("groupId");
342 long companyId = rs.getLong("companyId");
343 long userId = rs.getLong("userId");
344
345 return new long[] {
346 groupId, companyId, userId, classNameId, classPK
347 };
348 }
349
350 return null;
351 }
352 finally {
353 DataAccess.cleanUp(con, ps, rs);
354 }
355 }
356
357 protected long getMBThreadRootMessageId(long mbThreadId) throws Exception {
358 Connection con = null;
359 PreparedStatement ps = null;
360 ResultSet rs = null;
361
362 try {
363 con = DataAccess.getUpgradeOptimizedConnection();
364
365 ps = con.prepareStatement(
366 "select rootMessageId from MBThread where threadId = " +
367 mbThreadId);
368
369 rs = ps.executeQuery();
370
371 if (rs.next()) {
372 return rs.getLong("rootMessageId");
373 }
374
375 return -1;
376 }
377 finally {
378 DataAccess.cleanUp(con, ps, rs);
379 }
380 }
381
382 protected int getTotalValue(
383 long groupId, long classNameId, long classPK, String name,
384 int ownerType, int startPeriod)
385 throws Exception {
386
387 Connection con = null;
388 PreparedStatement ps = null;
389 ResultSet rs = null;
390
391 try {
392 con = DataAccess.getUpgradeOptimizedConnection();
393
394 StringBundler sb = new StringBundler(4);
395
396 sb.append("select max(totalValue) as totalValue from ");
397 sb.append("SocialActivityCounter where groupId = ? and ");
398 sb.append("classNameId = ? and classPK = ? and name = ? and ");
399 sb.append("ownerType = ? and startPeriod < ?");
400
401 ps = con.prepareStatement(sb.toString());
402
403 ps.setLong(1, groupId);
404 ps.setLong(2, classNameId);
405 ps.setLong(3, classPK);
406 ps.setString(4, name);
407 ps.setInt(5, ownerType);
408 ps.setInt(6, startPeriod);
409
410 rs = ps.executeQuery();
411
412 if (rs.next()) {
413 return rs.getInt("totalValue");
414 }
415
416 return 0;
417 }
418 finally {
419 DataAccess.cleanUp(con, ps, rs);
420 }
421 }
422
423 protected void migrateEquityGroupSettings() throws Exception {
424 Connection con = null;
425 PreparedStatement ps = null;
426 ResultSet rs = null;
427
428 try {
429 con = DataAccess.getUpgradeOptimizedConnection();
430
431 ps = con.prepareStatement(
432 "select groupId, companyId, classNameId, enabled from " +
433 "SocialEquityGroupSetting where type_ = 1");
434
435 rs = ps.executeQuery();
436
437 while (rs.next()) {
438 long groupId = rs.getLong("groupId");
439 long companyId = rs.getLong("companyId");
440 long classNameId = rs.getLong("classNameId");
441 boolean enabled = rs.getBoolean("enabled");
442
443 addActivitySetting(
444 increment(), groupId, companyId, classNameId, 0, "enabled",
445 String.valueOf(enabled));
446 }
447
448 DataAccess.cleanUp(null, ps, rs);
449
450 StringBundler sb = new StringBundler(12);
451
452 sb.append("select groupId from SocialActivitySetting where ");
453 sb.append("activityType = 0 and name = 'enabled' and ");
454 sb.append("value = 'true' and classNameId in (");
455
456 long mbMessageClassNameId = PortalUtil.getClassNameId(
457 MBMessage.class);
458
459 sb.append(mbMessageClassNameId);
460 sb.append(", ");
461
462 long mbThreadClassNameId = PortalUtil.getClassNameId(
463 MBThread.class);
464
465 sb.append(mbThreadClassNameId);
466 sb.append(")");
467
468 ps = con.prepareStatement(sb.toString());
469
470 rs = ps.executeQuery();
471
472 while (rs.next()) {
473 long groupId = rs.getLong("groupId");
474
475 sb = new StringBundler(6);
476
477 sb.append("update SocialActivitySetting set value = 'true' ");
478 sb.append("where groupId = ");
479 sb.append(groupId);
480 sb.append(" and activityType = 0 and value = 'enabled' and ");
481 sb.append("classNameId = ");
482 sb.append(mbThreadClassNameId);
483
484 runSQL(sb.toString());
485 }
486
487 runSQL(
488 "delete from SocialActivitySetting where classNameId = " +
489 mbThreadClassNameId);
490 }
491 finally {
492 DataAccess.cleanUp(con, ps, rs);
493 }
494 }
495
496 protected void migrateEquityLog(ResultSet rs) throws Exception {
497 long assetEntryId = rs.getLong("assetEntryId");
498
499 long[] assetEntryArray = getAssetEntryArray(assetEntryId);
500
501 if (assetEntryArray == null) {
502 return;
503 }
504
505 String actionId = rs.getString("actionId");
506
507 if (actionId.equals(ActionKeys.SUBSCRIBE)) {
508 long classNameId = assetEntryArray[3];
509
510 String className = PortalUtil.getClassName(classNameId);
511
512 if (className.equals(MBThread.class.getName())) {
513 long classPK = assetEntryArray[4];
514
515 long mbThreadRootMessageId = getMBThreadRootMessageId(classPK);
516
517 if (mbThreadRootMessageId == -1) {
518 return;
519 }
520
521 assetEntryArray = getAssetEntryArray(
522 MBMessage.class.getName(), mbThreadRootMessageId);
523
524 if (assetEntryArray == null) {
525 return;
526 }
527 }
528 }
529
530 long classNameId = PortalUtil.getClassNameId(User.class);
531 long classPK = rs.getLong("userId");
532 String name = SocialActivityCounterConstants.NAME_PARTICIPATION;
533 int ownerType = SocialActivityCounterConstants.TYPE_ACTOR;
534
535 int actionDate = rs.getInt("actionDate");
536
537 Date actionDateDate = SocialCounterPeriodUtil.getDate(actionDate - 365);
538
539 int startPeriod = SocialCounterPeriodUtil.getStartPeriod(
540 actionDateDate.getTime());
541 int endPeriod = SocialCounterPeriodUtil.getEndPeriod(
542 actionDateDate.getTime());
543
544 if (endPeriod == SocialCounterPeriodUtil.getEndPeriod()) {
545 endPeriod = SocialActivityCounterConstants.END_PERIOD_UNDEFINED;
546 }
547
548 int type = rs.getInt("type_");
549 int value = rs.getInt("value");
550
551 long groupId = assetEntryArray[0];
552 long companyId = assetEntryArray[1];
553
554 if (type == 1) {
555 long userId = assetEntryArray[2];
556
557 name = SocialActivityCounterConstants.NAME_CONTRIBUTION;
558 ownerType = SocialActivityCounterConstants.TYPE_CREATOR;
559
560 updateActivityCounter(
561 increment(), groupId, companyId, classNameId, userId, name,
562 ownerType, startPeriod, endPeriod, value);
563
564 classNameId = assetEntryArray[3];
565 classPK = assetEntryArray[4];
566 name = SocialActivityCounterConstants.NAME_POPULARITY;
567 ownerType = SocialActivityCounterConstants.TYPE_ASSET;
568 }
569
570 long equityLogId = rs.getLong("equityLogId");
571
572 updateActivityCounter(
573 equityLogId, groupId, companyId, classNameId, classPK, name,
574 ownerType, startPeriod, endPeriod, value);
575 }
576
577 protected void migrateEquityLogs() throws Exception {
578 Connection con = null;
579 PreparedStatement ps = null;
580 ResultSet rs = null;
581
582 try {
583 con = DataAccess.getUpgradeOptimizedConnection();
584
585 StringBundler sb = new StringBundler(4);
586
587 sb.append("select AssetEntry.classNameId, AssetEntry.classPK, ");
588 sb.append("SocialEquityLog.* from SocialEquityLog, AssetEntry ");
589 sb.append("where SocialEquityLog.assetEntryId = ");
590 sb.append("AssetEntry.entryId order by actionDate");
591
592 ps = con.prepareStatement(sb.toString());
593
594 rs = ps.executeQuery();
595
596 while (rs.next()) {
597 migrateEquityLog(rs);
598 }
599
600 DataAccess.cleanUp(null, ps, rs);
601
602 sb = new StringBundler(4);
603
604 sb.append("select groupId, classNameId, classPK, name, ");
605 sb.append("max(startPeriod) as startPeriod ");
606 sb.append("from SocialActivityCounter group by groupId, ");
607 sb.append("classNameId, classPK, name");
608
609 ps = con.prepareStatement(sb.toString());
610
611 rs = ps.executeQuery();
612
613 while (rs.next()) {
614 long groupId = rs.getLong("groupId");
615 long classNameId = rs.getLong("classNameId");
616 long classPK = rs.getLong("classPK");
617 String name = rs.getString("name");
618 int startPeriod = rs.getInt("startPeriod");
619
620 sb = new StringBundler(12);
621
622 sb.append("update SocialActivityCounter set endPeriod = ");
623 sb.append(SocialActivityCounterConstants.END_PERIOD_UNDEFINED);
624 sb.append(" where groupId = ");
625 sb.append(groupId);
626 sb.append(" and classNameId = ");
627 sb.append(classNameId);
628 sb.append(" and classPK = ");
629 sb.append(classPK);
630 sb.append(" and name = '");
631 sb.append(name);
632 sb.append("' and startPeriod = ");
633 sb.append(startPeriod);
634
635 runSQL(sb.toString());
636 }
637 }
638 finally {
639 DataAccess.cleanUp(con, ps, rs);
640 }
641 }
642
643 protected void migrateEquitySettings() throws Exception {
644 Connection con = null;
645 PreparedStatement ps = null;
646 ResultSet rs = null;
647
648 try {
649 con = DataAccess.getUpgradeOptimizedConnection();
650
651 ps = con.prepareStatement(
652 "select groupId, companyId, classNameId, actionId, " +
653 "dailyLimit, type_, value from SocialEquitySetting");
654
655 rs = ps.executeQuery();
656
657 while (rs.next()) {
658 long groupId = rs.getLong("groupId");
659 long companyId = rs.getLong("companyId");
660 long classNameId = rs.getLong("classNameId");
661 String actionId = rs.getString("actionId");
662 int dailyLimit = rs.getInt("dailyLimit");
663 int type = rs.getInt("type_");
664 int value = rs.getInt("value");
665
666 Tuple tuple = _equityToActivityMap.get(
667 encodeEquityToActivityKey(classNameId, actionId));
668
669 if (tuple == null) {
670 StringBundler sb = new StringBundler();
671
672 sb.append("Unknown Social Equity setting with action ");
673 sb.append(actionId);
674 sb.append("for ");
675
676 String className = PortalUtil.getClassName(classNameId);
677
678 sb.append(className);
679
680 sb.append(". Please configure this action using the ");
681 sb.append("Social Activity portlet in the Control Panel.");
682
683 if (_log.isWarnEnabled()) {
684 _log.warn(sb.toString());
685 }
686
687 continue;
688 }
689
690 long activityClassNameId = GetterUtil.getLong(
691 tuple.getObject(0));
692 int activityType = GetterUtil.getInteger(tuple.getObject(1));
693
694 if (type == 1) {
695 addActivitySetting(
696 groupId, companyId, activityClassNameId, activityType,
697 SocialActivityCounterConstants.NAME_CONTRIBUTION,
698 SocialActivityCounterConstants.TYPE_CREATOR, dailyLimit,
699 value);
700
701 addActivitySetting(
702 groupId, companyId, activityClassNameId, activityType,
703 SocialActivityCounterConstants.NAME_POPULARITY,
704 SocialActivityCounterConstants.TYPE_ASSET, dailyLimit,
705 value);
706 }
707 else if (type == 2) {
708 addActivitySetting(
709 groupId, companyId, activityClassNameId, activityType,
710 SocialActivityCounterConstants.NAME_PARTICIPATION,
711 SocialActivityCounterConstants.TYPE_ACTOR, dailyLimit,
712 value);
713 }
714 }
715 }
716 finally {
717 DataAccess.cleanUp(con, ps, rs);
718 }
719 }
720
721 protected void putEquityToActivityMap(
722 Class<?> equityClass, String equityActionId, Class<?> activityClass,
723 int activityType) {
724
725 long equityClassNameId = PortalUtil.getClassNameId(equityClass);
726 long activityClassNameId = PortalUtil.getClassNameId(activityClass);
727
728 _equityToActivityMap.put(
729 encodeEquityToActivityKey(equityClassNameId, equityActionId),
730 new Tuple(activityClassNameId, activityType));
731 }
732
733 protected void putEquityToActivityMap(
734 Class<?> equityClass, String equityActionId, int activityType) {
735
736 putEquityToActivityMap(
737 equityClass, equityActionId, equityClass, activityType);
738 }
739
740 protected void updateActivityCounter(
741 long activityCounterId, long groupId, long companyId,
742 long classNameId, long classPK, String name, int ownerType,
743 int startPeriod, int endPeriod, int increment)
744 throws Exception {
745
746 Object[] activityCounter = getActivityCounter(
747 groupId, classNameId, classPK, name, ownerType, startPeriod,
748 endPeriod);
749
750 if (activityCounter == null) {
751 int totalValue = getTotalValue(
752 groupId, classNameId, classPK, name, ownerType, startPeriod);
753
754 addActivityCounter(
755 activityCounterId, groupId, companyId, classNameId, classPK,
756 name, ownerType, increment, totalValue + increment, 0,
757 startPeriod, endPeriod);
758
759 return;
760 }
761
762 StringBundler sb = new StringBundler(7);
763
764 sb.append("update SocialActivityCounter set currentValue = ");
765 sb.append("currentValue + ");
766 sb.append(increment);
767 sb.append(", totalValue = totalValue + ");
768 sb.append(increment);
769 sb.append(" where activityCounterId = ");
770
771 activityCounterId = GetterUtil.getLong(activityCounter[0]);
772
773 sb.append(activityCounterId);
774
775 runSQL(sb.toString());
776 }
777
778 private static Log _log = LogFactoryUtil.getLog(UpgradeSocial.class);
779
780 private Map<String, Tuple> _equityToActivityMap =
781 new HashMap<String, Tuple>();
782
783 }