package com.constellio.app.modules.rm.extensions.app; import com.constellio.app.api.extensions.RecordFieldFactoryExtension; import com.constellio.app.api.extensions.params.RecordFieldFactoryExtensionParams; import com.constellio.app.modules.rm.ui.components.copyRetentionRule.RecordWithCopyRetentionRuleFieldFactory; import com.constellio.app.modules.rm.wrappers.Document; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.ui.framework.components.MetadataFieldFactory; import com.constellio.app.ui.framework.components.RecordFieldFactory; import com.constellio.model.services.search.query.logical.LogicalSearchQuery; import java.util.List; public class BatchProcessingRecordFactoryExtension extends RecordFieldFactoryExtension { public static final String BATCH_PROCESSING_FIELD_FACTORY_KEY = BatchProcessingRecordFactoryExtension.class.getName(); @Override public RecordFieldFactory newRecordFieldFactory(RecordFieldFactoryExtensionParams p) { if (p instanceof BatchProcessingFieldFactoryExtensionParams) { BatchProcessingFieldFactoryExtensionParams params = (BatchProcessingFieldFactoryExtensionParams) p; RecordFieldFactory recordFieldFactory; String key = params.getKey(); String schemaType = params.getSchemaType(); if (BATCH_PROCESSING_FIELD_FACTORY_KEY.equals(key) && (schemaType.equals(Folder.SCHEMA_TYPE) || schemaType.equals(Document.SCHEMA_TYPE))) { recordFieldFactory = new RecordWithCopyRetentionRuleFieldFactory(schemaType, params.getRecordIdThatCopyRetentionRuleDependantOn() , params.getSelectedTypeId(), params.getQuery(), params.getSelectedRecords()); } else { recordFieldFactory = super.newRecordFieldFactory(params); } return recordFieldFactory; } else { return null; } } public static class BatchProcessingFieldFactoryExtensionParams extends RecordFieldFactoryExtensionParams { private String selectedTypeId; private final String schemaType; private String recordIdThatCopyRetentionRuleDependantOn; private List<String> selectedRecords; private LogicalSearchQuery query; public BatchProcessingFieldFactoryExtensionParams(String key, MetadataFieldFactory metadataFieldFactory, String schemaType, LogicalSearchQuery query) { super(key, metadataFieldFactory); this.schemaType = schemaType; this.query = query; } public BatchProcessingFieldFactoryExtensionParams(String key, MetadataFieldFactory metadataFieldFactory, String schemaType, List<String> selectedRecords) { super(key, metadataFieldFactory); this.schemaType = schemaType; this.selectedRecords = selectedRecords; } public String getSchemaType() { return schemaType; } public String getSelectedTypeId() { return selectedTypeId; } public BatchProcessingFieldFactoryExtensionParams setSelectedTypeId(String selectedTypeId) { this.selectedTypeId = selectedTypeId; return this; } public String getRecordIdThatCopyRetentionRuleDependantOn() { return recordIdThatCopyRetentionRuleDependantOn; } public BatchProcessingFieldFactoryExtensionParams setRecordIdThatCopyRetentionRuleDependantOn( String recordIdThatCopyRetentionRuleDependantOn) { this.recordIdThatCopyRetentionRuleDependantOn = recordIdThatCopyRetentionRuleDependantOn; return this; } public LogicalSearchQuery getQuery() { return query; } public BatchProcessingFieldFactoryExtensionParams setQuery(LogicalSearchQuery query) { this.query = query; return this; } public List<String> getSelectedRecords() { return selectedRecords; } public BatchProcessingFieldFactoryExtensionParams setSelectedRecords(List<String> selectedRecords) { this.selectedRecords = selectedRecords; return this; } } }