LeOS-Genesis/app/src/main/java/com/darkweb/genesissearchengine/dataManager/dataController.java

250 lines
14 KiB
Java
Raw Normal View History

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