gov.redhawk.ide.internal.ui.event.EventViewerLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for gov.redhawk.ide.internal.ui.event.EventViewerLabelProvider.java

Source

/*******************************************************************************
 * This file is protected by Copyright. 
 * Please refer to the COPYRIGHT file distributed with this source distribution.
 *
 * This file is part of REDHAWK IDE.
 *
 * All rights reserved.  This program and the accompanying materials are made available under 
 * the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at 
 * http://www.eclipse.org/legal/epl-v10.html
 *******************************************************************************/
package gov.redhawk.ide.internal.ui.event;

import gov.redhawk.ide.internal.ui.event.model.Event;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

import mil.jpeojtrs.sca.util.AnyUtils;

import org.apache.commons.lang.ArrayUtils;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.nebula.widgets.xviewer.XViewer;
import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
import org.eclipse.nebula.widgets.xviewer.XViewerLabelProvider;
import org.eclipse.swt.graphics.Image;

import CF.DataType;
import ExtendedEvent.PropertySetChangeEventType;
import ExtendedEvent.PropertySetChangeEventTypeHelper;
import ExtendedEvent.ResourceStateChangeEventType;
import ExtendedEvent.ResourceStateChangeEventTypeHelper;
import ExtendedEvent.ResourceStateChangeType;
import StandardEvent.DomainManagementObjectAddedEventType;
import StandardEvent.DomainManagementObjectAddedEventTypeHelper;
import StandardEvent.DomainManagementObjectRemovedEventType;
import StandardEvent.DomainManagementObjectRemovedEventTypeHelper;
import StandardEvent.SourceCategoryType;
import StandardEvent.StateChangeCategoryType;
import StandardEvent.StateChangeEventType;
import StandardEvent.StateChangeEventTypeHelper;
import StandardEvent.StateChangeType;

/**
 * 
 */
public class EventViewerLabelProvider extends XViewerLabelProvider {

    private static final DateFormat DATE_FORMAT_MS = new SimpleDateFormat("HH:mm::SSSS");
    private static final DateFormat DATE_FORMAT_SS = new SimpleDateFormat("HH:mm::ss");

