CORD Subscriber GUI - XosFunction mementos now stored inside each SubscriberUser to capture the parameter state per user.
Change-Id: I678249f63a68172db66a5d3faa0b1747c670bf6e
diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java
index e47e68f..c71477f 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java
@@ -26,6 +26,9 @@
import org.onosproject.cord.gui.model.JsonFactory;
import org.onosproject.cord.gui.model.SubscriberUser;
import org.onosproject.cord.gui.model.UserFactory;
+import org.onosproject.cord.gui.model.XosFunction;
+import org.onosproject.cord.gui.model.XosFunctionDescriptor;
+import org.onosproject.cord.gui.model.XosFunctionFactory;
import java.util.ArrayList;
import java.util.List;
@@ -62,12 +65,21 @@
* Used to initialize users for the demo. These are currently fake.
*/
public void initUsers() {
- users.add(new SubscriberUser(1, "Mom's MacBook", MAC_1));
- users.add(new SubscriberUser(2, "Dad's iPad", MAC_2));
- users.add(new SubscriberUser(3, "Dick's laptop", MAC_3));
- users.add(new SubscriberUser(4, "Jane's laptop", MAC_4));
+ users.add(createUser(1, "Mom's MacBook", MAC_1));
+ users.add(createUser(2, "Dad's iPad", MAC_2));
+ users.add(createUser(3, "Dick's laptop", MAC_3));
+ users.add(createUser(4, "Jane's laptop", MAC_4));
}
+ private SubscriberUser createUser(int uid, String name, String mac) {
+ SubscriberUser user = new SubscriberUser(uid, name, mac);
+ for (XosFunction f: currentBundle.functions()) {
+ user.setMemento(f.descriptor(), f.createMemento());
+ }
+ return user;
+ }
+
+
/**
* Returns the currently selected bundle.
*
@@ -84,10 +96,20 @@
* @throws IllegalArgumentException if bundle ID is unknown
*/
public void setCurrentBundle(String bundleId) {
- BundleDescriptor bdesc = BundleFactory.bundleFromId(bundleId);
- currentBundle = new Bundle(bdesc);
+ BundleDescriptor bd = BundleFactory.bundleFromId(bundleId);
+ currentBundle = new Bundle(bd);
+ // update the user mementos
+ for (SubscriberUser user: users) {
+ user.clearMementos();
+ for (XosFunction f: currentBundle.functions()) {
+ user.setMemento(f.descriptor(), f.createMemento());
+ }
+ }
+
+ // TODO: tell XOS which functions are enabled / disabled
}
+
/**
* Returns the list of current users for this subscriber account.
*
@@ -97,6 +119,25 @@
return ImmutableList.copyOf(users);
}
+ /**
+ * Applies a function parameter change for a user.
+ *
+ * @param userId user identifier
+ * @param funcId function identifier
+ * @param param function parameter to change
+ * @param value new value for function parameter
+ */
+ public void applyPerUserParam(String userId, String funcId,
+ String param, String value) {
+ // FIXME: this is not right yet...
+ int uid = Integer.parseInt(userId);
+ XosFunctionDescriptor xfd =
+ XosFunctionDescriptor.valueOf(funcId.toUpperCase());
+ XosFunctionFactory.apply(xfd, uid, param, value);
+ }
+
+ // =============
+
private ArrayNode userJsonArray() {
ArrayNode userList = arrayNode();
for (SubscriberUser user: users) {