package org.ovirt.engine.ui.common.widget.uicommon.vm; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.ui.common.CommonApplicationConstants; import org.ovirt.engine.ui.common.CommonApplicationTemplates; import org.ovirt.engine.ui.common.gin.AssetProvider; import org.ovirt.engine.ui.common.system.ClientStorage; import org.ovirt.engine.ui.common.uicommon.model.SearchableTableModelProvider; import org.ovirt.engine.ui.common.widget.table.column.AbstractBooleanColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractRxTxRateColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractSumUpColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; import org.ovirt.engine.ui.common.widget.table.column.NicActivateStatusColumn; import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; import com.google.gwt.event.shared.EventBus; public class PoolInterfaceListModelTable<T extends SearchableListModel> extends AbstractModelBoundTableWidget<VmNetworkInterface, T> { private static final CommonApplicationTemplates templates = AssetProvider.getTemplates(); private static final CommonApplicationConstants constants = AssetProvider.getConstants(); public PoolInterfaceListModelTable( SearchableTableModelProvider<VmNetworkInterface, T> modelProvider, EventBus eventBus, ClientStorage clientStorage) { super(modelProvider, eventBus, clientStorage, false); } @Override public void initTable() { getTable().addColumn(new NicActivateStatusColumn<VmNetworkInterface>(), constants.empty(), "30px"); //$NON-NLS-1$ AbstractTextColumn<VmNetworkInterface> nameColumn = new AbstractTextColumn<VmNetworkInterface>() { @Override public String getValue(VmNetworkInterface object) { return object.getName(); } }; getTable().addColumn(nameColumn, constants.nameInterface()); AbstractCheckboxColumn<VmNetworkInterface> pluggedColumn = new AbstractCheckboxColumn<VmNetworkInterface>() { @Override public Boolean getValue(VmNetworkInterface object) { return object.isPlugged(); } @Override protected boolean canEdit(VmNetworkInterface object) { return false; } }; getTable().addColumn(pluggedColumn, constants.plugged(), "60px"); //$NON-NLS-1$ AbstractTextColumn<VmNetworkInterface> networkNameColumn = new AbstractTextColumn<VmNetworkInterface>() { @Override public String getValue(VmNetworkInterface object) { return object.getNetworkName(); } }; getTable().addColumn(networkNameColumn, constants.networkNameInterface()); AbstractTextColumn<VmNetworkInterface> profileNameColumn = new AbstractTextColumn<VmNetworkInterface>() { @Override public String getValue(VmNetworkInterface object) { return object.getVnicProfileName(); } }; getTable().addColumn(profileNameColumn, constants.profileNameInterface()); AbstractBooleanColumn<VmNetworkInterface> linkStateColumn = new AbstractBooleanColumn<VmNetworkInterface>(constants.linkedNetworkInterface(), constants.unlinkedNetworkInterface()) { @Override protected Boolean getRawValue(VmNetworkInterface object) { return object.isLinked(); } }; getTable().addColumn(linkStateColumn, constants.linkStateNetworkInterface(), "65px"); //$NON-NLS-1$ AbstractTextColumn<VmNetworkInterface> typeColumn = new AbstractEnumColumn<VmNetworkInterface, VmInterfaceType>() { @Override protected VmInterfaceType getRawValue(VmNetworkInterface object) { return VmInterfaceType.forValue(object.getType()); } }; getTable().addColumn(typeColumn, constants.typeInterface()); AbstractTextColumn<VmNetworkInterface> macColumn = new AbstractTextColumn<VmNetworkInterface>() { @Override public String getValue(VmNetworkInterface object) { return object.getMacAddress(); } }; getTable().addColumn(macColumn, constants.macInterface()); AbstractTextColumn<VmNetworkInterface> speedColumn = new AbstractTextColumn<VmNetworkInterface>() { @Override public String getValue(VmNetworkInterface object) { if (object.getSpeed() != null) { return object.getSpeed().toString(); } else { return null; } } }; getTable().addColumnWithHtmlHeader(speedColumn, templates.sub(constants.speedInterface(), constants.mbps())); AbstractTextColumn<VmNetworkInterface> rxColumn = new AbstractRxTxRateColumn<VmNetworkInterface>() { @Override protected Double getRate(VmNetworkInterface object) { return object.getStatistics().getReceiveRate(); } @Override protected Double getSpeed(VmNetworkInterface object) { if (object.getSpeed() != null) { return object.getSpeed().doubleValue(); } else { return null; } } }; getTable().addColumnWithHtmlHeader(rxColumn, templates.sub(constants.rxRate(), constants.mbps())); AbstractTextColumn<VmNetworkInterface> txColumn = new AbstractRxTxRateColumn<VmNetworkInterface>() { @Override protected Double getRate(VmNetworkInterface object) { return object.getStatistics().getTransmitRate(); } @Override protected Double getSpeed(VmNetworkInterface object) { if (object.getSpeed() != null) { return object.getSpeed().doubleValue(); } else { return null; } } }; getTable().addColumnWithHtmlHeader(txColumn, templates.sub(constants.txRate(), constants.mbps())); AbstractTextColumn<VmNetworkInterface> dropsColumn = new AbstractSumUpColumn<VmNetworkInterface>() { @Override protected Double[] getRawValue(VmNetworkInterface object) { Double receiveDropRate = object != null ? object.getStatistics().getReceiveDropRate() : null; Double transmitDropRate = object != null ? object.getStatistics().getTransmitDropRate() : null; return new Double[] { receiveDropRate, transmitDropRate }; } }; getTable().addColumnWithHtmlHeader(dropsColumn, templates.sub(constants.dropsInterface(), constants.pkts())); } }