Esempio n. 1
0
        /// <inheritdoc/>
        public RepositoryStorageLoadResult LoadRepositoryOrDefault(out NoteRepositoryModel repositoryModel)
        {
            if (_cachedRepository != null)
            {
                repositoryModel = _cachedRepository;
                return(RepositoryStorageLoadResult.SuccessfullyLoaded);
            }

            RepositoryStorageLoadResult result;

            repositoryModel = null;
            bool modelWasUpdated = false;

            try
            {
                // A new repository is created only if it does not yet exist, we won't overwrite
                // an invalid repository.
                if (RepositoryExists())
                {
                    string xmlFilePath = Path.Combine(GetDirectoryPath(), Config.RepositoryFileName);
                    if (!_xmlFileService.TryLoad(xmlFilePath, out XDocument xml))
                    {
                        throw new Exception("Invalid XML");
                    }

                    result          = RepositoryStorageLoadResult.SuccessfullyLoaded;
                    modelWasUpdated = _updater.Update(xml);
                    repositoryModel = XmlUtils.DeserializeFromXmlDocument <NoteRepositoryModel>(xml);
                }
                else
                {
                    result                   = RepositoryStorageLoadResult.CreatedNewEmptyRepository;
                    repositoryModel          = new NoteRepositoryModel();
                    repositoryModel.Revision = NoteRepositoryModel.NewestSupportedRevision;
                    AddWelcomeNote(repositoryModel);
                    modelWasUpdated = true;
                }
            }
            catch (Exception)
            {
                result          = RepositoryStorageLoadResult.InvalidRepository;
                repositoryModel = null;
                modelWasUpdated = false;
            }

            // Automatically save settings if they where modified by an update
            if (modelWasUpdated)
            {
                TrySaveRepository(repositoryModel);
            }
            _cachedRepository = repositoryModel;
            return(result);
        }
Esempio n. 2
0
        /// <inheritdoc/>
        public SettingsModel LoadSettingsOrDefault()
        {
            if (_cachedSettings != null)
            {
                return(_cachedSettings); // Take it form cache if available
            }
            SettingsModel result          = null;
            bool          modelWasUpdated = false;

            try
            {
                string xmlFilePath = Path.Combine(GetDirectoryPath(), Config.UserSettingsFileName);
                if (_xmlFileService.TryLoad(xmlFilePath, out XDocument xml))
                {
                    modelWasUpdated = UpdateSettings(xml);
                    result          = XmlUtils.DeserializeFromXmlDocument <SettingsModel>(xml);
                    AfterLoading(result);
                }
            }
            catch (Exception)
            {
                result = null;
            }

            // Create default settings if result is still null
            if (result == null)
            {
                result          = new SettingsModel();
                modelWasUpdated = true;
            }

            // Automatically save settings if they where modified by an update
            if (modelWasUpdated)
            {
                TrySaveSettingsToLocalDevice(result);
            }
            _cachedSettings = result;
            return(_cachedSettings);
        }