package com.worklight.jsonstore.database;

import android.content.ContentValues;
import android.database.Cursor;
import com.worklight.common.Logger;
import com.worklight.jsonstore.jackson.JacksonSerializedJSONObject;
import com.worklight.jsonstore.util.JSONStoreUtil;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import net.sqlcipher.database.SQLiteDatabase;
import org.json.JSONException;
import org.json.JSONObject;

public class WritableDatabase extends ReadableDatabase
{
  private static final String SQL_AND = " AND";
  private static final String SQL_DELETE = "DELETE FROM {0} WHERE {1};";
  private static final String SQL_INSERT = "INSERT INTO {0} ({1}) VALUES ({2});";
  private static final String SQL_UPDATE = "UPDATE {0} SET {1}{2};";
  private static final String SQL_WHERE = " WHERE";

  protected WritableDatabase(SQLiteDatabase paramSQLiteDatabase, DatabaseSchema paramDatabaseSchema)
  {
    super(paramSQLiteDatabase, paramDatabaseSchema);
  }

  private void logDeleteQuery(Object[] paramArrayOfObject, String paramString, StringBuilder paramStringBuilder)
  {
    Object[] arrayOfObject = new Object[2];
    arrayOfObject[0] = paramString;
    arrayOfObject[1] = paramStringBuilder.toString();
    String str = JSONStoreUtil.formatString("DELETE FROM {0} WHERE {1};", arrayOfObject);
    this.logger.trace("executing delete on database \"" + paramString + "\":");
    this.logger.trace("   " + str);
    this.logger.trace("   args:");
    for (int i = 0; i < paramArrayOfObject.length; i++)
      this.logger.trace("      " + paramArrayOfObject[i]);
  }

  private void logUpdateQuery(String[] paramArrayOfString1, Object[] paramArrayOfObject, String paramString, StringBuilder paramStringBuilder, String[] paramArrayOfString2)
  {
    StringBuilder localStringBuilder = new StringBuilder();
    for (int i = 0; i < paramArrayOfString1.length; i++)
    {
      localStringBuilder.append(paramArrayOfString1[i]);
      localStringBuilder.append(" = ");
      localStringBuilder.append(paramArrayOfObject[i]);
      if (i < -1 + paramArrayOfString1.length)
        localStringBuilder.append(", ");
    }
    Object[] arrayOfObject = new Object[3];
    arrayOfObject[0] = paramString;
    arrayOfObject[1] = localStringBuilder.toString();
    if (paramStringBuilder == null);
    for (String str1 = ""; ; str1 = " WHERE" + paramStringBuilder.toString())
    {
      arrayOfObject[2] = str1;
      String str2 = JSONStoreUtil.formatString("UPDATE {0} SET {1}{2};", arrayOfObject);
      this.logger.trace("executing update on database \"" + paramString + "\":");
      this.logger.trace("   sql: " + str2);
      this.logger.trace("   arguments:");
      int j = paramArrayOfString2.length;
      for (int k = 0; k < j; k++)
      {
        String str3 = paramArrayOfString2[k];
        this.logger.trace("      " + str3);
      }
    }
  }

  public int delete(String[] paramArrayOfString, Object[] paramArrayOfObject)
  {
    String str = getSchema().getName();
    StringBuilder localStringBuilder = new StringBuilder();
    if ((paramArrayOfString == null) || (paramArrayOfString.length < 1))
      localStringBuilder.append("1");
    String[] arrayOfString;
    while (true)
    {
      logDeleteQuery(paramArrayOfObject, str, localStringBuilder);
      arrayOfString = new String[paramArrayOfObject.length];
      for (int i = 0; i < paramArrayOfObject.length; i++)
        arrayOfString[i] = paramArrayOfObject[i].toString();
      for (int j = 0; j < paramArrayOfString.length; j++)
      {
        localStringBuilder.append(paramArrayOfString[j]);
        localStringBuilder.append(" = ?");
        if (j < -1 + paramArrayOfString.length)
          localStringBuilder.append(" AND");
      }
    }
    return getDatabase().delete(str, localStringBuilder.toString(), arrayOfString);
  }

