Package org.vaadin.spring.samples.mvp.ui.view

Source Code of org.vaadin.spring.samples.mvp.ui.view.DSRUpdateHourlyView

package org.vaadin.spring.samples.mvp.ui.view;

import java.text.NumberFormat;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang3.math.NumberUtils;
import org.vaadin.spring.UIScope;
import org.vaadin.spring.navigator.VaadinView;
import org.vaadin.spring.samples.mvp.dto.DSRUpdateHourlyDTO;
import org.vaadin.spring.samples.mvp.ui.component.grid.HierarchicalDataGrid;
import org.vaadin.spring.samples.mvp.ui.component.util.DataGridUtil;
import org.vaadin.spring.samples.mvp.ui.component.util.HierarchicalRow;
import org.vaadin.spring.samples.mvp.ui.component.util.HierarchicalRows;
import org.vaadin.spring.samples.mvp.util.SSTimeUtil;

import com.vaadin.data.Container.Hierarchical;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.Table;

/**
* Demand Side Response Hourly Update grid
* @author Chris Phillipson (fastnsilver@gmail.com)
*
*/
@UIScope
@VaadinView(name = DSRUpdateHourlyView.NAME)
public class DSRUpdateHourlyView extends HierarchicalDataGrid<DSRUpdateHourlyDTO> {

    private static final long serialVersionUID = 1L;

    public static final String NAME = "demand/dsr/hourly_updates";

    private static final String LOCATION_COLUMN = "Location";
    private static final String COMMIT_STATUS_COLUMN = "Commit Status";
    private static final String ECO_MIN_COLUMN = "Economic Minimum";
    private static final String ECO_MAX_COLUMN = "Economic Maximum";


    @Override
    protected void defineColumns(List<DSRUpdateHourlyDTO> data) {
        table.addContainerProperty(LOCATION_COLUMN, String.class, null);
        Set<String> hours = DataGridUtil.addHourColumnHeaders(table, data, String.class);

        // TODO move to its own method?
        table.setColumnAlignment(LOCATION_COLUMN, Table.Align.LEFT);
        for (String hour: hours) {
            table.setColumnAlignment(hour, Table.Align.RIGHT);
            table.setColumnWidth(hour, 60);
        }

        table.setColumnWidth(LOCATION_COLUMN, 150);

    }

    @Override
    protected void insertData(List<DSRUpdateHourlyDTO> data) {
        int rowIndex = 0;
        HierarchicalRows struct = new HierarchicalRows();
        NumberFormat df = NumberFormat.getNumberInstance();
        for (DSRUpdateHourlyDTO dto : data) {
            struct.addRow(dto.getId().getLocation(),
                    SSTimeUtil.isoToHourLabel(dto.getId().getHour()), dto.getCommitStatus(),
                    df.format(dto.getEconomicMin()), df.format(dto.getEconomicMax()));
        }

        String interfaceName;
        Object[] parentRow;
        Object[] commitStatus;
        Object[] ecoMin;
        Object[] ecoMax;
        HierarchicalRow hr;
        Object itemId;
        for (Map.Entry<String, HierarchicalRow> parent: struct.getRows().entrySet()) {
            interfaceName = parent.getKey();
            hr = parent.getValue();
            commitStatus = hr.getRowAsObjectArray(COMMIT_STATUS_COLUMN , 0);
            ecoMin = hr.getRowAsObjectArray(ECO_MIN_COLUMN , 1);
            ecoMax = hr.getRowAsObjectArray(ECO_MAX_COLUMN , 2);
            parentRow = new Object[NumberUtils.max(new int[] {commitStatus.length, ecoMin.length, ecoMax.length})];
            parentRow[0] = interfaceName;
            table.addItem(parentRow, rowIndex);
            rowIndex++;

            itemId = table.addItem(commitStatus, rowIndex);
            ((Hierarchical) table).setParent(rowIndex, rowIndex-1);
            table.setChildrenAllowed(itemId, false);
            rowIndex++;

            itemId = table.addItem(ecoMin, rowIndex);
            ((Hierarchical) table).setParent(rowIndex, rowIndex-2);
            table.setChildrenAllowed(itemId, false);
            rowIndex++;

            itemId = table.addItem(ecoMax, rowIndex);
            ((Hierarchical) table).setParent(rowIndex, rowIndex-3);
            table.setChildrenAllowed(itemId, false);

            table.setCollapsed(rowIndex-3, false);
            rowIndex++;
        }

        // we want to see all hours at once; disable paging
        table.setPageLength(0);
    }

    @Override
    protected void defineFieldPresentation() {

    }

    @Override
    protected void defineTableProperties() {
        table.setImmediate(true);
    }

    @Override
    protected void addControls() {

    }

    @Override
    public void enter(ViewChangeEvent event) {

    }

}
TOP

Related Classes of org.vaadin.spring.samples.mvp.ui.view.DSRUpdateHourlyView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.