Package com.google.visualization.datasource.query

Examples of com.google.visualization.datasource.query.CompoundFilter


        new TextValue("tz"), ComparisonFilter.Operator.ENDS_WITH);
    List<QueryFilter> subFiltersList1 = Lists.newArrayList();
    subFiltersList1.add(queryFilter1);
    subFiltersList1.add(queryFilter2);
    QueryFilter queryCompoundFilter1 =
        new CompoundFilter(CompoundFilter.LogicalOperator.AND, subFiltersList1);
    List<QueryFilter> subFiltersList2 = Lists.newArrayList();
    subFiltersList2.add(queryFilter3);
    subFiltersList2.add(queryFilter4);
    subFiltersList2.add(queryFilter5);
    QueryFilter queryCompoundFilter2 =
        new CompoundFilter(CompoundFilter.LogicalOperator.AND, subFiltersList2);
    List<QueryFilter> subFiltersList3 = Lists.newArrayList();
    subFiltersList3.add(queryCompoundFilter1);
    subFiltersList3.add(queryCompoundFilter2);
    QueryFilter queryCompoundFilter3 =
        new CompoundFilter(CompoundFilter.LogicalOperator.OR, subFiltersList3);
    query.setFilter(queryCompoundFilter3);
    StrBuilder queryStringBuilder = new StrBuilder();
    SqlDataSourceHelper.appendWhereClause(query, queryStringBuilder);
    assertEquals(queryStringBuilder.toString(),
        "WHERE (((`ID`=`Salary`) AND (`ID`>=1.0)) OR ((`Fname` LIKE \"Mi%\") "
        + "AND (`Lname` LIKE \"%SH%\") AND (`Lname` LIKE \"%tz\"))) ",
        queryStringBuilder.toString());

    // Check empty compound filters.
    List<QueryFilter> subFiltersList4 = Lists.newArrayList();
    QueryFilter queryCompoundFilter4 =
        new CompoundFilter(CompoundFilter.LogicalOperator.OR, subFiltersList4);
    query.setFilter(queryCompoundFilter4);
    queryStringBuilder = new StrBuilder();
    SqlDataSourceHelper.appendWhereClause(query, queryStringBuilder);
    assertEquals(queryStringBuilder.toString(), "WHERE false ");
    QueryFilter queryCompoundFilter5 =
        new CompoundFilter(CompoundFilter.LogicalOperator.AND, subFiltersList4);
    query.setFilter(queryCompoundFilter5);
    queryStringBuilder = new StrBuilder();
    SqlDataSourceHelper.appendWhereClause(query, queryStringBuilder);
    assertEquals(queryStringBuilder.toString(), "WHERE true ");

    // Check compound filter with one sub-filter.
    List<QueryFilter> subFiltersList6 = Lists.newArrayList(
        (QueryFilter) new ColumnColumnFilter(new SimpleColumn("ID"),
        new SimpleColumn("Salary"), ComparisonFilter.Operator.EQ));
    QueryFilter queryCompoundFilter6 =
        new CompoundFilter(CompoundFilter.LogicalOperator.OR, subFiltersList6);
    query.setFilter(queryCompoundFilter6);
    queryStringBuilder = new StrBuilder();
    SqlDataSourceHelper.appendWhereClause(query, queryStringBuilder);
    assertEquals(queryStringBuilder.toString(), "WHERE ((`ID`=`Salary`)) ",
        queryStringBuilder.toString());