  public int deleteIfRequired(JSONObject paramJSONObject, boolean paramBoolean1, boolean paramBoolean2)
    throws JSONException
  {
    boolean bool = paramBoolean1;
    int i = 1;
    int j = 0;
    try
    {
      j = paramJSONObject.getInt("_id");
      String str2 = findOperationForObjectById(j);
      str1 = str2;
      if (i != 0)
      {
        if ((str1 != null) && (str1.equals("add")))
          bool = true;
        if (bool)
        {
          String[] arrayOfString3 = { "_id" };
          Object[] arrayOfObject3 = new Object[1];
          arrayOfObject3[0] = Integer.valueOf(paramJSONObject.getInt("_id"));
          return delete(arrayOfString3, arrayOfObject3);
        }
      }
    }
    catch (JSONException localJSONException)
    {
      while (true)
      {
        String str1 = null;
        i = 0;
      }
      String[] arrayOfString4 = { "_deleted", "_dirty", "_operation" };
      Object[] arrayOfObject4 = new Object[3];
      arrayOfObject4[0] = Integer.valueOf(1);
      arrayOfObject4[1] = Long.valueOf(new Date().getTime());
      arrayOfObject4[2] = "remove";
      return update(arrayOfString4, arrayOfObject4, j);
    }
    int k = 0;
    Cursor localCursor = findUsingQueryObject(paramJSONObject, new String[] { "_id", "_operation" }, new String[] { "_deleted = 0" }, null, null, Boolean.valueOf(paramBoolean2));
    int m = localCursor.getCount();
    int n = 0;
    if (n < m)
    {
      new JacksonSerializedJSONObject();
      localCursor.moveToNext();
      int i1 = localCursor.getInt(0);
      String[] arrayOfString1;
      Object[] arrayOfObject1;
      if (("add".compareToIgnoreCase(localCursor.getString(1)) == 0) || (paramBoolean1))
      {
        arrayOfString1 = new String[] { "_id" };
        arrayOfObject1 = new Object[1];
        arrayOfObject1[0] = Integer.valueOf(i1);
      }
      String[] arrayOfString2;
      Object[] arrayOfObject2;
      for (int i2 = delete(arrayOfString1, arrayOfObject1); ; i2 = update(arrayOfString2, arrayOfObject2, i1))
      {
        k += i2;
        n++;
        break;
        arrayOfString2 = new String[] { "_deleted", "_dirty", "_operation" };
        arrayOfObject2 = new Object[3];
        arrayOfObject2[0] = Integer.valueOf(1);
        arrayOfObject2[1] = Long.valueOf(new Date().getTime());
        arrayOfObject2[2] = "remove";
      }
    }
    int i3 = k;
    localCursor.close();
    return i3;
  }

  public int update(Map<String, Object> paramMap1, Map<String, Object> paramMap2)
  {
    String[] arrayOfString = new String[paramMap1.size()];
    Object[] arrayOfObject = new Object[paramMap1.size()];
    int i = 0;
    Iterator localIterator = paramMap1.keySet().iterator();
    while (localIterator.hasNext())
    {
      String str = (String)localIterator.next();
      arrayOfString[i] = ("[" + JSONStoreUtil.getDatabaseSafeSearchFieldName(str) + "]");
      int j = i + 1;
      arrayOfObject[i] = paramMap1.get(str);
      i = j;
    }
    return update(arrayOfString, arrayOfObject, paramMap2);
  }

  public int update(JSONObject paramJSONObject, boolean paramBoolean)
    throws Throwable
  {
    if (paramBoolean);
    int i;
    HashMap localHashMap;
    Map localMap;
    String str;
    for (long l = new Date().getTime(); ; l = 0L)
    {
      i = paramJSONObject.getInt("_id");
      localHashMap = new HashMap();
      JSONObject localJSONObject = paramJSONObject.getJSONObject("json");
      localMap = getSchema().mapObject(localJSONObject, null);
      localMap.put("_dirty", Long.valueOf(l));
      localMap.put("_id", Integer.valueOf(i));
      localMap.put("json", localJSONObject.toString());
      str = findOperationForObjectById(i);
      if ((str != null) && (!str.equals("remove")))
        break;
      throw new Throwable();
    }
    if (!str.equals("add"))
      localMap.put("_operation", "replace");
    localHashMap.put("_id", Integer.valueOf(i));
    return update(localMap, localHashMap);
  }

  public int update(String[] paramArrayOfString, Object[] paramArrayOfObject, int paramInt)
    throws JSONException
  {
    HashMap localHashMap = new HashMap();
    localHashMap.put("_id", Integer.valueOf(paramInt));
    return update(paramArrayOfString, paramArrayOfObject, localHashMap);
  }

  public int update(String[] paramArrayOfString, Object[] paramArrayOfObject, Map<String, Object> paramMap)
  {
    String str1 = getSchema().getName();
    ContentValues localContentValues = new ContentValues();
    StringBuilder localStringBuilder = null;
    String[] arrayOfString = null;
    if (paramMap != null)
    {
      int j = paramMap.size();
      localStringBuilder = null;
      arrayOfString = null;
      if (j > 0)
      {
        int k = 0;
        Iterator localIterator = paramMap.keySet().iterator();
        localStringBuilder = new StringBuilder();
        arrayOfString = new String[paramMap.size()];
        while (localIterator.hasNext())
        {
          String str3 = (String)localIterator.next();
          localStringBuilder.append(' ');
          localStringBuilder.append(str3);
          localStringBuilder.append(" = ?");
          if (localIterator.hasNext())
            localStringBuilder.append(" AND");
          int m = k + 1;
          arrayOfString[k] = paramMap.get(str3).toString();
          k = m;
        }
      }
    }
    logUpdateQuery(paramArrayOfString, paramArrayOfObject, str1, localStringBuilder, arrayOfString);
    for (int i = 0; i < paramArrayOfString.length; i++)
      localContentValues.put(paramArrayOfString[i], paramArrayOfObject[i].toString());
    SQLiteDatabase localSQLiteDatabase = getDatabase();
    if (localStringBuilder == null);
    for (String str2 = null; ; str2 = localStringBuilder.toString())
      return localSQLiteDatabase.update(str1, localContentValues, str2, arrayOfString);
  }
}

/* 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.WritableDatabase
 * JD-Core Version:    0.6.2
 */