package com.ikea.shared.util;

import android.content.Context;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutorService;

public class DataPersister<T extends Persistable>
{
  private final Comparator<T> mComparator;
  private final Context mCtx;
  private final ExecutorService mExecutor = AppExecutors.highPrio();
  private final List<T> mList = Collections.synchronizedList(new ArrayList());
  private final String mRootPath;
  private final Class<T> mTypeArgumentClass;

  public DataPersister(Context paramContext, String paramString, Class<T> paramClass, Comparator<T> paramComparator)
  {
    this.mCtx = paramContext.getApplicationContext();
    this.mRootPath = paramString;
    this.mTypeArgumentClass = paramClass;
    this.mComparator = paramComparator;
  }

  private File objectFolder(Context paramContext)
  {
    File localFile = new File(paramContext.getFilesDir(), this.mRootPath);
    if (!localFile.exists())
      localFile.mkdirs();
    return localFile;
  }

  private File resetFileForObject(T paramT)
  {
    File localFile = new File(objectFolder(this.mCtx), paramT.getId());
    if (localFile.exists())
      localFile.delete();
    return localFile;
  }

  public T contains(T paramT)
  {
    Iterator localIterator = this.mList.iterator();
    do
    {
      boolean bool = localIterator.hasNext();
      ? = null;
      if (!bool)
        break;
    }
    while (!((Persistable)localIterator.next()).equals(paramT));
    T ? = paramT;
    return ?;
  }

  public T get(String paramString)
  {
    Iterator localIterator = this.mList.iterator();
    Persistable localPersistable;
    do
    {
      boolean bool = localIterator.hasNext();
      localObject = null;
      if (!bool)
        break;
      localPersistable = (Persistable)localIterator.next();
    }
    while (!localPersistable.getId().equals(paramString));
    Object localObject = localPersistable;
    return localObject;
  }

