package com.masterofcode.android.magreader.application;
import java.util.ArrayList;
import java.util.List;
import org.kroz.activerecord.ActiveRecordBase;
import org.kroz.activerecord.ActiveRecordException;
import org.kroz.activerecord.Database;
import org.kroz.activerecord.DatabaseBuilder;
import com.masterofcode.android.magreader.MainActivity;
import com.masterofcode.android.magreader.db.entity.BookmarksItem;
import com.masterofcode.android.magreader.db.entity.FeedItem;
import com.masterofcode.android.magreader.db.entity.FeedType;
import com.masterofcode.android.magreader.db.entity.IssueItem;
import com.masterofcode.android.magreader.db.entity.LibraryItem;
import com.masterofcode.android.magreader.db.entity.PurchaseItem;
import com.masterofcode.android.magreader.utils.constants.Constants;
import android.app.Application;
import android.content.Context;
public class JtjApplication extends Application {
private static JtjApplication instance;
public ActiveRecordBase mDatabase;
public ActiveRecordBase mBookmarksDatabase;
public ActiveRecordBase mLibraryDatabase;
public ActiveRecordBase mPurchaseDatabase;
ArrayList<FeedType> feedsCanManage = new ArrayList<FeedType>();
@Override
public void onCreate()
{
super.onCreate();
instance = this;
initDatabases();
}
public ArrayList<FeedType> getManageFeeds() {
return feedsCanManage;
}
public boolean addFeedsToManageArray(FeedType feedCategory) {
if (isUnique(feedCategory)) return feedsCanManage.add(feedCategory);
return false;
}
public boolean isUnique(FeedType item) {
return !feedsCanManage.contains(item);
}
public boolean updateSelectedFeed(int position, boolean isHide) {
return feedsCanManage.get(position).is_hide = isHide;
}
private void initDatabases()
{
initMainDatabase();
initBookmarksDatabase();
initLibraryDatabase();
initPurchaseDatabase();
}
private void initMainDatabase()
{
DatabaseBuilder builder = new DatabaseBuilder(Constants.DATABASE_NAME);
builder.addClass(FeedItem.class);
builder.addClass(FeedType.class);
builder.addClass(IssueItem.class);
Database.setBuilder(builder);
try {
mDatabase = ActiveRecordBase.open(this, Constants.DATABASE_NAME, Constants.DATABASE_VERSION);
} catch (ActiveRecordException e) {
e.printStackTrace();
}
}
private void initBookmarksDatabase()
{
DatabaseBuilder builder = new DatabaseBuilder(Constants.BOOKMARKS_DATABASE_NAME);
builder.addClass(BookmarksItem.class);
Database.setBuilder(builder);
try {
mBookmarksDatabase = ActiveRecordBase.open(this, Constants.BOOKMARKS_DATABASE_NAME, Constants.BOOKMARKS_DATABASE_VERSION);
} catch (ActiveRecordException e) {
e.printStackTrace();
}
}
private void initPurchaseDatabase()
{
DatabaseBuilder builder = new DatabaseBuilder(Constants.PURCHASE_DATABASE_NAME);
builder.addClass(PurchaseItem.class);
Database.setBuilder(builder);
try {
mPurchaseDatabase = ActiveRecordBase.open(this, Constants.PURCHASE_DATABASE_NAME, Constants.PURCHASE_DATABASE_VERSION);
} catch (ActiveRecordException e) {
e.printStackTrace();
}
}
private void initLibraryDatabase()
{
DatabaseBuilder builder = new DatabaseBuilder(Constants.LIBRARY_DATABASE_NAME);
builder.addClass(LibraryItem.class);
Database.setBuilder(builder);
try {
mLibraryDatabase = ActiveRecordBase.open(this, Constants.LIBRARY_DATABASE_NAME, Constants.LIBRARY_DATABASE_VERSION);
} catch (ActiveRecordException e) {
e.printStackTrace();
}
}
public synchronized ActiveRecordBase getDatabase()
{
return mDatabase;
}
public synchronized ActiveRecordBase getBookmarksDatabase()
{
return mBookmarksDatabase;
}
public synchronized ActiveRecordBase getLibraryDatabase()
{
return mLibraryDatabase;
}
public synchronized ActiveRecordBase getPurchaseDatabase()
{
return mPurchaseDatabase;
}
public static Context getContext()
{
return instance;
}
public static JtjApplication getInstance()
{
return instance;
}
}