package by.istin.android.xcore.processor.impl;
import android.content.ContentValues;
import android.content.Context;
import by.istin.android.xcore.ContextHolder;
import by.istin.android.xcore.gson.ContentValuesAdapter;
import by.istin.android.xcore.gson.DBContentValuesAdapter;
import by.istin.android.xcore.gson.external.ArrayAdapterFactory;
import by.istin.android.xcore.processor.AbstractDBProcessor;
import by.istin.android.xcore.provider.IDBContentProviderSupport;
import by.istin.android.xcore.source.DataSourceRequest;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public abstract class AbstractGsonDBProcessor<Result, DataSourceResult> extends AbstractDBProcessor<Result, DataSourceResult> {
public static Gson createGsonWithContentValuesAdapter(Class<?> clazz) {
return createGsonWithContentValuesAdapter(new ContentValuesAdapter(clazz));
}
public static Gson createGsonWithDbContentValuesAdapter(Class<?> clazz, DataSourceRequest dataSourceRequest, IDBContentProviderSupport dbContentProvider) {
return createGsonWithContentValuesAdapter(new DBContentValuesAdapter(clazz, dataSourceRequest, dbContentProvider));
}
public static Gson createGsonWithContentValuesAdapter(ContentValuesAdapter contentValuesAdapter) {
GsonBuilder gsonBuilder = initGsonBuilder(contentValuesAdapter);
return gsonBuilder.create();
}
public static GsonBuilder initGsonBuilder(ContentValuesAdapter contentValuesAdapter) {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeHierarchyAdapter(ContentValues.class, contentValuesAdapter);
gsonBuilder.registerTypeAdapterFactory(new ArrayAdapterFactory(contentValuesAdapter));
return gsonBuilder;
}
public static Context getHolderContext() {
return ContextHolder.getInstance().getContext();
}
}