/// <summary> /// Load the the new GRAMPS data. /// </summary> /// <returns> /// True if the load is successful or False if not. /// </returns> public async Task <bool> TriggerLoadGRAMPSFileAsync(bool deleteOld) { FileInfoEx fileGrampsDataInput = await StoreFolder.FolderGetFileAsync(DataStore.AD.CurrentDataFolder, CommonConstants.StorageGRAMPSFileName).ConfigureAwait(false); if (fileGrampsDataInput != null) { if (deleteOld) { // TODO fix this //await localStoreFile.DataStorageInitialiseAsync(DataStore.AD.CurrentDataFolder).ConfigureAwait(false); } await localStoreFile.DecompressGZIP(fileGrampsDataInput).ConfigureAwait(false); // Save the current Index File modified date for later checking //StoreFileNames.SaveFileModifiedSinceLastSave(CommonConstants.SettingsGPRAMPSFileLastDateTimeModified, CommonConstants.StorageGRAMPSFileName); StoreFileNames.SaveFileModifiedSinceLastSave(CommonConstants.SettingsGPRAMPSFileLastDateTimeModified, fileGrampsDataInput); } await DataStore.CN.MajorStatusDelete().ConfigureAwait(false); await DataStore.CN.ChangeLoadingMessage(null).ConfigureAwait(false); return(false); }
/// <summary> /// Load the the new GRAMPS data. /// </summary> /// <returns> /// True if the load is successful or False if not. /// </returns> public async Task <bool> TriggerLoadGrampsUnZippedFolderAsync() { // HockeyClient.Current.TrackEvent("TriggerLoadGrampsUnZippedFolderAsync"); await DataStore.CN.ChangeLoadingMessage("Loading GRAMPS XML unzipped data").ConfigureAwait(false); { ClearRepositories(); bool tt = await localExternalStorage.DataStorageLoadXML().ConfigureAwait(false); if (tt) { await localExternalStorage.LoadXMLDataAsync().ConfigureAwait(false); await DataStore.CN.MajorStatusAdd("Finished loading GRAMPS XML data").ConfigureAwait(false); FileInfoEx t = await StoreFolder.FolderGetFileAsync(DataStore.AD.CurrentDataFolder, CommonConstants.StorageXMLFileName).ConfigureAwait(false); if (t.Valid) { // Save the current Index File modified date for later checking StoreFileNames.SaveFileModifiedSinceLastSave(CommonConstants.SettingsXMLFileLastDateTimeModified, t); } UpdateSettings(); // save the data in a serial format for next time localEventAggregator.GetEvent<DataSaveSerialEvent>().Publish(null); // let everybody know we have finished loading data _EventAggregator.GetEvent <DataLoadXMLEvent>().Publish(null); return(true); } } await DataStore.CN.MajorStatusDelete().ConfigureAwait(false); await DataStore.CN.ChangeLoadingMessage(null).ConfigureAwait(false); return(true); }
/// <summary> /// Starts the data load asynchronous. Order is: /// 1) UnTar new *.GPKG file /// 2) UnZip new data.GRAMPS file /// 3) Load new data.XML file /// 4) ELSE load Serial file. /// </summary> /// <returns> /// Returns a empty task. /// </returns> public async Task <bool> StartDataLoadAsync() { await DataStore.CN.ChangeLoadingMessage("Loading Data...").ConfigureAwait(false); if (DataStore.DS.IsDataLoaded) { return(true); } // Clear the repositories in case we had to restart after being interupted. ClearRepositories(); DataStore.AD.LoadDataStore(); if (DataStore.AD.CurrentDataFolderValid) { // 1) UnTar *.GPKG file DataStore.AD.CurrentInputFile = await StoreFileNames.FileGetFirstGPKG().ConfigureAwait(false); if (DataStore.AD.CurrentInputFile != null) { //if (await StoreFileNames.FileModifiedSinceLastSaveAsync(CommonConstants.SettingsGPKGFileLastDateTimeModified, DataStore.AD.CurrentInputFile.).ConfigureAwait(false)) //{ await DataStore.CN.ChangeLoadingMessage("Later version of Gramps XML data plus Media compressed file found. Loading it into the program").ConfigureAwait(false); await TriggerLoadGPKGFileAsync(false).ConfigureAwait(false); //await TriggerLoadGRAMPSFileAsync(false).ConfigureAwait(false); //} } // 2) UnZip new data.GRAMPS file FileInfoEx GrampsFile = await StoreFolder.FolderGetFileAsync(DataStore.AD.CurrentDataFolder, CommonConstants.StorageGRAMPSFileName).ConfigureAwait(false); if (GrampsFile.Valid) { if (StoreFileNames.FileModifiedSinceLastSaveAsync(CommonConstants.SettingsGPRAMPSFileLastDateTimeModified, GrampsFile)) { await DataStore.CN.ChangeLoadingMessage("Later version of Gramps data file found. Loading it into the program").ConfigureAwait(false); await TriggerLoadGRAMPSFileAsync(false).ConfigureAwait(false); } } // 3) Load new data.XML file FileInfoEx dataXML = await StoreFolder.FolderGetFileAsync(DataStore.AD.CurrentDataFolder, CommonConstants.StorageXMLFileName).ConfigureAwait(false); if (dataXML.Valid) { if (StoreFileNames.FileModifiedSinceLastSaveAsync(CommonConstants.SettingsXMLFileLastDateTimeModified, dataXML)) { await DataStore.CN.ChangeLoadingMessage("Later version of Gramps XML data file found. Loading it into the program").ConfigureAwait(false); // Load the new data await TriggerLoadGrampsUnZippedFolderAsync().ConfigureAwait(false); return(true); } } if (CommonLocalSettings.DataSerialised) { // 4) ELSE load Serial file await TriggerLoadSerialDataAsync().ConfigureAwait(false); } await DataStore.CN.ChangeLoadingMessage(null).ConfigureAwait(false); return(true); } else { //if (!(DataStore.AD.CurrentDataFolder.Status.LatestException is null)) //{ // DataStore.CN.NotifyException("StartDataLoadAsync", DataStore.AD.CurrentDataFolder.Status.LatestException); //} DataStore.CN.NotifyError("DataStorageFolder not valid. It will need to be reloaded..."); CommonLocalSettings.SetReloadDatabase(); } // TODO Handle special messages if there is a problem await DataStore.CN.ChangeLoadingMessage("Unable to load Datafolder").ConfigureAwait(false); return(false); }