package com.revolsys.gis.parallel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.revolsys.parallel.channel.Channel;
import com.revolsys.parallel.process.BaseInOutProcess;
import com.revolsys.record.Record;
import com.revolsys.record.comparator.RecordFieldComparator;
public class Sort extends BaseInOutProcess<Record, Record> {
private Comparator<Record> comparator;
private String fieldName;
private final List<Record> objects = new ArrayList<>();
public Comparator<Record> getComparator() {
return this.comparator;
}
public String getFieldName() {
return this.fieldName;
}
@Override
protected void postRun(final Channel<Record> in, final Channel<Record> out) {
if (this.comparator != null) {
Collections.sort(this.objects, this.comparator);
}
for (final Record object : this.objects) {
out.write(object);
}
}
@Override
protected void process(final Channel<Record> in, final Channel<Record> out, final Record object) {
this.objects.add(object);
}
public void setComparator(final Comparator<Record> comparator) {
this.comparator = comparator;
}
public void setFieldName(final String fieldName) {
this.fieldName = fieldName;
this.comparator = new RecordFieldComparator(fieldName);
}
}