package com.constellio.app.modules.rm.ui.components.folder; import static com.constellio.app.modules.rm.wrappers.Folder.ACTUAL_DEPOSIT_DATE; import static com.constellio.app.modules.rm.wrappers.Folder.ACTUAL_DESTRUCTION_DATE; import static com.constellio.app.modules.rm.wrappers.Folder.ACTUAL_TRANSFER_DATE; import static com.constellio.app.modules.rm.wrappers.Folder.ADMINISTRATIVE_UNIT_ENTERED; import static com.constellio.app.modules.rm.wrappers.Folder.BORROWING_TYPE; import static com.constellio.app.modules.rm.wrappers.Folder.BORROW_PREVIEW_RETURN_DATE; import static com.constellio.app.modules.rm.wrappers.Folder.BORROW_RETURN_DATE; import static com.constellio.app.modules.rm.wrappers.Folder.CATEGORY_ENTERED; import static com.constellio.app.modules.rm.wrappers.Folder.CONTAINER; import static com.constellio.app.modules.rm.wrappers.Folder.COPY_STATUS_ENTERED; import static com.constellio.app.modules.rm.wrappers.Folder.LINEAR_SIZE; import static com.constellio.app.modules.rm.wrappers.Folder.MAIN_COPY_RULE_ID_ENTERED; import static com.constellio.app.modules.rm.wrappers.Folder.OPENING_DATE; import static com.constellio.app.modules.rm.wrappers.Folder.PARENT_FOLDER; import static com.constellio.app.modules.rm.wrappers.Folder.RETENTION_RULE_ENTERED; import static com.constellio.app.modules.rm.wrappers.Folder.TYPE; import static com.constellio.app.modules.rm.wrappers.Folder.UNIFORM_SUBDIVISION_ENTERED; import java.util.List; import com.constellio.app.entities.schemasDisplay.enums.MetadataInputType; import com.constellio.app.modules.rm.model.CopyRetentionRule; import com.constellio.app.modules.rm.ui.components.RMRecordFieldFactory; import com.constellio.app.modules.rm.ui.components.folder.fields.CustomFolderField; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderActualDepositDateFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderActualDestructionDateFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderActualTransferDateFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderAdministrativeUnitFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderBorrpwingTypeFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderCategoryFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderContainerFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderCopyRuleFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderCopyStatusEnteredFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderLinearSizeFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderOpeningDateFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderParentFolderFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderPreviewReturnDateFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderRetentionRuleFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderReturnDateFieldImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderTypeFieldComboBoxImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderTypeFieldLookupImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderTypeFieldOptionGroupImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.FolderUniformSubdivisionFieldImpl; import com.constellio.app.ui.entities.MetadataVO; import com.constellio.app.ui.entities.RecordVO; import com.vaadin.ui.Field; public class FolderFieldFactory extends RMRecordFieldFactory { private final String collection; private final List<CopyRetentionRule> rules; public FolderFieldFactory(String collection, List<CopyRetentionRule> rules) { this.collection = collection; this.rules = rules; } @Override public Field<?> build(RecordVO recordVO, MetadataVO metadataVO) { Field<?> field; String[] taxonomyCodes = metadataVO.getTaxonomyCodes(); MetadataInputType inputType = metadataVO.getMetadataInputType(); switch (metadataVO.getLocalCode()) { case TYPE: if (MetadataInputType.LOOKUP.equals(inputType)) { field = new FolderTypeFieldLookupImpl(); } else if (MetadataInputType.RADIO_BUTTONS.equals(inputType)) { field = new FolderTypeFieldOptionGroupImpl(); } else { field = new FolderTypeFieldComboBoxImpl(); } break; case PARENT_FOLDER: field = new FolderParentFolderFieldImpl(taxonomyCodes); break; case ADMINISTRATIVE_UNIT_ENTERED: field = new FolderAdministrativeUnitFieldImpl(); break; case CATEGORY_ENTERED: field = new FolderCategoryFieldImpl(); break; case UNIFORM_SUBDIVISION_ENTERED: field = new FolderUniformSubdivisionFieldImpl(); break; case RETENTION_RULE_ENTERED: field = new FolderRetentionRuleFieldImpl(collection); break; case COPY_STATUS_ENTERED: field = new FolderCopyStatusEnteredFieldImpl(); break; case ACTUAL_TRANSFER_DATE: field = new FolderActualTransferDateFieldImpl(); break; case ACTUAL_DEPOSIT_DATE: field = new FolderActualDepositDateFieldImpl(); break; case ACTUAL_DESTRUCTION_DATE: field = new FolderActualDestructionDateFieldImpl(); break; case CONTAINER: field = new FolderContainerFieldImpl(); break; case LINEAR_SIZE: field = new FolderLinearSizeFieldImpl(); break; case BORROW_PREVIEW_RETURN_DATE: field = new FolderPreviewReturnDateFieldImpl(); break; case BORROW_RETURN_DATE: field = new FolderReturnDateFieldImpl(); break; case BORROWING_TYPE: field = new FolderBorrpwingTypeFieldImpl(); break; case OPENING_DATE: field = new FolderOpeningDateFieldImpl(); break; case MAIN_COPY_RULE_ID_ENTERED: field = new FolderCopyRuleFieldImpl(rules); break; default: field = super.build(recordVO, metadataVO); } if (field instanceof CustomFolderField) { postBuild(field, recordVO, metadataVO); } return field; } }