package com.constellio.app.services.importExport.records.writers; import java.io.File; import java.util.HashMap; import java.util.Map; import com.constellio.app.services.schemas.bulkImport.data.ImportDataOptions; import com.constellio.data.utils.ImpossibleRuntimeException; public class ImportRecordOfSameCollectionWriter { File outputFolder; Map<String, ImportDataOptions> options = new HashMap<>(); Map<String, ImportRecordOfSameTypeWriter> writers = new HashMap<>(); public ImportRecordOfSameCollectionWriter(File outputFolder) { this.outputFolder = outputFolder; } public void write(ModifiableImportRecord importRecord) { if (importRecord.getCollection() == null) { throw new RuntimeException("Collection is required!"); } if (importRecord.getSchemaType() == null) { throw new RuntimeException("Schema type is required!"); } ImportRecordOfSameTypeWriter schemaTypeRecordsWriter = writers.get(importRecord.getSchemaType()); if (schemaTypeRecordsWriter == null) { File typefile = new File(outputFolder, importRecord.getSchemaType() + ".xml"); schemaTypeRecordsWriter = new ImportRecordOfSameTypeWriter(typefile); writers.put(importRecord.getSchemaType(), schemaTypeRecordsWriter); } schemaTypeRecordsWriter.write(importRecord); } public void setOptions(String schemaType, ImportDataOptions options) { ImportRecordOfSameTypeWriter schemaTypeRecordsWriter = writers.get(schemaType); if (schemaTypeRecordsWriter == null) { File typefile = new File(outputFolder, schemaType + ".xml"); schemaTypeRecordsWriter = new ImportRecordOfSameTypeWriter(typefile); writers.put(schemaType, schemaTypeRecordsWriter); schemaTypeRecordsWriter.write(options); } else { throw new ImpossibleRuntimeException("Cannot set options twice or once a record has been writen"); } } public void close() { for (ImportRecordOfSameTypeWriter writer : writers.values()) { writer.close(); } } }