package com.revolsys.record.io;
import java.util.ArrayList;
import java.util.List;
import com.revolsys.geometry.model.BoundingBox;
import com.revolsys.io.Reader;
import com.revolsys.parallel.process.AbstractProcess;
import com.revolsys.record.Record;
import com.revolsys.record.query.Query;
import com.revolsys.record.schema.RecordDefinition;
import com.revolsys.record.schema.RecordStore;
public class RecordStoreQueryTask extends AbstractProcess {
private final BoundingBox boundingBox;
private List<Record> objects;
private final String path;
private final RecordStore recordStore;
public RecordStoreQueryTask(final RecordStore recordStore, final String path,
final BoundingBox boundingBox) {
this.recordStore = recordStore;
this.path = path;
this.boundingBox = boundingBox;
}
public void cancel() {
this.objects = null;
}
@Override
public String getBeanName() {
return getClass().getName();
}
@Override
public void run() {
this.objects = new ArrayList<>();
final RecordDefinition recordDefinition = this.recordStore.getRecordDefinition(this.path);
final Query query = Query.intersects(recordDefinition, this.boundingBox);
try (
final Reader<Record> reader = this.recordStore.getRecords(query)) {
for (final Record object : reader) {
try {
this.objects.add(object);
} catch (final NullPointerException e) {
return;
}
}
}
}
@Override
public void setBeanName(final String name) {
}
}