From cacb66ef839326092e670dbb24450c58213f53b6 Mon Sep 17 00:00:00 2001 From: Alatreon Date: Fri, 10 Dec 2021 17:27:53 -0800 Subject: [PATCH] Change IDataSource, Add main controller file, add functions signatures. --- .../ArchiveController.cs | 29 ++++++++++++ .../Contracts/IDataSource.cs | 10 ++--- .../Implementations/SQLSource.cs | 44 ++++++++++++++----- .../RelationalDataSourceFactory.cs | 2 +- .../TeamHobby.Main/MasterController.cs | 33 ++++++++++++++ 5 files changed, 100 insertions(+), 18 deletions(-) create mode 100644 Source Code/TeamHobby.Main/MasterController.cs diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/ArchiveController.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/ArchiveController.cs index 9e39fb8..365fe4c 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/ArchiveController.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/ArchiveController.cs @@ -2,6 +2,35 @@ { public class ArchiveController { + private IDataSource _conn; + + // Constructor to take in the connection. + public ArchiveController(IDataSource dataSource) { + _conn = dataSource; + } + + public IDataSource GetDataSource(){ + return _conn; + } + + // Create the folder where the compress file will be stored + public bool CreateArchiveFolder(){ + return true; + } + + // Return the name of the new output file with Path + public string CreateOutFileName(){ + return "hello"; + } + + // put everything toget here + public bool Controller(){ + return true; + } + + + + } } \ No newline at end of file diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Contracts/IDataSource.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Contracts/IDataSource.cs index c2fcd16..a5d61f5 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Contracts/IDataSource.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Contracts/IDataSource.cs @@ -7,18 +7,18 @@ using System.Threading.Tasks; //namespace TeamHobby.HobbyProjectGenerator.Archive.Contracts namespace TeamHobby.HobbyProjectGenerator.Archive { - public interface IDataSource + public interface IDataSource { // Method for reading data, return 0 for sucessful operation - Object ReadData(string cmd); + Object ReadData(T model); // Method for Writing data to a data source - bool WriteData(string cmd); + bool WriteData(T model); //Method for deleteing data from a data source, 0 for successful - bool DeleteData(string cmd); + bool DeleteData(T model); // Method for updating data from a data source, 0 for sucessful - bool UpdateData(string cmd); + bool UpdateData(T model); } } diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Implementations/SQLSource.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Implementations/SQLSource.cs index f9c22e4..6ecbb93 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Implementations/SQLSource.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/Implementations/SQLSource.cs @@ -10,7 +10,7 @@ using System.IO.Compression; namespace TeamHobby.HobbyProjectGenerator.Archive { - public class SQLSource : IDataSource, IRelationArchivable + public class SQLSource : IDataSource { //private SqlConnection conn; @@ -22,12 +22,6 @@ namespace TeamHobby.HobbyProjectGenerator.Archive // // conn.Open(); //} - // The also Identical to update data, maybe only one method is enough - public bool DeleteData(string cmd) - { - throw new NotImplementedException(); - } - // Makre sure to Check for instanceof() before casting to a SQLReader in the controller public Object ReadData(string cmd) { @@ -58,6 +52,13 @@ namespace TeamHobby.HobbyProjectGenerator.Archive } } + // The also Identical to update data, maybe only one method is enough + public bool DeleteData(string cmd) + { + throw new NotImplementedException(); + } + + // TODO: No idea how to check if the command is valid or where to check it public bool UpdateData(string cmd) { @@ -88,11 +89,6 @@ namespace TeamHobby.HobbyProjectGenerator.Archive throw new NotImplementedException(); } - // Method to archive data - public bool CreateArchived(string fileName) - { - throw new NotImplementedException(); - } public bool CompressFile(string fileName) { @@ -125,6 +121,30 @@ namespace TeamHobby.HobbyProjectGenerator.Archive } } + // Copy the Sql data to the a text file + public bool CopyToFile(string filePath){ + return true; + } + + public bool RemoveOutputFile(string filePath){ + return true; + } + + // Remove data from the database, if failed, let the controller handle it. + public bool RemoveEntries() { + + string sqlCmd = "DELETE FROM log WHERE DATE_DIFF(current_timestamp, log.LtimeStamp) > 30"; + + try{ + DeleteData(sqlCmd); + return true; + } + catch { + Console.WriteLine("Eeep! an error in Remove Entries, not to worry, will be handled higher up the call stack"); + throw; + } + } + //public Object ReadPreparedStmt(string table){ // //conn.Open(); // //SqlCommand command = new SqlCommand(null, conn); diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/RelationalDataSourceFactory.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/RelationalDataSourceFactory.cs index 08f602a..94c44fc 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/RelationalDataSourceFactory.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/RelationalDataSourceFactory.cs @@ -10,7 +10,7 @@ namespace TeamHobby.HobbyProjectGenerator.Archive public class RelationalDataSourceFactory { // Mehthod to create a specific data source suitable to the need - public IDataSource? getDataSource(string name) + public IDataSource getDataSource(string name) { try { diff --git a/Source Code/TeamHobby.Main/MasterController.cs b/Source Code/TeamHobby.Main/MasterController.cs new file mode 100644 index 0000000..be53071 --- /dev/null +++ b/Source Code/TeamHobby.Main/MasterController.cs @@ -0,0 +1,33 @@ + +public class MasterController{ + + public static void main(string[] args){ + + //The main Controller of the program, It will run all services here + + // While loop to run everything + + // 1. Initialize the Data Factory here + + // 2. Create the SqlConnection object + + int userInput = 0; + + while (userInput != -1) { + + // Print the menu + + // + if (userInput == 1){ + // 1. User Managment goes here + } + + // Trigger Archiving automatically + // Create new ArchiveManager object + // if (currentDate == 1){ + // ArchiveManager.Controller() + + // Logging also automatic + } + } +} \ No newline at end of file