package com.constellio.app.modules.rm.extensions.imports; import java.util.Map; import org.apache.commons.lang3.StringUtils; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.modules.rm.wrappers.ContainerRecord; import com.constellio.app.modules.rm.wrappers.Document; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.model.entities.records.wrappers.Event; import com.constellio.model.extensions.behaviors.RecordImportExtension; import com.constellio.model.extensions.events.recordsImport.BuildParams; import com.constellio.model.extensions.events.recordsImport.PrevalidationParams; import com.constellio.model.services.factories.ModelLayerFactory; public class EventImportExtension extends RecordImportExtension { public static final String TYPE_REQUIRED = "typeRequired"; RMSchemasRecordsServices rm; public EventImportExtension(String collection, ModelLayerFactory modelLayerFactory) { this.rm = new RMSchemasRecordsServices(collection, modelLayerFactory); } @Override public void prevalidate(PrevalidationParams params) { Map<String, Object> fields = params.getImportRecord().getFields(); Object type = fields.get("type"); if (type == null || !(type instanceof String) || StringUtils.isBlank((String) type)) { params.getErrors().add(RetentionRuleImportExtension.class, TYPE_REQUIRED); } } @Override public String getDecoratedSchemaType() { return Event.SCHEMA_TYPE; } @Override public void build(BuildParams params) { Event event = rm.wrapEvent(params.getRecord()); if (event.getRecordId() != null) { if (event.getType().toLowerCase().contains(Folder.SCHEMA_TYPE.toLowerCase())) { Folder folder = rm.getFolderWithLegacyId(event.getRecordId()); event.setRecordId(folder.getId()); event.setTitle(folder.getTitle()); } if (event.getType().toLowerCase().contains(Document.SCHEMA_TYPE.toLowerCase())) { Document document = rm.getDocumentByLegacyId(event.getRecordId()); event.setRecordId(document.getId()); event.setTitle(document.getTitle()); } if (event.getType().toLowerCase().contains(ContainerRecord.SCHEMA_TYPE.toLowerCase())) { ContainerRecord containerRecord = rm.getContainerRecordWithLegacyId(event.getRecordId()); event.setRecordId(containerRecord.getId()); event.setTitle(containerRecord.getTitle()); } } } }