View Full Code Here


  public void testAndFilter() throws Exception {
    Query query = QueryBuilder.getInstance().parseQuery(
        " WHERE c1 < c2 AND 4 >= `WHERE` aNd (`c1` < `c 3`)");
    QueryFilter filter = query.getFilter();
    assertTrue(filter instanceof CompoundFilter);
    CompoundFilter f = (CompoundFilter) filter;
    assertEquals(CompoundFilter.LogicalOperator.AND, f.getOperator());
    List<QueryFilter> subFilters = f.getSubFilters();
    assertEquals(3, subFilters.size());
    QueryFilter f1 = subFilters.get(0);
    QueryFilter f2 = subFilters.get(1);
    QueryFilter f3 = subFilters.get(2);
    assertTrue(f1 instanceof ColumnColumnFilter);
    assertTrue(f2 instanceof ColumnValueFilter);
    assertTrue(f3 instanceof ColumnColumnFilter);
    Set<String> allColumnIds = f.getAllColumnIds();
    assertEquals(Sets.newHashSet("c1", "c2", "c 3", "WHERE"), allColumnIds);
  }
View Full Code Here

    Query query = QueryBuilder.getInstance().parseQuery(
        " WHERE `Date` > '2008-06-01' and `RoleId` != 47 and "
            + "`RoleId` != 6 and `RoleId` != 8 and `RoleId` != 2");
    QueryFilter filter = query.getFilter();
    assertTrue(filter instanceof CompoundFilter);
    CompoundFilter f = (CompoundFilter) filter;
    assertEquals(CompoundFilter.LogicalOperator.AND, f.getOperator());
    List<QueryFilter> subFilters = f.getSubFilters();
    ColumnValueFilter[] filters = new ColumnValueFilter[5];
    assertEquals(5, subFilters.size());
    for (int i = 0; i < 5; i++) {
      filters[i] = (ColumnValueFilter) subFilters.get(i);
    }
View Full Code Here

  public void testOrFilterWithExtraneousParantheses() throws Exception {
    Query query = QueryBuilder.getInstance().parseQuery(
        " WHERE (((c1 < c2)) OR 4 >= `WHERE` OR (`c1` < `c 3`))");
    QueryFilter filter = query.getFilter();
    assertTrue(filter instanceof CompoundFilter);
    CompoundFilter f = (CompoundFilter) filter;
    assertEquals(CompoundFilter.LogicalOperator.OR, f.getOperator());
    List<QueryFilter> subFilters = f.getSubFilters();
    assertEquals(3, subFilters.size());
    QueryFilter f1 = subFilters.get(0);
    QueryFilter f2 = subFilters.get(1);
    QueryFilter f3 = subFilters.get(2);
    assertTrue(f1 instanceof ColumnColumnFilter);
    assertTrue(f2 instanceof ColumnValueFilter);
    assertTrue(f3 instanceof ColumnColumnFilter);
    Set<String> allColumnIds = f.getAllColumnIds();
    assertEquals(Sets.newHashSet("c1", "c2", "c 3", "WHERE"), allColumnIds);
  }
