portlet url built on the fly

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/ckan-util-library@164553 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2018-02-23 13:20:17 +00:00
parent 6d8c9a22bb
commit 574532c7d9
2 changed files with 45 additions and 43 deletions

View File

@ -33,7 +33,8 @@ import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.FacetField;
import org.apache.solr.client.solrj.response.FacetField.Count;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.gcube.datacatalogue.ckanutillibrary.server.utils.UtilMethods;
import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.datacatalogue.ckanutillibrary.server.utils.CatalogueUtilMethods;
import org.gcube.datacatalogue.ckanutillibrary.server.utils.url.EntityContext;
import org.gcube.datacatalogue.ckanutillibrary.shared.CKanUserWrapper;
import org.gcube.datacatalogue.ckanutillibrary.shared.CkanDatasetRelationship;
@ -101,6 +102,7 @@ public class DataCatalogueImpl implements DataCatalogue{
private final static String PATH_SET_PRIVATE_DATASET = "/api/3/action/bulk_update_private";
private final static String PATH_SET_PUBLIC_DATASET = "/api/3/action/bulk_update_public";
private static final String CATALOGUE_TAB_ENDING_URL = "/catalogue";
// ckan client
private CkanClient client;
@ -169,7 +171,10 @@ public class DataCatalogueImpl implements DataCatalogue{
@Override
public String getPortletUrl() {
return PORTLET_URL_FOR_SCOPE;
ScopeBean context = new ScopeBean(CONTEXT);
String buildedUrl = PORTLET_URL_FOR_SCOPE.endsWith("/") ? PORTLET_URL_FOR_SCOPE : PORTLET_URL_FOR_SCOPE + "/";
buildedUrl += context.name().toLowerCase() + CATALOGUE_TAB_ENDING_URL;
return buildedUrl;
}
@Override
@ -229,7 +234,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkArgument(!username.isEmpty());
// in order to avoid errors, the username is always converted
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
// check in the hashmap first
if(apiKeysMap.containsKey(ckanUsername)){
@ -332,7 +337,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkNotNull(username);
// in order to avoid errors, the username is always converted
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
// list to return
List<CkanOrganization> toReturn = new ArrayList<CkanOrganization>();
@ -373,7 +378,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkNotNull(username);
// in order to avoid errors, the username is always converted
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
// list to return
List<CkanGroup> toReturn = new ArrayList<CkanGroup>();
@ -422,7 +427,7 @@ public class DataCatalogueImpl implements DataCatalogue{
try{
// in order to avoid errors, the username is always converted
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
// get the list of organizations in which the user is present
List<CkanOrganization> organizationsByUser = getOrganizationsByUser(ckanUsername);
@ -508,7 +513,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkNotNull(username);
// in order to avoid errors, the username is always converted
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
List<CkanOrganization> orgs = getOrganizationsByUser(ckanUsername);
@ -634,10 +639,10 @@ public class DataCatalogueImpl implements DataCatalogue{
checkNotNull(apiKey);
checkArgument(!apiKey.isEmpty());
if(UtilMethods.resourceExists(resourceBean.getUrl())){
if(CatalogueUtilMethods.resourceExists(resourceBean.getUrl())){
// in order to avoid errors, the username is always converted
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(resourceBean.getOwner());
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(resourceBean.getOwner());
CkanResource resource = new CkanResource(CKAN_CATALOGUE_URL, resourceBean.getDatasetId());
resource.setName(resourceBean.getName());
@ -752,7 +757,7 @@ public class DataCatalogueImpl implements DataCatalogue{
String nameToUse = name;
if(nameToUse == null)
nameToUse = UtilMethods.fromProductTitleToName(title);
nameToUse = CatalogueUtilMethods.fromProductTitleToName(title);
logger.debug("Name of the dataset is going to be " + nameToUse + ". Title is going to be " + title);
@ -812,14 +817,6 @@ public class DataCatalogueImpl implements DataCatalogue{
}
}
// sort them
// Collections.sort(extras, new Comparator<CkanPair>() {
// @Override public int compare(CkanPair b1, CkanPair b2) {
// return b1.getKey().compareTo(b2.getKey());
// }
//
// });
dataset.setExtras(extras);
// check if we need to add the resources
@ -1140,7 +1137,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkArgument(!organizationName.isEmpty());
// convert ckan username
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
// check if this role is already present in ckan for this user within the organization
String organizationNameToCheck = organizationName.toLowerCase();
@ -1223,10 +1220,10 @@ public class DataCatalogueImpl implements DataCatalogue{
checkArgument(!groupName.isEmpty());
// convert ckan username
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
// check if this role is already present in ckan for this user within the group
String groupNameToCheck = UtilMethods.fromGroupTitleToName(groupName);
String groupNameToCheck = CatalogueUtilMethods.fromGroupTitleToName(groupName);
try{
boolean alreadyPresent = isRoleAlreadySet(ckanUsername, groupNameToCheck, correspondentRoleToCheck, true);
@ -1274,7 +1271,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkArgument(!username.isEmpty());
// in order to avoid errors, the username is always converted
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
try{
return client.getUser(ckanUsername).isSysadmin();
}catch(Exception e){
@ -1460,7 +1457,7 @@ public class DataCatalogueImpl implements DataCatalogue{
logger.debug("Request for creating group with name " + nameOrId + " title " + title + " and description " + description);
String name = UtilMethods.fromGroupTitleToName(nameOrId);
String name = CatalogueUtilMethods.fromGroupTitleToName(nameOrId);
if((toCreate = groupExists(name, client))!= null)
return toCreate;
else{
@ -1562,7 +1559,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkNotNull(apiKey);
checkArgument(!apiKey.isEmpty());
String groupNameToCheck = UtilMethods.fromGroupTitleToName(groupNameOrId);
String groupNameToCheck = CatalogueUtilMethods.fromGroupTitleToName(groupNameOrId);
try(CloseableHttpClient httpClient = HttpClientBuilder.create().build();){
@ -1674,17 +1671,6 @@ public class DataCatalogueImpl implements DataCatalogue{
CkanDataset dataset = client.getDataset(datasetNameOrId);
List<CkanGroup> currentGroups = dataset.getGroups();
// build the json array for the "groups" field.. each object looks like
// {
//
// "display_name": "Fishery activity",
// "description": "",
// "image_display_url": "",
// "title": "Fishery activity",
// "id": "20b8d23c-d2dd-4613-9e1e-856311862e87",
// "name": "fishery-activity"
//
// }
// get the id of the group to be removed
String groupId = client.getGroup(groupNameOrId).getId();
@ -1762,7 +1748,7 @@ public class DataCatalogueImpl implements DataCatalogue{
checkNotNull(groupName);
checkArgument(!groupName.isEmpty());
Map<RolesCkanGroupOrOrg, List<String>> capacityAndUsers = null;
String groupNameToCheck = UtilMethods.fromGroupTitleToName(groupName);
String groupNameToCheck = CatalogueUtilMethods.fromGroupTitleToName(groupName);
CkanGroup group = client.getGroup(groupNameToCheck);
@ -1791,7 +1777,7 @@ public class DataCatalogueImpl implements DataCatalogue{
String toReturn = null;
String usernameCkan = UtilMethods.fromUsernameToCKanUsername(username);
String usernameCkan = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
try{
@ -1816,7 +1802,7 @@ public class DataCatalogueImpl implements DataCatalogue{
String toReturn = null;
String usernameCkan = UtilMethods.fromUsernameToCKanUsername(username);
String usernameCkan = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
try{
@ -2692,7 +2678,7 @@ public class DataCatalogueImpl implements DataCatalogue{
try{
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
Map<CkanGroup, RolesCkanGroupOrOrg> partialResult = getGroupsByUserFromDB(ckanUsername);
Set<Entry<CkanGroup, RolesCkanGroupOrOrg>> set = partialResult.entrySet();
@ -2724,7 +2710,7 @@ public class DataCatalogueImpl implements DataCatalogue{
try{
String ckanUsername = UtilMethods.fromUsernameToCKanUsername(username);
String ckanUsername = CatalogueUtilMethods.fromUsernameToCKanUsername(username);
Map<CkanOrganization, RolesCkanGroupOrOrg> partialResult = getOrganizationsByUserFromDB(ckanUsername);
Set<Entry<CkanOrganization, RolesCkanGroupOrOrg>> set = partialResult.entrySet();
@ -2833,7 +2819,7 @@ public class DataCatalogueImpl implements DataCatalogue{
@Override
public CkanGroup getGroupByName(String name) {
String ckanName = UtilMethods.fromGroupTitleToName(name);
String ckanName = CatalogueUtilMethods.fromGroupTitleToName(name);
try{
return client.getGroup(ckanName);
}catch(Exception e){

View File

@ -3,6 +3,7 @@ package org.gcube.datacatalogue.ckanutillibrary.server.utils;
import java.net.HttpURLConnection;
import java.net.URL;
import org.gcube.common.scope.impl.ScopeBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -10,12 +11,27 @@ import org.slf4j.LoggerFactory;
* Some utility methods used within the library.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class UtilMethods {
public class CatalogueUtilMethods {
private static final Logger logger = LoggerFactory.getLogger(UtilMethods.class);
private static final Logger logger = LoggerFactory.getLogger(CatalogueUtilMethods.class);
private final static String HTTPS = "https";
private final static String HTTP = "http";
/**
* Maps the scope name to the ckan organization name
* @return
*/
public static String getOrganizationNameFromScope(String scope){
if(scope == null || scope.isEmpty())
throw new IllegalArgumentException("scope null");
ScopeBean scopeBean = new ScopeBean(scope);
return scopeBean.name().toLowerCase().replace(" ", "_").replace("-", "_");
}
/**
* Ckan username has _ instead of . (that is, costantino.perciante -> costantino_perciante)
* @param owner