group plots by a single field
This commit is contained in:
@@ -11,6 +11,7 @@ import org.lucares.pdb.api.Tags;
|
||||
public class Grouping {
|
||||
|
||||
public static final String NO_GROUPING = null;
|
||||
public static final String DEFAULT_GROUP = "<default>";
|
||||
private final List<Group> groups = new ArrayList<>();
|
||||
|
||||
private Grouping(final Group group) {
|
||||
@@ -25,7 +26,7 @@ public class Grouping {
|
||||
|
||||
final Grouping result;
|
||||
if (groupByField == NO_GROUPING) {
|
||||
final Group group = new Group(null, pdbReaders);
|
||||
final Group group = new Group(Tags.EMPTY, pdbReaders);
|
||||
|
||||
result = new Grouping(group);
|
||||
} else {
|
||||
@@ -35,10 +36,10 @@ public class Grouping {
|
||||
final Tags tags = pdbReader.getPdbFile().getTags();
|
||||
final String value = tags.getValue(groupByField);
|
||||
|
||||
if (value != null) {
|
||||
addIfNotExists(grouping, groupByField, value);
|
||||
grouping.get(value).addReader(pdbReader);
|
||||
}
|
||||
final String groupName = value != null ? value : DEFAULT_GROUP;
|
||||
|
||||
addIfNotExists(grouping, groupByField, groupName);
|
||||
grouping.get(groupName).addReader(pdbReader);
|
||||
}
|
||||
result = new Grouping(grouping.values());
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import java.util.logging.Logger;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import org.lucares.ludb.Field;
|
||||
import org.lucares.ludb.H2DB;
|
||||
import org.lucares.ludb.Proposal;
|
||||
import org.lucares.pdb.api.Entry;
|
||||
@@ -22,7 +23,7 @@ import org.lucares.pdb.api.GroupResult;
|
||||
import org.lucares.pdb.api.Result;
|
||||
import org.lucares.pdb.api.Tags;
|
||||
|
||||
public class PerformanceDb implements AutoCloseable {
|
||||
public class PerformanceDb implements AutoCloseable, CollectionUtils {
|
||||
private static final Logger LOGGER = Logger.getLogger(PerformanceDb.class.getCanonicalName());
|
||||
|
||||
private final TagsToFile tagsToFile;
|
||||
@@ -178,4 +179,10 @@ public class PerformanceDb implements AutoCloseable {
|
||||
public List<Proposal> autocomplete(final String query, final int caretIndex) {
|
||||
return db.proposeTagForQuery(query, caretIndex);
|
||||
}
|
||||
|
||||
public List<String> getFields() {
|
||||
final List<Field> fields = db.getAvailableFields("");
|
||||
|
||||
return map(fields, Field::getName);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user