Implementing the UiLayoutManager.
Change-Id: I0a3424f7e3b13a3c18e668a5eed5151755bce4f9
diff --git a/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java b/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java
index 0aa7db0..989c807 100644
--- a/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java
+++ b/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java
@@ -16,8 +16,9 @@
package org.onosproject.ui;
import org.onosproject.ui.model.topo.UiTopoLayout;
+import org.onosproject.ui.model.topo.UiTopoLayoutId;
-import java.util.List;
+import java.util.Set;
/**
* Service for managing {@link UiTopoLayout} instances.
@@ -25,20 +26,28 @@
public interface UiTopoLayoutService {
/**
- * Returns the list of available layouts.
+ * Returns the set of available layouts.
*
- * @return available layouts
+ * @return set of available layouts
*/
- List<UiTopoLayout> getLayouts();
+ Set<UiTopoLayout> getLayouts();
/**
- * Adds a layout to the system.
+ * Adds a layout to the system or updates an existing one.
*
- * @param layout the layout to add
+ * @param layout the layout to add or update
* @return an indication of success
*/
boolean addLayout(UiTopoLayout layout);
+
+ /**
+ * Returns the layout with the specified identifier.
+ * @param layoutId layout identifier
+ * @return layout or null if no such layout is found
+ */
+ UiTopoLayout getLayout(UiTopoLayoutId layoutId);
+
/**
* Removes a layout from the system.
*
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopoLayout.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopoLayout.java
index 105b0da..289bb8f 100644
--- a/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopoLayout.java
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopoLayout.java
@@ -24,6 +24,37 @@
*/
public class UiTopoLayout {
- private Region backingRegion;
+ private final UiTopoLayoutId id;
+ private final Region region;
+ /**
+ * Created a new UI topology layout.
+ *
+ * @param id layout identifier
+ * @param region backing region
+ */
+ public UiTopoLayout(UiTopoLayoutId id, Region region) {
+ this.id = id;
+ this.region = region;
+ }
+
+ /**
+ * Returns the UI layout identifier.
+ *
+ * @return identifier of the layout
+ */
+ public UiTopoLayoutId id() {
+ return id;
+ }
+
+ /**
+ * Returns the backing region with which this layout is associated.
+ *
+ * @return backing region
+ */
+ public Region region() {
+ return region;
+ }
+
+ // TODO: additional properties pertinent to the layout
}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopoLayoutId.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopoLayoutId.java
new file mode 100644
index 0000000..2fa8717
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopoLayoutId.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.ui.model.topo;
+
+import org.onlab.util.Identifier;
+
+/**
+ * Identifier of a topology layout.
+ */
+public final class UiTopoLayoutId extends Identifier<String> {
+
+ // For serialization
+ private UiTopoLayoutId() {
+ }
+
+ private UiTopoLayoutId(String value) {
+ super(value);
+ }
+
+ /**
+ * Returns the layout identifier created from the specified value.
+ *
+ * @param value string value
+ * @return layout identifier
+ */
+ public static UiTopoLayoutId layoutId(String value) {
+ return new UiTopoLayoutId(value);
+ }
+}