CORD Subscriber GUI - Plumbed through the parameter change per function per user.
Change-Id: I9b8eb677f606fd75f70366cec7f5b4993d188ab1
diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/Bundle.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/Bundle.java
index 199c8d3..622d0e3 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/Bundle.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/Bundle.java
@@ -19,7 +19,8 @@
import com.google.common.collect.ImmutableSet;
-import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
/**
@@ -27,7 +28,8 @@
*/
public class Bundle {
private final BundleDescriptor bundleDescriptor;
- private final Set<XosFunction> functions;
+ private final Map<XosFunctionDescriptor, XosFunction> functionMap =
+ new HashMap<XosFunctionDescriptor, XosFunction>();
/**
* Constructs a new bundle instance.
@@ -36,7 +38,7 @@
*/
public Bundle(BundleDescriptor bundleDescriptor) {
this.bundleDescriptor = bundleDescriptor;
- this.functions = initFunctions();
+ initFunctions();
}
/**
@@ -54,20 +56,16 @@
* @return the functions
*/
public Set<XosFunction> functions() {
- return ImmutableSet.copyOf(functions);
+ return ImmutableSet.copyOf(functionMap.values());
}
/**
* Creates an initial set of function instances.
- *
- * @return initial function instances
*/
- private Set<XosFunction> initFunctions() {
- Set<XosFunction> funcs = new HashSet<XosFunction>();
+ private void initFunctions() {
for (XosFunctionDescriptor xfd: bundleDescriptor.functions()) {
- funcs.add(createFunction(xfd));
+ functionMap.put(xfd, createFunction(xfd));
}
- return funcs;
}
private XosFunction createFunction(XosFunctionDescriptor xfd) {
@@ -83,4 +81,15 @@
}
return func;
}
+
+ /**
+ * Returns the function instance for the specified descriptor, or returns
+ * null if function is not part of this bundle.
+ *
+ * @param xfd function descrriptor
+ * @return function instance
+ */
+ public XosFunction findFunction(XosFunctionDescriptor xfd) {
+ return functionMap.get(xfd);
+ }
}
diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/UrlFilterFunction.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/UrlFilterFunction.java
index a4787a1..d1f8483 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/UrlFilterFunction.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/UrlFilterFunction.java
@@ -19,6 +19,8 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
+import static com.google.common.base.Preconditions.checkNotNull;
+
/**
* Specialization of XosFunction for URL filtering.
*/
@@ -41,6 +43,18 @@
}
@Override
+ public void applyParam(SubscriberUser user, String param, String value) {
+ Memento memo = user.getMemento(descriptor());
+ checkNotNull(memo, "missing memento for " + descriptor());
+ UrlFilterMemento ufMemo = (UrlFilterMemento) memo;
+
+ if (LEVEL.equals(param)) {
+ Level newLevel = Level.valueOf(value.toUpperCase());
+ ufMemo.setLevel(newLevel);
+ }
+ }
+
+ @Override
public Memento createMemento() {
return new UrlFilterMemento();
}
diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/XosFunctionFactory.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/XosFunctionFactory.java
index 93ed831..991b72b 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/XosFunctionFactory.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/XosFunctionFactory.java
@@ -58,20 +58,6 @@
}
/**
- * Applies a parameter change for the given function, in the context of
- * the specified user.
- *
- * @param xfd function context
- * @param userId user identifier
- * @param param parameter name
- * @param value value to apply
- */
- public static void apply(XosFunctionDescriptor xfd, int userId,
- String param, String value) {
- // TODO:
- }
-
- /**
* Creates an object node representation of the profile for the
* specified user.
*