com.google.developers.gdgfirenze.admin.client.cell.SampleCell.java Source code

Java tutorial

Introduction

Here is the source code for com.google.developers.gdgfirenze.admin.client.cell.SampleCell.java

Source

/*
 * Copyright 2013, Cristiano Costantini, Giuseppe Gerla, Michele Ficarra, Sergio Ciampi, Stefano
 * Cigheri.
 * 
 * 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 com.google.developers.gdgfirenze.admin.client.cell;

import com.google.developers.gdgfirenze.admin.client.icon.IconBundle;
import com.google.developers.gdgfirenze.model.AbstractSample;
import com.google.developers.gdgfirenze.model.NumericValueSample;
import com.google.developers.gdgfirenze.model.PositionSample;
import com.google.developers.gdgfirenze.model.StringValueSample;
import com.google.developers.gdgfirenze.model.WifiSignalSample;

import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.resources.client.ResourcePrototype;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Image;

/**
 * The Class SampleCell.
 */
public class SampleCell extends AbstractCell<AbstractSample> {

    /** The Constant ICON_BUNDLE. */
    public static final IconBundle ICON_BUNDLE = GWT.create(IconBundle.class);

    /*
     * (non-Javadoc)
     * 
     * @see com.google.gwt.cell.client.AbstractCell#render(com.google.gwt.cell.client.Cell.Context,
     * java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder)
     */
    @Override
    public void render(Context context, AbstractSample sample, SafeHtmlBuilder sb) {
        // Value can be null, so do a null check..
        if (sample == null) {
            return;
        }
        sb.appendHtmlConstant("<table><tr><td colspan=\"2\"><strong>");
        if (sample.getType() != null) {
            final ResourcePrototype icon = ICON_BUNDLE.getResource(findIconName(sample.getType()));
            if (icon != null) {
                final Image image = new Image((ImageResource) icon);
                image.setTitle(sample.getType());
                sb.appendHtmlConstant(image.toString());
            } else {
                sb.appendEscaped(sample.getType());
            }
        }
        sb.appendEscaped(sample.getTime().toString());
        sb.appendHtmlConstant("</strong></td></tr>");
        if (sample instanceof NumericValueSample) {
            final NumericValueSample numericValueSample = (NumericValueSample) sample;
            sb.appendHtmlConstant(getTableRow("Value", numericValueSample.getValue()));
        } else if (sample instanceof StringValueSample) {
            final StringValueSample stringValueSample = (StringValueSample) sample;
            sb.appendHtmlConstant(getTableRow("Value", stringValueSample.getValue()));
        } else if (sample instanceof StringValueSample) {
            final StringValueSample stringValueSample = (StringValueSample) sample;
            sb.appendHtmlConstant("<tr><td>Value: </td><td>");
            sb.appendEscaped(stringValueSample.getValue());
            sb.appendHtmlConstant("</td><td>");
        } else if (sample instanceof PositionSample) {
            final PositionSample positionSample = (PositionSample) sample;
            sb.appendHtmlConstant(getTableRow("Latitude,Longitude", fromDoubleToString(positionSample.getLat())
                    + "," + fromDoubleToString(positionSample.getLng())));
            sb.appendHtmlConstant(getTableRow("Altitude", positionSample.getAlt()));
            sb.appendHtmlConstant(getTableRow("Bearing", positionSample.getBearing()));
            sb.appendHtmlConstant(getTableRow("Speed", positionSample.getSpeed()));
            sb.appendHtmlConstant(getTableRow("Accuracy", positionSample.getAccuracy()));
        } else if (sample instanceof WifiSignalSample) {
            final WifiSignalSample wifiSignalSample = (WifiSignalSample) sample;
            sb.appendHtmlConstant(getTableRow("Frequency", wifiSignalSample.getFrequency()));
            sb.appendHtmlConstant(getTableRow("Level", wifiSignalSample.getLevel()));
            sb.appendHtmlConstant(getTableRow("BSSID", wifiSignalSample.getBssid()));
            sb.appendHtmlConstant(getTableRow("SSID", wifiSignalSample.getSsid()));
            sb.appendHtmlConstant(getTableRow("Capabilities", wifiSignalSample.getCapabilities()));
        }
        sb.appendHtmlConstant("</table>");
    }

    /**
     * Find icon name.
     * 
     * @param type
     *          the type
     * @return the string
     */
    private String findIconName(String type) {
        try {
            String[] split = type.split("/");
            return split[split.length - 1];
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * From double to string.
     * 
     * @param value
     *          the value
     * @return the string
     */
    private String fromDoubleToString(Double value) {
        String ret = "0";
        if (value != null) {
            ret = value.toString();
        }
        return ret;
    }

    /**
     * Gets the table row.
     * 
     * @param firstColumn
     *          the first column
     * @param secondColumn
     *          the second column
     * @return the table row
     */
    private String getTableRow(String firstColumn, Object secondColumn) {
        String secondColAsString = secondColumn.toString();
        if (secondColumn instanceof Double) {
            secondColAsString = fromDoubleToString((Double) secondColumn);
        }
        return "<tr><td>" + firstColumn + ": </td><td>" + secondColAsString + "</td></tr>";
    }

}