/*
* Copyright (C) 2003-2011 eXo Platform SAS.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.exoplatform.social.core.storage.api;
import org.exoplatform.social.core.ActivityProcessor;
import org.exoplatform.social.core.activity.model.ExoSocialActivity;
import org.exoplatform.social.core.identity.model.Identity;
import org.exoplatform.social.core.storage.ActivityStorageException;
import java.util.List;
import java.util.SortedSet;
/**
* @author <a href="mailto:alain.defrance@exoplatform.com">Alain Defrance</a>
* @version $Revision$
*/
public interface ActivityStorage {
enum TimestampType {
NEWER, OLDER;
private Long number;
public TimestampType from(Long number) {
this.number = number;
return this;
}
public Long get() {
return number;
}
}
/**
* Load an activity by its id.
*
* @param activityId the id of the activity. An UUID.
* @return the activity
*/
public ExoSocialActivity getActivity(String activityId) throws ActivityStorageException;
/**
* Gets all the activities by identity.
*
* @param owner the identity
* @return the activities
*/
public List<ExoSocialActivity> getUserActivities(Identity owner) throws ActivityStorageException;
/**
* Gets the activities by identity.
*
* Access a user's activity stream by specifying the offset and limit.
*
* @param owner the identity
* @param offset
* @param limit
* @return the activities
*/
public List<ExoSocialActivity> getUserActivities(
Identity owner, long offset, long limit) throws ActivityStorageException;
/**
* Save comment to an activity.
* activity's ownerstream has to be the same as ownerStream param here.
*
* @param activity
* @param comment
* @since 1.1.1
*/
public void saveComment(ExoSocialActivity activity, ExoSocialActivity comment) throws ActivityStorageException;
/**
* Saves an activity into a stream.
* Note that the field {@link org.exoplatform.social.core.activity.model.ExoSocialActivity#setUserId(String)}
* should be the id of an identity {@link Identity#getId()}
* @param owner owner of the stream where this activity is bound.
* Usually a user or space identity
* @param activity the activity to save
* @return stored activity
* @throws ActivityStorageException activity storage exception with type:
* ActivityStorageException.Type.FAILED_TO_SAVE_ACTIVITY
* @since 1.1.1
*/
public ExoSocialActivity saveActivity(Identity owner, ExoSocialActivity activity) throws ActivityStorageException;
public ExoSocialActivity getParentActivity(ExoSocialActivity comment) throws ActivityStorageException;
/**
* Deletes activity by its id.
* This will delete comments from this activity first, then delete the activity.
*
* @param activityId the activity id
*/
public void deleteActivity(String activityId) throws ActivityStorageException;
/**
* Delete comment by its id.
*
* @param activityId
* @param commentId
*/
public void deleteComment(String activityId, String commentId) throws ActivityStorageException;
/**
* Gets the activities for a list of identities.
*
* Access a activity stream of a list of identities by specifying the offset and limit.
*
* @param connectionList the list of connections for which we want to get
* the latest activities
* @param offset
* @param limit
* @return the activities related to the list of connections
* @since 1.2.0-GA
*/
public List<ExoSocialActivity> getActivitiesOfIdentities(
List<Identity> connectionList, long offset, long limit) throws ActivityStorageException;
/**
* Gets the activities for a list of identities.
*
* Access a activity stream of a list of identities by specifying the offset and limit.
*
* @param connectionList the list of connections for which we want to get
* the latest activities
* @param offset
* @param limit
* @return the activities related to the list of connections
* @since 1.2.0-GA
*/
public List<ExoSocialActivity> getActivitiesOfIdentities(
List<Identity> connectionList, TimestampType type, long offset, long limit)
throws ActivityStorageException;
/**
* Count the number of activities from an ownerIdentity
*
* @param owner
* @return the number of activities
*/
public int getNumberOfUserActivities(Identity owner) throws ActivityStorageException;
/**
* Gets the number of newer activities based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @return
*/
public int getNumberOfNewerOnUserActivities(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the list of newer activities based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
*/
public List<ExoSocialActivity> getNewerOnUserActivities(
Identity ownerIdentity, ExoSocialActivity baseActivity, int limit);
/**
* Gets the number of older activities based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @return
*/
public int getNumberOfOlderOnUserActivities(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the list of older activities based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
*/
public List<ExoSocialActivity> getOlderOnUserActivities(
Identity ownerIdentity, ExoSocialActivity baseActivity, int limit);
/**
* Gets activity feed from an identity.
*
* @param ownerIdentity
* @param offset
* @param limit
* @return
*/
public List<ExoSocialActivity> getActivityFeed(Identity ownerIdentity, int offset, int limit);
/**
* Gets the number of activities feed based from ownerIdentity.
*
* @param ownerIdentity
* @return
*/
public int getNumberOfActivitesOnActivityFeed(Identity ownerIdentity);
/**
* Gets the list of newer activities feed based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @return
*/
public int getNumberOfNewerOnActivityFeed(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the list of newer activities feed based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
*/
public List<ExoSocialActivity> getNewerOnActivityFeed(
Identity ownerIdentity, ExoSocialActivity baseActivity, int limit);
/**
* Gets the list of older activities feed based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @return
*/
public int getNumberOfOlderOnActivityFeed(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the list of older activities feed based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
*/
public List<ExoSocialActivity> getOlderOnActivityFeed(
Identity ownerIdentity, ExoSocialActivity baseActivity, int limit);
/**
* Gets activities of connections of an identity with offset, limit.
*
* @param ownerIdentity
* @param offset
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getActivitiesOfConnections(Identity ownerIdentity, int offset, int limit);
/**
* Gets the count of the activities of connections who connected with an identity.
*
* @param ownerIdentity
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfActivitiesOfConnections(Identity ownerIdentity);
/**
* Gets the activities of the identity with offset, limit.
*
* @param ownerIdentity
* @param offset
* @param limit
* @return
* @throws ActivityStorageException
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getActivitiesOfIdentity(Identity ownerIdentity, long offset, long limit);
/**
* Gets the number of newer activities based on base activity of connections.
*
* @param ownerIdentity
* @param baseActivity
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfNewerOnActivitiesOfConnections(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the newer activities of connections based on baseActivity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getNewerOnActivitiesOfConnections(
Identity ownerIdentity, ExoSocialActivity baseActivity, long limit);
/**
* Gets the number of older activities of connections based on baseActivity.
*
* @param ownerIdentity
* @param baseActivity
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfOlderOnActivitiesOfConnections(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the older of activities of connections based on base an activity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getOlderOnActivitiesOfConnections(
Identity ownerIdentity, ExoSocialActivity baseActivity, int limit);
/**
* Gets the activities of spaces where identity can access (manager or member).
*
* @param ownerIdentity
* @param offset
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getUserSpacesActivities(Identity ownerIdentity, int offset, int limit);
/**
* Gets the number of activities of spaces where identity can access (manager or member).
*
* @param ownerIdentity
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfUserSpacesActivities(Identity ownerIdentity);
/**
* Gets the number of newer activities of spaces where the identity can access, based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfNewerOnUserSpacesActivities(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the newer activities of spaces where identity can access (manager or member), based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getNewerOnUserSpacesActivities(
Identity ownerIdentity, ExoSocialActivity baseActivity, int limit);
/**
* Gets the number of newer activities of spaces where the identity can access, based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfOlderOnUserSpacesActivities(Identity ownerIdentity, ExoSocialActivity baseActivity);
/**
* Gets the older activities of spaces where identity can access (manager or member), based on an existing activity.
*
* @param ownerIdentity
* @param baseActivity
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getOlderOnUserSpacesActivities(
Identity ownerIdentity, ExoSocialActivity baseActivity, int limit);
/**
* Gets the comments of an activity with offset, limit.
*
* @param existingActivity
* @param offset
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getComments(ExoSocialActivity existingActivity, int offset, int limit);
/**
* Gets the number of comments of an activity.
*
* @param existingActivity
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfComments(ExoSocialActivity existingActivity);
/**
* Gets the number of newer comments of an activity based on a comment.
*
* @param existingActivity
* @param baseComment
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfNewerComments(ExoSocialActivity existingActivity, ExoSocialActivity baseComment);
/**
* Gets the newer comments of an activity based on a comment.
*
* @param existingActivity
* @param baseComment
* @param limit
* @return
*/
public List<ExoSocialActivity> getNewerComments(
ExoSocialActivity existingActivity, ExoSocialActivity baseComment, int limit);
/**
* Gets the number of newer comments of an activity based on a comment.
*
* @param existingActivity
* @param baseComment
* @return
* @since 1.2.0-Beta3
*/
public int getNumberOfOlderComments(ExoSocialActivity existingActivity, ExoSocialActivity baseComment);
/**
* Gets the older comments of an activity based on a comment.
*
* @param existingActivity
* @param baseComment
* @param limit
* @return
* @since 1.2.0-Beta3
*/
public List<ExoSocialActivity> getOlderComments(
ExoSocialActivity existingActivity, ExoSocialActivity baseComment, int limit);
/**
* Gets the activity processors.
*
* @return 1.2.0-GA
*/
public SortedSet<ActivityProcessor> getActivityProcessors();
/**
* Updates an existing activity.
*
* @param existingActivity
* @throws ActivityStorageException
*/
public void updateActivity(ExoSocialActivity existingActivity) throws ActivityStorageException;
}