Example usage for org.apache.lucene.queryparser.xml DOMUtils getAttribute

List of usage examples for org.apache.lucene.queryparser.xml DOMUtils getAttribute

Introduction

In this page you can find the example usage for org.apache.lucene.queryparser.xml DOMUtils getAttribute.

Prototype

public static boolean getAttribute(Element element, String attributeName, boolean deflt) 

Source Link

Usage

From source file:com.mathworks.xzheng.tools.XmlQueryParser.AgoFilterBuilder.java

License:Apache License

public Filter getFilter(Element element) throws ParserException {
    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(element, // A
            "fieldName"); // A
    String timeUnit = DOMUtils.getAttribute(element, "timeUnit", "days"); // A
    Integer calUnit = timeUnits.get(timeUnit); // A
    if (calUnit == null) { // A
        throw new ParserException("Illegal time unit:" // A
                + timeUnit + " - must be days, months or years"); // A
    } // A/*from   w  w w.j a  v a 2 s.c o m*/
    int agoStart = DOMUtils.getAttribute(element, "from", 0); // A
    int agoEnd = DOMUtils.getAttribute(element, "to", 0); // A
    if (agoStart < agoEnd) {
        int oldAgoStart = agoStart;
        agoStart = agoEnd;
        agoEnd = oldAgoStart;
    }
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // B

    Calendar start = Calendar.getInstance(); // B
    start.add(calUnit, agoStart * -1); // B

    Calendar end = Calendar.getInstance(); // B
    end.add(calUnit, agoEnd * -1); // B

    return NumericRangeFilter.newIntRange( // C
            fieldName, // C
            Integer.valueOf(sdf.format(start.getTime())), // C
            Integer.valueOf(sdf.format(end.getTime())), // C
            true, true); // C
}

From source file:io.datalayer.lucene.filter.TimeAgoFilterBuilder.java

License:Apache License

@Override
public Filter getFilter(Element element) throws ParserException {

    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(element, "fieldName");
    String timeUnit = DOMUtils.getAttribute(element, "timeUnit", "days");
    Integer calUnit = timeUnits.get(timeUnit);
    if (calUnit == null) {
        throw new ParserException("Illegal time unit:" + timeUnit + " - must be days, months or years");
    }//  w ww.  j ava2 s .c o  m
    int agoStart = DOMUtils.getAttribute(element, "from", 0);
    int agoEnd = DOMUtils.getAttribute(element, "to", 0);
    if (agoStart < agoEnd) {
        int oldAgoStart = agoStart;
        agoStart = agoEnd;
        agoEnd = oldAgoStart;
    }
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    Calendar start = Calendar.getInstance();
    start.add(calUnit, agoStart * -1);

    Calendar end = Calendar.getInstance();
    end.add(calUnit, agoEnd * -1);

    return NumericRangeFilter.newIntRange(fieldName, Integer.valueOf(sdf.format(start.getTime())),
            Integer.valueOf(sdf.format(end.getTime())), true, true);
}

From source file:lux.query.parser.NumericRangeQueryBuilder.java

License:Apache License

@Override
public Query getQuery(Element e) throws ParserException {
    String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
    String lowerTerm = DOMUtils.getAttribute(e, "lowerTerm", null);
    String upperTerm = DOMUtils.getAttribute(e, "upperTerm", null);
    boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
    boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
    int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);

    String type = DOMUtils.getAttribute(e, "type", "int");
    try {//from   ww  w . j a  v  a2s  . c om
        Query filter;
        if (type.equalsIgnoreCase("int")) {
            filter = NumericRangeQuery.newIntRange(field, precisionStep,
                    lowerTerm == null ? null : Integer.valueOf(lowerTerm),
                    upperTerm == null ? null : Integer.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("long")) {
            filter = NumericRangeQuery.newLongRange(field, precisionStep,
                    lowerTerm == null ? null : Long.valueOf(lowerTerm),
                    upperTerm == null ? null : Long.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("double")) {
            filter = NumericRangeQuery.newDoubleRange(field, precisionStep,
                    lowerTerm == null ? null : Double.valueOf(lowerTerm),
                    upperTerm == null ? null : Double.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("float")) {
            filter = NumericRangeQuery.newFloatRange(field, precisionStep,
                    lowerTerm == null ? null : Float.valueOf(lowerTerm),
                    upperTerm == null ? null : Float.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else {
            throw new ParserException("type attribute must be one of: [long, int, double, float]");
        }
        return filter;
    } catch (NumberFormatException nfe) {
        throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
    }
}

From source file:org.apache.solr.search.LegacyNumericRangeQueryBuilder.java

License:Apache License

@Override
public Query getQuery(Element e) throws ParserException {
    String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
    final String lowerTerm = DOMUtils.getAttribute(e, "lowerTerm", null);
    final String upperTerm = DOMUtils.getAttribute(e, "upperTerm", null);
    boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
    boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
    int precisionStep = DOMUtils.getAttribute(e, "precisionStep", LegacyNumericUtils.PRECISION_STEP_DEFAULT);

    String type = DOMUtils.getAttribute(e, "type", "int");
    try {//ww  w.ja  v a 2  s  . c  o m
        Query filter;
        if (type.equalsIgnoreCase("int")) {
            filter = LegacyNumericRangeQuery.newIntRange(field, precisionStep,
                    (lowerTerm == null ? null : Integer.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Integer.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("long")) {
            filter = LegacyNumericRangeQuery.newLongRange(field, precisionStep,
                    (lowerTerm == null ? null : Long.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Long.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("double")) {
            filter = LegacyNumericRangeQuery.newDoubleRange(field, precisionStep,
                    (lowerTerm == null ? null : Double.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Double.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("float")) {
            filter = LegacyNumericRangeQuery.newFloatRange(field, precisionStep,
                    (lowerTerm == null ? null : Float.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Float.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else {
            throw new ParserException("type attribute must be one of: [long, int, double, float]");
        }
        return filter;
    } catch (NumberFormatException nfe) {
        throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
    }
}