OSDN Git Service

Ver.1.0.0.185 Task187 Interface based design
[simplebackup/SBTGitRepository.git] / Main / SimpleBackup.Core / Models / IBackupInfo.cs
diff --git a/Main/SimpleBackup.Core/Models/IBackupInfo.cs b/Main/SimpleBackup.Core/Models/IBackupInfo.cs
new file mode 100644 (file)
index 0000000..c5ac655
--- /dev/null
@@ -0,0 +1,101 @@
+//-----------------------------------------------------------------------
+// <copyright file="IBackupInfo.cs" company="Takayoshi Matsuyama">
+//     Copyright (c) Takayoshi Matsuyama. All rights reserved.
+// </copyright>
+//-----------------------------------------------------------------------
+
+// This file is part of Simple Backup.
+//
+// Simple Backup is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Simple Backup is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Simple Backup.  If not, see <http://www.gnu.org/licenses/>.
+
+namespace SimpleBackup.Core.Models
+{
+    using System;
+    using System.ComponentModel;
+    using System.Xml.Linq;
+
+    /// <summary>
+    /// A interface of single backup information.
+    /// </summary>
+    public interface IBackupInfo : INotifyPropertyChanged
+    {
+        /// <summary>
+        /// Occurs when a property which has to be saved in setting file is changed.
+        /// </summary>
+        event EventHandler<EventArgs> SettingFilePropertyChanged;
+
+        /// <summary>
+        /// Gets or sets the identifier.
+        /// </summary>
+        Guid Id { get; set; }
+
+        /// <summary>
+        /// Gets or sets the label.
+        /// </summary>
+        string Label { get; set; }
+
+        /// <summary>
+        /// Gets or sets the type of the backup source.
+        /// </summary>
+        BackupSourceType BackupSourceType { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether the backup is enabled.
+        /// </summary>
+        bool IsEnabled { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether the backup is zip archive.
+        /// </summary>
+        bool IsZipArchive { get; set; }
+
+        /// <summary>
+        /// Gets or sets the source path.
+        /// </summary>
+        string SourcePath { get; set; }
+
+        /// <summary>
+        /// Gets or sets the destination folder path.
+        /// </summary>
+        string DestinationFolderPath { get; set; }
+
+        /// <summary>
+        /// Gets or sets the state of the backup.
+        /// </summary>
+        BackupState BackupState { get; set; }
+
+        /// <summary>
+        /// Gets or sets the name of the latest successful backup target.
+        /// </summary>
+        string LatestSuccessfulBackupTargetName { get; set; }
+
+        /// <summary>
+        /// Saves this instance to a XElement.
+        /// </summary>
+        /// <returns>The generated XElement.</returns>
+        XElement ToXml();
+
+        /// <summary>
+        /// Gets the binary representation of this instance.
+        /// </summary>
+        /// <returns>The binary representation of this instance.</returns>
+        byte[] ToBinary();
+
+        /// <summary>
+        /// Gets the formatted text representation of this instance.
+        /// </summary>
+        /// <returns>The text representation of this instance.</returns>
+        string ToFormattedText();
+    }
+}