  // ERROR //
  public List<T> load()
    throws FileNotFoundException
  {
    // Byte code:
    //   0: aload_0
    //   1: aload_0
    //   2: getfield 52	com/ikea/shared/util/DataPersister:mCtx	Landroid/content/Context;
    //   5: invokespecial 82	com/ikea/shared/util/DataPersister:objectFolder	(Landroid/content/Context;)Ljava/io/File;
    //   8: invokevirtual 131	java/io/File:listFiles	()[Ljava/io/File;
    //   11: astore_1
    //   12: aload_0
    //   13: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   16: invokeinterface 134 1 0
    //   21: aload_1
    //   22: ifnull +297 -> 319
    //   25: aload_1
    //   26: arraylength
    //   27: istore_2
    //   28: iconst_0
    //   29: istore_3
    //   30: aconst_null
    //   31: astore 4
    //   33: iload_3
    //   34: iload_2
    //   35: if_icmpge +281 -> 316
    //   38: aload_1
    //   39: iload_3
    //   40: aaload
    //   41: astore 6
    //   43: invokestatic 139	java/lang/System:gc	()V
    //   46: new 141	com/google/gson/Gson
    //   49: dup
    //   50: invokespecial 142	com/google/gson/Gson:<init>	()V
    //   53: astore 14
    //   55: new 144	java/io/FileReader
    //   58: dup
    //   59: aload 6
    //   61: invokespecial 147	java/io/FileReader:<init>	(Ljava/io/File;)V
    //   64: astore 8
    //   66: new 149	com/google/gson/stream/JsonReader
    //   69: dup
    //   70: aload 8
    //   72: invokespecial 152	com/google/gson/stream/JsonReader:<init>	(Ljava/io/Reader;)V
    //   75: astore 15
    //   77: aload 15
    //   79: iconst_1
    //   80: invokevirtual 156	com/google/gson/stream/JsonReader:setLenient	(Z)V
    //   83: aload 14
    //   85: aload 15
    //   87: aload_0
    //   88: getfield 56	com/ikea/shared/util/DataPersister:mTypeArgumentClass	Ljava/lang/Class;
    //   91: invokevirtual 160	com/google/gson/Gson:fromJson	(Lcom/google/gson/stream/JsonReader;Ljava/lang/reflect/Type;)Ljava/lang/Object;
    //   94: checkcast 84	com/ikea/shared/util/Persistable
    //   97: astore 16
    //   99: aload 16
    //   101: ifnull +65 -> 166
    //   104: aload_0
    //   105: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   108: aload 16
    //   110: invokeinterface 163 2 0
    //   115: pop
    //   116: aload 8
    //   118: ifnull +8 -> 126
    //   121: aload 8
    //   123: invokevirtual 166	java/io/FileReader:close	()V
    //   126: aload_0
    //   127: getfield 58	com/ikea/shared/util/DataPersister:mComparator	Ljava/util/Comparator;
    //   130: ifnull +26 -> 156
    //   133: aload_0
    //   134: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   137: invokeinterface 169 1 0
    //   142: ifne +14 -> 156
    //   145: aload_0
    //   146: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   149: aload_0
    //   150: getfield 58	com/ikea/shared/util/DataPersister:mComparator	Ljava/util/Comparator;
    //   153: invokestatic 173	java/util/Collections:sort	(Ljava/util/List;Ljava/util/Comparator;)V
    //   156: iinc 3 1
    //   159: aload 8
    //   161: astore 4
    //   163: goto -130 -> 33
    //   166: aload 6
    //   168: invokevirtual 91	java/io/File:delete	()Z
    //   171: pop
    //   172: goto -56 -> 116
    //   175: astore 7
    //   177: aload 7
    //   179: invokevirtual 176	java/lang/Throwable:printStackTrace	()V
    //   182: new 178	java/lang/StringBuilder
    //   185: dup
    //   186: invokespecial 179	java/lang/StringBuilder:<init>	()V
    //   189: ldc 181
    //   191: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   194: aload 6
    //   196: invokevirtual 188	java/io/File:getName	()Ljava/lang/String;
    //   199: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   202: invokevirtual 191	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   205: invokestatic 197	com/ikea/shared/util/L:E	(Ljava/lang/String;)V
    //   208: aload 6
    //   210: invokevirtual 75	java/io/File:exists	()Z
    //   213: ifeq +9 -> 222
    //   216: aload 6
    //   218: invokevirtual 91	java/io/File:delete	()Z
    //   221: pop
    //   222: aload 8
    //   224: ifnull -98 -> 126
    //   227: aload 8
    //   229: invokevirtual 166	java/io/FileReader:close	()V
    //   232: goto -106 -> 126
    //   235: astore 12
    //   237: aload 12
    //   239: invokevirtual 198	java/io/IOException:printStackTrace	()V
    //   242: goto -116 -> 126
    //   245: astore 18
    //   247: aload 18
    //   249: invokevirtual 198	java/io/IOException:printStackTrace	()V
    //   252: goto -126 -> 126
    //   255: astore 11
    //   257: aload 11
    //   259: invokevirtual 199	java/lang/Exception:printStackTrace	()V
    //   262: new 178	java/lang/StringBuilder
    //   265: dup
    //   266: invokespecial 179	java/lang/StringBuilder:<init>	()V
    //   269: ldc 201
    //   271: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   274: aload 6
    //   276: invokevirtual 188	java/io/File:getName	()Ljava/lang/String;
    //   279: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   282: invokevirtual 191	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   285: invokestatic 197	com/ikea/shared/util/L:E	(Ljava/lang/String;)V
    //   288: goto -66 -> 222
    //   291: astore 9
    //   293: aload 8
    //   295: ifnull +8 -> 303
    //   298: aload 8
    //   300: invokevirtual 166	java/io/FileReader:close	()V
    //   303: aload 9
    //   305: athrow
    //   306: astore 10
    //   308: aload 10
    //   310: invokevirtual 198	java/io/IOException:printStackTrace	()V
    //   313: goto -10 -> 303
    //   316: aload 4
    //   318: pop
    //   319: aload_0
    //   320: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   323: areturn
    //   324: astore 9
    //   326: aload 4
    //   328: astore 8
    //   330: goto -37 -> 293
    //   333: astore 7
    //   335: aload 4
    //   337: astore 8
    //   339: goto -162 -> 177
    //
    // Exception table:
    //   from	to	target	type
    //   66	99	175	java/lang/Throwable
    //   104	116	175	java/lang/Throwable
    //   166	172	175	java/lang/Throwable
    //   227	232	235	java/io/IOException
    //   121	126	245	java/io/IOException
    //   208	222	255	java/lang/Exception
    //   66	99	291	finally
    //   104	116	291	finally
    //   166	172	291	finally
    //   177	208	291	finally
    //   208	222	291	finally
    //   257	288	291	finally
    //   298	303	306	java/io/IOException
    //   43	66	324	finally
    //   43	66	333	java/lang/Throwable
  }

  public void loadAsync(final ServiceCallback<List<T>> paramServiceCallback)
  {
    this.mExecutor.execute(new Runnable()
    {
      public void run()
      {
        try
        {
          ArrayList localArrayList = new ArrayList(DataPersister.this.load());
          paramServiceCallback.callbackDone(localArrayList, null, null);
          return;
        }
        catch (FileNotFoundException localFileNotFoundException)
        {
          L.E(this, "exception loading ", localFileNotFoundException);
          paramServiceCallback.callbackDone(null, null, localFileNotFoundException);
        }
      }
    });
  }

  public T remove(T paramT)
  {
    this.mList.remove(paramT);
    resetFileForObject(paramT);
    return paramT;
  }

  public List<T> remove(List<T> paramList)
  {
    this.mList.removeAll(paramList);
    Iterator localIterator = paramList.iterator();
    while (localIterator.hasNext())
      resetFileForObject((Persistable)localIterator.next());
    return paramList;
  }

  public void remove(final ServiceCallback<List<T>> paramServiceCallback, final List<T> paramList)
  {
    this.mExecutor.execute(new Runnable()
    {
      public void run()
      {
        DataPersister.this.remove(paramList);
        paramServiceCallback.callbackDone(paramList, null, null);
      }
    });
  }

  public void removeAsync(final ServiceCallback<T> paramServiceCallback, final T paramT)
  {
    this.mExecutor.execute(new Runnable()
    {
      public void run()
      {
        Persistable localPersistable = DataPersister.this.remove(paramT);
        paramServiceCallback.callbackDone(localPersistable, null, null);
      }
    });
  }

  public void reset()
  {
    ArrayList localArrayList = new ArrayList(this.mList);
    Iterator localIterator = localArrayList.iterator();
    while (localIterator.hasNext())
    {
      Persistable localPersistable = (Persistable)localIterator.next();
      if (localPersistable != null)
        resetFileForObject(localPersistable);
    }
    localArrayList.clear();
  }

  public void reset(final ServiceCallback<List<T>> paramServiceCallback)
  {
    this.mExecutor.execute(new Runnable()
    {
      public void run()
      {
        DataPersister.this.reset();
        paramServiceCallback.callbackDone(DataPersister.this.mList, null, null);
      }
    });
  }

