diff --git a/.classpath b/.classpath
index 150c2ef..502bd4a 100644
--- a/.classpath
+++ b/.classpath
@@ -21,7 +21,7 @@
-
+
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/collectors/BackendConnector.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/collectors/BackendConnector.java
deleted file mode 100644
index 90344ce..0000000
--- a/src/main/java/org/gcube/vremanagement/contextmanager/model/collectors/BackendConnector.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.gcube.vremanagement.contextmanager.model.collectors;
-
-import java.util.List;
-
-import org.gcube.common.resources.gcore.Resource;
-
-public interface BackendConnector {
-
- Resource find(String resourceId);
-
- String createContext(String contextName, String parentContextId, List resourceIds);
-
- boolean removeContext(String contextId);
-
- boolean addResourceToContext(String contextId, Resource resource);
-
- boolean removeResourceFromContext(String contextId, Resource resource);
-
- boolean updateResource(Resource resource);
-
-}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/collectors/CollectorsBackend.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/collectors/CollectorsBackend.java
new file mode 100644
index 0000000..4dae61b
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/collectors/CollectorsBackend.java
@@ -0,0 +1,22 @@
+package org.gcube.vremanagement.contextmanager.model.collectors;
+
+import java.util.List;
+
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.vremanagement.contextmanager.model.types.Context;
+
+public interface CollectorsBackend {
+
+ Resource find(String resourceId);
+
+ void createContext(Context context, String parentContextId, List resourceIds);
+
+ boolean removeContext(Context context);
+
+ boolean addResourceToContext(Context context, Resource resource) throws Exception;
+
+ boolean removeResourceFromContext(Context context, Resource resource);
+
+ boolean updateResource(Resource resource);
+
+}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/ContextOperator.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/ContextOperator.java
index 3c208d1..711aa6a 100644
--- a/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/ContextOperator.java
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/ContextOperator.java
@@ -1,11 +1,15 @@
package org.gcube.vremanagement.contextmanager.model.operators.context;
-import org.gcube.vremanagement.contextmanager.model.operators.OperationParameters;
+import org.gcube.vremanagement.contextmanager.model.types.Context;
-public abstract interface ContextOperator {
+public interface ContextOperator {
- public void onCreateContext(String token, String context, OperationParameters parameters);
+ Context.Type getApplicationContextType();
- public void onDisposeContext(String token, String context, OperationParameters parameters);
+ String getOperationId();
+
+ String getName();
+
+ String getDescription();
}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/MandatoryContextOperator.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/MandatoryContextOperator.java
index cd4aff1..4224166 100644
--- a/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/MandatoryContextOperator.java
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/operators/context/MandatoryContextOperator.java
@@ -1,5 +1,12 @@
package org.gcube.vremanagement.contextmanager.model.operators.context;
+import org.gcube.vremanagement.contextmanager.model.report.OperationResult;
+import org.gcube.vremanagement.contextmanager.model.types.Context;
+
public interface MandatoryContextOperator extends ContextOperator {
+ OperationResult onCreate(Context context);
+
+ OperationResult onDispose(Context context);
+
}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/report/OperationResult.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/OperationResult.java
new file mode 100644
index 0000000..6010f24
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/OperationResult.java
@@ -0,0 +1,42 @@
+package org.gcube.vremanagement.contextmanager.model.report;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class OperationResult {
+
+ public static OperationResult failure(String... errors ){
+ return new OperationResult(Arrays.asList(errors));
+ }
+
+ public static OperationResult success(){
+ return new OperationResult();
+ }
+
+ public enum Status {
+ SUCCESS,
+ FAILURE
+ }
+
+ private Status status;
+ private List errors;
+
+ private OperationResult() {
+ this.status = Status.SUCCESS;
+ }
+
+ private OperationResult(List errors) {
+ super();
+ this.status = Status.FAILURE;
+ }
+
+
+ public boolean isSuccess() {
+ return status==Status.SUCCESS;
+ }
+
+ public List getErrors() {
+ return errors;
+ }
+
+}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/report/Report.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/Report.java
new file mode 100644
index 0000000..81d9f38
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/Report.java
@@ -0,0 +1,14 @@
+package org.gcube.vremanagement.contextmanager.model.report;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class Report {
+
+ String contextName;
+ String contextType;
+
+ private List entries = new LinkedList<>();
+
+
+}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportEntry.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportEntry.java
new file mode 100644
index 0000000..2832a10
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportEntry.java
@@ -0,0 +1,48 @@
+package org.gcube.vremanagement.contextmanager.model.report;
+
+import org.gcube.vremanagement.contextmanager.model.operators.OperationParameters;
+
+public class ReportEntry implements ReportOperation{
+
+ private String operationId;
+ private String name;
+ private String description;
+ private OperationParameters parameters;
+ private OperationResult result;
+
+ protected ReportEntry() {}
+
+ public ReportEntry(String operationId, String name, String description, OperationResult result) {
+ super();
+ this.operationId = operationId;
+ this.name = name;
+ this.description = description;
+ this.result = result;
+ }
+
+ public ReportEntry(String operationId, String name, String description, OperationResult result, OperationParameters parameters) {
+ this(operationId, name, description, result);
+ this.parameters = parameters;
+ }
+
+ public String getOperationId() {
+ return operationId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public OperationParameters getParameters() {
+ return parameters;
+ }
+
+ public OperationResult getResult() {
+ return result;
+ }
+
+}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportGroup.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportGroup.java
new file mode 100644
index 0000000..b4e5c23
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportGroup.java
@@ -0,0 +1,31 @@
+package org.gcube.vremanagement.contextmanager.model.report;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class ReportGroup implements ReportOperation{
+
+ private String name;
+ private String description;
+
+ protected ReportGroup() {}
+
+ private List entries = new LinkedList<>();
+
+ public ReportGroup(String name, String description) {
+ this.name = name;
+ this.description = description;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void addEntry(ReportEntry entry) {
+ entries.add(entry);
+ }
+}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportOperation.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportOperation.java
new file mode 100644
index 0000000..ce40cbd
--- /dev/null
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/report/ReportOperation.java
@@ -0,0 +1,5 @@
+package org.gcube.vremanagement.contextmanager.model.report;
+
+public interface ReportOperation {
+
+}
diff --git a/src/main/java/org/gcube/vremanagement/contextmanager/model/types/Context.java b/src/main/java/org/gcube/vremanagement/contextmanager/model/types/Context.java
index 506583d..aac91b9 100644
--- a/src/main/java/org/gcube/vremanagement/contextmanager/model/types/Context.java
+++ b/src/main/java/org/gcube/vremanagement/contextmanager/model/types/Context.java
@@ -4,6 +4,7 @@ public class Context {
private String id;
private String name;
+ private Context parent;
public enum Type {
INFRASTRUCTURE(null),
@@ -23,11 +24,12 @@ public class Context {
private Type type;
- public Context(String id, String name, Type type) {
+ public Context(Context parent, String id, String name, Type type) {
super();
this.id = id;
this.name = name;
this.type = type;
+ this.parent = parent;
}
public String getId() {
@@ -41,6 +43,10 @@ public class Context {
public Type getType() {
return type;
}
+
+ public Context getParent() {
+ return parent;
+ }
@Override
public String toString() {