package com.constellio.model.services.records;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from;
import java.util.Iterator;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.schemas.MetadataSchemaType;
import com.constellio.model.services.factories.ModelLayerFactory;
import com.constellio.model.services.records.cache.CacheConfig;
import com.constellio.model.services.records.cache.RecordsCache;
import com.constellio.model.services.search.query.logical.LogicalSearchQuery;
public class RecordCachesServices {
ModelLayerFactory modelLayerFactory;
public RecordCachesServices(ModelLayerFactory modelLayerFactory) {
this.modelLayerFactory = modelLayerFactory;
}
public void loadCachesIn(String collection) {
RecordsCache recordsCache = modelLayerFactory.getRecordsCaches().getCache(collection);
for (CacheConfig config : recordsCache.getConfiguredCaches()) {
if (config.isPermanent()) {
MetadataSchemaType type = modelLayerFactory.getMetadataSchemasManager().getSchemaTypes(collection)
.getSchemaType(config.getSchemaType());
LogicalSearchQuery query = new LogicalSearchQuery().setCondition(from(type).returnAll());
Iterator<Record> recordsIterator = modelLayerFactory.newSearchServices().recordsIterator(query, 5000);
while (recordsIterator.hasNext()) {
recordsCache.insert(recordsIterator.next());
}
}
}
}
}