All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.onosproject.ui.topo.NodeBadge Maven / Gradle / Ivy

There is a newer version: 2.7.0
Show newest version
/*
 *  Copyright 2015-present Open Networking Foundation
 *
 *  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 badge status. */
    public enum Status {
        INFO("i"),
        WARN("w"),
        ERROR("e");

        private String code;

        Status(String code) {
            this.code = code;
        }

        @Override
        public String toString() {
            return "{" + code + "}";
        }

        /* Returns the status code in string form. */
        public String code() {
            return code;
        }
    }

    private final Status status;
    private final boolean isGlyph;
    private final String text;
    private final String message;

    // only instantiated through static methods.
    private NodeBadge(Status status, boolean isGlyph, String text, String message) {
        this.status = status == null ? Status.INFO : status;
        this.isGlyph = isGlyph;
        this.text = text;
        this.message = message;
    }

    @Override
    public String toString() {
        return "{Badge " + status +
                " (" + text + ")" +
                (isGlyph ? "*G " : " ") +
                "\"" + message + "\"}";
    }

    /**
     * Returns the badge status.
     *
     * @return badge status
     */
    public Status status() {
        return status;
    }

    /**
     * Returns true if the text for this badge designates a glyph ID.
     *
     * @return true if badge uses glyph
     */
    public boolean isGlyph() {
        return isGlyph;
    }

    /**
     * Returns the text for the badge.
     * Note that if {@link #isGlyph} is true, the text is a glyph ID, otherwise
     * the text is displayed verbatim in the badge.
     *
     * @return text for badge
     */
    public String text() {
        return text;
    }

    /**
     * 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 arbitrary text badge, with default status.
     *
     * @param txt the text
     * @return node badge to display text
     */
    public static NodeBadge text(String txt) {
        // TODO: consider length constraint on txt (3 chars?)
        return new NodeBadge(Status.INFO, false, nonNull(txt), null);
    }

    /**
     * Returns a glyph badge, with default status.
     *
     * @param gid the glyph ID
     * @return node badge to display glyph
     */
    public static NodeBadge glyph(String gid) {
        return new NodeBadge(Status.INFO, true, nonNull(gid), null);
    }

    /**
     * Returns a numeric badge, with default status.
     *
     * @param n the number
     * @return node badge to display a number
     */
    public static NodeBadge number(int n) {
        // TODO: consider constraints, e.g. 1 <= n <= 999
        return new NodeBadge(Status.INFO, false, Integer.toString(n), null);
    }

    /**
     * Returns an arbitrary text badge, with the given status.
     *
     * @param s the status
     * @param txt the text
     * @return node badge to display text
     */
    public static NodeBadge text(Status s, String txt) {
        // TODO: consider length constraint on txt (3 chars?)
        return new NodeBadge(s, false, nonNull(txt), null);
    }

    /**
     * Returns a glyph badge, with the given status.
     *
     * @param s the status
     * @param gid the glyph ID
     * @return node badge to display glyph
     */
    public static NodeBadge glyph(Status s, String gid) {
        return new NodeBadge(s, true, nonNull(gid), null);
    }


    /**
     * Returns a numeric badge, with the given status and optional message.
     *
     * @param s the status
     * @param n the number
     * @return node badge to display a number
     */
    public static NodeBadge number(Status s, int n) {
        // TODO: consider constraints, e.g. 1 <= n <= 999
        return new NodeBadge(s, false, Integer.toString(n), null);
    }

    /**
     * Returns an arbitrary text badge, with the given status and optional
     * message.
     *
     * @param s the status
     * @param txt the text
     * @param msg the optional message
     * @return node badge to display text
     */
    public static NodeBadge text(Status s, String txt, String msg) {
        // TODO: consider length constraint on txt (3 chars?)
        return new NodeBadge(s, false, nonNull(txt), msg);
    }

    /**
     * Returns a glyph badge, with the given status and optional message.
     *
     * @param s the status
     * @param gid the glyph ID
     * @param msg the optional message
     * @return node badge to display glyph
     */
    public static NodeBadge glyph(Status s, String gid, String msg) {
        return new NodeBadge(s, true, nonNull(gid), msg);
    }


    /**
     * Returns a numeric badge, with the given status and optional message.
     *
     * @param s the status
     * @param n the number
     * @param msg the optional message
     * @return node badge to display a number
     */
    public static NodeBadge number(Status s, int n, String msg) {
        // TODO: consider constraints, e.g. 1 <= n <= 999
        return new NodeBadge(s, false, Integer.toString(n), msg);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy