GUI Topo -- added NodeBadge model object.

Change-Id: Ic6c04429f81162f6e4c15836b342d21864e2387d
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java b/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java
new file mode 100644
index 0000000..d19b9be
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java
@@ -0,0 +1,149 @@
+/*
+ *  Copyright 2015 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.topo;
+
+/**
+ * Designates a badge to be applied to a node in the topology view.
+ */
+public final class NodeBadge {
+
+    private static final String EMPTY = "";
+
+    /** Designates the type of badge. */
+    public enum Type {
+        INFO("i"),
+        WARN("w"),
+        ERROR("e"),
+        CHECK_MARK("/"),
+        X_MARK("X"),
+        NUMBER("n");
+
+        private String code;
+
+        Type(String code) {
+            this.code = code;
+        }
+
+        @Override
+        public String toString() {
+            return "{" + code + "}";
+        }
+
+        /** Returns the type's code in string form. */
+        public String code() {
+            return code;
+        }
+    }
+
+    private final Type type;
+    private final String message;
+
+    // only instantiated through static methods.
+    private NodeBadge(Type type, String message) {
+        this.type = type;
+        this.message = message;
+    }
+
+    @Override
+    public String toString() {
+        return "{Badge " + type + " \"" + message + "\"}";
+    }
+
+    /**
+     * Returns the badge type.
+     *
+     * @return badge type
+     */
+    public Type type() {
+        return type;
+    }
+
+    /**
+     * Returns the message associated with the badge.
+     *
+     * @return associated message
+     */
+    public String message() {
+        return message;
+    }
+
+    private static String nonNull(String s) {
+        return s == null ? EMPTY : s;
+    }
+
+    /**
+     * Returns an informational badge, with associated message.
+     *
+     * @param message the message
+     * @return INFO type node badge
+     */
+    public static NodeBadge info(String message) {
+        return new NodeBadge(Type.INFO, nonNull(message));
+    }
+
+    /**
+     * Returns a warning badge, with associated message.
+     *
+     * @param message the message
+     * @return WARN type node badge
+     */
+    public static NodeBadge warn(String message) {
+        return new NodeBadge(Type.WARN, nonNull(message));
+    }
+
+    /**
+     * Returns an error badge, with associated message.
+     *
+     * @param message the message
+     * @return ERROR type node badge
+     */
+    public static NodeBadge error(String message) {
+        return new NodeBadge(Type.ERROR, nonNull(message));
+    }
+
+    /**
+     * Returns a check-mark badge, with associated message.
+     *
+     * @param message the message
+     * @return CHECK_MARK type node badge
+     */
+    public static NodeBadge checkMark(String message) {
+        return new NodeBadge(Type.CHECK_MARK, nonNull(message));
+    }
+
+    /**
+     * Returns an X-mark badge, with associated message.
+     *
+     * @param message the message
+     * @return X_MARK type node badge
+     */
+    public static NodeBadge xMark(String message) {
+        return new NodeBadge(Type.X_MARK, nonNull(message));
+    }
+
+    /**
+     * Returns a numeric badge.
+     *
+     * @param n the number
+     * @return NUMBER type node badge
+     */
+    public static NodeBadge number(int n) {
+        // TODO: consider constraints, e.g. 1 <= n <= 99
+        return new NodeBadge(Type.NUMBER, Integer.toString(n));
+    }
+
+}