package org.gcube.portlets.widgets.ckancontentmoderator.server; import java.util.ArrayList; import java.util.List; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.datacatalogue.utillibrary.server.cms.CatalogueContentModeratorSystem; import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; import org.gcube.datacatalogue.utillibrary.shared.jackan.model.CkanDataset; import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorService; import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gwt.user.server.rpc.RemoteServiceServlet; /** * The server side implementation of the RPC service. */ @SuppressWarnings("serial") public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implements CkanContentModeratorService { private static Logger LOG = LoggerFactory.getLogger(CkanContentModeratorServiceImpl.class); @Override public boolean isContentModeratorEnabled() { // TODO Auto-generated method stub return false; } @Override public void setStatus(String itemId, ItemStatus theStatus) { // TODO Auto-generated method stub } @Override public List getListItemsForStatus(ItemStatus theStatus, int limit, int offset) throws Exception { LOG.info("called getListItemsForStatus with [status: " + theStatus + "], [limit: " + limit + "], [offset: " + offset + "]"); List datasetList = null; try { String scope = WsUtil.getCurrentScope(this.getThreadLocalRequest()); GCubeUser user = WsUtil.getCurrentUser(this.getThreadLocalRequest()); String token = WsUtil.getCurrentToken(scope, user.getUsername()); ScopeProvider.instance.set(scope); SecurityTokenProvider.instance.set(token); CatalogueContentModeratorSystem cmsInstance = CatalogueCMSFactory.getFactory().getCMSPerScope(scope); List datasets = cmsInstance.getListItemsForStatus(theStatus, limit, offset); if (datasets != null) { int size = datasets.size(); datasetList = new ArrayList(size); LOG.info("datasetList for input parameters returned by CMS has size: " + size); for (CkanDataset ckanDataset : datasets) { CatalogueDataset ds = CatalogueBeansConverter.toCatalogueDataset.apply(ckanDataset); LOG.debug("converted dataset is: " + ds); datasetList.add(ds); } } } catch (Exception e) { LOG.error(e.getMessage(), e); throw new Exception( "Error occurrend on reading items for status: " + theStatus + ". Caused by: " + e.getMessage()); } LOG.info("returning "+datasetList.size()+ " dataset"); return datasetList; } @Override public void approveItem(String itemId) { LOG.info("Called approve Item: " + itemId); } @Override public void rejectItem(String itemId, boolean permanentlyDelete, String reasonMsg) { // TODO Auto-generated method stub } @Override public void permanentlyDelete(String itemId) { // TODO Auto-generated method stub } }