package org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster;
import org.gwtbootstrap3.client.ui.Alert;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterClientInfo;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus;
import org.ovirt.engine.core.common.businessentities.gluster.Mempool;
import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver;
import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
import org.ovirt.engine.ui.common.idhandler.WithElementId;
import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
import org.ovirt.engine.ui.common.widget.dialog.tab.DialogTab;
import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
import org.ovirt.engine.ui.common.widget.editor.generic.DoubleEntityModelLabelEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelLabelEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelLabelEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelLabelEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextAreaLabelEditor;
import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer;
import org.ovirt.engine.ui.common.widget.table.column.AbstractEntityModelTextColumn;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import org.ovirt.engine.ui.uicommonweb.models.ListModel;
import org.ovirt.engine.ui.uicommonweb.models.gluster.BrickAdvancedDetailsModel;
import org.ovirt.engine.ui.uicompat.external.StringUtils;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.BrickAdvancedDetailsPopupPresenterWidget;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.inject.Inject;
public class BrickAdvancedDetailsPopupView extends AbstractModelBoundPopupView<BrickAdvancedDetailsModel> implements BrickAdvancedDetailsPopupPresenterWidget.ViewDef {
interface Driver extends UiCommonEditorDriver<BrickAdvancedDetailsModel, BrickAdvancedDetailsPopupView> {
}
interface ViewUiBinder extends UiBinder<SimpleDialogPanel, BrickAdvancedDetailsPopupView> {
ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
}
interface ViewIdHandler extends ElementIdHandler<BrickAdvancedDetailsPopupView> {
ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
}
@UiField
@WithElementId
DialogTab generalTab;
@UiField
@Path(value = "brick.entity")
@WithElementId
StringEntityModelLabelEditor brickEditor;
@UiField(provided = true)
@Path(value = "brickProperties.status.entity")
@WithElementId
EntityModelLabelEditor<GlusterStatus> statusEditor;
@UiField
@Path(value = "brickProperties.port.entity")
@WithElementId
IntegerEntityModelLabelEditor portEditor;
@UiField
@Path(value = "brickProperties.rdmaPort.entity")
@WithElementId
IntegerEntityModelLabelEditor rdmaPortEditor;
@UiField
@Path(value = "brickProperties.pid.entity")
@WithElementId
IntegerEntityModelLabelEditor pidEditor;
@UiField
@Path(value = "brickProperties.totalSize.entity")
@WithElementId
DoubleEntityModelLabelEditor totalSizeEditor;
@UiField
@Path(value = "brickProperties.freeSize.entity")
@WithElementId
DoubleEntityModelLabelEditor freeSizeEditor;
@UiField
@Path(value = "brickProperties.device.entity")
@WithElementId
StringEntityModelLabelEditor deviceEditor;
@UiField
@Path(value = "brickProperties.blockSize.entity")
@WithElementId
IntegerEntityModelLabelEditor blockSizeEditor;
@UiField
@Path(value = "brickProperties.mountOptions.entity")
@WithElementId
StringEntityModelTextAreaLabelEditor mountOptionsEditor;
@UiField
@Path(value = "brickProperties.fileSystem.entity")
@WithElementId
StringEntityModelLabelEditor fileSystemEditor;
@UiField
@WithElementId
DialogTab clientsTab;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelCellTable<ListModel<EntityModel<GlusterClientInfo>>> clientsTable;
@UiField
@WithElementId
DialogTab memoryStatsTab;
@UiField
@Path(value = "memoryStatistics.totalAllocated.entity")
@WithElementId
IntegerEntityModelLabelEditor totalAllocatedEditor;
@UiField
@Path(value = "memoryStatistics.freeBlocks.entity")
@WithElementId
IntegerEntityModelLabelEditor freeBlocksEditor;
@UiField
@Path(value = "memoryStatistics.freeFastbin.entity")
@WithElementId
IntegerEntityModelLabelEditor freeFastbinBlocksEditor;
@UiField
@Path(value = "memoryStatistics.mmappedBlocks.entity")
@WithElementId
IntegerEntityModelLabelEditor mmappedBlocksEditor;
@UiField
@Path(value = "memoryStatistics.spaceAllocatedMmapped.entity")
@WithElementId
IntegerEntityModelLabelEditor spaceAllocatedMmappedEditor;
@UiField
@Path(value = "memoryStatistics.maxTotalAllocated.entity")
@WithElementId
IntegerEntityModelLabelEditor maxTotalAllocatedEditor;
@UiField
@Path(value = "memoryStatistics.spaceFreedFastbin.entity")
@WithElementId
IntegerEntityModelLabelEditor spaceFreedFastbinEditor;
@UiField
@Path(value = "memoryStatistics.totalAllocatedSpace.entity")
@WithElementId
IntegerEntityModelLabelEditor totalAllocatedSpaceEditor;
@UiField
@Path(value = "memoryStatistics.totalFreeSpace.entity")
@WithElementId
IntegerEntityModelLabelEditor totalFreeSpaceEditor;
@UiField
@Path(value = "memoryStatistics.releasableFreeSpace.entity")
@WithElementId
IntegerEntityModelLabelEditor releasableFreeSpaceEditor;
@UiField
@WithElementId
DialogTab memoryPoolsTab;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelCellTable<ListModel<EntityModel<Mempool>>> memoryPoolsTable;
@UiField
@Ignore
Alert message;
private final Driver driver = GWT.create(Driver.class);
private static final ApplicationConstants constants = AssetProvider.getConstants();
@Inject
public BrickAdvancedDetailsPopupView(EventBus eventBus) {
super(eventBus);
initEditors();
initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
ViewIdHandler.idHandler.generateAndSetIds(this);
initTableColumns();
driver.initialize(this);
}
private void initEditors() {
statusEditor = new EntityModelLabelEditor<>(new EnumRenderer<GlusterStatus>());
clientsTable = new EntityModelCellTable<>(false, true);
memoryPoolsTable = new EntityModelCellTable<>(false, true);
}
private void initTableColumns() {
clientsTable.addColumn(new AbstractEntityModelTextColumn<GlusterClientInfo>() {
@Override
public String getText(GlusterClientInfo entity) {
return entity.getHostname();
}
}, constants.clientBrickAdvancedLabel());
clientsTable.addColumn(new AbstractEntityModelTextColumn<GlusterClientInfo>() {
@Override
public String getText(GlusterClientInfo entity) {
return String.valueOf(entity.getClientPort());
}
}, constants.clientPortBrickAdvancedLabel());
clientsTable.addColumn(new AbstractEntityModelTextColumn<GlusterClientInfo>() {
@Override
public String getText(GlusterClientInfo entity) {
return String.valueOf(entity.getBytesRead());
}
}, constants.bytesReadBrickAdvancedLabel());
clientsTable.addColumn(new AbstractEntityModelTextColumn<GlusterClientInfo>() {
@Override
public String getText(GlusterClientInfo entity) {
return String.valueOf(entity.getBytesWritten());
}
}, constants.bytesWrittenBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return entity.getName();
}
}, constants.nameBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return String.valueOf(entity.getHotCount());
}
}, constants.hotCountBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return String.valueOf(entity.getColdCount());
}
}, constants.coldCountBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return String.valueOf(entity.getPadddedSize());
}
}, constants.paddedSizeBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return String.valueOf(entity.getAllocCount());
}
}, constants.allocatedCountBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return String.valueOf(entity.getMaxAlloc());
}
}, constants.maxAllocatedBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return String.valueOf(entity.getPoolMisses());
}
}, constants.poolMissesBrickAdvancedLabel());
memoryPoolsTable.addColumn(new AbstractEntityModelTextColumn<Mempool>() {
@Override
public String getText(Mempool entity) {
return String.valueOf(entity.getMaxStdAlloc());
}
}, constants.maxStdAllocatedBrickAdvancedLabel());
}
@Override
public void edit(BrickAdvancedDetailsModel object) {
driver.edit(object);
clientsTable.asEditor().edit(object.getClients());
memoryPoolsTable.asEditor().edit(object.getMemoryPools());
}
@Override
public BrickAdvancedDetailsModel flush() {
return driver.flush();
}
@Override
public void cleanup() {
driver.cleanup();
}
@Override
public void setMessage(String message) {
super.setMessage(message);
this.message.setText(message);
this.message.setVisible(!StringUtils.isEmpty(message));
}
}