diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java index b7c36c0..547fe94 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java @@ -638,4 +638,10 @@ public interface DataCatalogue { * @return a list of matching datasets */ List searchForPackageInOrganization(String apiKey, String query, int start, int offset, String organization) throws Exception; + + /** + * Retrieve the catalogue email + * @return an email address for sending email to this catalogue + */ + String getCatalogueEmail(); } diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java index 77caa74..ab4ad16 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java @@ -92,6 +92,7 @@ public class DataCatalogueImpl implements DataCatalogue{ private String PORTLET_URL_FOR_SCOPE; private String SOLR_URL; private String CKAN_TOKEN_SYS; + private String CKAN_EMAIL; private String URI_RESOLVER_URL; private boolean MANAGE_PRODUCT_BUTTON; private boolean ALERT_USERS_ON_POST_CREATION; @@ -135,6 +136,7 @@ public class DataCatalogueImpl implements DataCatalogue{ CKAN_DB_USER = runningInstance.getDataBaseUser().trim(); CKAN_DB_PASSWORD = runningInstance.getDataBasePassword().trim(); CKAN_TOKEN_SYS = runningInstance.getSysAdminToken().trim(); + CKAN_EMAIL = runningInstance.getEmailCatalogue().trim(); CKAN_DB_PORT = runningInstance.getDatabasePorts().get(0); CKAN_CATALOGUE_URL = runningInstance.getDataCatalogueUrl().get(0).trim(); PORTLET_URL_FOR_SCOPE = runningInstance.getPortletUrl().trim(); @@ -2977,4 +2979,11 @@ public class DataCatalogueImpl implements DataCatalogue{ return landingPages; } + @Override + public String getCatalogueEmail() { + + return CKAN_EMAIL; + + } + } \ No newline at end of file diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueRunningCluster.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueRunningCluster.java index a3df86e..b27c5c8 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueRunningCluster.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueRunningCluster.java @@ -59,6 +59,9 @@ public class DataCatalogueRunningCluster { // api key property for SYSADMIN private final static String API_KEY_PROPERTY = "API_KEY"; + // catalogue email + private final static String CKAN_EMAIL_PROPERTY = "CATALOGUE_EMAIL"; + // property to retrieve the master service endpoint into the /root scope private final static String IS_MASTER_ROOT_KEY_PROPERTY = "IS_ROOT_MASTER"; // true, false.. missing means false as well private final static String IS_MANAGE_PRODUCT_ENABLED = "IS_MANAGE_PRODUCT_ENABLED"; // true, false.. missing means false as well (for GRSF records) @@ -90,10 +93,12 @@ public class DataCatalogueRunningCluster { public static final String ROLE_ORGANIZATION_SEPARATOR = "|"; public static final String TUPLES_SEPARATOR = ","; + private static final String DEFAULT_CATALOGUE_EMAIL = "catalogue@d4science.org"; + // this token is needed in order to assign roles to user private String sysAdminToken; - + private String catalogueEmail; public DataCatalogueRunningCluster(String scope) throws Exception{ @@ -182,6 +187,12 @@ public class DataCatalogueRunningCluster { sysAdminToken = accessPoint.propertyMap().get(API_KEY_PROPERTY).value(); sysAdminToken = StringEncrypter.getEncrypter().decrypt(sysAdminToken); + // retrieve catalogue email + if(accessPoint.propertyMap().containsKey(CKAN_EMAIL_PROPERTY)){ + catalogueEmail = accessPoint.propertyMap().get(CKAN_EMAIL_PROPERTY).value(); + catalogueEmail = StringEncrypter.getEncrypter().decrypt(catalogueEmail); + } + // retrieve URL_RESOLVER if(accessPoint.propertyMap().containsKey(URL_RESOLVER)) urlResolver = accessPoint.propertyMap().get(URL_RESOLVER).value(); @@ -211,6 +222,12 @@ public class DataCatalogueRunningCluster { sysAdminToken = accessPoint.propertyMap().get(API_KEY_PROPERTY).value(); sysAdminToken = StringEncrypter.getEncrypter().decrypt(sysAdminToken); + // retrieve catalogue email + if(accessPoint.propertyMap().containsKey(CKAN_EMAIL_PROPERTY)){ + catalogueEmail = accessPoint.propertyMap().get(CKAN_EMAIL_PROPERTY).value(); + catalogueEmail = StringEncrypter.getEncrypter().decrypt(catalogueEmail); + } + // get the is manage product property Property entry = accessPoint.propertyMap().get(IS_MANAGE_PRODUCT_ENABLED); String isManageProduct = entry != null ? entry.value() : null; @@ -237,7 +254,7 @@ public class DataCatalogueRunningCluster { } }catch(Exception e){ - throw new ServiceEndPointException("There is no service end point for such information"); + throw new ServiceEndPointException("There is no service end point for such information" + e.toString()); } } @@ -576,5 +593,13 @@ public class DataCatalogueRunningCluster { } + /** + * Get the catalogue email. Default is "catalogue@d4science.org" + * @return + */ + public String getEmailCatalogue() { + logger.debug("Read email from resource is " + catalogueEmail); + return catalogueEmail == null? DEFAULT_CATALOGUE_EMAIL : catalogueEmail; + } } diff --git a/src/test/java/org/gcube/datacatalogue/ckanutillibrary/server/TestDataCatalogueLib.java b/src/test/java/org/gcube/datacatalogue/ckanutillibrary/server/TestDataCatalogueLib.java index 998fc8d..a5752ab 100644 --- a/src/test/java/org/gcube/datacatalogue/ckanutillibrary/server/TestDataCatalogueLib.java +++ b/src/test/java/org/gcube/datacatalogue/ckanutillibrary/server/TestDataCatalogueLib.java @@ -40,7 +40,12 @@ public class TestDataCatalogueLib { //@Before public void before() throws Exception{ factory = DataCatalogueFactory.getFactory(); - + } + + //@Test + public void getSysadminEmail() throws Exception{ + DataCatalogueImpl utils = factory.getUtilsPerScope(scope); + System.out.println(utils.getCatalogueEmail()); } //@Test