2020-01-24 16:23:31 +01:00
|
|
|
package com.darkweb.genesissearchengine.dataManager;
|
|
|
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
|
import com.darkweb.genesissearchengine.appManager.activityContextManager;
|
2021-05-19 19:46:36 +02:00
|
|
|
import com.darkweb.genesissearchengine.dataManager.models.bookmarkRowModel;
|
|
|
|
import com.darkweb.genesissearchengine.dataManager.models.tabRowModel;
|
|
|
|
import com.darkweb.genesissearchengine.constants.enums;
|
|
|
|
import com.darkweb.genesissearchengine.constants.keys;
|
|
|
|
import com.darkweb.genesissearchengine.constants.strings;
|
2020-01-24 16:23:31 +01:00
|
|
|
import com.darkweb.genesissearchengine.constants.constants;
|
|
|
|
import com.darkweb.genesissearchengine.constants.status;
|
2021-05-19 19:46:36 +02:00
|
|
|
import com.darkweb.genesissearchengine.eventObserver;
|
2021-02-15 21:26:33 +01:00
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
import org.mozilla.geckoview.ContentBlocking;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
2020-10-05 13:12:00 +02:00
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.List;
|
2021-05-19 19:46:36 +02:00
|
|
|
import static com.darkweb.genesissearchengine.constants.sql.*;
|
2021-01-18 11:07:12 +01:00
|
|
|
import static com.darkweb.genesissearchengine.constants.status.mThemeApplying;
|
2021-05-19 19:46:36 +02:00
|
|
|
import static org.mozilla.geckoview.ContentBlocking.CookieBehavior.ACCEPT_FIRST_PARTY;
|
2020-01-24 16:23:31 +01:00
|
|
|
|
|
|
|
public class dataController
|
|
|
|
{
|
|
|
|
/*Private Variables*/
|
|
|
|
|
2020-11-11 13:11:13 +01:00
|
|
|
private tabDataModel mTabModel;
|
2020-10-20 16:55:08 +02:00
|
|
|
private preferenceDataModel mPreferenceModel;
|
|
|
|
private historyDataModel mHistoryModel;
|
2021-01-18 11:07:12 +01:00
|
|
|
private imageDataModel mImageDataModel;
|
2021-02-03 11:54:19 +01:00
|
|
|
private bookmarkDataModel mBookmarkDataModel;
|
|
|
|
private suggestionDataModel mSuggestionDataModel;
|
2021-02-07 18:40:35 +01:00
|
|
|
private helpDataModel mHelpDataModel;
|
2021-02-19 08:51:37 +01:00
|
|
|
private referenceWebsiteDataModel mReferenceWebsiteDataModel;
|
2021-04-23 14:13:50 +02:00
|
|
|
private bridgesDataModel mBridgeWebsiteDataModel;
|
2021-05-19 19:46:36 +02:00
|
|
|
private sqlCipherDataModel mSqlCipherDataModel;
|
2020-01-24 16:23:31 +01:00
|
|
|
|
|
|
|
/*Private Declarations*/
|
|
|
|
|
|
|
|
private static final dataController sOurInstance = new dataController();
|
|
|
|
public static dataController getInstance()
|
|
|
|
{
|
|
|
|
return sOurInstance;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*Initializations*/
|
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
public void initialize(AppCompatActivity pAppContext){
|
2021-05-19 19:46:36 +02:00
|
|
|
mHistoryModel = new historyDataModel(new invokeHistoryCallbacks());
|
|
|
|
mTabModel = new tabDataModel(new invokeTabCallbacks());
|
2021-02-03 11:54:19 +01:00
|
|
|
mPreferenceModel = new preferenceDataModel(pAppContext);
|
2021-01-18 11:07:12 +01:00
|
|
|
mImageDataModel = new imageDataModel();
|
2021-05-19 19:46:36 +02:00
|
|
|
mBookmarkDataModel = new bookmarkDataModel(new invokeBookmarkCallbacks());
|
2021-02-03 11:54:19 +01:00
|
|
|
mSuggestionDataModel = new suggestionDataModel(pAppContext);
|
2021-02-07 18:40:35 +01:00
|
|
|
mHelpDataModel = new helpDataModel();
|
2021-02-19 08:51:37 +01:00
|
|
|
mReferenceWebsiteDataModel = new referenceWebsiteDataModel();
|
2021-04-23 14:13:50 +02:00
|
|
|
mBridgeWebsiteDataModel = new bridgesDataModel();
|
2021-05-19 19:46:36 +02:00
|
|
|
mSqlCipherDataModel = new sqlCipherDataModel();
|
2020-01-24 16:23:31 +01:00
|
|
|
}
|
|
|
|
public void initializeListData(){
|
2021-02-19 08:51:37 +01:00
|
|
|
mReferenceWebsiteDataModel.onTrigger(dataEnums.eReferenceWebsiteCommands.M_LOAD,Collections.singletonList(activityContextManager.getInstance().getHomeController()));
|
2021-04-23 14:13:50 +02:00
|
|
|
mBridgeWebsiteDataModel.onTrigger(dataEnums.eBridgeWebsiteCommands.M_LOAD,Collections.singletonList(activityContextManager.getInstance().getHomeController()));
|
2021-05-19 19:46:36 +02:00
|
|
|
|
|
|
|
ArrayList<bookmarkRowModel> mBookmarks = (ArrayList<bookmarkRowModel>)invokeSQLCipher(dataEnums.eSqlCipherCommands.M_SELECT_BOOKMARK, null);
|
|
|
|
mBookmarkDataModel.initializebookmark(mBookmarks);
|
2020-11-11 13:11:13 +01:00
|
|
|
if(!status.sClearOnExit)
|
2020-01-24 16:23:31 +01:00
|
|
|
{
|
2021-05-19 19:46:36 +02:00
|
|
|
ArrayList<Object> mHistory = (ArrayList<Object>)invokeSQLCipher(dataEnums.eSqlCipherCommands.M_SELECT_HISTORY, Arrays.asList(0,constants.CONST_FETCHABLE_LIST_SIZE));
|
|
|
|
int mHistoryID = (int)invokeSQLCipher(dataEnums.eSqlCipherCommands.M_HISTORY_ID, null);
|
|
|
|
|
|
|
|
mHistoryModel.onTrigger(dataEnums.eHistoryCommands.M_INITIALIZE_HISTORY, Arrays.asList(mHistory, mHistoryID, mHistoryID));
|
2020-01-24 16:23:31 +01:00
|
|
|
}
|
2021-01-18 11:07:12 +01:00
|
|
|
else {
|
2021-05-19 19:46:36 +02:00
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, Arrays.asList("delete from history where 1",null));
|
2020-01-24 16:23:31 +01:00
|
|
|
}
|
2021-01-18 11:07:12 +01:00
|
|
|
if(status.sRestoreTabs || mThemeApplying){
|
2021-05-19 19:46:36 +02:00
|
|
|
ArrayList<tabRowModel> mTabs = (ArrayList<tabRowModel>)invokeSQLCipher(dataEnums.eSqlCipherCommands.M_SELECT_TABS, null);
|
|
|
|
mTabModel.initializeTab(mTabs);
|
2021-04-05 21:07:02 +02:00
|
|
|
activityContextManager.getInstance().getHomeController().initTabCountForced();
|
2020-12-11 08:05:08 +01:00
|
|
|
}else{
|
|
|
|
invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null);
|
|
|
|
}
|
2020-01-24 16:23:31 +01:00
|
|
|
}
|
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
/*Trigger History*/
|
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
public Object invokeHistory(dataEnums.eHistoryCommands pCommands, List<Object> pData){
|
2020-12-11 08:05:08 +01:00
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
if(pCommands == dataEnums.eHistoryCommands.M_ADD_HISTORY){
|
|
|
|
mTabModel.onTrigger(dataEnums.eTabCommands.M_UPDATE_TAB, pData);
|
2020-12-11 08:05:08 +01:00
|
|
|
}
|
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
if(pCommands.equals(dataEnums.eHistoryCommands.M_LOAD_MORE_HISTORY)){
|
2021-02-19 08:51:37 +01:00
|
|
|
int m_history_size = (int) mHistoryModel.onTrigger(dataEnums.eHistoryCommands.M_HISTORY_SIZE,null) - 1;
|
2021-05-19 19:46:36 +02:00
|
|
|
|
|
|
|
ArrayList<Object> mHistory = (ArrayList<Object>)invokeSQLCipher(dataEnums.eSqlCipherCommands.M_SELECT_HISTORY, Arrays.asList(m_history_size+1,constants.CONST_FETCHABLE_LIST_SIZE));
|
2021-05-29 09:55:46 +02:00
|
|
|
return mHistoryModel.onTrigger(pCommands, Collections.singletonList(mHistory));
|
2020-10-05 13:12:00 +02:00
|
|
|
}else {
|
2021-02-03 11:54:19 +01:00
|
|
|
return mHistoryModel.onTrigger(pCommands, pData);
|
2020-01-24 16:23:31 +01:00
|
|
|
}
|
|
|
|
}
|
2020-10-05 13:12:00 +02:00
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
private class invokeHistoryCallbacks implements eventObserver.eventListener{
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object invokeObserver(List<Object> data, Object e_type)
|
|
|
|
{
|
|
|
|
if(e_type.equals(dataEnums.eHistoryCallbackCommands.M_EXEC_SQL)){
|
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, data);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*Trigger Suggestions*/
|
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
public Object invokeSuggestions(dataEnums.eSuggestionCommands pCommands, List<Object> pData){
|
|
|
|
return mSuggestionDataModel.onTrigger(pCommands, Arrays.asList(pData.get(0), mHistoryModel.onTrigger(dataEnums.eHistoryCommands.M_GET_HISTORY, null), mBookmarkDataModel.onTrigger(dataEnums.eBookmarkCommands.M_GET_BOOKMARK, null)));
|
2020-01-24 16:23:31 +01:00
|
|
|
}
|
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
/*Trigger Reference Websites*/
|
|
|
|
|
2021-02-19 08:51:37 +01:00
|
|
|
public Object invokeReferenceWebsite(dataEnums.eReferenceWebsiteCommands pCommands, List<Object> pData){
|
|
|
|
return mReferenceWebsiteDataModel.onTrigger(pCommands, null);
|
|
|
|
}
|
|
|
|
|
2021-05-24 17:06:43 +02:00
|
|
|
/*Trigger Bridges*/
|
|
|
|
|
|
|
|
public Object invokeBridges(dataEnums.eBridgeWebsiteCommands pCommands, List<Object> pData){
|
|
|
|
return mBridgeWebsiteDataModel.onTrigger(pCommands, null);
|
|
|
|
}
|
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
/*Trigger Preferences*/
|
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
public Object invokePrefs(dataEnums.ePreferencesCommands pCommands, List<Object> pData){
|
2021-04-11 21:25:15 +02:00
|
|
|
if(mPreferenceModel==null){
|
|
|
|
return null;
|
|
|
|
}
|
2021-02-03 11:54:19 +01:00
|
|
|
return mPreferenceModel.onTrigger(pCommands, pData);
|
2020-10-20 16:55:08 +02:00
|
|
|
}
|
2020-10-05 13:12:00 +02:00
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
/*Trigger Help*/
|
|
|
|
|
2021-02-07 18:40:35 +01:00
|
|
|
public Object invokeHelp(dataEnums.eHelpCommands pCommands, List<Object> pData){
|
|
|
|
return mHelpDataModel.onTrigger(pCommands, pData);
|
|
|
|
}
|
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
/*Trigger Bookmarks*/
|
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
public Object invokeBookmark(dataEnums.eBookmarkCommands pCommands, List<Object> pData){
|
|
|
|
return mBookmarkDataModel.onTrigger(pCommands, pData);
|
2020-10-05 13:12:00 +02:00
|
|
|
}
|
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
private class invokeBookmarkCallbacks implements eventObserver.eventListener{
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object invokeObserver(List<Object> data, Object e_type)
|
|
|
|
{
|
|
|
|
if(e_type.equals(dataEnums.eBookmarkCallbackCommands.M_EXEC_SQL)){
|
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, data);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*Trigger Tabs*/
|
|
|
|
|
2021-04-05 21:07:02 +02:00
|
|
|
public Object invokeTab(dataEnums.eTabCommands pCommands, List<Object> pData){
|
2021-06-03 16:44:08 +02:00
|
|
|
if(mTabModel==null){
|
|
|
|
return null;
|
|
|
|
}
|
2021-02-03 11:54:19 +01:00
|
|
|
return mTabModel.onTrigger(pCommands, pData);
|
2020-10-05 13:12:00 +02:00
|
|
|
}
|
2021-01-18 11:07:12 +01:00
|
|
|
|
2021-05-19 19:46:36 +02:00
|
|
|
private class invokeTabCallbacks implements eventObserver.eventListener{
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object invokeObserver(List<Object> data, Object e_type)
|
|
|
|
{
|
|
|
|
if(e_type.equals(dataEnums.eTabCallbackCommands.M_EXEC_SQL)){
|
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, data);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*Trigger Image Cache*/
|
|
|
|
|
2021-02-03 11:54:19 +01:00
|
|
|
public Object invokeImage(dataEnums.eImageCommands pCommands, List<Object> pData){
|
|
|
|
return mImageDataModel.onTrigger(pCommands, pData);
|
2021-01-18 11:07:12 +01:00
|
|
|
}
|
2021-05-19 19:46:36 +02:00
|
|
|
|
|
|
|
/*Trigger SQL Cipher Database*/
|
|
|
|
|
|
|
|
public Object invokeSQLCipher(dataEnums.eSqlCipherCommands pCommands, List<Object> pData){
|
|
|
|
return mSqlCipherDataModel.onTrigger(pCommands, pData);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*Helper Methods*/
|
|
|
|
|
|
|
|
public void clearData(AppCompatActivity mContext){
|
|
|
|
dataController.getInstance().initialize(mContext);
|
|
|
|
status.sSettingIsAppStarted = false;
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SEARCH_HISTORY,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SEARCH_SUGGESTION,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_JAVA_SCRIPT,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_HISTORY_CLEAR,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_GATEWAY,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_GATEWAY_MANUAL,false));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_IS_WELCOME_ENABLED,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.PROXY_IS_APP_RATED,false));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.VPN_ENABLED,false));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.BRIDGE_ENABLES,false));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FONT_ADJUSTABLE,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_ZOOM,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_VOICE_INPUT,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_TRACKING_PROTECTION, ContentBlocking.AntiTracking.DEFAULT));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_DONOT_TRACK,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_COOKIE_ADJUSTABLE,ACCEPT_FIRST_PARTY));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_FLOAT, Arrays.asList(keys.SETTING_FONT_SIZE,100));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.SETTING_LANGUAGE, strings.SETTING_DEFAULT_LANGUAGE));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.SETTING_LANGUAGE_REGION,strings.SETTING_DEFAULT_LANGUAGE_REGION));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE, constants.CONST_BACKEND_GENESIS_URL));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_NOTIFICATION_STATUS,1));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_RESTORE_TAB,false));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING,false));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES,0));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SHOW_FONTS,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_TOOLBAR_THEME,true));
|
2021-06-08 10:40:27 +02:00
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING,false));
|
2021-05-19 19:46:36 +02:00
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_THEME, enums.Theme.THEME_DEFAULT));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_LIST_VIEW,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SHOW_TAB_GRID,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_OPEN_URL_IN_NEW_TAB,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_POPUP,true));
|
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
|
2021-05-29 09:55:46 +02:00
|
|
|
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_INSTALLED,false));
|
2021-05-19 19:46:36 +02:00
|
|
|
|
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_INIT, Collections.singletonList(mContext));
|
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, Arrays.asList(SQL_CLEAR_HISTORY,null));
|
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, Arrays.asList(SQL_CLEAR_BOOKMARK,null));
|
|
|
|
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, Arrays.asList(SQL_CLEAR_TAB,null));
|
|
|
|
|
|
|
|
status.initStatus(mContext);
|
|
|
|
}
|
2020-01-24 16:23:31 +01:00
|
|
|
}
|
2020-10-05 13:12:00 +02:00
|
|
|
|