package eu.dnetlib.functionality.cql; import java.util.HashSet; import java.util.Set; import org.z3950.zing.cql.CQLBooleanNode; import org.z3950.zing.cql.CQLNode; import org.z3950.zing.cql.CQLTermNode; public class CQLFieldLister { public Set listFields(final CQLNode node) { return doFilter(node, new HashSet()); } private Set doFilter(CQLNode node, Set fields) { if (node instanceof CQLBooleanNode) { return doFilter((CQLBooleanNode) node, fields); } if (node instanceof CQLTermNode) { return doFilter((CQLTermNode) node, fields); } if (node == null) { return fields; } throw new RuntimeException("error choice"); } private Set doFilter(CQLBooleanNode node, Set fields) { Set left = doFilter(node.left, fields); Set right = doFilter(node.right, fields); left.addAll(right); return left; } private static Set doFilter(CQLTermNode node, Set terms) { terms.add(node.getIndex()); return terms; } }