package com.darkweb.genesissearchengine.dataManager; import androidx.appcompat.app.AppCompatActivity; import com.darkweb.genesissearchengine.appManager.activityContextManager; import com.darkweb.genesissearchengine.appManager.databaseManager.databaseController; import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel; import com.darkweb.genesissearchengine.constants.constants; import com.darkweb.genesissearchengine.constants.status; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import static com.darkweb.genesissearchengine.constants.status.mThemeApplying; public class dataController { /*Private Variables*/ private tabDataModel mTabModel; private preferenceDataModel mPreferenceModel; private historyDataModel mHistoryModel; private imageDataModel mImageDataModel; private bookmarkDataModel mBookMarkDataModel; /*Private Declarations*/ private static final dataController sOurInstance = new dataController(); public static dataController getInstance() { return sOurInstance; } /*Initializations*/ public void initialize(AppCompatActivity app_context){ mHistoryModel = new historyDataModel(); mTabModel = new tabDataModel(); mPreferenceModel = new preferenceDataModel(app_context); mImageDataModel = new imageDataModel(); mBookMarkDataModel = new bookmarkDataModel(); } public void initializeListData(){ invokeSuggestion(dataEnums.eSuggestionCommands.M_INIT_SUGGESTION, null); mBookMarkDataModel.initializebookmark(databaseController.getInstance().selectBookmark()); if(!status.sClearOnExit) { mHistoryModel.onTrigger(dataEnums.eHistoryCommands.M_INITIALIZE_HISTORY, Arrays.asList(databaseController.getInstance().selectHistory(0,constants.CONST_FETCHABLE_LIST_SIZE), databaseController.getInstance().getLargestHistoryID(),databaseController.getInstance().getLargestHistoryID())); } else { databaseController.getInstance().execSQL("delete from history where 1",null); } if(status.sRestoreTabs || mThemeApplying){ mTabModel.initializeTab(databaseController.getInstance().selectTabs()); activityContextManager.getInstance().getHomeController().initTabCount(); }else{ invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null); } } /*Recieving History*/ public Object invokeHistory(dataEnums.eHistoryCommands p_commands, List p_data){ if(p_commands == dataEnums.eHistoryCommands.M_ADD_HISTORY){ mTabModel.onTrigger(dataEnums.eTabCommands.M_UPDATE_TAB, p_data); } if(p_commands.equals(dataEnums.eHistoryCommands.M_LOAD_MORE_HISTORY)){ int m_history_size = (int) mHistoryModel.onTrigger(dataEnums.eHistoryCommands.M_HISTORY_SIZE,null); return mHistoryModel.onTrigger(p_commands, Collections.singletonList(databaseController.getInstance().selectHistory(m_history_size+1,constants.CONST_FETCHABLE_LIST_SIZE))); }else { return mHistoryModel.onTrigger(p_commands, p_data); } } /*Recieving Preferences*/ public Object invokePrefs(dataEnums.ePreferencesCommands p_commands, List p_data){ return mPreferenceModel.onTrigger(p_commands, p_data); } /*Recieving History*/ public Object invokeBookmark(dataEnums.eBookmarkCommands p_commands, List p_data){ return mBookMarkDataModel.onTrigger(p_commands, p_data); } public Object invokeSuggestion(dataEnums.eSuggestionCommands p_commands, List p_data){ if(dataEnums.eSuggestionCommands.M_GET_SUGGESTION.equals(p_commands)) { ArrayList mModel = new ArrayList<>(); if(p_data!=null){ mModel.addAll((ArrayList) dataController.getInstance().invokeBookmark(dataEnums.eBookmarkCommands.M_GET_SUGGESTIONS, p_data)); dataController.getInstance().invokeHistory(dataEnums.eHistoryCommands.M_GET_SUGGESTIONS, Arrays.asList(p_data.get(0),mModel)); } return mModel; }else { return null; } } public Object invokeTab(dataEnums.eTabCommands p_commands, List p_data){ return mTabModel.onTrigger(p_commands, p_data); } public Object invokeImage(dataEnums.eImageCommands p_commands, List p_data){ return mImageDataModel.onTrigger(p_commands, p_data); } }