mock for getListItemsForStatus and getSizeOfListItemsForStatus
This commit is contained in:
parent
2426bd16bd
commit
052c27c8c7
|
@ -4,6 +4,12 @@
|
|||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
|
||||
## [v1.1.0-SNAPSHOT] - 2021-06-14
|
||||
|
||||
**New Features**
|
||||
[#21643] Integrated with the content-moderator-system facilities
|
||||
|
||||
## [v1.0.2] - 2021-06-03
|
||||
|
||||
**Fixes**
|
||||
|
|
4
pom.xml
4
pom.xml
|
@ -12,7 +12,7 @@
|
|||
|
||||
<groupId>org.gcube.datacatalogue</groupId>
|
||||
<artifactId>catalogue-util-library</artifactId>
|
||||
<version>1.0.2</version>
|
||||
<version>1.1.0-SNAPSHOT</version>
|
||||
|
||||
<name>Ckan utility library</name>
|
||||
<description>
|
||||
|
@ -40,7 +40,7 @@
|
|||
<dependency>
|
||||
<groupId>org.gcube.distribution</groupId>
|
||||
<artifactId>maven-portal-bom</artifactId>
|
||||
<version>3.6.2</version>
|
||||
<version>3.6.2-SNAPSHOT</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
|
|
@ -33,6 +33,8 @@ import org.gcube.datacatalogue.utillibrary.ckan.MarshUnmarshCkanObject.METHOD;
|
|||
import org.gcube.datacatalogue.utillibrary.db.DBCaller;
|
||||
import org.gcube.datacatalogue.utillibrary.gcat.GCatCaller;
|
||||
import org.gcube.datacatalogue.utillibrary.server.DataCatalogueRunningCluster.ACCESS_LEVEL_TO_CATALOGUE_PORTLET;
|
||||
import org.gcube.datacatalogue.utillibrary.server.cms.CatalogueContentModeratorSystem;
|
||||
import org.gcube.datacatalogue.utillibrary.server.cms.DataCatalogueCMSImpl;
|
||||
import org.gcube.datacatalogue.utillibrary.server.utils.CKANConveter;
|
||||
import org.gcube.datacatalogue.utillibrary.server.utils.CatalogueUtilMethods;
|
||||
import org.gcube.datacatalogue.utillibrary.server.utils.GCubeUtils;
|
||||
|
@ -57,6 +59,7 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* This is the Ckan Utils implementation class.
|
||||
*
|
||||
|
@ -87,27 +90,28 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
private Map<String, String> extendRoleInOrganization;
|
||||
|
||||
public Map<ACCESS_LEVEL_TO_CATALOGUE_PORTLET, String> mapAccessURLToCatalogue;
|
||||
|
||||
|
||||
private static final String CATALOGUE_TAB_ENDING_URL = "/catalogue";
|
||||
|
||||
|
||||
// gCat client
|
||||
private GCatCaller gCatCaller;
|
||||
|
||||
|
||||
// db client
|
||||
private DBCaller dbCaller;
|
||||
|
||||
|
||||
// ckan client
|
||||
private ExtendCkanClient ckanCaller;
|
||||
|
||||
|
||||
// hashmap for ckan api keys
|
||||
private ConcurrentHashMap<String, CKANTokenBean> apiKeysMap;
|
||||
|
||||
//http ckan caller
|
||||
//private DirectCkanCaller directCkanCaller; //is not needed anymore?
|
||||
|
||||
// http ckan caller
|
||||
// private DirectCkanCaller directCkanCaller; //is not needed anymore?
|
||||
|
||||
// apikey bean expires after X minutes in the above map
|
||||
private static final int EXPIRE_KEY_TIME = 60 * 60 * 1000;
|
||||
|
||||
private DataCatalogueCMSImpl dataCatalogueCMSImpl = null;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -168,6 +172,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
ckanCaller = new ExtendCkanClient(CKAN_CATALOGUE_URL, CKAN_TOKEN_SYS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the catalogue url.
|
||||
*
|
||||
* @return the catalogue url
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getCatalogueUrl()
|
||||
*/
|
||||
|
@ -177,6 +186,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the portlet url.
|
||||
*
|
||||
* @return the portlet url
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getPortletUrl()
|
||||
*/
|
||||
|
@ -207,6 +221,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Find license id by license title.
|
||||
*
|
||||
* @param chosenLicense the chosen license
|
||||
* @return the string
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#findLicenseIdByLicenseTitle(java.lang.String)
|
||||
*/
|
||||
|
@ -228,6 +248,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the license titles.
|
||||
*
|
||||
* @return the license titles
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getLicenseTitles()
|
||||
*/
|
||||
|
@ -248,6 +273,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the licenses.
|
||||
*
|
||||
* @return the licenses
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getLicenses()
|
||||
*/
|
||||
|
@ -259,6 +289,13 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the dataset.
|
||||
*
|
||||
* @param datasetIdOrName the dataset id or name
|
||||
* @param username the username
|
||||
* @return the dataset
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getDataset(java.lang.String, java.lang.String)
|
||||
*/
|
||||
|
@ -289,7 +326,27 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the catalogue content moderator system
|
||||
*
|
||||
* @return the catalogue content moderator
|
||||
*/
|
||||
public CatalogueContentModeratorSystem getCatalogueContentModerator() {
|
||||
if(dataCatalogueCMSImpl==null) {
|
||||
dataCatalogueCMSImpl = new DataCatalogueCMSImpl();
|
||||
}
|
||||
|
||||
return dataCatalogueCMSImpl;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the unencrypted url from dataset id or name.
|
||||
*
|
||||
* @param datasetIdOrName the dataset id or name
|
||||
* @return the unencrypted url from dataset id or name
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getUnencryptedUrlFromDatasetIdOrName(java.lang.String)
|
||||
*/
|
||||
|
@ -324,6 +381,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the user role by group.
|
||||
*
|
||||
* @param username the username
|
||||
* @return the user role by group
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getUserRoleByGroup(java.lang.String)
|
||||
*/
|
||||
|
@ -358,6 +421,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the user role by organization.
|
||||
*
|
||||
* @param username the username
|
||||
* @return the user role by organization
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getUserRoleByOrganization(java.lang.String)
|
||||
*/
|
||||
|
@ -432,6 +501,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the landing pages.
|
||||
*
|
||||
* @return the landing pages
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getLandingPages()
|
||||
*/
|
||||
|
@ -446,6 +521,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return landingPages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the uri resolver url.
|
||||
*
|
||||
* @return the uri resolver url
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getUriResolverUrl()
|
||||
*/
|
||||
|
@ -464,6 +544,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return MANAGE_PRODUCT_BUTTON;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the group by name.
|
||||
*
|
||||
* @param name the name
|
||||
* @return the group by name
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getGroupByName(java.lang.String)
|
||||
*/
|
||||
|
@ -478,6 +564,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is notification to users enabled.
|
||||
*
|
||||
* @return true, if is notification to users enabled
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#isNotificationToUsersEnabled()
|
||||
*/
|
||||
|
@ -487,6 +578,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the organizations by user.
|
||||
*
|
||||
* @param username the username
|
||||
* @return the organizations by user
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getOrganizationsByUser(java.lang.String)
|
||||
*/
|
||||
|
@ -518,6 +615,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the groups by user.
|
||||
*
|
||||
* @param username the username
|
||||
* @return the groups by user
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getGroupsByUser(java.lang.String)
|
||||
*/
|
||||
|
@ -548,6 +651,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the organizations ids.
|
||||
*
|
||||
* @return the organizations ids
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getOrganizationsIds()
|
||||
*/
|
||||
|
@ -565,6 +673,11 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the organizations names.
|
||||
*
|
||||
* @return the organizations names
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getOrganizationsNames()
|
||||
*/
|
||||
|
@ -582,6 +695,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the organizations names by user.
|
||||
*
|
||||
* @param username the username
|
||||
* @return the organizations names by user
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getOrganizationsNamesByUser(java.lang.String)
|
||||
*/
|
||||
|
@ -607,6 +726,13 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the role of user in organization.
|
||||
*
|
||||
* @param username the username
|
||||
* @param orgName the org name
|
||||
* @return the role of user in organization
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getRoleOfUserInOrganization(java.lang.String, java.lang.String)
|
||||
*/
|
||||
|
@ -695,6 +821,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exist product with name or id.
|
||||
*
|
||||
* @param nameOrId the name or id
|
||||
* @return true, if successful
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#existProductWithNameOrId(java.lang.String)
|
||||
*/
|
||||
|
@ -714,6 +846,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the organization by id or name.
|
||||
*
|
||||
* @param idOrName the id or name
|
||||
* @return the organization by id or name
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getOrganizationByIdOrName(java.lang.String)
|
||||
*/
|
||||
|
@ -792,6 +930,13 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
|
||||
|
||||
|
||||
/**
|
||||
* Gets the parent groups.
|
||||
*
|
||||
* @param groupName the group name
|
||||
* @param apiKey the api key
|
||||
* @return the parent groups
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getParentGroups(java.lang.String, java.lang.String)
|
||||
*/
|
||||
|
@ -811,6 +956,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the organization by name.
|
||||
*
|
||||
* @param name the name
|
||||
* @return the organization by name
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getOrganizationByName(java.lang.String)
|
||||
*/
|
||||
|
@ -908,6 +1059,14 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check role into group.
|
||||
*
|
||||
* @param username the username
|
||||
* @param groupName the group name
|
||||
* @param correspondentRoleToCheck the correspondent role to check
|
||||
* @return true, if successful
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#checkRoleIntoGroup(java.lang.String, java.lang.String, org.gcube.datacatalogue.utillibrary.shared.RolesCkanGroupOrOrg)
|
||||
*/
|
||||
|
@ -966,6 +1125,29 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the ckan dataset multiple custom fields.
|
||||
*
|
||||
* @param username the username
|
||||
* @param title the title
|
||||
* @param name the name
|
||||
* @param organizationName the organization name
|
||||
* @param author the author
|
||||
* @param authorMail the author mail
|
||||
* @param maintainer the maintainer
|
||||
* @param maintainerMail the maintainer mail
|
||||
* @param version the version
|
||||
* @param description the description
|
||||
* @param licenseId the license id
|
||||
* @param tags the tags
|
||||
* @param customFieldsMultiple the custom fields multiple
|
||||
* @param resources the resources
|
||||
* @param setPublic the set public
|
||||
* @param setSearchable the set searchable
|
||||
* @param socialPost the social post
|
||||
* @return the string
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#createCkanDatasetMultipleCustomFields(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, long, java.lang.String, java.lang.String, java.util.List, java.util.Map, java.util.List, boolean, boolean, boolean)
|
||||
*/
|
||||
|
@ -1019,6 +1201,14 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Patch fields for dataset.
|
||||
*
|
||||
* @param datasetIdOrName the dataset id or name
|
||||
* @param mapFields the map fields
|
||||
* @return true, if successful
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#patchFieldsForDataset(java.lang.String, java.util.Map)
|
||||
*/
|
||||
|
@ -1052,6 +1242,14 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the searchable field for dataset.
|
||||
*
|
||||
* @param datasetId the dataset id
|
||||
* @param searchable the searchable
|
||||
* @return true, if successful
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#setSearchableFieldForDataset(java.lang.String, boolean)
|
||||
*/
|
||||
|
@ -1079,6 +1277,15 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds the resource to dataset.
|
||||
*
|
||||
* @param resourceBean the resource bean
|
||||
* @param organizationName the organization name
|
||||
* @param username the username
|
||||
* @return the string
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#addResourceToDataset(org.gcube.datacatalogue.utillibrary.shared.ResourceBean)
|
||||
*/
|
||||
|
@ -1132,6 +1339,14 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete resource from dataset.
|
||||
*
|
||||
* @param resourceId the resource id
|
||||
* @param username the username
|
||||
* @return true, if successful
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#deleteResourceFromDataset(java.lang.String)
|
||||
*/
|
||||
|
@ -1168,6 +1383,15 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates the group.
|
||||
*
|
||||
* @param name the name
|
||||
* @param title the title
|
||||
* @param description the description
|
||||
* @return the ckan group
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#createGroup(java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
|
@ -1207,6 +1431,12 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the roles and users group.
|
||||
*
|
||||
* @param groupName the group name
|
||||
* @return the roles and users group
|
||||
*/
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#getRolesAndUsersGroup(java.lang.String)
|
||||
*/
|
||||
|
@ -1245,6 +1475,13 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#assignDatasetToGroup(java.lang.String, java.lang.String)
|
||||
*/
|
||||
/**
|
||||
* Assign dataset to group.
|
||||
*
|
||||
* @param groupNameOrId the group name or id
|
||||
* @param datasetNameOrId the dataset name or id
|
||||
* @return true, if successful
|
||||
*/
|
||||
//TODO HAS TO BE REVISITED by gCAT
|
||||
@Override
|
||||
public boolean assignDatasetToGroup(String groupNameOrId, String datasetNameOrId) {
|
||||
|
@ -1255,6 +1492,15 @@ public class DataCatalogueImpl implements DataCatalogue {
|
|||
/* (non-Javadoc)
|
||||
* @see org.gcube.datacatalogue.utillibrary.server.DataCatalogue#patchProductCustomFields(java.lang.String, java.lang.String, java.util.Map, boolean)
|
||||
*/
|
||||
/**
|
||||
* Patch product custom fields.
|
||||
*
|
||||
* @param productId the product id
|
||||
* @param username the username
|
||||
* @param customFieldsToChange the custom fields to change
|
||||
* @param removeOld the remove old
|
||||
* @return true, if successful
|
||||
*/
|
||||
//TODO HAS TO BE REVISITED by gCAT
|
||||
@Override
|
||||
public boolean patchProductCustomFields(String productId, String username,
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
package org.gcube.datacatalogue.utillibrary.server.cms;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.List;
|
||||
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
|
||||
import org.gcube.datacatalogue.utillibrary.shared.jackan.model.CkanDataset;
|
||||
import org.json.JSONException;
|
||||
|
||||
/**
|
||||
* The Interface CatalogueContentModeratorSystem.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Jun 14, 2021
|
||||
*/
|
||||
public interface CatalogueContentModeratorSystem {
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @param limit the limit
|
||||
* @param offset the offset
|
||||
* @return the list items for status
|
||||
* @throws WebApplicationException the web application exception
|
||||
* @throws MalformedURLException the malformed URL exception
|
||||
* @throws JSONException the JSON exception
|
||||
*/
|
||||
public List<CkanDataset> getListItemsForStatus(ItemStatus theStatus, int limit, int offset)
|
||||
throws WebApplicationException, MalformedURLException, JSONException;
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
|
||||
/**
|
||||
* Count list items for status.
|
||||
*
|
||||
* @param theStatus the the status
|
||||
* @return the long
|
||||
*/
|
||||
long countListItemsForStatus(ItemStatus theStatus);
|
||||
|
||||
}
|
|
@ -0,0 +1,199 @@
|
|||
package org.gcube.datacatalogue.utillibrary.server.cms;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
|
||||
import org.gcube.datacatalogue.utillibrary.ckan.MarshUnmarshCkanObject;
|
||||
import org.gcube.datacatalogue.utillibrary.ckan.MarshUnmarshCkanObject.METHOD;
|
||||
import org.gcube.datacatalogue.utillibrary.shared.jackan.model.CkanDataset;
|
||||
import org.gcube.gcat.client.Item;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* The Class DataCatalogueCMSImpl.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Jun 14, 2021
|
||||
*/
|
||||
public class DataCatalogueCMSImpl implements CatalogueContentModeratorSystem {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(DataCatalogueCMSImpl.class);
|
||||
|
||||
/**
|
||||
* Instantiates a new data catalogue CMS impl.
|
||||
*/
|
||||
public DataCatalogueCMSImpl() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is content moderator enabled.
|
||||
*
|
||||
* @return true, if is content moderator enabled
|
||||
*/
|
||||
@Override
|
||||
public boolean isContentModeratorEnabled() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the status.
|
||||
*
|
||||
* @param itemId the item id
|
||||
* @param theStatus the the status
|
||||
*/
|
||||
@Override
|
||||
public void setStatus(String itemId, ItemStatus theStatus) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 WebApplicationException the web application exception
|
||||
* @throws MalformedURLException the malformed URL exception
|
||||
* @throws JSONException
|
||||
*/
|
||||
@Override
|
||||
public List<CkanDataset> getListItemsForStatus(ItemStatus theStatus, int limit, int offset)
|
||||
throws WebApplicationException, MalformedURLException, JSONException {
|
||||
LOG.info("called getListItemsForStatus with [status: " + theStatus + "], [limit: " + limit + "], [offset: "
|
||||
+ offset + "]");
|
||||
List<CkanDataset> listDataset = null;
|
||||
checkNotNull(theStatus);
|
||||
JSONArray jsonArray = getSourceArrayOfItemsForStatus(theStatus, limit, offset);
|
||||
|
||||
if (jsonArray != null) {
|
||||
int size = jsonArray.length();
|
||||
listDataset = new ArrayList<CkanDataset>(size);
|
||||
LOG.debug("converting " + size + " dataset...");
|
||||
for (int i = 0; i < size; i++) {
|
||||
String datasetName = null;
|
||||
try {
|
||||
datasetName = jsonArray.getString(i);
|
||||
LOG.trace("reading dataset: " + datasetName);
|
||||
String jsonValueDataset = new Item().read(datasetName);
|
||||
CkanDataset toCkanDataset = MarshUnmarshCkanObject.toCkanDataset(jsonValueDataset,
|
||||
METHOD.TO_READ);
|
||||
LOG.trace("converted as dataset: " + toCkanDataset);
|
||||
listDataset.add(toCkanDataset);
|
||||
} catch (JSONException | IOException e) {
|
||||
LOG.warn("Error on reading/converting the dataset name: " + datasetName, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (listDataset == null) {
|
||||
LOG.info("no dataset returned with status: " + theStatus);
|
||||
return listDataset;
|
||||
}
|
||||
|
||||
LOG.info("returning listDataset with size: " + listDataset.size());
|
||||
return listDataset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the source array of items for status read by gCatClient.
|
||||
*
|
||||
* @param theStatus the the status
|
||||
* @param limit the limit
|
||||
* @param offset the offset
|
||||
* @return the source array of items for status
|
||||
* @throws WebApplicationException the web application exception
|
||||
* @throws MalformedURLException the malformed URL exception
|
||||
* @throws JSONException the JSON exception
|
||||
*/
|
||||
protected JSONArray getSourceArrayOfItemsForStatus(ItemStatus theStatus, int limit, int offset)
|
||||
throws WebApplicationException, MalformedURLException, JSONException {
|
||||
LOG.info("called getSourceArrayOfItemsForStatus with [status: " + theStatus + "], [limit: " + limit
|
||||
+ "], [offset: " + offset + "]");
|
||||
checkNotNull(theStatus);
|
||||
// TODO MUST BE CHANGED FOR THE STATUS
|
||||
JSONArray jsonArray = null;
|
||||
String datasetNames = new Item().list(limit, offset);
|
||||
if (datasetNames != null) {
|
||||
LOG.debug("for status " + theStatus + " found dataset: " + datasetNames);
|
||||
jsonArray = new JSONArray(datasetNames);
|
||||
}
|
||||
|
||||
return jsonArray;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Count list items for status.
|
||||
*
|
||||
* @param theStatus the the status
|
||||
* @return the long
|
||||
*/
|
||||
@Override
|
||||
public long countListItemsForStatus(ItemStatus theStatus) {
|
||||
LOG.info("called countListItemsForStatus with [status: " + theStatus + "]");
|
||||
checkNotNull(theStatus);
|
||||
int count = 0;
|
||||
try {
|
||||
// TODO MUST BE CHANGED FOR THE STATUS
|
||||
count = new Item().count();
|
||||
} catch (Exception e) {
|
||||
LOG.error("Error on couting list items for status "+theStatus, e);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return count;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Approve item.
|
||||
*
|
||||
* @param itemId the item id
|
||||
*/
|
||||
@Override
|
||||
public void approveItem(String itemId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reject item.
|
||||
*
|
||||
* @param itemId the item id
|
||||
* @param permanentlyDelete the permanently delete
|
||||
* @param reasonMsg the reason msg
|
||||
*/
|
||||
@Override
|
||||
public void rejectItem(String itemId, boolean permanentlyDelete, String reasonMsg) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Permanently delete.
|
||||
*
|
||||
* @param itemId the item id
|
||||
*/
|
||||
@Override
|
||||
public void permanentlyDelete(String itemId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package org.gcube.datacatalogue.utillibrary.server.cms;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,107 @@
|
|||
package org.gcube.datacatalogue.utillibrary.test;
|
||||
|
||||
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.DataCatalogueFactory;
|
||||
import org.gcube.datacatalogue.utillibrary.server.DataCatalogueImpl;
|
||||
import org.gcube.datacatalogue.utillibrary.server.cms.CatalogueContentModeratorSystem;
|
||||
import org.gcube.datacatalogue.utillibrary.server.cms.ItemStatus;
|
||||
import org.gcube.datacatalogue.utillibrary.shared.jackan.model.CkanDataset;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* The Class TestDataCatalogueLib.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy) Jun 1, 2020
|
||||
*/
|
||||
public class TestDataCatalogueCMS {
|
||||
|
||||
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(TestDataCatalogueCMS.class);
|
||||
|
||||
private DataCatalogueFactory factory;
|
||||
private String scope = "/gcube/devsec/devVRE";
|
||||
private String testUser = "francesco.mangiacrapa";
|
||||
private String authorizationToken = "8e74a17c-92f1-405a-b591-3a6090066248-98187548";
|
||||
|
||||
/**
|
||||
* Before.
|
||||
*
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
// @Before
|
||||
public void before() throws Exception {
|
||||
factory = DataCatalogueFactory.getFactory();
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory test.
|
||||
*
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
// @Test
|
||||
public void contentModeratorTest() throws Exception {
|
||||
ScopeProvider.instance.set(scope);
|
||||
SecurityTokenProvider.instance.set(authorizationToken);
|
||||
DataCatalogueFactory factory = DataCatalogueFactory.getFactory();
|
||||
DataCatalogueImpl dImpl = factory.getUtilsPerScope(scope);
|
||||
CatalogueContentModeratorSystem cCMS = dImpl.getCatalogueContentModerator();
|
||||
LOG.debug(CatalogueContentModeratorSystem.class.getName() + " instancied correclty");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the scope per url.
|
||||
*
|
||||
* @return the scope per url
|
||||
* @throws Exception
|
||||
*/
|
||||
//@Test
|
||||
public void getListItemsForStatus() throws Exception {
|
||||
|
||||
try {
|
||||
ScopeProvider.instance.set(scope);
|
||||
SecurityTokenProvider.instance.set(authorizationToken);
|
||||
DataCatalogueFactory factory = DataCatalogueFactory.getFactory();
|
||||
DataCatalogueImpl dImpl = factory.getUtilsPerScope(scope);
|
||||
CatalogueContentModeratorSystem cCMS = dImpl.getCatalogueContentModerator();
|
||||
LOG.debug(CatalogueContentModeratorSystem.class.getName() + " instancied correclty");
|
||||
|
||||
List<CkanDataset> listDatasets = cCMS.getListItemsForStatus(ItemStatus.PENDING, 20, 0);
|
||||
|
||||
for (CkanDataset ckanDataset : listDatasets) {
|
||||
LOG.debug("CkanDataset read: " + ckanDataset);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the scope per url.
|
||||
*
|
||||
* @return the scope per url
|
||||
* @throws Exception
|
||||
*/
|
||||
//@Test
|
||||
public void getSizeOfListItemsForStatus() throws Exception {
|
||||
|
||||
try {
|
||||
ItemStatus theStatus = ItemStatus.PENDING;
|
||||
ScopeProvider.instance.set(scope);
|
||||
SecurityTokenProvider.instance.set(authorizationToken);
|
||||
DataCatalogueFactory factory = DataCatalogueFactory.getFactory();
|
||||
DataCatalogueImpl dImpl = factory.getUtilsPerScope(scope);
|
||||
CatalogueContentModeratorSystem cCMS = dImpl.getCatalogueContentModerator();
|
||||
LOG.debug(CatalogueContentModeratorSystem.class.getName() + " instancied correclty");
|
||||
|
||||
long size = cCMS.countListItemsForStatus(theStatus);
|
||||
LOG.debug("Size of list of items for status "+theStatus + " is: "+ size);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue