package com.antew.redditinpictures.library.reddit.json;

import android.annotation.TargetApi;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.support.v4.content.LocalBroadcastManager;

import com.antew.redditinpictures.library.json.JsonDeserializer;
import com.antew.redditinpictures.library.logging.Log;
import com.antew.redditinpictures.library.preferences.SharedPreferencesHelper;
import com.antew.redditinpictures.library.reddit.About;
import com.antew.redditinpictures.library.reddit.MySubreddits;
import com.antew.redditinpictures.library.reddit.SubredditChildren;
import com.antew.redditinpictures.library.reddit.SubredditData;
import com.antew.redditinpictures.library.subredditmanager.SubredditManager;
import com.antew.redditinpictures.library.utils.Consts;
import com.antew.redditinpictures.library.utils.Ln;
import com.antew.redditinpictures.library.utils.StringUtil;
import com.antew.redditinpictures.sqlite.RedditContract;
import com.antew.redditinpictures.sqlite.RedditDatabase;

import java.util.ArrayList;
import java.util.Collections;

public class AboutResponse extends RedditResponseHandler {

    public static final String TAG = AboutResponse.class.getSimpleName();
    private RedditResult       result;

    public AboutResponse(RedditResult result) {
        this.result = result;
    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void processHttpResponse(Context context) {
        Ln.v("About Subreddit complete! = %s", result.getJson());
        About aboutSubreddit = JsonDeserializer.deserialize(result.getJson(), About.class);

        if (aboutSubreddit == null) {
            Ln.e("Something went wrong on About Subreddit status code: %d json: %s", result.getHttpStatusCode(), result.getJson());
            return;
        }

        RedditDatabase mDatabaseHelper = new RedditDatabase(context);
        SQLiteDatabase mDatabase = mDatabaseHelper.getWritableDatabase();
        long numEntries = DatabaseUtils.queryNumEntries(mDatabase, RedditDatabase.Tables.SUBREDDITS, "subredditId = ?", new String[] { aboutSubreddit.getData().getId()});
        if (numEntries > 0) {
            ContentResolver resolver = context.getContentResolver();
            resolver.update(RedditContract.Subreddits.CONTENT_URI, aboutSubreddit.getContentValues(), "subredditId = ?", new String[] { aboutSubreddit.getData().getId()});
            Ln.v("Inserted row");
        } else {
            ContentResolver resolver = context.getContentResolver();
            resolver.insert(RedditContract.Subreddits.CONTENT_URI, aboutSubreddit.getContentValues());
            Ln.v("Inserted row");
        }

        LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(Consts.BROADCAST_ABOUT_SUBREDDIT));
    }

}

@@ -1529,54 +1529,8 @@
  %7D%0A%0A
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)%0A
     
@@ -1539,16 +1539,16 @@
 verride%0A
+
     publ
@@ -2098,24 +2098,26 @@
 base();%0A
+%0A%0A
         
 long num
@@ -2112,274 +2112,309 @@
     
-long numEntries = DatabaseUtils.queryNumEntries(mDatabase, RedditDatabase.Tables.SUBREDDITS, %22subredditId = ?%22, new String%5B%5D %7B aboutSubreddit.getData().getId()%7D);%0A        if (numEntries %3E 0) %7B%0A            ContentResolver resolver = context.getContentResolver();%0A    
+ContentResolver resolver = context.getContentResolver();%0A        //TODO: Once API-11 is sunset, replace with an update instead of delete/insert.%0A        // Updates with parameters aren't supported prior to API-11 (Honeycomb). So instead we are just deleting the record if it exists and recreating it.%0A
     
@@ -2426,20 +2426,20 @@
 esolver.
-upda
+dele
 te(Reddi
@@ -2475,43 +2475,8 @@
 URI,
- aboutSubreddit.getContentValues(),
  %22su
@@ -2546,39 +2546,34 @@
 %7D);%0A        
-    
 Ln.v(%22
-Inser
+Dele
 ted row%22);%0A 
@@ -2575,98 +2575,8 @@
 %22);%0A
-        %7D else %7B%0A            ContentResolver resolver = context.getContentResolver();%0A    
     
@@ -2674,28 +2674,24 @@
 ));%0A        
-    
 Ln.v(%22Insert
@@ -2699,26 +2699,16 @@
 d row%22);
-%0A        %7D
 %0A%0A      

Update About to Delete/Insert instead of Update/Insert due to API restrictions