/*
* Copyright (C) 2003-2007 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.poll.service.impl;
import java.util.List;
import org.exoplatform.container.component.ComponentPlugin;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.ks.common.jcr.KSDataLocation;
import org.exoplatform.management.jmx.annotations.NameTemplate;
import org.exoplatform.management.jmx.annotations.Property;
import org.exoplatform.poll.service.Poll;
import org.exoplatform.poll.service.PollService;
import org.exoplatform.poll.service.PollSummary;
import org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.picocontainer.Startable;
@NameTemplate(@Property(key = "service", value = "poll"))
public class PollServiceImpl implements Startable, PollService {
private JCRDataStorage storage_;
private KSDataLocation dataLocator;
private static final Log log = ExoLogger.getLogger(PollServiceImpl.class);
public PollServiceImpl(InitParams params, KSDataLocation locator, NodeHierarchyCreator nodeHierarchyCreator) throws Exception {
this.dataLocator = locator;
storage_ = new JCRDataStorage(nodeHierarchyCreator, dataLocator);
}
public void addInitialDefaultDataPlugin(ComponentPlugin plugin) throws Exception {
storage_.addInitialDefaultDataPlugin(plugin);
}
public void start() {
try {
log.info("initializing Poll default data...");
storage_.initDefaultData();
} catch (Exception e) {
log.error("Failed to initializing default data for poll: ", e);
}
}
public void stop() {
}
public Poll getPoll(String pollId) throws Exception {
return storage_.getPoll(pollId);
}
public Poll removePoll(String pollId) throws Exception {
return storage_.removePoll(pollId);
}
public void savePoll(Poll poll, boolean isNew, boolean isVote) throws Exception {
storage_.savePoll(poll, isNew, isVote);
}
public void setClosedPoll(Poll poll) throws Exception {
storage_.setClosedPoll(poll);
}
public List<Poll> getPagePoll() throws Exception {
return storage_.getPagePoll();
}
public boolean hasPermissionInForum(String pollPath, List<String> allInfoOfUser) throws Exception {
return storage_.hasPermissionInForum(pollPath, allInfoOfUser);
}
public PollSummary getPollSummary(List<String> groupOfUser) throws Exception {
return storage_.getPollSummary(groupOfUser);
}
}