Android Open Source - AndroidHappyChat F






From Project

Back to project page AndroidHappyChat.

License

The source code is released under:

Apache License

If you think the Android project AndroidHappyChat listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (c) 2013 Google Inc.// w  ww  . j  a  v a 2 s . co m
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.cloud.backend.android;

import com.google.cloud.backend.android.mobilebackend.model.FilterDto;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * A filter class for a {@link CloudQuery}. See
 * {@link CloudBackendTest#testList()} of CloudBackendAndroidClientTest project
 * for detailed usage.
 *
 */
public class F {

  public enum Op {
    EQ, LT, LE, GT, GE, NE, IN, AND, OR
  }

  private FilterDto filterDto = new FilterDto();

  /**
   * Creates a {@link F} for EQUAL operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param value
   *          Value for this operation.
   * @return {@link F} for this operation.
   */
  public static F eq(String propertyName, Object value) {
    return createFilter(Op.EQ.name(), propertyName, value);
  }

  /**
   * Creates a {@link F} for LESS_THAN operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param value
   *          Value for this operation.
   * @return {@link F} for this operation.
   */
  public static F lt(String propertyName, Object value) {
    return createFilter(Op.LT.name(), propertyName, value);
  }

  /**
   * Creates a {@link F} for LESS_THAN_EQUAL operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param value
   *          Value for this operation.
   * @return {@link F} for this operation.
   */
  public static F le(String propertyName, Object value) {
    return createFilter(Op.LE.name(), propertyName, value);
  }

  /**
   * Creates a {@link F} for GREATER_THAN operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param value
   *          Value for this operation.
   * @return {@link F} for this operation.
   */
  public static F gt(String propertyName, Object value) {
    return createFilter(Op.GT.name(), propertyName, value);
  }

  /**
   * Creates a {@link F} for GREATER_THAN_EQUAL operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param value
   *          Value for this operation.
   * @return {@link F} for this operation.
   */
  public static F ge(String propertyName, Object value) {
    return createFilter(Op.GE.name(), propertyName, value);
  }

  /**
   * Creates a {@link F} for NOT_EQUAL operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param value
   *          Value for this operation.
   * @return {@link F} for this operation.
   */
  public static F ne(String propertyName, Object value) {
    return createFilter(Op.NE.name(), propertyName, value);
  }

  /**
   * Creates a {@link F} for IN operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param values
   *          any number of {@link Object}s for the IN operation.
   * @return {@link F} for this operation.
   */
  public static F in(String propertyName, List<Object> values) {
    LinkedList<Object> l = new LinkedList<Object>(values);
    l.addFirst(propertyName);
    F f = new F();
    f.filterDto.setOperator(Op.IN.name());
    f.filterDto.setValues(l);
    return f;
  }

  /**
   * Creates a {@link F} for IN operation.
   *
   * @param propertyName
   *          Name of the target property.
   * @param values
   *          any number of {@link Object}s for the IN operation.
   * @return {@link F} for this operation.
   */
  public static F in(String propertyName, Object... values) {
    LinkedList<Object> l = new LinkedList<Object>(Arrays.asList(values));
    l.addFirst(propertyName);
    F f = new F();
    f.filterDto.setOperator(Op.IN.name());
    f.filterDto.setValues(l);
    return f;
  }

  /**
   * Creates a {@link F} for AND operation.
   *
   * @param filters
   *          Any number of {@link F}s for this operation.
   * @return {@link F} for this operation.
   */
  public static F and(F... filters) {
    F f = createFilterForAndOr(Op.AND.name(), filters);
    return f;
  }

  /**
   * Creates a {@link F} for OR operation.
   *
   * @param filters
   *          Any number of {@link F}s for this operation.
   * @return {@link F} for this operation.
   */
  public static F or(F... filters) {
    F f = createFilterForAndOr(Op.OR.name(), filters);
    return f;
  }

  private static F createFilterForAndOr(String op, F... filters) {
    F f = new F();
    f.filterDto.setOperator(op);
    List<FilterDto> subfilters = new LinkedList<FilterDto>();
    for (F cf : filters) {
      subfilters.add(cf.getFilterDto());
    }
    f.filterDto.setSubfilters(subfilters);
    return f;
  }

  protected static F createFilter(String op, String propertyName, Object value) {
    F f = new F();
    f.filterDto.setOperator(op);
    List<Object> values = new LinkedList<Object>();
    values.add(propertyName);
    values.add(value);
    f.filterDto.setValues(values);
    return f;
  }

  public FilterDto getFilterDto() {
    return filterDto;
  }

  @Override
  public String toString() {
    return "F: op: " + this.filterDto.getOperator() + ", values: " + this.filterDto.getValues();
  }

}




Java Source Code List

com.google.cloud.backend.android.CloudBackendActivity.java
com.google.cloud.backend.android.CloudBackendAsync.java
com.google.cloud.backend.android.CloudBackendMessaging.java
com.google.cloud.backend.android.CloudBackend.java
com.google.cloud.backend.android.CloudCallbackHandler.java
com.google.cloud.backend.android.CloudEndpointUtils.java
com.google.cloud.backend.android.CloudEntity.java
com.google.cloud.backend.android.CloudQuery.java
com.google.cloud.backend.android.Consts.java
com.google.cloud.backend.android.F.java
com.google.cloud.backend.android.GCMIntentService.java
com.google.cloud.backend.android.mobilebackend.MobilebackendRequestInitializer.java
com.google.cloud.backend.android.mobilebackend.MobilebackendRequest.java
com.google.cloud.backend.android.mobilebackend.Mobilebackend.java
com.google.cloud.backend.android.mobilebackend.model.EntityDto.java
com.google.cloud.backend.android.mobilebackend.model.EntityListDto.java
com.google.cloud.backend.android.mobilebackend.model.FilterDto.java
com.google.cloud.backend.android.mobilebackend.model.Filter.java
com.google.cloud.backend.android.mobilebackend.model.QueryDto.java
com.google.cloud.backend.android.sample.guestbook.GuestbookActivity.java
com.google.cloud.backend.android.sample.socialtalk.SocialTalkActivity.java