package com.constellio.app.modules.es.ui.pages; import static com.constellio.app.ui.i18n.i18n.$; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.List; import com.constellio.app.modules.es.model.connectors.ConnectorInstance; import com.constellio.app.ui.entities.MetadataVO; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.framework.buttons.LinkButton; import com.constellio.app.ui.framework.components.BaseDisplay; import com.constellio.app.ui.framework.components.BaseDisplay.CaptionAndComponent; import com.constellio.app.ui.framework.components.MetadataDisplayFactory; import com.constellio.app.ui.framework.components.RecordDisplay; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.Label; import com.vaadin.ui.TextArea; import com.vaadin.ui.VerticalLayout; public class DisplayConnectorInstanceViewImpl extends BaseViewImpl implements DisplayConnectorInstanceView { public static final String STYLE_NAME = "display-connectorInstance"; private RecordVO recordVO; private VerticalLayout mainLayout; private RecordDisplay recordDisplay; private DisplayConnectorInstancePresenter presenter; private Button editConnectorButton, startButton, stopButton, editSchemasButton, deleteDocumentsButton, indexationReportButton, errorsReportButton; private TextArea lastDocumentsField; private Label documentsCountLabel; public DisplayConnectorInstanceViewImpl() { presenter = new DisplayConnectorInstancePresenter(this); } @Override protected void initBeforeCreateComponents(ViewChangeEvent event) { presenter.forParams(event.getParameters()); } @Override protected void afterViewAssembled(ViewChangeEvent event) { presenter.viewAssembled(); } @Override public void setRecord(RecordVO recordVO) { this.recordVO = recordVO; } @Override protected String getTitle() { return presenter.getTitle(); } @Override protected Component buildMainComponent(ViewChangeEvent event) { mainLayout = new VerticalLayout(); mainLayout.setSizeFull(); mainLayout.setSpacing(true); recordDisplay = new RecordDisplay(recordVO, new ConnectorMetadataDisplayFactory()); Component documentsCountComponent = newDocumentsCountComponent(); lastDocumentsField = new TextArea(); lastDocumentsField.setEnabled(false); lastDocumentsField.setSizeFull(); mainLayout.addComponents(recordDisplay, documentsCountComponent, lastDocumentsField); mainLayout.setExpandRatio(lastDocumentsField, 1); return mainLayout; } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonClicked(); } }; } @Override protected List<Button> buildActionMenuButtons(ViewChangeEvent event) { List<Button> actionMenuButtons = new ArrayList<>(); editConnectorButton = new LinkButton($("DisplayConnectorInstanceView.edit")) { @Override protected void buttonClick(ClickEvent event) { presenter.editConnectorInstanceButtonClicked(); } }; startButton = new LinkButton($("DisplayConnectorInstanceView.start")) { @Override protected void buttonClick(ClickEvent event) { presenter.start(); } }; startButton.setVisible(presenter.isStartButtonVisible()); stopButton = new LinkButton($("DisplayConnectorInstanceView.stop")) { @Override protected void buttonClick(ClickEvent event) { presenter.stop(); } }; stopButton.setVisible(presenter.isStopButtonVisible()); editSchemasButton = new LinkButton($("DisplayConnectorInstanceView.editSchemas")) { @Override protected void buttonClick(ClickEvent event) { presenter.editSchemasButtonClicked(); } }; deleteDocumentsButton = new LinkButton($("DisplayConnectorInstanceView.deleteDocumentsButton")) { @Override protected void buttonClick(ClickEvent event) { presenter.deleteDocumentsButtonClicked(); } }; indexationReportButton = new LinkButton($("DisplayConnectorInstanceView.indexationReportButton")) { @Override protected void buttonClick(ClickEvent event) { presenter.indexationReportButtonClicked(); } }; errorsReportButton = new LinkButton($("DisplayConnectorInstanceView.errorsReportButton")) { @Override protected void buttonClick(ClickEvent event) { presenter.errorsReportButtonClicked(); } }; actionMenuButtons.add(startButton); actionMenuButtons.add(stopButton); actionMenuButtons.add(editConnectorButton); actionMenuButtons.add(editSchemasButton); actionMenuButtons.add(indexationReportButton); actionMenuButtons.add(errorsReportButton); actionMenuButtons.add(deleteDocumentsButton); return actionMenuButtons; } private BaseDisplay newDocumentsCountComponent() { String caption = $("DisplayConnectorInstanceView.docsCount"); Label captionLabel = new Label(caption); String captionId = BaseDisplay.STYLE_CAPTION + "-docsCount"; captionLabel.setId(captionId); captionLabel.addStyleName(captionId); String valueId = BaseDisplay.STYLE_VALUE + "-docsCount"; documentsCountLabel = new Label(""); documentsCountLabel.setId(valueId); documentsCountLabel.addStyleName(valueId); CaptionAndComponent captionsAndComponent = new CaptionAndComponent(captionLabel, documentsCountLabel); return new BaseDisplay(asList(captionsAndComponent)); } @Override protected boolean isBackgroundViewMonitor() { return true; } @Override protected void onBackgroundViewMonitor() { presenter.backgroundViewMonitor(); } @Override public void setDocumentsCount(long count) { documentsCountLabel.setValue("" + count); } @Override public void setLastDocuments(String lastDocuments) { lastDocumentsField.setValue(lastDocuments); } public class ConnectorMetadataDisplayFactory extends MetadataDisplayFactory { @Override public Component buildSingleValue(RecordVO recordVO, MetadataVO metadata, Object displayValue) { if (metadata.getCode().endsWith(ConnectorInstance.PROPERTIES_MAPPING)) { return null; } else if (metadata.getCode().endsWith(ConnectorInstance.TRAVERSAL_CODE)) { return null; } else { return super.buildSingleValue(recordVO, metadata, displayValue); } } } }