package com.constellio.app.ui.framework.components.table.columns;
import java.util.ArrayList;
import java.util.List;
import com.constellio.app.entities.schemasDisplay.SchemaDisplayConfig;
import com.constellio.app.services.factories.AppLayerFactory;
import com.constellio.app.services.schemasDisplay.SchemasDisplayManager;
import com.constellio.app.ui.application.ConstellioUI;
import com.constellio.app.ui.entities.MetadataSchemaVO;
import com.constellio.app.ui.entities.MetadataVO;
import com.constellio.app.ui.framework.components.table.RecordVOTable;
import com.constellio.app.ui.pages.base.SessionContext;
import com.vaadin.ui.Table;
public class RecordVOTableColumnsManager extends TableColumnsManager {
public RecordVOTableColumnsManager() {
}
public RecordVOTableColumnsManager(RecordVOTable table, String tableId) {
super(table, tableId);
}
@Override
protected List<String> getDefaultVisibleColumnIds(Table table) {
List<String> defaultVisibleColumnIds;
RecordVOTable recordVOTable = (RecordVOTable) table;
List<MetadataSchemaVO> schemaVOs = recordVOTable.getSchemas();
if (!schemaVOs.isEmpty()) {
defaultVisibleColumnIds = new ArrayList<>();
SessionContext sessionContext = ConstellioUI.getCurrentSessionContext();
String collection = sessionContext.getCurrentCollection();
AppLayerFactory appLayerFactory = constellioFactories.getAppLayerFactory();
SchemasDisplayManager schemasDisplayManager = appLayerFactory.getMetadataSchemasDisplayManager();
for (MetadataSchemaVO schemaVO : schemaVOs) {
String schemaCode = schemaVO.getCode();
SchemaDisplayConfig schemaDisplayConfig = schemasDisplayManager.getSchema(collection, schemaCode);
defaultVisibleColumnIds.addAll(schemaDisplayConfig.getTableMetadataCodes());
}
Object[] tableVisibleColumns = table.getVisibleColumns();
for (Object tableVisibleColumn : tableVisibleColumns) {
if (!(tableVisibleColumn instanceof MetadataVO)) {
String columnId = toColumnId(tableVisibleColumn);
defaultVisibleColumnIds.add(columnId);
}
}
} else {
defaultVisibleColumnIds = super.getDefaultVisibleColumnIds(table);
}
return defaultVisibleColumnIds;
}
@Override
protected String toColumnId(Object propertyId) {
String columnId;
if (propertyId instanceof MetadataVO) {
columnId = ((MetadataVO) propertyId).getCode();
} else {
columnId = super.toColumnId(propertyId);
}
return columnId;
}
}