diff --git a/pom.xml b/pom.xml
index 87e6f09..5992b82 100755
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
-
+
org.gcube.tools
maven-parent
1.1.0
@@ -27,6 +27,11 @@
+
+ org.gcube.core
+ common-scope-maps
+
+
com.sun.xml.bind
jaxb-impl
diff --git a/src/main/java/org/gcube/vremanagement/App.java b/src/main/java/org/gcube/vremanagement/App.java
index 9f093d8..7ef91c4 100755
--- a/src/main/java/org/gcube/vremanagement/App.java
+++ b/src/main/java/org/gcube/vremanagement/App.java
@@ -1,15 +1,55 @@
package org.gcube.vremanagement;
-public class App{
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class App {
- public static void main (String[] args)
- {
+ public static void main(String[] args) {
// Create here the CSV and XML managers object to parse and sync the XML with the CSV file
- CsvManager csvManager = new CsvManager("/home/biniam/eclipse-workspace/vre-removed-publisher/src/main/resources/updated_VREDecommisioned-240326.csv");
- XmlManager xmlManager = new XmlManager("/home/biniam/eclipse-workspace/vre-removed-publisher/src/main/resources/doc.xml");
+ //CsvManager csvManager = new CsvManager("/home/biniam/eclipse-workspace/vre-removed-publisher/src/main/resources/updated_VREDecommisioned-240326.csv");
+ String filePath = "src/main/resources";
+ String filename = "doc.xml";
+ XmlManager xmlManager = new XmlManager(filePath+File.separator+filename);
// Parse CSV and XML files
- csvManager.parse();
+ //csvManager.parse();
xmlManager.parse();
+
+ // Parse XML to HashMap
+ // HashMap> gatewayMap = xmlManager.parseToHashMap();
+
+ /*for (String gatewayName: gatewayMap.keySet())
+ {
+ ArrayList listGateway = gatewayMap.get(gatewayName);
+ for (Gateway gate : listGateway)
+ {
+ System.out.println("Gateway name: "+gate.getName());
+ System.out.println("Gateway description: "+gate.getDescription());
+ ArrayList vosList = gate.getVosList();
+ for (Vos voTemp: vosList)
+ {
+ ArrayList vreList = voTemp.getVresList();
+ System.out.println("VO name:" +voTemp.getName());
+ System.out.println("VO description: "+voTemp.getDescription());
+ for(Vres vreTemp:vreList)
+ {
+ System.out.println("VRE name: "+vreTemp.getName());
+ System.out.println("Vre description: "+vreTemp.getDescription());
+ }
+ }
+
+
+ }
+
+
+ }*/
+ // methods to query and print information
+ //xmlManager.getGatewaysInfo();
+ xmlManager.getVosInfo("D4Science.org Detached Gateway");
+ //xmlManager.findVo("D4Science.org Detached Gateway", "gCubeApps");
+ xmlManager.findVre("D4Science.org Detached Gateway", "D4OS", "CNROutreach");
+
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/vremanagement/CsvManager.java b/src/main/java/org/gcube/vremanagement/CsvManager.java
index cd25453..4f8ef45 100755
--- a/src/main/java/org/gcube/vremanagement/CsvManager.java
+++ b/src/main/java/org/gcube/vremanagement/CsvManager.java
@@ -6,6 +6,11 @@ import java.io.IOException;
import java.util.ArrayList;
+
+
+import com.opencsv.CSVParser;
+
+
public class CsvManager implements VreRemPubInterface {
private String filePath;
private ArrayList dataList;
diff --git a/src/main/java/org/gcube/vremanagement/Gateway.java b/src/main/java/org/gcube/vremanagement/Gateway.java
new file mode 100755
index 0000000..f23caf4
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/Gateway.java
@@ -0,0 +1,39 @@
+package org.gcube.vremanagement;
+
+import java.util.ArrayList;
+
+public class Gateway {
+ private String name;
+ private String description;
+ private ArrayListlistOfVos;
+ public Gateway(String name, String description) {
+ this.name = name;
+ this.description = description;
+ this.listOfVos= new ArrayList();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ // Method to print gateway information
+ public void printInfo() {
+ System.out.println("Gateway Name: " + name);
+ System.out.println("Gateway Description: " + description);
+ }
+
+ public ArrayList getVosList() {
+ // TODO Auto-generated method stub
+ return listOfVos;
+ }
+
+ // In the Gateway class
+ public void addVos(Vos vos) {
+ listOfVos.add(vos);
+ }
+
+}
diff --git a/src/main/java/org/gcube/vremanagement/Vos.java b/src/main/java/org/gcube/vremanagement/Vos.java
new file mode 100755
index 0000000..b7a15aa
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/Vos.java
@@ -0,0 +1,54 @@
+package org.gcube.vremanagement;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class Vos {
+ private String key;
+ private String name;
+ private String scope;
+ private ArrayListlistOfVres;
+ public Vos(String key,String scope,String name) {
+ this.key = key;
+ this.name = name;
+ this.scope = scope;
+ this.listOfVres=new ArrayList();
+
+ }
+
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ // Method to print VO information
+ public void printInfo() {
+ System.out.println("VO Key: " + key);
+ System.out.println("VO Name: " + name);
+ System.out.println("VO Scope: " + scope);
+ }
+
+ public ArrayList getVresList() {
+ // TODO Auto-generated method stub
+ return listOfVres;
+ }
+
+ public String getDescription() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void addVres(Vres vres) {
+ // TODO Auto-generated method stub
+ listOfVres.add(vres);
+ }
+
+}
diff --git a/src/main/java/org/gcube/vremanagement/Vres.java b/src/main/java/org/gcube/vremanagement/Vres.java
new file mode 100755
index 0000000..2c5696e
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/Vres.java
@@ -0,0 +1,67 @@
+package org.gcube.vremanagement;
+
+public class Vres {
+ private String key;
+ private String name;
+ private String description;
+ private String manager;
+ private String startDate;
+ private String endDate;
+
+ public Vres(String key, String name, String description, String manager, String startDate, String endDate) {
+ this.key = key;
+ this.name = name;
+ this.description = description;
+ this.manager = manager;
+ this.startDate = startDate;
+ this.endDate = endDate;
+ }
+
+ public Vres() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getManager() {
+ return manager;
+ }
+
+ public String getStartDate() {
+ return startDate;
+ }
+
+ public String getEndDate() {
+ return endDate;
+ }
+
+ // Method to print VRE information
+ public void printInfo() {
+ System.out.println("VRE Key: " + key);
+ System.out.println("VRE Name: " + name);
+ System.out.println("VRE Description: " + description);
+ System.out.println("VRE Manager: " + manager);
+ System.out.println("VRE Start Date: " + startDate);
+ System.out.println("VRE End Date: " + endDate);
+ }
+
+ public String getManagers() {
+ // TODO Auto-generated method stub
+ return manager;
+ }
+
+ public String getCatalogUrl() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/src/main/java/org/gcube/vremanagement/XmlManager.java b/src/main/java/org/gcube/vremanagement/XmlManager.java
index cea4eca..841efce 100755
--- a/src/main/java/org/gcube/vremanagement/XmlManager.java
+++ b/src/main/java/org/gcube/vremanagement/XmlManager.java
@@ -1,75 +1,264 @@
package org.gcube.vremanagement;
import java.io.File;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XmlManager implements VreRemPubInterface {
- private String filePath;
- private HashMap tagCountMap;
+ private String filePath;
+ private HashMap gatewaysMap;
- public XmlManager(String filePath) {
- this.filePath = filePath;
- System.out.println("XML manager created!");
- this.tagCountMap = new HashMap<>();
- }
+ public XmlManager(String filePath) {
+ this.filePath = filePath;
+ this.gatewaysMap = new HashMap<>();
+ }
- @Override
- public void parse() {
- try {
- File xmlFile = new File(filePath);
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(xmlFile);
- doc.getDocumentElement().normalize();
- NodeList nodeList = doc.getElementsByTagName("*"); // Get all elements
+ @Override
+ public void parse() {
+ try {
+ File xmlFile = new File(filePath);
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ Document doc = dBuilder.parse(xmlFile);
+ doc.getDocumentElement().normalize();
+ NodeList gatewayNodes = doc.getElementsByTagName("gateways");
+
+ NodeList gatewayList = gatewayNodes.item(0).getChildNodes();
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node node = nodeList.item(i);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- String tagName = node.getNodeName();
- // Update tag count in the HashMap
- tagCountMap.put(tagName, tagCountMap.getOrDefault(tagName, 0) + 1);
- }
- }
- System.out.println("XML file parsed successfully.");
- // Optionally, print the tag count map here
- System.out.println("Tag count map: " + tagCountMap);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
+ for (int i = 0; i < gatewayList.getLength(); i++) {
+ Node gatewayNode = gatewayList.item(i);
+ if (gatewayNode.getNodeType() == Node.ELEMENT_NODE) {
+ Element gatewayElement = (Element) gatewayNode;
+ String gatewayName = gatewayElement.getElementsByTagName("name").item(0).getTextContent().trim();
+ String gatewayDescription = gatewayElement.getElementsByTagName("description").item(0)
+ .getTextContent().trim();
- @Override
- public void update() {
- // Implement update logic if needed
- }
+ //System.out.println("gateway name:"+gatewayName);
+ //System.out.println("Gateway descr:"+gatewayDescription);
+ Gateway gateway = new Gateway(gatewayName, gatewayDescription);
- // Other methods...
+ // Find the element within the gateway entry
+ NodeList vosList = gatewayElement.getElementsByTagName("vos");
+ for (int j = 0; j < vosList.getLength(); j++) {
+ Node vosNode = vosList.item(j);
+ if (vosNode.getNodeType() == Node.ELEMENT_NODE) {
+ Element vosElement = (Element) vosNode;
+
+
+
+
+ String voKey = vosElement.getElementsByTagName("key").item(0).getTextContent().trim();
+ String voName = vosElement.getElementsByTagName("name").item(0).getTextContent().trim();
+ String voScope = vosElement.getElementsByTagName("scope").item(0).getTextContent().trim();
+
+ //getting vo
+ Vos vos = new Vos(voKey,voScope, voName);
+
+ //vos.printInfo();
+
+ // Iterate on the vres..
+ //NodeList vreList = vosElement.getElementsByTagName("vres");
+ //
+ //for (int k = 0; k < vreList.getLength(); k++) {
+ // Node voNode = voList.item(k);
+ // if (voNode.getNodeType() == Node.ELEMENT_NODE) {
+ // Element voElement = (Element) voNode;
+
+
+ // String voName = voElement.getElementsByTagName("name").item(0).getTextContent().trim();
+ // String voScope = voElement.getElementsByTagName("scope").item(0).getTextContent().trim();
+ // String voKey = voElement.getElementsByTagName("key").item(0).getTextContent().trim();
+ // Create a new Vos object and add it to the gateway's vosList
+ // Vos vos = new Vos(voKey, voScope, voName);
+
+ // Find the element within the VO entry
+ NodeList vresList = vosElement.getElementsByTagName("vres");
+ for (int l = 0; l < vresList.getLength(); l++) {
+ Node vresNode = vresList.item(l);
+ if (vresNode.getNodeType() == Node.ELEMENT_NODE) {
+ Element vresElement = (Element) vresNode;
+ // Iterate through elements representing VREs within
+ NodeList vreEntryList = vresElement.getElementsByTagName("entry");
+ for (int m = 0; m < vreEntryList.getLength(); m++) {
+ Node vreEntryNode = vreEntryList.item(m);
+ if (vreEntryNode.getNodeType() == Node.ELEMENT_NODE) {
+ Element vreEntryElement = (Element) vreEntryNode;
+ String vreKey = vreEntryElement.getElementsByTagName("key").item(0)
+ .getTextContent().trim();
+ String vreName = vreEntryElement.getElementsByTagName("name")
+ .item(0).getTextContent().trim();
+ String vreDescription = vreEntryElement
+ .getElementsByTagName("description").item(0)
+ .getTextContent().trim();
+ String vreManager = vreEntryElement.getElementsByTagName("managers")
+ .item(0).getTextContent().trim();
+ String vreStartDate = vreEntryElement
+ .getElementsByTagName("startdate").item(0).getTextContent().trim();
+ String vreEndDate = vreEntryElement.getElementsByTagName("enddate")
+ .item(0).getTextContent().trim();
+
+ // Create a new Vres object and add it to the Vos's vreList
+ Vres vres = new Vres(vreKey, vreName, vreDescription, vreManager,
+ vreStartDate, vreEndDate);
+ vos.addVres(vres);
+
+ //vres.printInfo();
+ }
+ }
+ }
+ }
+
+ // Add the Vos object to the gateway's vosList
+ gateway.addVos(vos);
+ //}
+ //}
+ }
+ }
+
+ // Store the gateway object in the gateways map
+
+ gatewaysMap.put(gatewayName, gateway);
+ //computeIfAbsent(gatewayName, k -> new ArrayList<>()).add(gateway);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public void getGatewaysInfo() {
+ System.out.println("Name of the Gateway:");
+ gatewaysMap.keySet().stream().filter(gatewayName -> gatewayName.endsWith("Gateway"))
+ .forEach(System.out::println);
+ }
+ // Other methods...
+
+ @Override
+ public void update() {
+ // Implement update logic if needed
+ }
@Override
public void find() {
- // TODO Auto-generated method stub
-
+ // Implement find logic if needed
}
@Override
public void read() {
- // TODO Auto-generated method stub
-
+ // Implement read logic if needed
}
@Override
public void write() {
- // TODO Auto-generated method stub
-
+ // Implement write logic if needed
}
- // Other methods...
+ //public HashMap> parseToHashMap() {
+// return gatewaysMap;
+// }
+
+
+ public void getVosInfo(String _gateway) {
+ System.out.println("VOs Information for Gateway: " + _gateway);
+
+ if (gatewaysMap.containsKey(_gateway)) {
+ Gateway gatewayItem = gatewaysMap.get(_gateway);
+ //Gateway gateway = gatewayList.get(0); // Get the first gateway with the specified name
+ ArrayList vosList = gatewayItem.getVosList();
+ if (vosList != null) {
+ for (Vos vos : vosList) {
+ vos.printInfo();
+ //System.out.println("Name of VREs: ");
+ //ArrayList vresList = vos.getVresList();
+ //if (vresList != null && !vresList.isEmpty()) {
+ // for (Vres vre : vresList) {
+ // vre.printInfo();
+ // }
+ //} else {
+ // System.out.println("No VREs found for this VOS.");
+ // }
+ // System.out.println("----------------------------------------");
+ }
+ } else {
+ //System.out.println("No VOS found for this gateway.");
+ }
+ } else {
+ System.out.println("No gateways found with the name: " + _gateway);
+ }
+ }
+
+ // Method to find a VO within a gateway
+ public void findVo(String _gateway, String _vo) {
+
+ if (gatewaysMap.containsKey(_gateway))
+ {
+ Gateway gatewayItem = gatewaysMap.get(_gateway);
+ boolean found = false;
+ ArrayList vosList = gatewayItem.getVosList();
+ if (vosList != null) {
+ for (Vos vos : vosList) {
+ if (vos.getName().equals(_vo)) {
+ found = true;
+ System.out.println("VO info for " + _vo + " in " + _gateway + ":");
+ System.out.println("Name of VOS: " + vos.getName());
+ }
+ }
+
+ }
+ if (!found) {
+ System.out.println("VO " + _vo + " not found in the gateway " + _gateway + ".");
+ }
+ } else {
+ System.out.println("Gateway " + _gateway + " not found.");
+ }
+ }
+
+ public void findVre(String _gateway, String _vo, String _vre) {
+ //System.out.println("VRE Information for VO: " + _vo + " in Gateway:\n " + _gateway);
+ boolean vreFound = false; // Flag to track if VRE exists
+ //ArrayList gatewayList = gatewaysMap.get(_gateway);
+
+ if (gatewaysMap.containsKey(_gateway)) {
+
+ Gateway gatewayItem = gatewaysMap.get(_gateway);
+ ArrayList vosList = gatewayItem.getVosList();
+ if (vosList != null) {
+ for (Vos vos : vosList) {
+ if (vos.getName().equals(_vo)) {
+ ArrayList vresList = vos.getVresList();
+ if (vresList != null) {
+ for (Vres vre : vresList) {
+ if (vre.getName().equals(_vre)) {
+ // Print VRE information
+ vre.printInfo();
+ vreFound = true; // Set flag to true
+ // return; // Exit method after printing information
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ // If execution reaches here and VRE not found, print message
+ if (!vreFound) {
+ System.out.println("VRE does not exist in the " + _vo + " of the " + _gateway);
+ }
+ }
+
+
+// Other methods...
}