package com.constellio.model.services.batch.controller; import java.util.ArrayList; import java.util.List; import com.constellio.model.entities.batchprocess.BatchProcess; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.search.SearchServices; public class BatchProcessTasksFactory { private final RecordServices recordServices; private final SearchServices searchServices; private final TaskList taskList; public BatchProcessTasksFactory(RecordServices recordServices, SearchServices searchServices, TaskList taskList) { this.recordServices = recordServices; this.searchServices = searchServices; this.taskList = taskList; } public List<BatchProcessTask> createBatchProcessTasks(BatchProcess batchProcess, List<Record> records, List<String> errorList, int numberOfRecordsPerTask, MetadataSchemasManager schemasManager) { MetadataSchemaTypes metadataSchemaTypes = schemasManager.getSchemaTypes(batchProcess.getCollection()); List<BatchProcessTask> tasks = new ArrayList<>(); for (int i = 0; i < records.size(); i += numberOfRecordsPerTask) { List<Record> recordsForTask = records.subList(i, Math.min(records.size(), i + numberOfRecordsPerTask)); BatchProcessTask reindexationTask = new BatchProcessTask(taskList, recordsForTask, batchProcess.getAction(), recordServices, metadataSchemaTypes, searchServices); tasks.add(reindexationTask); } return tasks; } }