package com.worklight.jsonstore.database;

import com.worklight.jsonstore.api.JSONStoreCollection;
import com.worklight.jsonstore.api.JSONStoreQueryPart;
import com.worklight.jsonstore.api.JSONStoreQueryPartItem;
import com.worklight.jsonstore.api.JSONStoreQueryParts;
import com.worklight.jsonstore.util.JSONStoreUtil;
import java.util.Iterator;
import java.util.List;

public abstract class QueryBuilder
{
  private JSONStoreCollection collectionToSearch;
  private DeletedInclusion deletedInclusion;
  private JSONStoreQueryParts queryContent;

  public QueryBuilder(JSONStoreCollection paramJSONStoreCollection, JSONStoreQueryParts paramJSONStoreQueryParts)
    throws IllegalArgumentException
  {
    if (paramJSONStoreCollection == null)
      throw new IllegalArgumentException("collection parameter is null");
    if (paramJSONStoreQueryParts == null)
      throw new IllegalArgumentException("content parameter cannot be null");
    this.collectionToSearch = paramJSONStoreCollection;
    this.deletedInclusion = DeletedInclusion.NON_DELETED_ONLY;
    this.queryContent = paramJSONStoreQueryParts;
  }

  private Object convertObjectIfBoolean(Object paramObject)
  {
    int i = 1;
    if ((paramObject instanceof Boolean))
      if (((Boolean)paramObject).booleanValue() != i)
        break label27;
    while (true)
    {
      paramObject = Integer.valueOf(i);
      return paramObject;
      label27: i = 0;
    }
  }

