public override IVault Save() { Materialize(); _vault.Save(); return(this); }
public static bool EnsureIsOfLatestStructureVersion(this IVault vault) { if (vault == null) { return(false); } if (vault.GetBranchesRecursive().Count() == 0 && vault.GetValuesRecursive().Count() == 0 && vault.GetStructureVersionToken().IsNullOrEmpty()) { vault.UpdateStructureVersionToken(StructureVersion.Current); vault.SetDefault2(); vault.Save(); } if (!vault.IsOfLatestStructureVersion()) { var oldVersion = vault.GetStructureVersionToken(); if (History.Any(kvp => kvp.First == oldVersion)) { Func <String, String> fmt = s => String.Format(s, oldVersion ?? Resources.Version_Empty, StructureVersion.Current); if (MessageBox.Show(fmt(Resources.Version_UpgradeVaultToLatestVersion), Resources.Confirmation_Title, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { try { vault.UpgradeToLatestStructureVersion(); MessageBox.Show(fmt(Resources.Version_UpgradeSucceeded), Resources.Version_UpgradeSucceeded_Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(true); } catch (Exception) { MessageBox.Show(fmt(Resources.Version_UpgradeFailed), Resources.Version_UpgradeFailed_Title, MessageBoxButtons.OK, MessageBoxIcon.Error); vault.Dispose(); return(false); } } else { vault.Dispose(); return(false); } } else { Func <String, String> fmt = s => String.Format(s, oldVersion ?? Resources.Version_Empty, StructureVersion.Current); MessageBox.Show(fmt(Resources.Version_UnknownVersion), Resources.Version_UnknownVersion_Title, MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { return(true); } }