/*
* Copyright (C) 2003-2010 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.social.core.manager;
import java.util.List;
import org.exoplatform.social.common.RealtimeListAccess;
import org.exoplatform.social.core.ActivityProcessor;
import org.exoplatform.social.core.BaseActivityProcessorPlugin;
import org.exoplatform.social.core.activity.model.ExoSocialActivity;
import org.exoplatform.social.core.identity.model.Identity;
import org.exoplatform.social.core.storage.ActivityStorageException;
/**
* Public APIs to manage activities.
*
* @author <a href="mailto:vien_levan@exoplatform.com">vien_levan</a>
* @author <a href="http://hoatle.net">hoatle (hoatlevan at gmail dot com)</a>
* @see org.exoplatform.social.core.activity.model.ExoSocialActivity
* @see org.exoplatform.social.core.storage.ActivityStorage
* @see IdentityManager
*/
public interface ActivityManager {
/**
* Saves a new created activity to a stream. Note that the Activity.userId will be set to the owner's identity if it
* has not already set.
*
* @param streamOwner the activity stream owner
* @param newActivity the activity to be saved
* @since 1.3.0-GA
*/
//void saveActivity(Identity streamOwner, ExoSocialActivity newActivity);
/**
* Saves a new created activity to a stream. Note that the Activity.userId will be set to the owner's identity if it
* has not already set.
*
* @param streamOwner the activity stream owner
* @param newActivity the activity to be saved
* @return the saved activity
* @since 1.2.0-GA
*/
void saveActivityNoReturn(Identity streamOwner, ExoSocialActivity newActivity);
/**
* Saves a new created activity to the stream of that activity's userId stream. The userId of the created activity
* must be set to indicate the owner stream.
*
* @param newActivity the activity to be saved
* @since 1.3.0-GA
*/
//void saveActivity(ExoSocialActivity newActivity);
/**
* Saves a new created activity to the stream of that activity's userId stream. The userId of the created activity
* must be set to indicate the owner stream.
*
* @param newActivity the activity to be saved
* @since 1.2.0-GA
*/
void saveActivityNoReturn(ExoSocialActivity newActivity);
/**
* Saves a new activity by indicating the stream owner, the activity type and activityTitle. This is shorthand to save
* a new created activity without create a new {@link ExoSocialActivity} instance.
*
* @param streamOwner the activity stream owner
* @param activityType the activity type
* @param activityTitle the activity title
*/
void saveActivity(Identity streamOwner, String activityType, String activityTitle);
/**
* Gets an activity by its id.
*
* @param activityId the activity id
* @return the activity matching provided activityId
*/
ExoSocialActivity getActivity(String activityId);
/**
* Gets the activity associated with an existing comment.
*
* @param comment the existing comment
* @return the associated activity
* @since 1.2.0-GA
*/
ExoSocialActivity getParentActivity(ExoSocialActivity comment);
/**
* Updates an existing activity.
*
* @param existingActivity the existing activity
* @since 1.2.0-GA
*/
void updateActivity(ExoSocialActivity existingActivity);
/**
* Deletes an existing activity.
*
* @param existingActivity the existing activity
* @since 1.1.1
*/
void deleteActivity(ExoSocialActivity existingActivity);
/**
* Deletes an activity by its id.
*
* @param activityId the activity id
*/
void deleteActivity(String activityId);
/**
* Saves a new comment to an existing activity.
*
* @param existingActivity the existing activity
* @param newComment the new comment to be saved
*/
void saveComment(ExoSocialActivity existingActivity, ExoSocialActivity newComment);
/**
* Gets the comments of an existing activity via {@link org.exoplatform.social.common.RealtimeListAccess}.
*
* @param existingActivity the existing activity
* @return the realtime list access for these comments
* @since 1.3.0-GA
*/
//RealtimeListAccess<ExoSocialActivity> getComments(ExoSocialActivity existingActivity);
/**
* Gets the comments of an existing activity via {@link org.exoplatform.social.common.RealtimeListAccess}.
*
*
* @param existingActivity the existing activity
* @return the real time list access for these comments
* @since 1.2.0-GA
*/
RealtimeListAccess<ExoSocialActivity> getCommentsWithListAccess(ExoSocialActivity existingActivity);
/**
* Deletes a existing comment of an existing activity by their ids.
*
* @param activityId
* @param commentId
*/
void deleteComment(String activityId, String commentId);
/**
* Deletes an exising comment of an existing activity.
*
* @param existingActivity the existing activity
* @param existingComment the existing comment
* @since 1.2.0-GA
*/
void deleteComment(ExoSocialActivity existingActivity, ExoSocialActivity existingComment);
/**
* Saves a like of an identity to an existing activity.
*
* @param existingActivity the existing activity
* @param identity the existing identity who likes this activity
*/
void saveLike(ExoSocialActivity existingActivity, Identity identity);
/**
* Deletes an existing like of an identity from an existing identity.
*
* @param existingActivity the existing activity
* @param identity the existing identity
* @since 1.2.0-GA
*/
void deleteLike(ExoSocialActivity existingActivity, Identity identity);
/**
* Gets the activities posted on the provided activity stream owner via {@link RealtimeListAccess}.
*
* @param ownerIdentity the provided activity stream owner
* @return the real time list access for activities on the provided activity stream owner
* @since 1.3.0-GA
*/
//RealtimeListAccess<ExoSocialActivity> getActivities(Identity ownerIdentity);
/**
* Gets the activities posted on the provided activity stream owner via {@link RealtimeListAccess}.
*
* @param ownerIdentity the provided activity stream owner
* @return the real time list access for activities on the provided activity stream owner
* @since 1.2.0-GA
*/
RealtimeListAccess<ExoSocialActivity> getActivitiesWithListAccess(Identity ownerIdentity);
/**
* Gets the activities posted by all connections with an existing identity via {@link RealtimeListAccess}
*
* @param existingIdentity the existing identity
* @return the real time list access for activities posted by all connections with an existing identity
* @since 1.3.0-GA
*/
//RealtimeListAccess<ExoSocialActivity> getActivitiesOfIdentities(Identity existingIdentity);
/**
* Gets the activities posted by all connections with an existing identity via {@link RealtimeListAccess}
*
* @param existingIdentity the existing identity
* @return the real time list access for activities posted by all connections with an existing identity
* @since 1.2.0-GA
*/
RealtimeListAccess<ExoSocialActivity> getActivitiesOfConnectionsWithListAccess(Identity existingIdentity);
/**
* Gets the activities posted on all space activity streams in which the provided identity joins via {@link
* RealtimeListAccess}.
*
* @param existingIdentity the existing identity
* @return the real time list access for activities
* @since 1.3.0-GA
*/
//RealtimeListAccess<ExoSocialActivity> getActivitiesOfUserSpaces(Identity existingIdentity);
/**
* Gets the activities posted on all space activity streams in which the provided identity joins via {@link
* RealtimeListAccess}.
*
* @param existingIdentity the existing identity
* @return the real time list access for activities
* @since 1.2.0-GA
*/
RealtimeListAccess<ExoSocialActivity> getActivitiesOfUserSpacesWithListAccess(Identity existingIdentity);
/**
* Gets all the activities accessible by an existing identity via {@link RealtimeListAccess}
*
* @param existingIdentity the existing identity
* @return the real time list access for activities
* @since 1.3.0-GA
*/
//RealtimeListAccess<ExoSocialActivity> getActivityFeed(Identity existingIdentity);
/**
* Gets all the activities accessible by an existing identity via {@link RealtimeListAccess}
*
* @param existingIdentity the existing identity
* @return the real time list access for activities
* @since 1.2.0-GA
*/
RealtimeListAccess<ExoSocialActivity> getActivityFeedWithListAccess(Identity existingIdentity);
/**
* Adds a new activity processor.
*
* @param newActivityProcessor a new activity processor
*/
void addProcessor(ActivityProcessor newActivityProcessor);
/**
* Adds a new activity processor plugin.
*
* @param newActivityProcessorPlugin the new activity processor plugin
*/
void addProcessorPlugin(BaseActivityProcessorPlugin newActivityProcessorPlugin);
/**
* Saves a new created activity to a stream. Note that the Activity.userId will be set to the owner's identity if it
* has not already set.
*
* @param streamOwner the activity stream owner
* @param newActivity the activity to be saved
* @return the saved activity
* @deprecated Use {@link #saveActivityNoReturn(Identity, ExoSocialActivity)} instead.
* Will be removed by 1.3.x
*/
@Deprecated
ExoSocialActivity saveActivity(Identity streamOwner, ExoSocialActivity newActivity);
/**
* Saves a new created activity to the stream of that activity's userId stream. The userId of the created activity
* must be set to indicate the owner stream.
*
* @param newActivity the activity to be saved
* @deprecated Use {@link #saveActivityNoReturn(org.exoplatform.social.core.activity.model.ExoSocialActivity)}
* instead. Will be removed by 1.3.x
*/
@Deprecated
ExoSocialActivity saveActivity(ExoSocialActivity newActivity);
/**
* Gets the latest activities by an identity with the default limit of 20 latest activities.
*
* @param identity the identity
* @return the activities
* @see #getActivities(Identity, long, long)
* @deprecated Use {@link #getActivitiesWithListAccess(org.exoplatform.social.core.identity.model.Identity)} instead.
* Will be removed by 1.3.x
*/
@Deprecated
List<ExoSocialActivity> getActivities(Identity identity) throws ActivityStorageException;
/**
* Gets the latest activities by an identity, specifying the start that is an offset index and the limit.
*
* @param identity the identity
* @param start offset index
* @param limit
* @return the activities
* @deprecated Use {@link #getActivitiesWithListAccess(Identity)} instead. Will be removed by 1.3.x
*/
@Deprecated
List<ExoSocialActivity> getActivities(Identity identity, long start, long limit) throws ActivityStorageException;
/**
* Gets activities of connections from an identity. The activities are returned sorted starting from the most recent.
*
* @param ownerIdentity
* @return activityList
* @since 1.1.1
* @deprecated Use {@link #getActivitiesOfConnectionsWithListAccess(Identity)} instead. Will be removed by 1.3.x
*/
@Deprecated
List<ExoSocialActivity> getActivitiesOfConnections(Identity ownerIdentity) throws ActivityStorageException;
/**
* Gets activities of connections from an identity. The activities are returned sorted starting from the most recent.
*
* @param ownerIdentity
* @return activityList
* @deprecated Use {@link #getActivitiesOfConnectionsWithListAccess(Identity)} instead. Will be removed by 1.3.x
*/
@Deprecated
List<ExoSocialActivity> getActivitiesOfConnections(Identity ownerIdentity,
int offset, int length) throws ActivityStorageException;
/**
* Gets the activities from all spaces of a user.
*
* @param ownerIdentity
* @return list of activities
* @since 1.1.1
* @deprecated Use {@link #getActivitiesOfUserSpacesWithListAccess(Identity)} instead. Will be removed by 1.3.x
*/
@Deprecated
List<ExoSocialActivity> getActivitiesOfUserSpaces(Identity ownerIdentity);
/**
* Gets the activity feed of an identity. This feed is the combination of all the activities of his own activities,
* his connections' activities and his spaces' activities which are returned sorted starting from the most recent.
*
* @param identity
* @return all related activities of identity such as his activities, his connections's activities, his spaces's
* activities
* @since 1.1.2
* @deprecated Use {@link #getActivityFeedWithListAccess(Identity)} instead. Will be removed by 1.3.x
*/
@Deprecated
List<ExoSocialActivity> getActivityFeed(Identity identity) throws ActivityStorageException;
/**
* Removes an identity who likes an activity, if this activity is liked, it will be removed.
*
* @param activity
* @param identity a user who dislikes an activity
* @deprecated Use {@link #deleteLike(ExoSocialActivity, Identity)} instead. Will be removed by 1.3.x
*/
@Deprecated
void removeLike(ExoSocialActivity activity, Identity identity) throws ActivityStorageException;
/**
* Gets an activity's comment list.
*
* @param activity
* @return commentList
* @deprecated Use {@link #getCommentsWithListAccess(ExoSocialActivity)} instead. Will be removed by 1.3.x
*/
@Deprecated
List<ExoSocialActivity> getComments(ExoSocialActivity activity) throws ActivityStorageException;
/**
* Records an activity.
*
* @param owner
* @param type
* @param title
* @return
* @throws ActivityStorageException
* @since 1.2.0-Beta1
* @deprecated Use {@link #saveActivity(Identity, String, String)} instead. Will be removed by 1.3.x
*/
@Deprecated
ExoSocialActivity recordActivity(Identity owner, String type, String title) throws ActivityStorageException;
/**
* Saves an activity.
*
* @param owner
* @param activity
* @return the stored activity
* @throws Exception
* @deprecated use {@link #saveActivity(Identity, ExoSocialActivity)} instead. Will be removed by 1.3.x
*/
@Deprecated
ExoSocialActivity recordActivity(Identity owner, ExoSocialActivity activity) throws Exception;
/**
* Records an activity.
*
* @param owner the owner of the target stream for this activity
* @param type the type of activity which will be used to use custom ui for rendering
* @param title the title
* @param body the body
* @return the stored activity
* @deprecated Use {@link #saveActivity(Identity, ExoSocialActivity)} instead. Will be removed by 1.3.x
*/
@Deprecated
ExoSocialActivity recordActivity(Identity owner, String type, String title,
String body) throws ActivityStorageException;
/**
* Gets the number of activities from a stream owner.
*
* @param owner
* @return the number
* @deprecated Will be removed by 1.3.x
*/
@Deprecated
int getActivitiesCount(Identity owner) throws ActivityStorageException;
/**
* Does nothing, for backward compatible.
*
* @param activity
* @deprecated Will be removed by 1.3.x
*/
@Deprecated
void processActivitiy(ExoSocialActivity activity);
}