/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.kernel.social;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.ClassedModel;
import com.liferay.portal.kernel.model.GroupedModel;
import com.liferay.social.kernel.model.SocialActivity;
import com.liferay.social.kernel.model.SocialActivityConstants;
import com.liferay.social.kernel.service.SocialActivityLocalService;
import java.util.Date;
/**
* @author Adolfo PĂ©rez
*/
public abstract class BaseSocialActivityManager
<T extends ClassedModel & GroupedModel>
implements SocialActivityManager<T> {
@Override
public void addActivity(
long userId, T model, int type, String extraData,
long receiverUserId)
throws PortalException {
String className = getClassName(model);
long primaryKey = getPrimaryKey(model);
if (type == SocialActivityConstants.TYPE_SUBSCRIBE) {
if (primaryKey != model.getGroupId()) {
getSocialActivityLocalService().addActivity(
userId, model.getGroupId(), className, primaryKey,
SocialActivityConstants.TYPE_SUBSCRIBE, extraData, 0);
}
}
else {
getSocialActivityLocalService().addActivity(
userId, model.getGroupId(), className, primaryKey, type,
extraData, receiverUserId);
}
}
@Override
public void addUniqueActivity(
long userId, Date createDate, T model, int type, String extraData,
long receiverUserId)
throws PortalException {
String className = getClassName(model);
long primaryKey = getPrimaryKey(model);
getSocialActivityLocalService().addUniqueActivity(
userId, model.getGroupId(), createDate, className, primaryKey, type,
extraData, receiverUserId);
}
@Override
public void addUniqueActivity(
long userId, T model, int type, String extraData,
long receiverUserId)
throws PortalException {
String className = getClassName(model);
long primaryKey = getPrimaryKey(model);
getSocialActivityLocalService().addUniqueActivity(
userId, model.getGroupId(), className, primaryKey, type, extraData,
receiverUserId);
}
@Override
public void deleteActivities(T model) throws PortalException {
String className = getClassName(model);
long primaryKey = getPrimaryKey(model);
getSocialActivityLocalService().deleteActivities(className, primaryKey);
}
@Override
public void updateLastSocialActivity(
long userId, T model, int type, Date createDate) {
String className = getClassName(model);
long primaryKey = getPrimaryKey(model);
SocialActivity lastSocialActivity =
getSocialActivityLocalService().fetchFirstActivity(
className, primaryKey, type);
if (lastSocialActivity != null) {
lastSocialActivity.setCreateDate(createDate.getTime());
lastSocialActivity.setUserId(userId);
getSocialActivityLocalService().updateSocialActivity(
lastSocialActivity);
}
}
protected String getClassName(T classedModel) {
return classedModel.getModelClassName();
}
protected long getPrimaryKey(T classedModel) {
if (!(classedModel.getPrimaryKeyObj() instanceof Long)) {
throw new IllegalArgumentException(
"Only models with a primary key of type Long can make use of " +
"SocialActivityManagers");
}
return (Long)classedModel.getPrimaryKeyObj();
}
protected abstract SocialActivityLocalService
getSocialActivityLocalService();
}