package com.worklight.jsonstore.database;

import android.database.Cursor;
import com.worklight.common.Logger;
import com.worklight.jsonstore.util.JSONStoreUtil;
import java.util.ArrayList;
import java.util.Iterator;
import net.sqlcipher.database.SQLiteDatabase;
import org.json.JSONException;
import org.json.JSONObject;

public class ReadableDatabase
{
  private static final String JSONSTORE_DB = "jsonstore-db";
  private static final String SQL_AND = " AND ";
  private static final String SQL_EQ = " = ?";
  private static final String SQL_FIND = "SELECT {0} FROM {1};";
  private static final String SQL_FIND_BY_ID = "SELECT {0}, {1} FROM {2} WHERE {3} AND _deleted = 0";
  private static final String SQL_FIND_OP = "SELECT {0} FROM {1} WHERE {2} LIKE ?";
  private static final String SQL_FIND_WHERE = "SELECT {0} FROM {1} WHERE {2};";
  private static final String SQL_FIND_WHERE_WITH_LIMIT = "SELECT {0} FROM {1} WHERE {2} LIMIT {3};";
  private static final String SQL_FIND_WHERE_WITH_LIMIT_AND_OFFSET = "SELECT {0} FROM {1} WHERE {2} LIMIT {3} OFFSET {4};";
  private static final String SQL_FIND_WHERE_WITH_LIMIT_AND_OFFSET_AND_ORDER = "SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4} OFFSET {5};";
  private static final String SQL_FIND_WHERE_WITH_LIMIT_AND_ORDER = "SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4};";
  private static final String SQL_FIND_WHERE_WITH_NEGATIVE_LIMIT = "SELECT {0} FROM {1} WHERE {2} ORDER BY {3} DESC LIMIT {4};";
  private static final String SQL_LIKE = " LIKE ?";
  private static final String SQL_OR = " OR ";
  private SQLiteDatabase database;
  protected Logger logger;
  private DatabaseSchema schema;

  protected ReadableDatabase(SQLiteDatabase paramSQLiteDatabase, DatabaseSchema paramDatabaseSchema)
  {
    this.database = paramSQLiteDatabase;
    this.logger = Logger.getInstance("jsonstore-db");
    this.schema = paramDatabaseSchema;
  }

