package by.istin.android.xcore.test;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.test.ApplicationTestCase;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.InputStream;
import by.istin.android.xcore.CoreApplication;
import by.istin.android.xcore.app.Application;
import by.istin.android.xcore.db.IDBConnector;
import by.istin.android.xcore.db.impl.DBHelper;
import by.istin.android.xcore.db.impl.sqlite.SQLiteSupport;
import by.istin.android.xcore.processor.impl.AbstractGsonProcessor;
import by.istin.android.xcore.processor.impl.GsonArrayContentValuesProcessor;
import by.istin.android.xcore.source.DataSourceRequest;
import by.istin.android.xcore.source.impl.http.HttpAndroidDataSource;
import by.istin.android.xcore.test.bo.DialogsResponse;
import by.istin.android.xcore.test.bo.FriendsResponse;
import by.istin.android.xcore.test.vk.Attachment;
import by.istin.android.xcore.test.vk.Dialog;
import by.istin.android.xcore.test.vk.FwdMessage;
import by.istin.android.xcore.test.vk.User;
import by.istin.android.xcore.utils.CursorUtils;
import by.istin.android.xcore.utils.Log;
public class TestDatasourceService extends ApplicationTestCase<Application> {
public TestDatasourceService() {
super(Application.class);
}
@Override
protected void setUp() throws Exception {
createApplication();
super.setUp();
}
public void testGetFriends() throws Exception {
HttpAndroidDataSource httpAndroidDataSource = new HttpAndroidDataSource();
DataSourceRequest dataSourceRequest = new DataSourceRequest("https://dl.dropboxusercontent.com/u/16403954/xcore/getFriends.json");
InputStream inputStream = httpAndroidDataSource.getSource(dataSourceRequest);
GsonArrayContentValuesProcessor gsonArrayContentValuesProcessor = new GsonArrayContentValuesProcessor(User.class){
@Override
protected ContentValues[] process(Gson gson,
BufferedReader bufferedReader) {
return gson.fromJson(bufferedReader, FriendsResponse.class).getResults();
}
};
ContentValues[] contentValues = gsonArrayContentValuesProcessor.execute(dataSourceRequest, httpAndroidDataSource, inputStream);
IDBConnector connector = new SQLiteSupport().createConnector(getApplication());
DBHelper dbHelper = new DBHelper(connector);
dbHelper.createTablesForModels(User.class);
dbHelper.updateOrInsert(User.class, contentValues);
}
public void testGetDialogs() throws Exception {
HttpAndroidDataSource httpAndroidDataSource = new HttpAndroidDataSource();
DataSourceRequest dataSourceRequest = new DataSourceRequest("https://dl.dropboxusercontent.com/u/16403954/xcore/getDialogs.json");
InputStream inputStream = httpAndroidDataSource.getSource(dataSourceRequest);
AbstractGsonProcessor<DialogsResponse> gsonArrayContentValuesProcessor = new AbstractGsonProcessor<DialogsResponse>(Dialog.class, DialogsResponse.class) {
@Override
public void cache(Context context, DataSourceRequest dataSourceRequest, DialogsResponse result) {
}
@Override
protected DialogsResponse process(Gson gson,
BufferedReader bufferedReader) {
return getGson().fromJson(bufferedReader, DialogsResponse.class);
/*JsonObject jsonObject = getGson().fromJson(bufferedReader, JsonObject.class);
JsonArray dialogsJsonArray = jsonObject.get("response").getAsJsonObject().getAsJsonArray("dialogs");
JsonArray usersJsonArray = jsonObject.get("response").getAsJsonObject().getAsJsonArray("users");
Gson dialogGson = createGsonWithContentValuesAdapter(Dialog.class);
ContentValues[] dialogs = dialogGson.fromJson(dialogsJsonArray, ContentValues[].class);
Gson usersGson = createGsonWithContentValuesAdapter(User.class);
ContentValues[] users = usersGson.fromJson(usersJsonArray, ContentValues[].class);
DialogsResponse dialogsResponse = new DialogsResponse();
dialogsResponse.setDialogs(dialogs);
dialogsResponse.setUsers(users);
return dialogsResponse;*/
}
@Override
public String getAppServiceKey() {
// not needs there
return null;
}
};
DialogsResponse dialogResponse = gsonArrayContentValuesProcessor.execute(dataSourceRequest, httpAndroidDataSource, inputStream);
ContentValues[] dialogs = dialogResponse.getDialogs();
ContentValues[] users = dialogResponse.getUsers();
IDBConnector connector = new SQLiteSupport().createConnector(getApplication());
DBHelper dbHelper = new DBHelper(connector);
dbHelper.createTablesForModels(Dialog.class);
dbHelper.createTablesForModels(Attachment.class);
dbHelper.createTablesForModels(FwdMessage.class);
dbHelper.createTablesForModels(User.class);
dbHelper.delete(Dialog.class, null, null);
Log.startAction("dialogInsert");
dbHelper.updateOrInsert(Dialog.class, dialogs);
Log.endAction("dialogInsert");
Log.startAction("dialogInsertResult");
Cursor cursor = dbHelper.query(Dialog.class, null, null, null, null, null, null, null);
cursor.getCount();
Log.endAction("dialogInsertResult");
CursorUtils.close(cursor);
dbHelper.updateOrInsert(User.class, users);
}
}