    /**
     * @param viewer
     */
    public EventViewerLabelProvider(XViewer viewer) {
        super(viewer);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean isLabelProperty(Object element, String property) {
        return false;
    }

    @Override
    public void addListener(ILabelProviderListener listener) {
        // do nothing
    }

    @Override
    public void removeListener(ILabelProviderListener listener) {
        // do nothing
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
     */
    @Override
    public void dispose() {
        // TODO Auto-generated method stub

    }

    /* (non-Javadoc)
     * @see org.eclipse.nebula.widgets.xviewer.XViewerLabelProvider#getColumnImage(java.lang.Object, org.eclipse.nebula.widgets.xviewer.XViewerColumn, int)
     */
    @Override
    public Image getColumnImage(Object element, XViewerColumn xCol, int columnIndex) throws Exception {
        return null;
    }

    /* (non-Javadoc)
     * @see org.eclipse.nebula.widgets.xviewer.XViewerLabelProvider#getColumnText(java.lang.Object, org.eclipse.nebula.widgets.xviewer.XViewerColumn, int)
     */
    @Override
    public String getColumnText(Object element, XViewerColumn xCol, int columnIndex) throws Exception {
        if (element instanceof Event) {
            Event event = (Event) element;
            if (xCol.equals(EventViewerFactory.CHANNEL_COL)) {
                return event.getChannel();
            } else if (xCol.equals(EventViewerFactory.PRODUCER_ID_COL)) {
                if (event.valueIsType(DomainManagementObjectAddedEventTypeHelper.type())) {
                    DomainManagementObjectAddedEventType value = DomainManagementObjectAddedEventTypeHelper
                            .extract(event.getValue());
                    return value.producerId;
                } else if (event.valueIsType(DomainManagementObjectRemovedEventTypeHelper.type())) {
                    DomainManagementObjectRemovedEventType value = DomainManagementObjectRemovedEventTypeHelper
                            .extract(event.getValue());
                    return value.producerId;
                } else if (event.valueIsType(StateChangeEventTypeHelper.type())) {
                    StateChangeEventType value = StateChangeEventTypeHelper.extract(event.getValue());
                    return value.producerId;
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.PROPERTIES_COL)) {
                if (event.valueIsType(PropertySetChangeEventTypeHelper.type())) {
                    PropertySetChangeEventType value = PropertySetChangeEventTypeHelper.extract(event.getValue());
                    return toString(value.properties);
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.SOURCE_CATEGORY_COL)) {
                if (event.valueIsType(DomainManagementObjectAddedEventTypeHelper.type())) {
                    DomainManagementObjectAddedEventType value = DomainManagementObjectAddedEventTypeHelper
                            .extract(event.getValue());
                    return toString(value.sourceCategory);
                } else if (event.valueIsType(DomainManagementObjectRemovedEventTypeHelper.type())) {
                    DomainManagementObjectRemovedEventType value = DomainManagementObjectRemovedEventTypeHelper
                            .extract(event.getValue());
                    return toString(value.sourceCategory);
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.SOURCE_ID_COL)) {
                if (event.valueIsType(DomainManagementObjectAddedEventTypeHelper.type())) {
                    DomainManagementObjectAddedEventType value = DomainManagementObjectAddedEventTypeHelper
                            .extract(event.getValue());
                    return value.sourceId;
                } else if (event.valueIsType(DomainManagementObjectRemovedEventTypeHelper.type())) {
                    DomainManagementObjectRemovedEventType value = DomainManagementObjectRemovedEventTypeHelper
                            .extract(event.getValue());
                    return value.sourceId;
                } else if (event.valueIsType(StateChangeEventTypeHelper.type())) {
                    StateChangeEventType value = StateChangeEventTypeHelper.extract(event.getValue());
                    return value.sourceId;
                } else if (event.valueIsType(PropertySetChangeEventTypeHelper.type())) {
                    PropertySetChangeEventType value = PropertySetChangeEventTypeHelper.extract(event.getValue());
                    return value.sourceId;
                } else if (event.valueIsType(ResourceStateChangeEventTypeHelper.type())) {
                    ResourceStateChangeEventType value = ResourceStateChangeEventTypeHelper
                            .extract(event.getValue());
                    return value.sourceId;
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.SOURCE_IOR_COL)) {
                if (event.valueIsType(DomainManagementObjectAddedEventTypeHelper.type())) {
                    DomainManagementObjectAddedEventType value = DomainManagementObjectAddedEventTypeHelper
                            .extract(event.getValue());
                    return String.valueOf(value.sourceIOR);
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.SOURCE_NAME_COL)) {
                if (event.valueIsType(DomainManagementObjectAddedEventTypeHelper.type())) {
                    DomainManagementObjectAddedEventType value = DomainManagementObjectAddedEventTypeHelper
                            .extract(event.getValue());
                    return value.sourceName;
                } else if (event.valueIsType(DomainManagementObjectRemovedEventTypeHelper.type())) {
                    DomainManagementObjectRemovedEventType value = DomainManagementObjectRemovedEventTypeHelper
                            .extract(event.getValue());
                    return value.sourceName;
                } else if (event.valueIsType(PropertySetChangeEventTypeHelper.type())) {
                    PropertySetChangeEventType value = PropertySetChangeEventTypeHelper.extract(event.getValue());
                    return value.sourceName;
                } else if (event.valueIsType(ResourceStateChangeEventTypeHelper.type())) {
                    ResourceStateChangeEventType value = ResourceStateChangeEventTypeHelper
                            .extract(event.getValue());
                    return value.sourceName;
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.STATE_CHANGE_CATEGORY_COL)) {
                if (event.valueIsType(StateChangeEventTypeHelper.type())) {
                    StateChangeEventType value = StateChangeEventTypeHelper.extract(event.getValue());
                    return toString(value.stateChangeCategory);
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.STATE_FROM_TYPE_COL)) {
                if (event.valueIsType(StateChangeEventTypeHelper.type())) {
                    StateChangeEventType value = StateChangeEventTypeHelper.extract(event.getValue());
                    return toString(value.stateChangeFrom);
                } else if (event.valueIsType(ResourceStateChangeEventTypeHelper.type())) {
                    ResourceStateChangeEventType value = ResourceStateChangeEventTypeHelper
                            .extract(event.getValue());
                    return toString(value.stateChangeFrom);
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.STATE_TO_TYPE_COL)) {
                if (event.valueIsType(StateChangeEventTypeHelper.type())) {
                    StateChangeEventType value = StateChangeEventTypeHelper.extract(event.getValue());
                    return toString(value.stateChangeTo);
                } else if (event.valueIsType(ResourceStateChangeEventTypeHelper.type())) {
                    ResourceStateChangeEventType value = ResourceStateChangeEventTypeHelper
                            .extract(event.getValue());
                    return toString(value.stateChangeTo);
                } else {
                    return "";
                }
            } else if (xCol.equals(EventViewerFactory.TIME_COL_MS)) {
                return EventViewerLabelProvider.DATE_FORMAT_MS.format(event.getTimestamp());
            } else if (xCol.equals(EventViewerFactory.TIME_COL_SS)) {
                return EventViewerLabelProvider.DATE_FORMAT_SS.format(event.getTimestamp());
            } else if (xCol.equals(EventViewerFactory.TYPE_COL)) {
                if (event.valueIsType(DomainManagementObjectAddedEventTypeHelper.type())) {
                    return DomainManagementObjectAddedEventTypeHelper.id();
                } else if (event.valueIsType(DomainManagementObjectRemovedEventTypeHelper.type())) {
                    return DomainManagementObjectRemovedEventTypeHelper.id();
                } else if (event.valueIsType(StateChangeEventTypeHelper.type())) {
                    return StateChangeEventTypeHelper.id();
                } else if (event.valueIsType(PropertySetChangeEventTypeHelper.type())) {
                    return PropertySetChangeEventTypeHelper.id();
                } else if (event.valueIsType(ResourceStateChangeEventTypeHelper.type())) {
                    return ResourceStateChangeEventTypeHelper.id();
                } else {
                    return "UNKNOWN";
                }
            }
        }
        return "";
    }

    private String toString(ResourceStateChangeType stateChangeFrom) {
        switch (stateChangeFrom.value()) {
        case ResourceStateChangeType._STARTED:
            return "STARTED";
        case ResourceStateChangeType._STOPPED:
            return "STOPPED";
        default:
            return "";
        }
    }

    private String toString(StateChangeType stateChangeFrom) {
        switch (stateChangeFrom.value()) {
        case StateChangeType._ACTIVE:
            return "ACTIVE";
        case StateChangeType._BUSY:
            return "BUSY";
        case StateChangeType._DISABLED:
            return "DISABLED";
        case StateChangeType._ENABLED:
            return "ENABLED";
        case StateChangeType._IDLE:
            return "IDLE";
        case StateChangeType._LOCKED:
            return "LOCKED";
        case StateChangeType._SHUTTING_DOWN:
            return "SHUTTING_DOWN";
        case StateChangeType._UNLOCKED:
            return "UNLOCKED";
        default:
            return "";
        }
    }

    private String toString(StateChangeCategoryType stateChangeCategory) {
        switch (stateChangeCategory.value()) {
        case StateChangeCategoryType._ADMINISTRATIVE_STATE_EVENT:
            return "ADMINISTRATIVE_STATE_EVENT";
        case StateChangeCategoryType._OPERATIONAL_STATE_EVENT:
            return "OPERATIONAL_STATE_EVENT";
        case StateChangeCategoryType._USAGE_STATE_EVENT:
            return "USAGE_STATE_EVENT";
        default:
            return "";
        }
    }

    private String toString(SourceCategoryType sourceCategory) {
        switch (sourceCategory.value()) {
        case SourceCategoryType._APPLICATION:
            return "APPLICATION";
        case SourceCategoryType._APPLICATION_FACTORY:
            return "APPLICATION_FACTORY";
        case SourceCategoryType._DEVICE:
            return "DEVICE";
        case SourceCategoryType._DEVICE_MANAGER:
            return "DEVICE_MANAGER";
        case SourceCategoryType._SERVICE:
            return "SERVICE";
        default:
            return "";
        }
    }

    private String toString(DataType[] properties) {
        StringBuilder retVal = new StringBuilder();
        for (DataType t : properties) {
            retVal.append(t.id);
            retVal.append(" = ");
            Object value = AnyUtils.convertAny(t.value);
            if (value instanceof DataType[]) {
                retVal.append("{\n");
                retVal.append(toString((DataType[]) value));
                retVal.append("}");
            } else if (value.getClass().isArray()) {
                retVal.append(ArrayUtils.toString(value));
            } else {
                retVal.append(value);
            }
            retVal.append("\n");
        }
        return retVal.toString();
    }

    @Override
    public Object getBackingData(Object element, XViewerColumn xViewerColumn, int columnIndex) throws Exception {
        // If not shown, don't process any further
        if (!xViewerColumn.isShow()) {
            return "";
        }
        if (xViewerColumn.getId().equals(EventViewerFactory.TIME_COL_SS.getId()) && element instanceof Event) {
            return ((Event) element).getTimestamp();
        }
        if (xViewerColumn.getId().equals(EventViewerFactory.TIME_COL_MS.getId()) && element instanceof Event) {
            return ((Event) element).getTimestamp();
        }
        return super.getBackingData(element, xViewerColumn, columnIndex);
    }

}