View Full Code Here

        "SELECT c1,c2 WHERE (NOT ((c1 < c2) OR (NOT (c3 < " +
            "c4))) AND (NOT ((NOT (NOT (c5 < c6))) OR (c7 < c8))) AND " +
            "((c9 < c10) AND ((c11 < c12) OR ((c13 < c14) AND (c15 < c16)))))");
    QueryFilter filter = query.getFilter();
    assertTrue(filter instanceof CompoundFilter);
    CompoundFilter f = (CompoundFilter) filter;
    assertEquals(CompoundFilter.LogicalOperator.AND, f.getOperator());
    List<QueryFilter> subFilters = f.getSubFilters();
    assertEquals(3, subFilters.size());
    QueryFilter f1 = subFilters.get(0);
    QueryFilter f2 = subFilters.get(1);
    QueryFilter f3 = subFilters.get(2);

    // f1: (!((c1 < c2) || (!(c3 < c4)))
    assertTrue(f1 instanceof NegationFilter);
    NegationFilter nf = (NegationFilter) f1;
    QueryFilter subFilter = nf.getSubFilter();
    assertTrue(subFilter instanceof CompoundFilter);
    CompoundFilter cf = (CompoundFilter) subFilter;
    assertEquals(CompoundFilter.LogicalOperator.OR, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c1", "c2"),
        subFilters.get(0).getAllColumnIds());
    assertTrue(subFilters.get(1) instanceof NegationFilter);
    nf = (NegationFilter) subFilters.get(1);
    assertTrue(nf.getSubFilter() instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c3", "c4"),
        nf.getSubFilter().getAllColumnIds());

    //f2: (!((!(!(c5 < c6))) || (c7 < c8)))
    assertTrue(f2 instanceof NegationFilter);
    nf = (NegationFilter) f2;
    assertTrue(nf.getSubFilter() instanceof CompoundFilter);
    cf = (CompoundFilter) nf.getSubFilter();
    assertEquals(CompoundFilter.LogicalOperator.OR, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof NegationFilter);
    assertTrue(subFilters.get(1) instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c7", "c8"),
        subFilters.get(1).getAllColumnIds());
    nf = (NegationFilter) subFilters.get(0);
    assertTrue(nf.getSubFilter() instanceof NegationFilter);
    nf = (NegationFilter) nf.getSubFilter();
    assertTrue(nf.getSubFilter() instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c5", "c6"),
        nf.getSubFilter().getAllColumnIds());

    //f3: ((c9 < c10) && ((c11 < c12)||((c13 < c14)&&(c15 < c16))))
    assertTrue(f3 instanceof CompoundFilter);
    cf = (CompoundFilter) f3;
    assertEquals(CompoundFilter.LogicalOperator.AND, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c9", "c10"),
        subFilters.get(0).getAllColumnIds());
    assertTrue(subFilters.get(1) instanceof CompoundFilter);
    cf = (CompoundFilter) subFilters.get(1);
    assertEquals(CompoundFilter.LogicalOperator.OR, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c11", "c12"),
        subFilters.get(0).getAllColumnIds());
    assertTrue(subFilters.get(1) instanceof CompoundFilter);
    cf = (CompoundFilter) subFilters.get(1);
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof ColumnColumnFilter);
    assertTrue(subFilters.get(1) instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c13", "c14"),
        subFilters.get(0).getAllColumnIds());
