diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..f83dda2
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,15 @@
+# Changelog
+
+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] [r4-24-0]- 2020-06-05
+
+**New features**
+
+[#19440] Added the property cataloguePortletURL and the method
+
+## [1-0-0] - [2020-04-01]
+
+First release
+
diff --git a/pom.xml b/pom.xml
index 407c9a9..1591b96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
org.gcube.infrastructure.detachedres
detachedres-library
detachedres-library
- 1.0.0
+ 1.1.0-SNAPSHOT
Detached Resource Entities Library
diff --git a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/DetachedREsClient.java b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/DetachedREsClient.java
index 83c50ed..a15081e 100644
--- a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/DetachedREsClient.java
+++ b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/DetachedREsClient.java
@@ -7,14 +7,18 @@ import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.infrastructure.detachedres.detachedreslibrary.server.is.DetachedREsBuilder;
import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.Constants;
import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.DetachedREs;
+import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.Gateway;
+import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.VO;
+import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.VRE;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- *
+ * The Class DetachedREsClient.
+ *
* @author Giancarlo Panichi
- *
- *
+ *
+ * @author updated by Francesco Mangiacrapa at ISTI-CNR
*/
public class DetachedREsClient {
@@ -24,16 +28,27 @@ public class DetachedREsClient {
private String scope;
/**
- *
+ * Instantiates a new detached R es client.
*/
public DetachedREsClient() {
}
+ /**
+ * Instantiates a new detached R es client.
+ *
+ * @param token the token
+ */
public DetachedREsClient(String token) {
this.token = token;
}
+ /**
+ * Gets the detached R es.
+ *
+ * @return the detached R es
+ * @throws Exception the exception
+ */
public DetachedREs getDetachedREs() throws Exception {
retrieveAuthInfo();
logger.debug("Use: [userName={}, scope={}, token={}]",userName,scope,token);
@@ -41,6 +56,13 @@ public class DetachedREsClient {
}
+ /**
+ * Gets the detached R es in scope.
+ *
+ * @param scope the scope
+ * @return the detached R es in scope
+ * @throws Exception the exception
+ */
public DetachedREs getDetachedREsInScope(String scope) throws Exception {
retrieveAuthInfo();
this.scope=scope;
@@ -49,6 +71,11 @@ public class DetachedREsClient {
}
+ /**
+ * Retrieve auth info.
+ *
+ * @throws Exception the exception
+ */
private void retrieveAuthInfo() throws Exception {
if (Constants.DEBUG_MODE) {
logger.debug("Debug Mode");
@@ -77,5 +104,39 @@ public class DetachedREsClient {
}
+
+
+ /**
+ * Find detached VRE for VRE name.
+ *
+ * @param vreName the vre name
+ * @return the vre detached if it is found.
+ */
+ public VRE findDetachedVREforVREName(String vreName) {
+ logger.debug("Find the VRE name: "+vreName+" called");
+ try {
+
+ DetachedREs detachedREs = getDetachedREs();
+
+ for (Gateway gateway : detachedREs.getGateways().values()) {
+ for (VO vo : gateway.getVos().values()) {
+ for (VRE vre : vo.getVres().values()) {
+ logger.trace("Does the scope: "+vre.getScope() +" ends with "+vreName +"?");
+ if(vre.getScope().toLowerCase().endsWith(vreName)){
+ logger.info("The scope: "+vre.getScope() +" ends with: "+vreName);
+ return vre;
+ }
+ }
+ }
+ }
+
+ logger.info("The VRE name "+vreName+" was not found in the detached VREs");
+ return null;
+
+ } catch (Exception e) {
+ logger.error(e.getLocalizedMessage(), e);
+ return null;
+ }
+ }
}
diff --git a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/DetachedREsBuilder.java b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/DetachedREsBuilder.java
index e497206..506336c 100644
--- a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/DetachedREsBuilder.java
+++ b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/DetachedREsBuilder.java
@@ -192,6 +192,7 @@ public class DetachedREsBuilder {
}
}
vre.setCatalogUrl(vreJAXB.getCatalogUrl());
+ vre.setCatalogPortletURL(vreJAXB.getCatalogPortletURL());
vre.setManagers(vreJAXB.getManagers());
vres.put(key,vre);
}
diff --git a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/obj/VREJAXB.java b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/obj/VREJAXB.java
index d275223..94aeef7 100644
--- a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/obj/VREJAXB.java
+++ b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/server/is/obj/VREJAXB.java
@@ -13,8 +13,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
*
* @author Giancarlo Panichi
- *
- *
+ *
+ * @author updated by Francesco Mangiacrapa at ISTI-CNR
*/
@XmlRootElement(name = "vre")
@XmlAccessorType(XmlAccessType.FIELD)
@@ -43,6 +43,9 @@ public class VREJAXB {
@XmlElement(name = "catalogurl", required = false)
private String catalogUrl;
+ @XmlElement(name = "catalogportleturl", required = false)
+ private String catalogPortletURL;
+
public String getScope() {
return scope;
}
@@ -99,10 +102,19 @@ public class VREJAXB {
this.catalogUrl = catalogUrl;
}
+ public String getCatalogPortletURL() {
+ return catalogPortletURL;
+ }
+
+ public void setCatalogPortletURL(String catalogPortletURL) {
+ this.catalogPortletURL = catalogPortletURL;
+ }
+
@Override
public String toString() {
return "VREJAXB [scope=" + scope + ", name=" + name + ", description=" + description + ", managers=" + managers
- + ", startDate=" + startDate + ", endDate=" + endDate + ", catalogUrl=" + catalogUrl + "]";
+ + ", startDate=" + startDate + ", endDate=" + endDate + ", catalogUrl=" + catalogUrl
+ + ", catalogPortletURL=" + catalogPortletURL + "]";
}
}
diff --git a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/shared/re/VRE.java b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/shared/re/VRE.java
index dd61c6f..629d6df 100644
--- a/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/shared/re/VRE.java
+++ b/src/main/java/org/gcube/infrastructure/detachedres/detachedreslibrary/shared/re/VRE.java
@@ -18,6 +18,7 @@ public class VRE implements Serializable, Comparable {
private String startDate;
private String endDate;
private String catalogUrl;
+ private String catalogPortletURL;
public VRE() {
super();
@@ -92,6 +93,16 @@ public class VRE implements Serializable, Comparable {
this.catalogUrl = catalogUrl;
}
+
+
+ public String getCatalogPortletURL() {
+ return catalogPortletURL;
+ }
+
+ public void setCatalogPortletURL(String catalogPortletURL) {
+ this.catalogPortletURL = catalogPortletURL;
+ }
+
@Override
public int compareTo(VRE vre) {
if (name == null) {
@@ -108,7 +119,10 @@ public class VRE implements Serializable, Comparable {
@Override
public String toString() {
return "VRE [scope=" + scope + ", name=" + name + ", description=" + description + ", managers=" + managers
- + ", startDate=" + startDate + ", endDate=" + endDate + ", catalogUrl=" + catalogUrl + "]";
+ + ", startDate=" + startDate + ", endDate=" + endDate + ", catalogUrl=" + catalogUrl
+ + ", catalogPortletURL=" + catalogPortletURL + "]";
}
+
+
}
\ No newline at end of file
diff --git a/src/test/java/org/gcube/infrastructure/detachedres/detachedreslibrary/DetachedREsTest.java b/src/test/java/org/gcube/infrastructure/detachedres/detachedreslibrary/DetachedREsTest.java
index 2ed8fc1..31e2d24 100644
--- a/src/test/java/org/gcube/infrastructure/detachedres/detachedreslibrary/DetachedREsTest.java
+++ b/src/test/java/org/gcube/infrastructure/detachedres/detachedreslibrary/DetachedREsTest.java
@@ -16,6 +16,8 @@ import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.infrastructure.detachedres.detachedreslibrary.server.DetachedREsClient;
import org.gcube.infrastructure.detachedres.detachedreslibrary.server.is.obj.DetachedREsJAXB;
import org.gcube.infrastructure.detachedres.detachedreslibrary.server.is.obj.GatewayJAXB;
@@ -23,6 +25,9 @@ import org.gcube.infrastructure.detachedres.detachedreslibrary.server.is.obj.VOJ
import org.gcube.infrastructure.detachedres.detachedreslibrary.server.is.obj.VREJAXB;
import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.Constants;
import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.DetachedREs;
+import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.Gateway;
+import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.VO;
+import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.VRE;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,9 +50,57 @@ public class DetachedREsTest extends TestCase {
logger.debug("Test Enabled");
try {
+ ScopeProvider.instance.set(Constants.DEFAULT_SCOPE);
+ SecurityTokenProvider.instance.set(Constants.DEFAULT_TOKEN);
DetachedREsClient detachedREsClient = new DetachedREsClient();
DetachedREs detachedREs = detachedREsClient.getDetachedREs();
- logger.debug("DetachedREs: " + detachedREs);
+
+ int totalVREDimissed = 0;
+ for (Gateway gateway : detachedREs.getGateways().values()) {
+ logger.debug("\n\n");
+ logger.debug("Gateway: " + gateway.getName());
+ int vreDismissedPerGatew = 0;
+ for (VO vo : gateway.getVos().values()) {
+ logger.debug("VO: " + vo.getName());
+ for (VRE vre : vo.getVres().values()) {
+ logger.debug("VRE name: " + vre.getName() +
+ " scope: "+vre.getScope() +
+ " VRE catalogue url: " + vre.getCatalogUrl() +
+ " VRE catalog Portlet URL: "+vre.getCatalogPortletURL());
+ vreDismissedPerGatew++;
+ }
+ }
+ logger.debug("\n\t\t\t******** VREs dismissed per " + gateway.getName() + " are: "+vreDismissedPerGatew);
+ totalVREDimissed+=vreDismissedPerGatew;
+ }
+
+ logger.debug("\n\nTotal VREs dismissed: " + totalVREDimissed);
+
+ assertTrue(true);
+
+ } catch (Exception e) {
+ logger.error(e.getLocalizedMessage(), e);
+ assertTrue("Error searching the resource!", false);
+ }
+
+ } else {
+ logger.debug("Test Disabled");
+ assertTrue(true);
+ }
+ }
+
+ @Test
+ public void testFindDetachedVREForVREName() {
+ if (Constants.TEST_ENABLE) {
+ logger.debug("Test Enabled");
+
+ try {
+ String vreName = "bluebridgeproject";
+ ScopeProvider.instance.set(Constants.DEFAULT_SCOPE);
+ SecurityTokenProvider.instance.set(Constants.DEFAULT_TOKEN);
+ DetachedREsClient detachedREsClient = new DetachedREsClient();
+ VRE vre = detachedREsClient.findDetachedVREforVREName(vreName);
+ logger.debug("The detached VRE for name: " + vreName + " found as: "+vre);
assertTrue(true);
} catch (Exception e) {
@@ -225,7 +278,7 @@ public class DetachedREsTest extends TestCase {
file.delete();
logger.info("Success!");
assertTrue(true);
-
+
} catch (Throwable e) {
logger.error(e.getLocalizedMessage(), e);
assertTrue("Error in DetachedREs Marshal!", false);
@@ -382,7 +435,16 @@ public class DetachedREsTest extends TestCase {
gCubeAppsVREJAXB.setName(new String(vre).replace("_", " "));
gCubeAppsVREJAXB.setStartDate(new GregorianCalendar(2018, GregorianCalendar.JANUARY, 1).getTime());
gCubeAppsVREJAXB.setEndDate(new GregorianCalendar(2020, GregorianCalendar.MARCH, 3).getTime());
- gCubeAppsVREJAXB.setCatalogUrl("http://data.d4science.org/ctlg/" + vre);
+
+ // UPDATED BY FRANCESCO
+ if (vre.compareToIgnoreCase("BlueBridgeProject") == 0 || vre.compareToIgnoreCase("SIASPA") == 0) {
+ gCubeAppsVREJAXB.setCatalogUrl("https://ckan-imarine.d4science.org");
+ gCubeAppsVREJAXB.setCatalogPortletURL("https://i-marine.d4science.org/group/imarine-gateway/data-catalogue");
+ } else {
+ //not usable
+ gCubeAppsVREJAXB.setCatalogUrl("http://data.d4science.org/ctlg/" + vre);
+ }
+
gCubeAppsVREJAXB.setManagers(new ArrayList(Arrays.asList("Leonardo Candela", "Pasquale Pagano")));
gCubeAppsVREsOfBlueBridgeGateway.put(
"/d4science.research-infrastructures.eu/" + VOProduction.GCUBEAPPS.getId() + "/" + vre,