/** * Copyright (c) 2008-2012 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.osedu.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.sakaiproject.profile2.logic; import java.util.List; import org.sakaiproject.profile2.model.ProfilePrivacy; import org.sakaiproject.profile2.model.WallItem; import org.sakaiproject.profile2.model.WallItemComment; /** * Logic interface for the Profile2 wall. * * @author d.b.robinson@lancaster.ac.uk */ public interface ProfileWallLogic { /** * Notifies a user's connections of an event added to the user's wall. * * Note: the wall logic is currently responsible for timestamping the event, * but we might want to pass the date in this API call instead. * * @param event the event to add. * @param userUuid the ID of the user that created the event. */ public void addNewEventToWall(String event, String userUuid); /** * Notifies a user's connections of a status update added to the user's wall. * * Note: the wall logic is currently responsible for timestamping the status * update, but we might want to pass the date in this API call instead. * * @param status the status to add. * @param userUuid the ID of the user whose status we're posting. */ public void addNewStatusToWall(String status, String userUuid); /** * Adds a new wall item comment. * * @param wallItemComment the wall item comment to add. * @return <code>true</code> if the add is successful and * <code>false</code> if the add fails. */ public boolean addNewCommentToWallItem(WallItemComment wallItemComment); /** * Posts the specified wall item to the specified user's wall and the * walls of their connections. * * @param userUuid the id of the user whose wall we're posting to. * @param wallItem the wall item to post. */ public boolean postWallItemToWall(String userUuid, WallItem wallItem); /** * Removes the specified wall item. * * @param wallItem the wall item to remove. */ public boolean removeWallItemFromWall(WallItem wallItem); /** * Returns the wall for the specified user. The privacy record will * be looked up. * * @param userUuid the user to query by. * @return the wall for the specified user. */ public List<WallItem> getWallItemsForUser(String userUuid); /** * Returns the wall for the specified user. Privacy settings are used * to determine if the user is allowed to access the requested wall. * * @param userUuid the user to query by. * @param privacy the privacy record for the user. * @return the wall for the specified user. */ public List<WallItem> getWallItemsForUser(String userUuid, ProfilePrivacy privacy); /** * Returns the number of available wall items for the specified user. The * privacy record will be looked up. * * @param userUuid the user to query by. * @return the number of available wall items for the specified user. */ public int getWallItemsCount(String userUuid); /** * Returns the number of available wall items for the specified user. * Privacy settings are used to determine if the user is allowed to access * the requested wall items. * * @param userUuid the user to query by. * @param privacy the privacy record for the user. * @return the number of available wall items for the specified user. */ public int getWallItemsCount(String userUuid, ProfilePrivacy privacy); }