/*
* 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 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.activity;
import java.util.List;
import org.exoplatform.social.common.RealtimeListAccess;
import org.exoplatform.social.common.jcr.Util;
import org.exoplatform.social.core.activity.model.ExoSocialActivity;
import org.exoplatform.social.core.storage.api.ActivityStorage;
/**
* The realtime list access for comments of activities.
*
* @author <a href="http://hoatle.net">hoatle (hoatlevan at gmail dot com)</a>
* @since May 9, 2011
*/
public class CommentsRealtimeListAccess implements RealtimeListAccess<ExoSocialActivity> {
/**
* The activity activityStorage.
*/
private ActivityStorage activityStorage;
/**
* The existing activity.
*/
private ExoSocialActivity existingActivity;
/**
* The constructor.
*
* @param theActivityStorage
* @param theExistingActivity
*/
public CommentsRealtimeListAccess(ActivityStorage theActivityStorage, ExoSocialActivity theExistingActivity) {
this.activityStorage = theActivityStorage;
this.existingActivity = theExistingActivity;
}
/**
* {@inheritDoc}
*/
public List<ExoSocialActivity> loadAsList(int index, int limit) {
return activityStorage.getComments(existingActivity, index, limit);
}
/**
* {@inheritDoc}
*/
public ExoSocialActivity[] load(int index, int limit) {
return Util.convertListToArray(loadAsList(index, limit), ExoSocialActivity.class);
}
/**
* {@inheritDoc}
*/
public int getSize() {
return activityStorage.getNumberOfComments(existingActivity);
}
/**
* {@inheritDoc}
*/
public List<ExoSocialActivity> loadNewer(ExoSocialActivity baseComment, int length) {
return activityStorage.getNewerComments(existingActivity, baseComment, length);
}
/**
* {@inheritDoc}
*/
public int getNumberOfNewer(ExoSocialActivity baseComment) {
return activityStorage.getNumberOfNewerComments(existingActivity, baseComment);
}
/**
* {@inheritDoc}
*/
public List<ExoSocialActivity> loadOlder(ExoSocialActivity baseComment, int length) {
return activityStorage.getOlderComments(existingActivity, baseComment, length);
}
/**
* {@inheritDoc}
*/
public int getNumberOfOlder(ExoSocialActivity baseComment) {
return activityStorage.getNumberOfOlderComments(existingActivity, baseComment);
}
}