package com.constellio.app.services.schemas.bulkImport;
import static com.constellio.data.utils.LangUtils.replacingLiteral;
import static com.constellio.model.entities.schemas.Schemas.LEGACY_ID;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from;
import static java.io.File.separator;
import static java.util.Arrays.asList;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.constellio.app.services.schemas.bulkImport.data.ImportDataProvider;
import com.constellio.app.services.schemas.bulkImport.data.ImportServices;
import com.constellio.data.io.services.facades.IOServices;
import com.constellio.data.utils.LangUtils.StringReplacer;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.frameworks.validation.ValidationException;
import com.constellio.model.services.contents.ContentManager;
import com.constellio.model.services.factories.ModelLayerFactory;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.schemas.MetadataSchemasManager;
import com.constellio.model.services.search.SearchServices;
public class RecordsImportServices implements ImportServices {
private ModelLayerFactory modelLayerFactory;
private MetadataSchemasManager schemasManager;
RecordServices recordServices;
private ContentManager contentManager;
private IOServices ioServices;
private SearchServices searchServices;
private int batchSize;
private URLResolver urlResolver;
public RecordsImportServices(ModelLayerFactory modelLayerFactory) {
this(modelLayerFactory, new DefaultURLResolver(modelLayerFactory.getIOServicesFactory().newIOServices()));
}
public RecordsImportServices(ModelLayerFactory modelLayerFactory, URLResolver urlResolver) {
this.modelLayerFactory = modelLayerFactory;
this.batchSize = batchSize;
schemasManager = modelLayerFactory.getMetadataSchemasManager();
recordServices = modelLayerFactory.newRecordServices();
searchServices = modelLayerFactory.newSearchServices();
contentManager = modelLayerFactory.getContentManager();
ioServices = modelLayerFactory.getIOServicesFactory().newIOServices();
this.urlResolver = urlResolver;
}
@Override
public BulkImportResults bulkImport(ImportDataProvider importDataProvider,
final BulkImportProgressionListener bulkImportProgressionListener,
final User user, List<String> collections)
throws RecordsImportServicesRuntimeException, ValidationException {
return bulkImport(importDataProvider, bulkImportProgressionListener, user, collections, new BulkImportParams());
}
@Override
public BulkImportResults bulkImport(ImportDataProvider importDataProvider,
final BulkImportProgressionListener bulkImportProgressionListener,
final User user, List<String> collections, BulkImportParams params)
throws RecordsImportServicesRuntimeException, ValidationException {
return newExecutor(importDataProvider, bulkImportProgressionListener, user, collections, params).bulkImport();
}
RecordsImportServicesExecutor newExecutor(ImportDataProvider importDataProvider,
BulkImportProgressionListener bulkImportProgressionListener, User user, List<String> collections,
BulkImportParams params)
throws ValidationException {
URLResolver urlResolver = new DefaultURLResolver(modelLayerFactory.getIOServicesFactory().newIOServices());
return new RecordsImportServicesExecutor(modelLayerFactory, recordServices, urlResolver, importDataProvider,
bulkImportProgressionListener, user, collections, params);
}
public BulkImportResults bulkImport(ImportDataProvider importDataProvider,
final BulkImportProgressionListener bulkImportProgressionListener, final User user)
throws RecordsImportServicesRuntimeException, ValidationException {
return bulkImport(importDataProvider, bulkImportProgressionListener, user, new ArrayList<String>());
}
public BulkImportResults bulkImport(ImportDataProvider importDataProvider,
final BulkImportProgressionListener bulkImportProgressionListener, final User user,
final BulkImportParams params)
throws RecordsImportServicesRuntimeException, ValidationException {
return bulkImport(importDataProvider, bulkImportProgressionListener, user, new ArrayList<String>(), params);
}
}