  // ERROR //
  public T save(T paramT)
    throws IOException
  {
    // Byte code:
    //   0: invokestatic 139	java/lang/System:gc	()V
    //   3: aload_0
    //   4: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   7: aload_1
    //   8: invokeinterface 248 2 0
    //   13: istore_2
    //   14: iload_2
    //   15: iflt +108 -> 123
    //   18: aload_0
    //   19: new 178	java/lang/StringBuilder
    //   22: dup
    //   23: invokespecial 179	java/lang/StringBuilder:<init>	()V
    //   26: ldc 250
    //   28: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   31: aload_1
    //   32: invokeinterface 88 1 0
    //   37: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   40: invokevirtual 191	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   43: invokestatic 254	com/ikea/shared/util/L:D	(Ljava/lang/Object;Ljava/lang/String;)V
    //   46: aload_0
    //   47: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   50: iload_2
    //   51: aload_1
    //   52: invokeinterface 258 3 0
    //   57: pop
    //   58: aconst_null
    //   59: astore 4
    //   61: aload_0
    //   62: aload_1
    //   63: invokespecial 219	com/ikea/shared/util/DataPersister:resetFileForObject	(Lcom/ikea/shared/util/Persistable;)Ljava/io/File;
    //   66: astore 6
    //   68: new 141	com/google/gson/Gson
    //   71: dup
    //   72: invokespecial 142	com/google/gson/Gson:<init>	()V
    //   75: astore 7
    //   77: aload 6
    //   79: invokevirtual 261	java/io/File:createNewFile	()Z
    //   82: pop
    //   83: new 263	java/io/FileOutputStream
    //   86: dup
    //   87: aload 6
    //   89: invokespecial 264	java/io/FileOutputStream:<init>	(Ljava/io/File;)V
    //   92: astore 9
    //   94: aload 9
    //   96: aload 7
    //   98: aload_1
    //   99: invokevirtual 268	com/google/gson/Gson:toJson	(Ljava/lang/Object;)Ljava/lang/String;
    //   102: ldc_w 270
    //   105: invokevirtual 274	java/lang/String:getBytes	(Ljava/lang/String;)[B
    //   108: invokevirtual 278	java/io/FileOutputStream:write	([B)V
    //   111: aload 9
    //   113: invokevirtual 281	java/io/FileOutputStream:flush	()V
    //   116: aload 9
    //   118: invokestatic 287	com/ikea/shared/util/IOUtils:closeQuietly	(Ljava/io/Closeable;)V
    //   121: aload_1
    //   122: areturn
    //   123: aload_0
    //   124: new 178	java/lang/StringBuilder
    //   127: dup
    //   128: invokespecial 179	java/lang/StringBuilder:<init>	()V
    //   131: ldc_w 289
    //   134: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   137: aload_1
    //   138: invokeinterface 88 1 0
    //   143: invokevirtual 185	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   146: invokevirtual 191	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   149: invokestatic 254	com/ikea/shared/util/L:D	(Ljava/lang/Object;Ljava/lang/String;)V
    //   152: aload_0
    //   153: getfield 44	com/ikea/shared/util/DataPersister:mList	Ljava/util/List;
    //   156: aload_1
    //   157: invokeinterface 163 2 0
    //   162: pop
    //   163: goto -105 -> 58
    //   166: astore 5
    //   168: aload 4
    //   170: invokestatic 287	com/ikea/shared/util/IOUtils:closeQuietly	(Ljava/io/Closeable;)V
    //   173: aload 5
    //   175: athrow
    //   176: astore 5
    //   178: aload 9
    //   180: astore 4
    //   182: goto -14 -> 168
    //
    // Exception table:
    //   from	to	target	type
    //   61	94	166	finally
    //   94	116	176	finally
  }

  public void saveAsync(final ServiceCallback<T> paramServiceCallback, final T paramT)
  {
    this.mExecutor.execute(new Runnable()
    {
      public void run()
      {
        try
        {
          Persistable localPersistable = DataPersister.this.save(paramT);
          paramServiceCallback.callbackDone(localPersistable, null, null);
          return;
        }
        catch (IOException localIOException)
        {
          L.E(this, "exception saving " + paramT.getId(), localIOException);
          paramServiceCallback.callbackDone(null, null, localIOException);
        }
      }
    });
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.ikea.shared.util.DataPersister
 * JD-Core Version:    0.6.2
 */