Search in sources :

Example 1 with CQLPrefixNode

use of org.z3950.zing.cql.CQLPrefixNode in project okapi by folio-org.

the class CQLUtil method reducer.

public static CQLNode reducer(CQLNode vn1, CQLTermNode tn, Comparator<CQLTermNode> cmp) {
    if (vn1 instanceof CQLBooleanNode) {
        return reduceBoolean((CQLBooleanNode) vn1, tn, cmp);
    } else if (vn1 instanceof CQLTermNode) {
        CQLTermNode n1 = (CQLTermNode) vn1;
        if (cmp != null && cmp.compare(n1, tn) == 0) {
            return null;
        }
        return new CQLTermNode(n1.getIndex(), n1.getRelation(), n1.getTerm());
    } else if (vn1 instanceof CQLSortNode) {
        CQLSortNode n1 = (CQLSortNode) vn1;
        CQLNode n2 = reducer(n1.getSubtree(), tn, cmp);
        if (n2 == null) {
            return null;
        } else {
            CQLSortNode sn = new CQLSortNode(n2);
            List<ModifierSet> mods = n1.getSortIndexes();
            for (ModifierSet mSet : mods) {
                sn.addSortIndex(mSet);
            }
            return sn;
        }
    } else if (vn1 instanceof CQLPrefixNode) {
        CQLPrefixNode n1 = (CQLPrefixNode) vn1;
        CQLNode n2 = reducer(n1.getSubtree(), tn, cmp);
        if (n2 == null) {
            return null;
        } else {
            CQLPrefix prefix = n1.getPrefix();
            return new CQLPrefixNode(prefix.getName(), prefix.getIdentifier(), n2);
        }
    } else {
        throw new IllegalArgumentException("unknown type for CQLNode: " + vn1.toString());
    }
}
Also used : CQLSortNode(org.z3950.zing.cql.CQLSortNode) CQLTermNode(org.z3950.zing.cql.CQLTermNode) CQLPrefixNode(org.z3950.zing.cql.CQLPrefixNode) CQLBooleanNode(org.z3950.zing.cql.CQLBooleanNode) CQLPrefix(org.z3950.zing.cql.CQLPrefix) CQLNode(org.z3950.zing.cql.CQLNode) ModifierSet(org.z3950.zing.cql.ModifierSet)

Aggregations

CQLBooleanNode (org.z3950.zing.cql.CQLBooleanNode)1 CQLNode (org.z3950.zing.cql.CQLNode)1 CQLPrefix (org.z3950.zing.cql.CQLPrefix)1 CQLPrefixNode (org.z3950.zing.cql.CQLPrefixNode)1 CQLSortNode (org.z3950.zing.cql.CQLSortNode)1 CQLTermNode (org.z3950.zing.cql.CQLTermNode)1 ModifierSet (org.z3950.zing.cql.ModifierSet)1