Esempio n. 1
0
 public override IVault Save()
 {
     Materialize();
     _vault.Save();
     return(this);
 }
Esempio n. 2
0
        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);
            }
        }