package org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster;
import java.util.Date;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSessionDetails;
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.editor.EntityModelCellTable;
import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelLabelEditor;
import org.ovirt.engine.ui.common.widget.renderer.FullDateTimeRenderer;
import org.ovirt.engine.ui.common.widget.table.column.AbstractEntityModelTextColumn;
import org.ovirt.engine.ui.common.widget.table.column.AbstractFullDateTimeColumn;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import org.ovirt.engine.ui.uicommonweb.models.ListModel;
import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeGeoRepSessionDetailsModel;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumeGeoRepSessionDetailsPopUpPresenterWidget;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.text.shared.AbstractRenderer;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.inject.Inject;
public class VolumeGeoRepSessionDetailsPopUpView extends AbstractModelBoundPopupView<VolumeGeoRepSessionDetailsModel> implements VolumeGeoRepSessionDetailsPopUpPresenterWidget.ViewDef{
interface Driver extends UiCommonEditorDriver<VolumeGeoRepSessionDetailsModel, VolumeGeoRepSessionDetailsPopUpView> {
}
interface ViewUiBinder extends UiBinder<SimpleDialogPanel, VolumeGeoRepSessionDetailsPopUpView> {
ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
}
interface ViewIdHandler extends ElementIdHandler<VolumeGeoRepSessionDetailsPopUpView> {
ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
}
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelCellTable<ListModel<EntityModel<GlusterGeoRepSessionDetails>>> geoRepSessionSummaryTable;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> checkPointStatus;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> crawlStatus;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> dataOpsPending;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> metaOpsPending;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> entryOpsPending;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> failures;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> checkPointTime;
@UiField(provided = true)
@Ignore
@WithElementId
EntityModelLabelEditor<GlusterGeoRepSessionDetails> checkPointCompletedAt;
ApplicationConstants constants;
private final Driver driver = GWT.create(Driver.class);
@Inject
public VolumeGeoRepSessionDetailsPopUpView(EventBus eventBus, ApplicationConstants constants) {
super(eventBus);
this.constants = constants;
intiEditors(constants);
initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
ViewIdHandler.idHandler.generateAndSetIds(this);
driver.initialize(this);
}
private void intiEditors(final ApplicationConstants constants) {
checkPointStatus =
new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
String checkPointStatusValue = object.getCheckPointStatus();
return checkPointStatusValue == null || checkPointStatusValue.isEmpty() ? constants.notAvailableLabel()
: checkPointStatusValue;
}
});
crawlStatus = new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
return object.getCrawlStatus().toString();
}
});
dataOpsPending = new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
return object.getDataOpsPending().toString();
}
});
metaOpsPending = new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
return object.getMetaOpsPending().toString();
}
});
entryOpsPending = new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
return object.getEntryOpsPending().toString();
}
});
failures = new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
return object.getFailures().toString();
}
});
checkPointTime = new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
return new FullDateTimeRenderer().render(object.getCheckPointTime());
}
});
checkPointCompletedAt = new EntityModelLabelEditor<>(new AbstractRenderer<GlusterGeoRepSessionDetails>() {
@Override
public String render(GlusterGeoRepSessionDetails object) {
return new FullDateTimeRenderer().render(object.getCheckPointCompletedAt());
}
});
geoRepSessionSummaryTable = new EntityModelCellTable<>(false, true);
geoRepSessionSummaryTable.addColumn(new AbstractEntityModelTextColumn<GlusterGeoRepSessionDetails>() {
@Override
public String getText(GlusterGeoRepSessionDetails object) {
return object.getMasterBrickHostName() == null ? constants.notAvailableLabel() : object.getMasterBrickHostName();
}
}, constants.geoRepSessionHostName());
geoRepSessionSummaryTable.addColumn(new AbstractEntityModelTextColumn<GlusterGeoRepSessionDetails>() {
@Override
protected String getText(GlusterGeoRepSessionDetails entity) {
return (entity == null || entity.getStatus() == null) ? constants.notAvailableLabel() : entity.getStatus().toString();
}
}, constants.geoRepSessionStatus());
geoRepSessionSummaryTable.addColumn(new AbstractFullDateTimeColumn<EntityModel<GlusterGeoRepSessionDetails>>() {
@Override
protected Date getRawValue(EntityModel<GlusterGeoRepSessionDetails> object) {
GlusterGeoRepSessionDetails sessionDetail = object.getEntity();
return (sessionDetail == null || sessionDetail.getLastSyncedAt() == null) ? new Date() : sessionDetail.getLastSyncedAt();
}
}, constants.geoRepLastSyncedAt());
}
@Override
public void setCheckPointCompletedAtVisibility(boolean visible) {
checkPointCompletedAt.setVisible(visible);
}
@Override
public void updateSessionDetailProperties(GlusterGeoRepSessionDetails selectedSessionDetail) {
checkPointStatus.asValueBox().setValue(selectedSessionDetail);
crawlStatus.asValueBox().setValue(selectedSessionDetail);
dataOpsPending.asValueBox().setValue(selectedSessionDetail);
metaOpsPending.asValueBox().setValue(selectedSessionDetail);
entryOpsPending.asValueBox().setValue(selectedSessionDetail);
failures.asValueBox().setValue(selectedSessionDetail);
checkPointTime.asValueBox().setValue(selectedSessionDetail);
checkPointCompletedAt.asValueBox().setValue(selectedSessionDetail);
}
@Override
public void edit(final VolumeGeoRepSessionDetailsModel object) {
driver.edit(object);
geoRepSessionSummaryTable.asEditor().edit(object.getGeoRepSessionSummary());
}
@Override
public VolumeGeoRepSessionDetailsModel flush() {
return driver.flush();
}
@Override
public void cleanup() {
driver.cleanup();
}
}