package com.constellio.app.ui.framework.buttons.report; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.constellio.app.services.schemasDisplay.SchemasDisplayManager; import com.constellio.app.ui.application.ConstellioUI; import com.constellio.app.ui.entities.FormMetadataVO; import com.constellio.app.ui.framework.builders.MetadataToFormVOBuilder; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.schemas.SchemaUtils; public class ReportConfigurationPanelPresenter { protected ReportConfigurationPresenter presenter; public ReportConfigurationPanelPresenter(ReportConfigurationPresenter presenter) { this.presenter = presenter; } public List<FormMetadataVO> getMetadata() { List<FormMetadataVO> formMetadataVOs = new ArrayList<>(); MetadataToFormVOBuilder builder = new MetadataToFormVOBuilder(ConstellioUI.getCurrentSessionContext()); SchemasDisplayManager displayManager = this.presenter.getSchemasDisplayManager(); for (Metadata metadata : presenter.getAllSchemaTypeMetadata()) { if (this.isAllowedMetadata(metadata)) { FormMetadataVO metadataVO = builder .build(metadata, displayManager, presenter.getSchemaTypeCode(), ConstellioUI.getCurrentSessionContext()); formMetadataVOs.add(metadataVO); } } return formMetadataVOs; } private boolean isAllowedMetadata(Metadata metadata) { boolean result; List<Metadata> restrictedMetadata = Arrays.asList(Schemas.SCHEMA, Schemas.VERSION, Schemas.PATH, Schemas.PRINCIPAL_PATH, Schemas.PARENT_PATH, Schemas.REMOVED_AUTHORIZATIONS, Schemas.IS_DETACHED_AUTHORIZATIONS, Schemas.TOKENS, Schemas.COLLECTION, Schemas.FOLLOWERS, Schemas.LOGICALLY_DELETED_STATUS, Schemas.TITLE, Schemas.ALL_REMOVED_AUTHS, Schemas.ATTACHED_ANCESTORS); List<MetadataValueType> restrictedType = Arrays.asList(MetadataValueType.STRUCTURE, MetadataValueType.CONTENT); List<String> localCodes = new SchemaUtils().toMetadataLocalCodes(restrictedMetadata); result = !metadata.isMultivalue(); //result = result && !restrictedType.contains(metadata.getValueType()); result = result && !localCodes.contains(metadata.getCode()); return result; } public void saveButtonClicked(List<FormMetadataVO> values) { //TODO } public void cancelButtonClicked() { //TODO } public List<FormMetadataVO> getValueMetadatas(String collection) { MetadataSchemasManager schemasManager = presenter.getMetadataSchemasManager(); SchemasDisplayManager displayManager = presenter.getSchemasDisplayManager(); // List<String> codeList = displayManager.getSchema(collection, presenter.getSchemaCode()).getSearchResultsMetadataCodes(); List<FormMetadataVO> formMetadataVOs = new ArrayList<>(); MetadataToFormVOBuilder builder = new MetadataToFormVOBuilder(ConstellioUI.getCurrentSessionContext()); /*for (String metadataCode : codeList) { Metadata metadata = schemasManager.getSchemaTypes(collection).getMetadata(metadataCode); formMetadataVOs.add(builder.build(metadata, displayManager, presenter.getSchemaTypeCode())); }*/ return formMetadataVOs; } }