package com.constellio.app.services.schemasDisplay; import java.util.List; import com.constellio.app.entities.schemasDisplay.MetadataDisplayConfig; import com.constellio.app.entities.schemasDisplay.SchemaDisplayConfig; import com.constellio.app.entities.schemasDisplay.SchemaTypeDisplayConfig; import com.constellio.app.entities.schemasDisplay.SchemaTypesDisplayConfig; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.entities.schemas.MetadataSchemaType; import com.constellio.model.entities.schemas.MetadataSchemaTypes; public class SchemaTypesDisplayTransactionBuilder { MetadataSchemaTypes types; SchemasDisplayManager schemasDisplayManager; SchemaDisplayManagerTransaction transaction; public SchemaTypesDisplayTransactionBuilder(MetadataSchemaTypes types, SchemasDisplayManager schemasDisplayManager) { this.transaction = new SchemaDisplayManagerTransaction(); this.types = types; this.schemasDisplayManager = schemasDisplayManager; } public SchemaTypeDisplayTransactionBuilder in(String typeCode) { return new SchemaTypeDisplayTransactionBuilder(types.getSchemaType(typeCode), schemasDisplayManager, this); } public SchemaDisplayManagerTransaction build() { return transaction; } public void updateAllSchemas(String typeCode, SchemaDisplayAlteration schemaDisplayAlteration) { for (MetadataSchema schema : types.getSchemaType(typeCode).getAllSchemas()) { SchemaDisplayConfig config = updateSchemaDisplayConfig(schema); SchemaDisplayConfig modifiedConfig = schemaDisplayAlteration.alter(config); if (modifiedConfig != config) { transaction.addReplacing(modifiedConfig); } } } public MetadataDisplayConfig updateMetadataDisplayConfig(Metadata metadata) { for (MetadataDisplayConfig config : transaction.modifiedMetadatas) { if (config.getMetadataCode().equals(metadata.getCode())) { return config; } } return schemasDisplayManager.getMetadata(types.getCollection(), metadata.getCode()); } public SchemaTypeDisplayConfig updateSchemaTypeDisplayConfig(MetadataSchemaType schemaType) { for (SchemaTypeDisplayConfig config : transaction.modifiedTypes) { if (config.getSchemaType().equals(schemaType.getCode())) { return config; } } return schemasDisplayManager.getType(types.getCollection(), schemaType.getCode()); } public SchemaDisplayConfig updateSchemaDisplayConfig(MetadataSchema schema) { for (SchemaDisplayConfig config : transaction.modifiedSchemas) { if (config.getSchemaCode().equals(schema.getCode())) { return config; } } return schemasDisplayManager.getSchema(types.getCollection(), schema.getCode()); } public SchemaTypesDisplayTransactionBuilder add(SchemaTypeDisplayConfig typeDisplayConfig) { transaction.add(typeDisplayConfig); return this; } public SchemaTypesDisplayTransactionBuilder add(SchemaDisplayConfig schemaDisplayConfig) { transaction.add(schemaDisplayConfig); return this; } public SchemaTypesDisplayTransactionBuilder add(MetadataDisplayConfig metadataDisplayConfig) { transaction.add(metadataDisplayConfig); return this; } public SchemaTypesDisplayTransactionBuilder addReplacing(SchemaDisplayConfig schemaDisplayConfig) { transaction.addReplacing(schemaDisplayConfig); return this; } public SchemaTypesDisplayTransactionBuilder addReplacing(MetadataDisplayConfig metadataDisplayConfig) { transaction.addReplacing(metadataDisplayConfig); return this; } public SchemaTypesDisplayTransactionBuilder setModifiedCollectionTypes( SchemaTypesDisplayConfig modifiedCollectionTypes) { transaction.setModifiedCollectionTypes(modifiedCollectionTypes); return this; } public SchemaTypesDisplayConfig getModifiedCollectionTypes() { return transaction.getModifiedCollectionTypes(); } public MetadataDisplayConfig getMetadataDisplayConfig(String code) { return transaction.getMetadataDisplayConfig(code); } public List<MetadataDisplayConfig> getModifiedMetadatas() { return transaction.getModifiedMetadatas(); } public List<SchemaTypeDisplayConfig> getModifiedTypes() { return transaction.getModifiedTypes(); } public SchemaDisplayConfig getModifiedSchema(String schemaCode) { return transaction.getModifiedSchema(schemaCode); } public String getCollection() { return transaction.getCollection(); } public List<SchemaDisplayConfig> getModifiedSchemas() { return transaction.getModifiedSchemas(); } }