  private void handleBetweenCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.BETWEEN)
      return;
    List localList = (List)paramObject;
    Object localObject1 = convertObjectIfBoolean(localList.get(0));
    Object localObject2 = convertObjectIfBoolean(localList.get(1));
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" BETWEEN ? AND ? ");
    paramList.add(localObject1.toString());
    paramList.add(localObject2.toString());
  }

  private void handleExactEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.EXACT_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(" ( ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" = ?");
    paramStringBuilder.append(" OR ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramStringBuilder.append(" OR ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramStringBuilder.append(" OR ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramStringBuilder.append(" ) ");
    paramList.add("" + localObject);
    paramList.add("%-@-" + localObject);
    paramList.add("%-@-" + localObject + "-@-%");
    paramList.add(localObject + "-@-%");
  }

  private void handleExactNotEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.EXACT_NOT_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(" ( ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" != ?");
    paramStringBuilder.append(" AND ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramStringBuilder.append(" AND ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramStringBuilder.append(" AND ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramStringBuilder.append(" ) ");
    paramList.add("" + localObject);
    paramList.add("%-@-" + localObject);
    paramList.add("%-@-" + localObject + "-@-%");
    paramList.add(localObject + "-@-%");
  }

  private void handleFuzzyEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.FUZZY_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramList.add("%" + localObject + "%");
  }

  private void handleFuzzyLeftEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.FUZZY_LEFT_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(" ( ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramStringBuilder.append(" OR ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramStringBuilder.append(" ) ");
    paramList.add("%" + localObject);
    paramList.add("%" + localObject + "-@-%");
  }

  private void handleFuzzyNotEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.FUZZY_NOT_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramList.add("%" + localObject + "%");
  }

  private void handleFuzzyNotLeftEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.FUZZY_NOT_LEFT_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(" ( ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramStringBuilder.append(" AND ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramStringBuilder.append(" ) ");
    paramList.add("%" + localObject);
    paramList.add("%" + localObject + "-@-%");
  }

  private void handleFuzzyNotRightEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.FUZZY_NOT_RIGHT_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(" ( ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramStringBuilder.append(" AND ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT LIKE ?");
    paramStringBuilder.append(" ) ");
    paramList.add(localObject + "%");
    paramList.add("%-@-" + localObject + "%");
  }

  private void handleFuzzyRightEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.FUZZY_RIGHT_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(" ( ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramStringBuilder.append(" OR ");
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" LIKE ?");
    paramStringBuilder.append(" ) ");
    paramList.add(localObject + "%");
    paramList.add("%-@-" + localObject + "%");
  }

  private void handleGreaterThanCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.GREATER_THAN)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" > ?");
    paramList.add("" + localObject);
  }

  private void handleGreaterThanEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.GREATER_THAN_OR_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" >= ?");
    paramList.add("" + localObject);
  }

  private void handleInCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.IN)
      return;
    List localList = (List)paramObject;
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" IN ");
    paramStringBuilder.append(" ( ");
    Iterator localIterator = localList.iterator();
    while (localIterator.hasNext())
    {
      paramStringBuilder.append(" ?");
      paramList.add(convertObjectIfBoolean(localIterator.next()).toString());
      if (localIterator.hasNext())
        paramStringBuilder.append(",");
    }
    paramStringBuilder.append(" )");
  }

  private void handleLessThanCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.LESS_THAN)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" < ?");
    paramList.add("" + localObject);
  }

  private void handleLessThanEqualsCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.LESS_THAN_OR_EQUALS)
      return;
    Object localObject = convertObjectIfBoolean(paramObject);
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" <= ?");
    paramList.add("" + localObject);
  }

  private void handleNotBetweenCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.NOT_BETWEEN)
      return;
    List localList = (List)paramObject;
    Object localObject1 = convertObjectIfBoolean(localList.get(0));
    Object localObject2 = convertObjectIfBoolean(localList.get(1));
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT BETWEEN ? AND ? ");
    paramList.add(localObject1.toString());
    paramList.add(localObject2.toString());
  }

  private void handleNotInCase(StringBuilder paramStringBuilder, List<String> paramList, QueryPartOperation paramQueryPartOperation, String paramString, Object paramObject)
  {
    if (paramQueryPartOperation != QueryPartOperation.NOT_IN)
      return;
    List localList = (List)paramObject;
    paramStringBuilder.append(paramString);
    paramStringBuilder.append(" NOT IN ");
    paramStringBuilder.append(" ( ");
    Iterator localIterator = localList.iterator();
    while (localIterator.hasNext())
    {
      paramStringBuilder.append(" ?");
      paramList.add(convertObjectIfBoolean(localIterator.next()).toString());
      if (localIterator.hasNext())
        paramStringBuilder.append(",");
    }
    paramStringBuilder.append(" )");
  }

  protected void buildFromClause(StringBuilder paramStringBuilder, List<String> paramList)
    throws IllegalArgumentException
  {
    paramStringBuilder.append(" " + this.collectionToSearch.getName() + " ");
  }

  protected void buildWhereClause(StringBuilder paramStringBuilder, List<String> paramList)
    throws IllegalArgumentException
  {
    if (paramStringBuilder == null)
      throw new IllegalArgumentException("query_string parameter is null");
    if (paramList == null)
      throw new IllegalArgumentException("selection_args parameter is null");
    StringBuilder localStringBuilder1 = new StringBuilder();
    StringBuilder localStringBuilder2 = new StringBuilder();
    Iterator localIterator1 = this.queryContent.getAllQueryParts().iterator();
    while (localIterator1.hasNext())
    {
      Iterator localIterator2 = ((JSONStoreQueryPart)localIterator1.next()).getQueryBlockItems().iterator();
      if (localIterator2.hasNext())
      {
        JSONStoreQueryPartItem localJSONStoreQueryPartItem = (JSONStoreQueryPartItem)localIterator2.next();
        QueryPartOperation localQueryPartOperation = localJSONStoreQueryPartItem.getOperation();
        if (localJSONStoreQueryPartItem.isKeySpecial());
        for (String str = localJSONStoreQueryPartItem.getKey(); ; str = "[" + JSONStoreUtil.getDatabaseSafeSearchFieldName(localJSONStoreQueryPartItem.getKey()) + "]")
        {
          Object localObject = localJSONStoreQueryPartItem.getValue();
          StringBuilder localStringBuilder3 = new StringBuilder();
          handleExactEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleExactNotEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleFuzzyEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleFuzzyNotEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleFuzzyLeftEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleFuzzyNotLeftEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleFuzzyRightEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleFuzzyNotRightEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleBetweenCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleNotBetweenCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleInCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleNotInCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleGreaterThanCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleGreaterThanEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleLessThanCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          handleLessThanEqualsCase(localStringBuilder3, paramList, localQueryPartOperation, str, localObject);
          if (localStringBuilder3.length() > 0)
          {
            localStringBuilder2.append(" ( ");
            localStringBuilder2.append(localStringBuilder3);
            localStringBuilder2.append(" ) ");
          }
          if (!localIterator2.hasNext())
            break;
          localStringBuilder2.append(" AND ");
          break;
        }
      }
      if (localIterator1.hasNext())
        localStringBuilder2.append(" OR ");
    }
    if (localStringBuilder2.length() > 0)
    {
      localStringBuilder1.append("(");
      localStringBuilder1.append(localStringBuilder2);
      localStringBuilder1.append(")");
    }
    if (this.deletedInclusion == DeletedInclusion.NON_DELETED_ONLY)
    {
      if (localStringBuilder1.length() > 0)
        localStringBuilder1.append(" AND ");
      localStringBuilder1.append(" _deleted = 0 ");
    }
    while (true)
    {
      if (localStringBuilder1.length() == 0)
        localStringBuilder1.append(1);
      paramStringBuilder.append(localStringBuilder1);
      return;
      if (this.deletedInclusion == DeletedInclusion.DELETED_ONLY)
      {
        if (localStringBuilder1.length() > 0)
          localStringBuilder1.append(" AND ");
        localStringBuilder1.append("_deleted = 1");
      }
    }
  }

  public abstract void convertToQueryString(StringBuilder paramStringBuilder, List<String> paramList)
    throws IllegalArgumentException;

  public void setSearchDeletedOnly()
  {
    this.deletedInclusion = DeletedInclusion.DELETED_ONLY;
  }

  public void setSearchIncludeDeleted()
  {
    this.deletedInclusion = DeletedInclusion.DELETED_AND_NOT_DELETED;
  }

  public void setSearchStandard()
  {
    this.deletedInclusion = DeletedInclusion.NON_DELETED_ONLY;
  }

  public static enum DeletedInclusion
  {
    static
    {
      DELETED_ONLY = new DeletedInclusion("DELETED_ONLY", 2);
      DeletedInclusion[] arrayOfDeletedInclusion = new DeletedInclusion[3];
      arrayOfDeletedInclusion[0] = DELETED_AND_NOT_DELETED;
      arrayOfDeletedInclusion[1] = NON_DELETED_ONLY;
      arrayOfDeletedInclusion[2] = DELETED_ONLY;
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.worklight.jsonstore.database.QueryBuilder
 * JD-Core Version:    0.6.2
 */