  private String buildFindAllQuery(String paramString1, String paramString2, String paramString3, StringBuilder paramStringBuilder1, StringBuilder paramStringBuilder2, int paramInt)
  {
    String str1;
    if (paramStringBuilder2.length() > 0)
      if (paramString1 == null)
      {
        Object[] arrayOfObject7 = new Object[3];
        arrayOfObject7[0] = paramStringBuilder1.toString();
        arrayOfObject7[1] = this.schema.getName();
        arrayOfObject7[2] = paramStringBuilder2.toString();
        str1 = JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2};", arrayOfObject7);
        if (hasSortParameter(paramString3))
          str1 = str1.substring(0, -1 + str1.length()) + " ORDER BY " + paramString3 + ";";
      }
    do
    {
      return str1;
      if (paramString2 != null)
      {
        if (hasSortParameter(paramString3))
        {
          Object[] arrayOfObject6 = new Object[6];
          arrayOfObject6[0] = paramStringBuilder1.toString();
          arrayOfObject6[1] = this.schema.getName();
          arrayOfObject6[2] = paramStringBuilder2.toString();
          arrayOfObject6[3] = paramString3;
          arrayOfObject6[4] = paramString1;
          arrayOfObject6[5] = paramString2;
          return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4} OFFSET {5};", arrayOfObject6);
        }
        Object[] arrayOfObject5 = new Object[5];
        arrayOfObject5[0] = paramStringBuilder1.toString();
        arrayOfObject5[1] = this.schema.getName();
        arrayOfObject5[2] = paramStringBuilder2.toString();
        arrayOfObject5[3] = paramString1;
        arrayOfObject5[4] = paramString2;
        return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} LIMIT {3} OFFSET {4};", arrayOfObject5);
      }
      if (paramInt < 0)
      {
        String str2 = String.valueOf(Math.abs(paramInt));
        Object[] arrayOfObject4 = new Object[5];
        arrayOfObject4[0] = paramStringBuilder1.toString();
        arrayOfObject4[1] = this.schema.getName();
        arrayOfObject4[2] = paramStringBuilder2.toString();
        arrayOfObject4[3] = "_id";
        arrayOfObject4[4] = str2;
        return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} DESC LIMIT {4};", arrayOfObject4);
      }
      if (hasSortParameter(paramString3))
      {
        Object[] arrayOfObject3 = new Object[5];
        arrayOfObject3[0] = paramStringBuilder1.toString();
        arrayOfObject3[1] = this.schema.getName();
        arrayOfObject3[2] = paramStringBuilder2.toString();
        arrayOfObject3[3] = paramString3;
        arrayOfObject3[4] = paramString1;
        return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4};", arrayOfObject3);
      }
      Object[] arrayOfObject2 = new Object[4];
      arrayOfObject2[0] = paramStringBuilder1.toString();
      arrayOfObject2[1] = this.schema.getName();
      arrayOfObject2[2] = paramStringBuilder2.toString();
      arrayOfObject2[3] = paramString1;
      return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} LIMIT {3};", arrayOfObject2);
      Object[] arrayOfObject1 = new Object[2];
      arrayOfObject1[0] = paramStringBuilder1.toString();
      arrayOfObject1[1] = this.schema.getName();
      str1 = JSONStoreUtil.formatString("SELECT {0} FROM {1};", arrayOfObject1);
    }
    while (!hasSortParameter(paramString3));
    return str1.substring(0, -1 + str1.length()) + " ORDER BY " + paramString3 + ";";
  }

  private String buildFindQuery(JSONObject paramJSONObject, String paramString1, String paramString2, Boolean paramBoolean, String paramString3, StringBuilder paramStringBuilder1, ArrayList<String> paramArrayList, StringBuilder paramStringBuilder2)
    throws JSONException
  {
    StringBuilder localStringBuilder = new StringBuilder();
    Iterator localIterator = paramJSONObject.keys();
    int i = getLimit(paramString1);
    handleExact(paramJSONObject, paramBoolean, paramArrayList, localStringBuilder, localIterator);
    if (paramStringBuilder2.length() > 0)
    {
      localStringBuilder.append(" AND ");
      localStringBuilder.append(paramStringBuilder2);
    }
    if (paramString1 == null)
    {
      Object[] arrayOfObject6 = new Object[3];
      arrayOfObject6[0] = paramStringBuilder1.toString();
      arrayOfObject6[1] = this.schema.getName();
      arrayOfObject6[2] = localStringBuilder.toString();
      String str2 = JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2};", arrayOfObject6);
      if (hasSortParameter(paramString3))
        str2 = str2.substring(0, -1 + str2.length()) + " ORDER BY " + paramString3 + ";";
      return str2;
    }
    if (paramString2 != null)
    {
      if (hasSortParameter(paramString3))
      {
        Object[] arrayOfObject5 = new Object[6];
        arrayOfObject5[0] = paramStringBuilder1.toString();
        arrayOfObject5[1] = this.schema.getName();
        arrayOfObject5[2] = localStringBuilder.toString();
        arrayOfObject5[3] = paramString3;
        arrayOfObject5[4] = paramString1;
        arrayOfObject5[5] = paramString2;
        return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4} OFFSET {5};", arrayOfObject5);
      }
      Object[] arrayOfObject4 = new Object[5];
      arrayOfObject4[0] = paramStringBuilder1.toString();
      arrayOfObject4[1] = this.schema.getName();
      arrayOfObject4[2] = localStringBuilder.toString();
      arrayOfObject4[3] = paramString1;
      arrayOfObject4[4] = paramString2;
      return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} LIMIT {3} OFFSET {4};", arrayOfObject4);
    }
    if (i < 0)
    {
      String str1 = String.valueOf(Math.abs(i));
      Object[] arrayOfObject3 = new Object[5];
      arrayOfObject3[0] = paramStringBuilder1.toString();
      arrayOfObject3[1] = this.schema.getName();
      arrayOfObject3[2] = localStringBuilder.toString();
      arrayOfObject3[3] = "_id";
      arrayOfObject3[4] = str1;
      return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} DESC LIMIT {4};", arrayOfObject3);
    }
    if (hasSortParameter(paramString3))
    {
      Object[] arrayOfObject2 = new Object[5];
      arrayOfObject2[0] = paramStringBuilder1.toString();
      arrayOfObject2[1] = this.schema.getName();
      arrayOfObject2[2] = localStringBuilder.toString();
      arrayOfObject2[3] = paramString3;
      arrayOfObject2[4] = paramString1;
      return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4};", arrayOfObject2);
    }
    Object[] arrayOfObject1 = new Object[4];
    arrayOfObject1[0] = paramStringBuilder1.toString();
    arrayOfObject1[1] = this.schema.getName();
    arrayOfObject1[2] = localStringBuilder.toString();
    arrayOfObject1[3] = paramString1;
    return JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} LIMIT {3};", arrayOfObject1);
  }

  private void buildWhereClause(String[] paramArrayOfString, StringBuilder paramStringBuilder)
  {
    if ((paramArrayOfString != null) && (paramArrayOfString.length > 0))
      for (int i = 0; i < paramArrayOfString.length; i++)
      {
        paramStringBuilder.append(paramArrayOfString[i]);
        if (i < -1 + paramArrayOfString.length)
          paramStringBuilder.append(" AND ");
      }
  }

  private void getFieldsToSelect(String[] paramArrayOfString, StringBuilder paramStringBuilder)
  {
    if ((paramArrayOfString == null) || (paramArrayOfString.length == 0))
      paramStringBuilder.append('*');
    while (true)
    {
      return;
      for (int i = 0; i < paramArrayOfString.length; i++)
      {
        paramStringBuilder.append(paramArrayOfString[i]);
        if (i < -1 + paramArrayOfString.length)
          paramStringBuilder.append(", ");
      }
    }
  }

  private int getLimit(String paramString)
  {
    try
    {
      int i = Integer.parseInt(paramString);
      return i;
    }
    catch (NumberFormatException localNumberFormatException)
    {
    }
    return 0;
  }

  private void handleExact(JSONObject paramJSONObject, Boolean paramBoolean, ArrayList<String> paramArrayList, StringBuilder paramStringBuilder, Iterator<?> paramIterator)
    throws JSONException
  {
    if (!paramBoolean.booleanValue())
    {
      if (paramIterator.hasNext())
      {
        String str3 = (String)paramIterator.next();
        Object localObject2 = paramJSONObject.get(str3);
        paramStringBuilder.append("[" + JSONStoreUtil.getDatabaseSafeSearchFieldName(str3) + "]");
        paramStringBuilder.append(" LIKE ?");
        if (paramIterator.hasNext())
          paramStringBuilder.append(" AND ");
        if ((localObject2 instanceof Boolean))
          if (!((Boolean)localObject2).booleanValue())
            break label159;
        label159: for (int j = 1; ; j = 0)
        {
          localObject2 = Integer.valueOf(j);
          paramArrayList.add("%" + localObject2 + "%");
          break;
        }
      }
    }
    else if (paramIterator.hasNext())
    {
      String str1 = (String)paramIterator.next();
      Object localObject1 = paramJSONObject.get(str1);
      String str2 = "[" + JSONStoreUtil.getDatabaseSafeSearchFieldName(str1) + "]";
      if ((localObject1 instanceof Boolean))
        if (!((Boolean)localObject1).booleanValue())
          break label484;
      label484: for (int i = 1; ; i = 0)
      {
        localObject1 = Integer.valueOf(i);
        paramStringBuilder.append(" ( ");
        paramStringBuilder.append(str2);
        paramStringBuilder.append(" = ?");
        paramStringBuilder.append(" OR ");
        paramStringBuilder.append(str2);
        paramStringBuilder.append(" LIKE ?");
        paramStringBuilder.append(" OR ");
        paramStringBuilder.append(str2);
        paramStringBuilder.append(" LIKE ?");
        paramStringBuilder.append(" OR ");
        paramStringBuilder.append(str2);
        paramStringBuilder.append(" LIKE ?");
        paramArrayList.add("" + localObject1);
        paramArrayList.add("%-@-" + localObject1);
        paramArrayList.add("%-@-" + localObject1 + "-@-%");
        paramArrayList.add(localObject1 + "-@-%");
        paramStringBuilder.append(" ) ");
        if (!paramIterator.hasNext())
          break;
        paramStringBuilder.append(" AND ");
        break;
      }
    }
  }

  private boolean hasSortParameter(String paramString)
  {
    return (paramString != null) && (paramString.trim().length() > 0);
  }

  public Cursor findByIds(int[] paramArrayOfInt)
  {
    StringBuilder localStringBuilder = new StringBuilder();
    String[] arrayOfString = new String[paramArrayOfInt.length];
    for (int i = 0; i < paramArrayOfInt.length; i++)
    {
      localStringBuilder.append("_id");
      localStringBuilder.append(" = ?");
      if (i < -1 + paramArrayOfInt.length)
        localStringBuilder.append(" OR ");
      arrayOfString[i] = ("" + paramArrayOfInt[i]);
    }
    Object[] arrayOfObject = new Object[4];
    arrayOfObject[0] = "_id";
    arrayOfObject[1] = "json";
    arrayOfObject[2] = this.schema.getName();
    arrayOfObject[3] = localStringBuilder.toString();
    return rawQuery(JSONStoreUtil.formatString("SELECT {0}, {1} FROM {2} WHERE {3} AND _deleted = 0", arrayOfObject), arrayOfString);
  }

  protected String findOperationForObjectById(int paramInt)
  {
    Object[] arrayOfObject = new Object[3];
    arrayOfObject[0] = "_operation";
    arrayOfObject[1] = this.schema.getName();
    arrayOfObject[2] = "_id";
    String str1 = JSONStoreUtil.formatString("SELECT {0} FROM {1} WHERE {2} LIKE ?", arrayOfObject);
    String[] arrayOfString = new String[1];
    arrayOfString[0] = ("" + paramInt);
    Cursor localCursor = rawQuery(str1, arrayOfString);
    if (localCursor.getCount() < 1)
    {
      localCursor.close();
      return null;
    }
    localCursor.moveToNext();
    String str2 = localCursor.getString(0);
    localCursor.close();
    return str2;
  }

  public Cursor findUsingQueryObject(JSONObject paramJSONObject, String[] paramArrayOfString1, String[] paramArrayOfString2, String paramString1, String paramString2, Boolean paramBoolean)
    throws JSONException
  {
    return findUsingQueryObject(paramJSONObject, paramArrayOfString1, paramArrayOfString2, paramString1, paramString2, paramBoolean, null);
  }

  public Cursor findUsingQueryObject(JSONObject paramJSONObject, String[] paramArrayOfString1, String[] paramArrayOfString2, String paramString1, String paramString2, Boolean paramBoolean, String paramString3)
    throws JSONException
  {
    StringBuilder localStringBuilder1 = new StringBuilder();
    int i = paramJSONObject.length();
    ArrayList localArrayList = new ArrayList();
    StringBuilder localStringBuilder2 = new StringBuilder();
    getFieldsToSelect(paramArrayOfString1, localStringBuilder1);
    buildWhereClause(paramArrayOfString2, localStringBuilder2);
    if (i == 0);
    for (String str = buildFindAllQuery(paramString1, paramString2, paramString3, localStringBuilder1, localStringBuilder2, getLimit(paramString1)); ; str = buildFindQuery(paramJSONObject, paramString1, paramString2, paramBoolean, paramString3, localStringBuilder1, localArrayList, localStringBuilder2))
    {
      String[] arrayOfString = (String[])localArrayList.toArray(new String[localArrayList.size()]);
      return rawQuery(str, arrayOfString);
    }
  }

  protected SQLiteDatabase getDatabase()
  {
    return this.database;
  }

  protected DatabaseSchema getSchema()
  {
    return this.schema;
  }

  public Cursor rawQuery(String paramString, String[] paramArrayOfString)
  {
    this.logger.trace("executing query on database \"" + this.schema.getName() + "\":");
    this.logger.trace("   " + paramString);
    if (paramArrayOfString != null)
    {
      this.logger.trace("arguments:");
      int i = paramArrayOfString.length;
      for (int j = 0; j < i; j++)
      {
        String str = paramArrayOfString[j];
        this.logger.trace("   " + str);
      }
    }
    return this.database.rawQuery(paramString, paramArrayOfString);
  }
}

/* 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.ReadableDatabase
 * JD-Core Version:    0.6.2
 */