package org.onexus.website.api.pages.browser.filters.operations;
import org.onexus.collection.api.query.Filter;
import org.onexus.collection.api.query.In;
import java.util.*;
public class InListOperation extends FilterOperation {
public static InListOperation INSTANCE = new InListOperation();
private InListOperation() {
super("in list", "in", true);
}
@Override
public Filter createFilter(String alias, String fieldId, Object value) {
In filter = new In(alias, fieldId);
for (String val : parseValues(value)) {
filter.addValue(val.trim());
}
return filter;
}
private List<String> parseValues(Object value) {
if (value == null) {
return Collections.EMPTY_LIST;
}
return Arrays.asList(String.valueOf(value).split(","));
}
@Override
public String createTitle(String headerTitle, Object value) {
StringBuilder title = new StringBuilder();
title.append(headerTitle);
title.append(" ");
title.append(getSymbol());
title.append(" (");
Iterator<String> values = parseValues(value).iterator();
while (values.hasNext()) {
title.append("'").append(values.next().trim()).append("'");
if (values.hasNext()) {
title.append(",");
}
}
title.append(")");
return title.toString();
}
}