View Full Code Here

        //                 ((not (c3 < c4)) and (not (c5 < c6))) or
        //                 ((c7 < c8) and (c9 < c10) and (c11 < c12)) or
        //                 ((c13 < c14) and (c15 < c16))
    QueryFilter filter = query.getFilter();
    assertTrue(filter instanceof CompoundFilter);
    CompoundFilter f = (CompoundFilter) filter;
    assertEquals(CompoundFilter.LogicalOperator.OR, f.getOperator());
    List<QueryFilter> subFilters = f.getSubFilters();
    assertEquals(4, subFilters.size());
    QueryFilter f1 = subFilters.get(0);
    QueryFilter f2 = subFilters.get(1);
    QueryFilter f3 = subFilters.get(2);
    QueryFilter f4 = subFilters.get(3);

    // f1: (!(c1 < c2))
    assertTrue(f1 instanceof NegationFilter);
    NegationFilter nf = (NegationFilter) f1;
    QueryFilter subFilter = nf.getSubFilter();
    assertTrue(subFilter instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c1", "c2"), subFilter.getAllColumnIds());

    // f2: ((!(c3<c4)) && (!(c5<c6)))))
    assertTrue(f2 instanceof CompoundFilter);
    CompoundFilter cf = (CompoundFilter) f2;
    assertEquals(CompoundFilter.LogicalOperator.AND, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof NegationFilter);
    assertTrue(subFilters.get(1) instanceof NegationFilter);
    QueryFilter tmp = ((NegationFilter) subFilters.get(0)).getSubFilter();
    assertTrue(tmp instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c3", "c4"), tmp.getAllColumnIds());
    tmp = ((NegationFilter) subFilters.get(1)).getSubFilter();
    assertTrue(tmp instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c5", "c6"), tmp.getAllColumnIds());

    //f3: ((c7 < c8) && (c9 < c10) && (c11 < c12))
    assertTrue(f3 instanceof CompoundFilter);
    cf = (CompoundFilter) f3;
    assertEquals(CompoundFilter.LogicalOperator.AND, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(3, subFilters.size());
    assertTrue(subFilters.get(0) instanceof ColumnColumnFilter);
    assertTrue(subFilters.get(1) instanceof ColumnColumnFilter);
    assertTrue(subFilters.get(2) instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c7", "c8"),
        subFilters.get(0).getAllColumnIds());
    assertEquals(Sets.newHashSet("c9", "c10"),
        subFilters.get(1).getAllColumnIds());
    assertEquals(Sets.newHashSet("c11", "c12"),
        subFilters.get(2).getAllColumnIds());

    // f4: ((c13 < c14) and (c15 < c16))
    assertTrue(f4 instanceof CompoundFilter);
    cf = (CompoundFilter) f4;
    assertEquals(CompoundFilter.LogicalOperator.AND, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof ColumnColumnFilter);
    assertTrue(subFilters.get(1) instanceof ColumnColumnFilter);
    assertEquals(Sets.newHashSet("c13", "c14"),
        subFilters.get(0).getAllColumnIds());
View Full Code Here

    Query query = QueryBuilder.getInstance().parseQuery("WHERE c1 MATCHES "
        + "'.*a[^b]*b' AND 'abc' MATCHES c2 AND 'foo' CONTAINS c3"
        + " AND c4 CONTAINS 'bar' AND c5 STARTS WITH 'baz' AND c6"
        + " ENDS WITH 'chiko' AND 'baba' STARTS WITH c7 AND 'gaga'"
        + " ENDS WITH c8");
    CompoundFilter filter = (CompoundFilter) query.getFilter();
    List<QueryFilter> subFilters = filter.getSubFilters();
    assertEquals(ComparisonFilter.Operator.MATCHES,
        ((ComparisonFilter) subFilters.get(0)).getOperator());
    assertEquals(ComparisonFilter.Operator.CONTAINS,
        ((ComparisonFilter) subFilters.get(3)).getOperator());
    assertEquals(ComparisonFilter.Operator.STARTS_WITH,
View Full Code Here

  public void testFilterOfArithmeticExpression() throws Exception {
    Query query = QueryBuilder.getInstance().parseQuery("Where ((c1+c2)/c3*c4)"
        + " > (c5/c6+year(c7)) and (c8+c9=0 or c10<>c11) ");
    QueryFilter filter = query.getFilter();
    assertTrue(filter instanceof CompoundFilter);
    CompoundFilter f = (CompoundFilter) filter;
    assertEquals(CompoundFilter.LogicalOperator.AND, f.getOperator());
    List<QueryFilter> subFilters = f.getSubFilters();
    assertEquals(2, subFilters.size());
    QueryFilter f1 = subFilters.get(0);
    QueryFilter f2 = subFilters.get(1);

    // f1: ((c1+c2)/c3*c4) > (c5/c6+year(c7))
    ScalarFunctionColumn col1 = new ScalarFunctionColumn(
        Lists.<AbstractColumn>newArrayList(new SimpleColumn("c1"),
            new SimpleColumn("c2")), Sum.getInstance());
    ScalarFunctionColumn col2 = new ScalarFunctionColumn(
        Lists.<AbstractColumn>newArrayList(col1, new SimpleColumn("c3")),
        Quotient.getInstance());
    ScalarFunctionColumn col3 = new ScalarFunctionColumn(
        Lists.<AbstractColumn>newArrayList(col2, new SimpleColumn("c4")),
        Product.getInstance());
    ScalarFunctionColumn col4 = new ScalarFunctionColumn(
        Lists.<AbstractColumn>newArrayList(new SimpleColumn("c5"),
            new SimpleColumn("c6")), Quotient.getInstance());
    ScalarFunctionColumn col5 = new ScalarFunctionColumn(
        Lists.<AbstractColumn>newArrayList(col4,
            new ScalarFunctionColumn(Lists.<AbstractColumn>newArrayList(
                new SimpleColumn("c7")), TimeComponentExtractor.getInstance(
                TimeComponentExtractor.TimeComponent.YEAR))),
        Sum.getInstance());
    assertTrue(f1 instanceof ColumnColumnFilter);
    ColumnColumnFilter ccf = (ColumnColumnFilter) f1;
    assertEquals(col3, ccf.getFirstColumn());
    assertEquals(col5, ccf.getSecondColumn());

    // f2: (c8+c9=0 or c10<>c11)
    assertTrue(f2 instanceof CompoundFilter);
    CompoundFilter cf = (CompoundFilter) f2;
    assertEquals(CompoundFilter.LogicalOperator.OR, cf.getOperator());
    subFilters = cf.getSubFilters();
    assertEquals(2, subFilters.size());
    assertTrue(subFilters.get(0) instanceof ColumnValueFilter);
    assertTrue(subFilters.get(1) instanceof ColumnColumnFilter);
    assertEquals(new ScalarFunctionColumn(
        Lists.<AbstractColumn>newArrayList(new SimpleColumn("c8"),
View Full Code Here

      whereClause.append(buildWhereClauseRecursively(
          ((NegationFilter) queryFilter).getSubFilter()));
      whereClause.append(")");
    } else {
      // queryFilter is a CompoundFilter.
      CompoundFilter compoundFilter = (CompoundFilter) queryFilter;

      int numberOfSubFilters = compoundFilter.getSubFilters().size();

      // If the compound filter is empty, build a where clause according to the
      // logical operator: nothing AND nothing -> WHERE "true", nothing OR
      // nothing -> WHERE "false" (match the query language rules).
      if (numberOfSubFilters == 0) {
        if (compoundFilter.getOperator() == CompoundFilter.LogicalOperator.AND) {
          whereClause.append("true");
        } else {// OR
          whereClause.append("false");
        }
      } else {
        List<String> filterComponents = Lists.newArrayList();
        for (QueryFilter filter : compoundFilter.getSubFilters()) {
          filterComponents.add(buildWhereClauseRecursively(filter).toString());
        }
        String logicalOperator = getSqlLogicalOperator(compoundFilter.getOperator());
        whereClause.append("(").appendWithSeparators(filterComponents, " " + logicalOperator + " ")
            .append(")");
      }
    }
    return whereClause;
View Full Code Here

      whereClause.append(buildWhereClauseRecursively(
          ((NegationFilter) queryFilter).getSubFilter()));
      whereClause.append(")");
    } else {
      // queryFilter is a CompoundFilter.
      CompoundFilter compoundFilter = (CompoundFilter) queryFilter;

      int numberOfSubFilters = compoundFilter.getSubFilters().size();

      // If the compound filter is empty, build a where clause according to the
      // logical operator: nothing AND nothing -> WHERE "true", nothing OR
      // nothing -> WHERE "false" (match the query language rules).
      if (numberOfSubFilters == 0) {
        if (compoundFilter.getOperator() == CompoundFilter.LogicalOperator.AND) {
          whereClause.append("true");
        } else {// OR
          whereClause.append("false");
        }
      } else {
        List<String> filterComponents = Lists.newArrayList();
        for (QueryFilter filter : compoundFilter.getSubFilters()) {
          filterComponents.add(buildWhereClauseRecursively(filter).toString());
        }
        String logicalOperator = getSqlLogicalOperator(compoundFilter.getOperator());
        whereClause.append("(").appendWithSeparators(filterComponents, " " + logicalOperator + " ")
            .append(")");
      }
    }
    return whereClause;
View Full Code Here

TOP

Related Classes of com.google.visualization.datasource.query.CompoundFilter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.