package org.ovirt.engine.ui.webadmin.section.main.view.tab.host;
import java.util.Objects;
import org.ovirt.engine.core.common.businessentities.HostDeviceView;
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.AbstractTextColumn;
import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
import org.ovirt.engine.ui.uicommonweb.models.vms.hostdev.HostDeviceListModelBase;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
import org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.HostDeviceColumnHelper;
import com.google.gwt.event.shared.EventBus;
public abstract class HostDeviceModelBaseTable<M extends HostDeviceListModelBase<?>> extends AbstractModelBoundTableWidget<HostDeviceView, M> {
protected static final ApplicationConstants constants = AssetProvider.getConstants();
public HostDeviceModelBaseTable(SearchableTableModelProvider<HostDeviceView, M> modelProvider, EventBus eventBus, ClientStorage clientStorage) {
super(modelProvider, eventBus, clientStorage, false);
}
@Override
public void initTable() {
getTable().enableColumnResizing();
addColumn(constants.deviceName(), "200px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView object) {
return object.getDeviceName();
}
});
addColumn(constants.capability(), "130px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView object) {
return object.getCapability();
}
});
addColumn(constants.vendor(), "200px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView object) {
return HostDeviceColumnHelper.renderNameId(object.getVendorName(), object.getVendorId());
}
});
addColumn(constants.product(), "350px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView object) {
return HostDeviceColumnHelper.renderNameId(object.getProductName(), object.getProductId());
}
});
addColumn(constants.driver(), "100px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView hostDeviceView) {
return Objects.toString(hostDeviceView.getDriver(), "");
}
});
addColumn(constants.currentlyUsedByVm(), "120px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView object) {
return object.getRunningVmName();
}
});
addColumn(constants.attachedToVms(), "120px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView object) {
return HostDeviceColumnHelper.renderVmNamesList(object.getAttachedVmNames());
}
});
addColumn(constants.iommuGroup(), "120px", new AbstractTextColumn<HostDeviceView>() { //$NON-NLS-1$
@Override
public String getValue(HostDeviceView object) {
return HostDeviceColumnHelper.renderIommuGroup(object.getIommuGroup());
}
});
}
private void addColumn(String header, String width, AbstractTextColumn<HostDeviceView> column) {
column.makeSortable();
getTable().addColumn(column, header, width);
}
}