From 00a9c6287956b37b6766006e4765f88b6317658c Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 14 Jun 2021 17:39:44 +0200 Subject: [PATCH] in progress --- .classpath | 26 ++--- .settings/org.eclipse.jdt.core.prefs | 5 + .settings/org.eclipse.wst.common.component | 73 +++++++++----- pom.xml | 11 +++ .../CkanContentModeratorWidget.gwt.xml | 3 + .../client/CkanContentModeratorService.java | 47 ++++++++- .../CkanContentModeratorServiceAsync.java | 55 ++++++++++- .../client/CkanContentModeratorWidget.java | 23 +---- .../server/CatalogueCMSFactory.java | 99 +++++++++++++++++++ .../CkanContentModeratorServiceImpl.java | 61 +++++++----- .../server/ContentModeratorSystem.java | 64 ------------ .../shared/CatalogueDataset.java | 2 + .../shared/ItemStatus.java | 45 --------- .../CkanContentModeratorWidget.gwt.xml | 3 + src/main/webapp/WEB-INF/web.xml | 2 +- .../CkanContentModeratorServiceAImplTest.java | 14 --- .../CkanContentModeratorServiceTest.java | 45 +++++++++ 17 files changed, 365 insertions(+), 213 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CatalogueCMSFactory.java delete mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/ContentModeratorSystem.java delete mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/ItemStatus.java delete mode 100644 src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceAImplTest.java create mode 100644 src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java diff --git a/.classpath b/.classpath index 982611e..6303196 100644 --- a/.classpath +++ b/.classpath @@ -11,19 +11,6 @@ - - - - - - - - - - - - - @@ -34,6 +21,19 @@ + + + + + + + + + + + + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index cac0df4..8b5c4dc 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 85bfe32..3422968 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,31 +1,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + uses + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 860b492..a9740b8 100644 --- a/pom.xml +++ b/pom.xml @@ -131,6 +131,17 @@ ${gwt-material.version} + + org.gcube.core + common-encryption + + + + org.gcube.core + common-configuration-scanner + provided + + org.gcube.resources.discovery diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml index 18c6f09..a2297f9 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml @@ -11,6 +11,9 @@ + + diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java index 3134bf6..2539b48 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java @@ -2,28 +2,69 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client; import java.util.List; +import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; -import org.gcube.portlets.widgets.ckancontentmoderator.shared.ItemStatus; import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; /** * The client side stub for the RPC service. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 14, 2021 */ @RemoteServiceRelativePath("greet") public interface CkanContentModeratorService extends RemoteService { + /** + * Checks if is content moderator enabled. + * + * @return true, if is content moderator enabled + */ public boolean isContentModeratorEnabled(); + /** + * Sets the status. + * + * @param itemId the item id + * @param theStatus the the status + */ public void setStatus(String itemId, ItemStatus theStatus); - public List getListItemsForStatus(ItemStatus theStatus); - + /** + * Approve item. + * + * @param itemId the item id + */ public void approveItem(String itemId); + /** + * Reject item. + * + * @param itemId the item id + * @param permanentlyDelete the permanently delete + * @param reasonMsg the reason msg + */ public void rejectItem(String itemId, boolean permanentlyDelete, String reasonMsg); + /** + * Permanently delete. + * + * @param itemId the item id + */ public void permanentlyDelete(String itemId); + /** + * Gets the list items for status. + * + * @param theStatus the the status + * @param limit the limit + * @param offset the offset + * @return the list items for status + * @throws Exception + */ + public List getListItemsForStatus(ItemStatus theStatus, int limit, int offset) throws Exception; + } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java index f97b284..9749f66 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java @@ -2,23 +2,72 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client; import java.util.List; +import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; -import org.gcube.portlets.widgets.ckancontentmoderator.shared.ItemStatus; import com.google.gwt.user.client.rpc.AsyncCallback; +/** + * The Interface CkanContentModeratorServiceAsync. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 14, 2021 + */ public interface CkanContentModeratorServiceAsync { + /** + * Checks if is content moderator enabled. + * + * @param callback the callback + */ void isContentModeratorEnabled(AsyncCallback callback); + /** + * Approve item. + * + * @param itemId the item id + * @param callback the callback + */ void approveItem(String itemId, AsyncCallback callback); - void getListItemsForStatus(ItemStatus theStatus, AsyncCallback> callback); - + /** + * Permanently delete. + * + * @param itemId the item id + * @param callback the callback + */ void permanentlyDelete(String itemId, AsyncCallback callback); + /** + * Reject item. + * + * @param itemId the item id + * @param permanentlyDelete the permanently delete + * @param reasonMsg the reason msg + * @param callback the callback + */ void rejectItem(String itemId, boolean permanentlyDelete, String reasonMsg, AsyncCallback callback); + /** + * Sets the status. + * + * @param itemId the item id + * @param theStatus the the status + * @param callback the callback + */ void setStatus(String itemId, ItemStatus theStatus, AsyncCallback callback); + /** + * Gets the list items for status. + * + * @param theStatus the the status + * @param limit the limit + * @param offset the offset + * @param callback the callback + * @return the list items for status + */ + void getListItemsForStatus(ItemStatus theStatus, int limit, int offset, + AsyncCallback> callback); + } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidget.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidget.java index adddd56..333dab0 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidget.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidget.java @@ -2,14 +2,15 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client; import java.util.List; +import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; import org.gcube.portlets.widgets.ckancontentmoderator.client.material.table.CustomizedView; import org.gcube.portlets.widgets.ckancontentmoderator.client.resources.DataTableClientBundle; import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; -import org.gcube.portlets.widgets.ckancontentmoderator.shared.ItemStatus; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.StyleInjector; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.RootPanel; @@ -45,7 +46,7 @@ public class CkanContentModeratorWidget implements EntryPoint { RootPanel.get().add(cvTable); // table.getView().refresh(); - greetingService.getListItemsForStatus(ItemStatus.PENDING, new AsyncCallback>() { + greetingService.getListItemsForStatus(ItemStatus.PENDING, 20, 0, new AsyncCallback>() { @Override public void onSuccess(List result) { @@ -55,26 +56,10 @@ public class CkanContentModeratorWidget implements EntryPoint { @Override public void onFailure(Throwable caught) { - // TODO Auto-generated method stub + Window.alert(caught.getMessage()); } }); - - - greetingService.approveItem("ciao", new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - // TODO Auto-generated method stub - - } - - @Override - public void onSuccess(Void result) { - GWT.log("OK"); - - } - }); } } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CatalogueCMSFactory.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CatalogueCMSFactory.java new file mode 100644 index 0000000..3f546f1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CatalogueCMSFactory.java @@ -0,0 +1,99 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.server; + +import java.util.concurrent.ConcurrentHashMap; + +import org.gcube.datacatalogue.utillibrary.server.DataCatalogueImpl; +import org.gcube.datacatalogue.utillibrary.server.cms.CatalogueContentModeratorSystem; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A factory for getting CatalogueContentModeratorSystem objects. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 14, 2021 + */ +public class CatalogueCMSFactory { + + private static final Logger logger = LoggerFactory.getLogger(CatalogueCMSFactory.class); + private static final long MAX_LIFETIME = 1000 * 60 * 30; // 30 MINUTES + private static CatalogueCMSFactory instance = new CatalogueCMSFactory(); + private static ConcurrentHashMap cache; + + /** + * The Class CacheBean. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 14, 2021 + */ + private class CacheBean { + CatalogueContentModeratorSystem cmsInstance; + long ttl; + + /** + * Instantiates a new cache bean. + * + * @param ttl the ttl + * @param cmsInstance the cms instance + */ + public CacheBean(long ttl, CatalogueContentModeratorSystem cmsInstance) { + this.ttl = ttl; + this.cmsInstance = cmsInstance; + } + } + + /** + * Private constructor. + */ + private CatalogueCMSFactory() { + + logger.debug(CatalogueCMSFactory.class.getSimpleName() + " object build"); + cache = new ConcurrentHashMap(); + + } + + /** + * Get the factory instance. + * + * @return the factory + */ + public static CatalogueCMSFactory getFactory() { + logger.debug(CatalogueCMSFactory.class.getSimpleName() + " requested"); + return instance; + } + + /** + * Gets the CMS per scope. + * + * @param scope the scope + * @return the CMS per scope + * @throws Exception the exception + */ + public CatalogueContentModeratorSystem getCMSPerScope(String scope) throws Exception { + + if (scope == null || scope.isEmpty()) + throw new IllegalArgumentException("Invalid scope given!"); + + if (cache.containsKey(scope) && !expired(cache.get(scope))) { + return cache.get(scope).cmsInstance; + } else { + logger.info("Creating "+CatalogueCMSFactory.class.getSimpleName()+" for scope " + scope); + DataCatalogueImpl dci = new DataCatalogueImpl(scope); + CatalogueContentModeratorSystem cmsInstance = dci.getCatalogueContentModerator(); + cache.put(scope, new CacheBean(System.currentTimeMillis(), cmsInstance)); + return cmsInstance; + } + } + + /** + * Check if the ckan information must be retrieved again. + * + * @param cacheBean the cache bean + * @return true, if successful + */ + private boolean expired(CacheBean cacheBean) { + return (cacheBean.ttl + MAX_LIFETIME < System.currentTimeMillis()); + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java index b3ea8c0..ff9758f 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java @@ -1,13 +1,15 @@ 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.gcat.client.Item; +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.portlets.widgets.ckancontentmoderator.shared.ItemStatus; import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,9 +20,8 @@ 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, ContentModeratorSystem { - +public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implements CkanContentModeratorService { + private static Logger LOG = LoggerFactory.getLogger(CkanContentModeratorServiceImpl.class); @Override @@ -32,51 +33,59 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem @Override public void setStatus(String itemId, ItemStatus theStatus) { // TODO Auto-generated method stub - + } @Override - public List getListItemsForStatus(ItemStatus theStatus) { - LOG.info("Called getListItemsForStatus: "+theStatus); - + 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 { - //DataCatalogueImpl catalogue = DataCatalogueFactory.getFactory().getUtilsPerScope(scope); - String scope = WsUtil.getCurrentScope(getThreadLocalRequest()); - GCubeUser user = WsUtil.getCurrentUser(getThreadLocalRequest()); + String scope = WsUtil.getCurrentScope(this.getThreadLocalRequest()); + GCubeUser user = WsUtil.getCurrentUser(this.getThreadLocalRequest()); String token = WsUtil.getCurrentToken(scope, user.getUsername()); - LOG.info("Setting scope: "+scope); ScopeProvider.instance.set(scope); - LOG.info("Setting token: "+token); SecurityTokenProvider.instance.set(token); - String datasetId = new Item().list(10, 0); - System.out.println("the datasetId: " +datasetId); - + 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) { - // TODO Auto-generated catch block - e.printStackTrace(); - LOG.error(e.getMessage(),e); + LOG.error(e.getMessage(), e); + throw new Exception( + "Error occurrend on reading items for status: " + theStatus + ". Caused by: " + e.getMessage()); } - return null; + LOG.info("returning "+datasetList.size()+ " dataset"); + return datasetList; } @Override public void approveItem(String itemId) { - LOG.info("Called approve Item: "+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 - - } + } } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/ContentModeratorSystem.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/ContentModeratorSystem.java deleted file mode 100644 index 7bbc49a..0000000 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/ContentModeratorSystem.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.gcube.portlets.widgets.ckancontentmoderator.server; - -import java.util.List; - -import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; -import org.gcube.portlets.widgets.ckancontentmoderator.shared.ItemStatus; - -/** - * The Interface ContentModeratorSystem. - * - * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it - * - * May 7, 2021 - */ -public interface ContentModeratorSystem { - - /** - * Checks if is content moderator enabled. - * - * @return true, if is content moderator enabled - */ - boolean isContentModeratorEnabled(); - - /** - * Sets the status. - * - * @param itemId the item id - * @param theStatus the the status - */ - void setStatus(String itemId, ItemStatus theStatus); - - - /** - * Gets the list items for status. - * - * @param theStatus the the status - * @return the list items for status - */ - List getListItemsForStatus(ItemStatus theStatus); - - /** - * Approve item. - * - * @param itemId the item id - */ - void approveItem(String itemId); - - /** - * Reject item. - * - * @param itemId the item id - * @param permanentlyDelete the permanently delete - * @param reasonMsg the reason msg - */ - void rejectItem(String itemId, boolean permanentlyDelete, String reasonMsg); - - /** - * Permanently delete. - * - * @param itemId the item id - */ - void permanentlyDelete(String itemId); - -} diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/CatalogueDataset.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/CatalogueDataset.java index 9ee55bc..06d9de7 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/CatalogueDataset.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/CatalogueDataset.java @@ -2,6 +2,8 @@ package org.gcube.portlets.widgets.ckancontentmoderator.shared; import java.io.Serializable; +import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; + import com.google.gwt.user.client.rpc.IsSerializable; // TODO: Auto-generated Javadoc diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/ItemStatus.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/ItemStatus.java deleted file mode 100644 index 5579358..0000000 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/shared/ItemStatus.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.gcube.portlets.widgets.ckancontentmoderator.shared; - -/** - * The Enum ItemStatus. - * - * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it - * - * May 7, 2021 - */ -public enum ItemStatus { - PENDING("pending", "Pending"), APPROVED("approved", "Approved"), REJECTED("rejected", "Rejected"); - - private String id; - private String label; - - /** - * Instantiates a new item status. - * - * @param id the id - * @param label the label - */ - private ItemStatus(String id, String label) { - this.id = id; - this.label = label; - } - - /** - * Gets the id. - * - * @return the id - */ - public String getId() { - return id; - } - - /** - * Gets the label. - * - * @return the label - */ - public String getLabel() { - return label; - } - -} \ No newline at end of file diff --git a/src/main/resources/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml b/src/main/resources/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml index 18c6f09..a2297f9 100644 --- a/src/main/resources/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml +++ b/src/main/resources/org/gcube/portlets/widgets/ckancontentmoderator/CkanContentModeratorWidget.gwt.xml @@ -11,6 +11,9 @@ + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index f025bef..22650fa 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -7,7 +7,7 @@ greetServlet - org.gcube.portlets.widgets.ckancontentmoderator.server.CkanContentModeratorServiceAImpl + org.gcube.portlets.widgets.ckancontentmoderator.server.CkanContentModeratorServiceImpl diff --git a/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceAImplTest.java b/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceAImplTest.java deleted file mode 100644 index 7587878..0000000 --- a/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceAImplTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.gcube.portlets.widgets.ckancontentmoderator.server; - -import static org.junit.Assert.*; - -import org.junit.Test; - -public class CkanContentModeratorServiceAImplTest { - - //@Test - public void test() { - fail("Not yet implemented"); - } - -} diff --git a/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java b/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java new file mode 100644 index 0000000..c16352c --- /dev/null +++ b/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java @@ -0,0 +1,45 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.server; + +import static org.junit.Assert.fail; + +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.junit.Test; +import org.slf4j.LoggerFactory; + +public class CkanContentModeratorServiceTest { + + private String scope = "/gcube/devsec/devVRE"; + private String testUser = "francesco.mangiacrapa"; + private String authorizationToken = "8e74a17c-92f1-405a-b591-3a6090066248-98187548"; + + private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(CkanContentModeratorServiceTest.class); + + //@Test + public void test() { + fail("Not yet implemented"); + } + + @Test + public void loadItemsForStatus() { + ScopeProvider.instance.set(scope); + SecurityTokenProvider.instance.set(authorizationToken); + try { + CatalogueContentModeratorSystem cms = CatalogueCMSFactory.getFactory().getCMSPerScope(scope); + List items = cms.getListItemsForStatus(ItemStatus.PENDING, 20, 0); + int i = 0; + for (CkanDataset ckanDataset : items) { + System.out.println(i++ +")Read dataset: "+ckanDataset); + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + +}