DeviceTableRow.java 2.56 KB
/*
 * 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.gui;

import org.onosproject.net.Device;
import org.onosproject.net.device.DeviceService;

/**
 * TableRow implementation for {@link Device devices}.
 */
public class DeviceTableRow extends AbstractTableRow {

    private static final String ID = "id";
    private static final String AVAILABLE = "available";
    private static final String AVAILABLE_IID = "_iconid_available";
    private static final String TYPE_IID = "_iconid_type";
    private static final String DEV_ICON_PREFIX = "devIcon_";
    private static final String ROLE = "role";
    private static final String MFR = "mfr";
    private static final String HW = "hw";
    private static final String SW = "sw";
    private static final String SERIAL = "serial";
    private static final String PROTOCOL = "protocol";
    private static final String CHASSISID = "chassisid";

    private static final String[] COL_IDS = {
            ID, AVAILABLE, AVAILABLE_IID, TYPE_IID, ROLE,
            MFR, HW, SW, SERIAL, PROTOCOL, CHASSISID
    };

    private static final String ICON_ID_ONLINE = "deviceOnline";
    private static final String ICON_ID_OFFLINE = "deviceOffline";

    public DeviceTableRow(DeviceService service, Device d) {
        boolean available = service.isAvailable(d.id());
        String iconId = available ? ICON_ID_ONLINE : ICON_ID_OFFLINE;

        add(ID, d.id().toString());
        add(AVAILABLE, Boolean.toString(available));
        add(AVAILABLE_IID, iconId);
        add(TYPE_IID, getTypeIconId(d));
        add(ROLE, service.getRole(d.id()).toString());
        add(MFR, d.manufacturer());
        add(HW, d.hwVersion());
        add(SW, d.swVersion());
        add(SERIAL, d.serialNumber());
        add(PROTOCOL, d.annotations().value(PROTOCOL));
        add(CHASSISID, d.chassisId().toString());
    }

    private String getTypeIconId(Device d) {
        return DEV_ICON_PREFIX + d.type().toString();
    }

    @Override
    protected String[] columnIds() {
        return COL_IDS;
    }
}