diff --git a/doc/LowLevel/ArchivingWithError.png b/doc/LowLevel/ArchivingWithError.png new file mode 100644 index 0000000..34d1db8 Binary files /dev/null and b/doc/LowLevel/ArchivingWithError.png differ diff --git a/doc/LowLevel/ArchivingWithError.svg b/doc/LowLevel/ArchivingWithError.svg new file mode 100644 index 0000000..ab49cd2 --- /dev/null +++ b/doc/LowLevel/ArchivingWithError.svg @@ -0,0 +1 @@ +%0Atitle%20Use%20Case%3A%20Archiving%0A%0Aparticipant%20Controller.cs%20%2390EE90%0Aparticipant%20RDSFactory%20%2326abff%0Aparticipant%20ArchiveManager%20%23ffffe0%0Aparticipant%20SqlDAO%20%23D3D3D3%0Aparticipant%20MariaDB%20%2300FFFF%0A%0Aactivate%20Controller.cs%20%2390EE90%0A%2F%2F%20Create%20a%20new%20factory%20%0AController.cs-%3ERDSFactory%3Afactory%20%3D%20new%20RDSFactory()%0Aactivate%20RDSFactory%20%2326abff%0ARDSFactory-%3ERDSFactory%3AConstructor()%0AController.cs%3C--RDSFactory%3Areturn%20RDSFactory%0Adeactivate%20RDSFactory%0AController.cs-%3ESqlDAO%3A%20%2B%2BIDataSource%20factory.GetDataSource(string%20name%2C%20string%20connInfo)%2B%2B%0Aactivate%20SqlDAO%20%23D3D3D3%0ASqlDAO-%3ESqlDAO%3A%2B%2BConstructor(string%20connInfo)%2B%2B%0AController.cs%3C--SqlDAO%3A%20%2B%2Breturn%20SqlDAO%2B%2B%0A%0A%0Aalt%20%23red%20%0ASqlDAO%20-%3ESqlDAO%3A%20Catch%20Exception%0ASqlDAO%20--%3EController.cs%3Areturn%20%22DataSourceTimeOut%22%0Aend%20%0Adeactivate%20SqlDAO%0A%0A%2F%2F%20Create%20Archive%20Manager%0A%0Aactivate%20ArchiveManager%20%23ffffe0%0Agroup%20%23lightblue%20Connection%20to%20DataSource%20successful%0AController.cs%20-%3EArchiveManager%3Anew%20ArchiveManager(IDataSource%20conn)%0AArchiveManager%20-%3EArchiveManager%3A%20ArchiveManager(IDatasSource%20conn)%0A%0A%2F%2F%20Calling%20the%20main%3A%0AArchiveManager%20--%3EController.cs%3A%20return%20ArchiveManager%0Aloop%20%23lightblue%20while%20true%0Aalt%20%23lightgreen%20The%20First%20Day%20of%20the%20month%20at%2000%3A00%3A00%20AM%0AController.cs%20-%3EArchiveManager%3A%20bool%20ArchiveManager.Controller(%20)%0A%0A%2F%2F%20Keep%20looping%0A%0A%2F%2F%20Check%20if%20the%20directory%20exist%20or%20not%0Aalt%20%23lightgreen%20Archive%20folder%20does%20not%20exist%20already%20in%20the%20current%20directory%0AArchiveManager%20-%3E%20ArchiveManager%3Abool%20CreateArchiveFolder(string%20path)%0A%0Aend%20%0A%2F%2F%20Create%20the%20file%20name%20%0AArchiveManager%20-%3EArchiveManager%3Astring%20filePath%20%3D%20string%20CreateOutFileName(%20)%0AArchiveManager%20-%3ESqlDAO%3Abool%20Compress(string%20filePath)%0A%0Aactivate%20SqlDAO%20%23D3D3D3%0Aactivate%20MariaDB%20%2300FFFF%0ASqlDAO%20-%3EMariaDB%3A%20bool%20CopyToArchive(string%20filePath)%0A%2F%2F%20Sql%20Command%20to%20add%20data%20to%20the%20table%0AMariaDB%20-%3EMariaDB%3A%20SELECT%20'LtimeStamp'%2C%20'logID'%2C%20'LvName'%2C%20'catName'%2C%20'userOP'%2C%20'logMessage'%20%5CnUNION%20ALL%5CnSELECT%20*%20FROM%20log%5CnWHERE%20DATEDIFF(CURRENT_TIMESTAMP%2C%20log.LtimeStamp)%20%3E%2030%5CnINTO%20OUTFILE%20%40filePath%5CnFIELDS%20ENCLOSED%20BY%20''%5CnTERMINATED%20BY%20'%2C'%5CnESCAPED%20BY%20'%22'%5CnLINES%20TERMINATED%20BY%20'%5Cr%5C%5Cn'%3B%0Aalt%20%23lightgreen%20No%20error%20when%20doing%20executing%20copy%20SQL%20command%0AMariaDB%20--%3E%20SqlDAO%3A%20return%20True%0ASqlDAO%20--%3EArchiveManager%3A%20return%20True%0Aend%20%0A%0Aalt%20%23red%20Error%20occur%20when%20executing%20copy%20SQL%20command%20on%20Database%0AMariaDB%20--%3ESqlDAO%3A%20throw%20SQLException%0Adeactivate%20MariaDB%0ASqlDAO%20--%3EArchiveManager%3A%20throw%20SqlException%0Adeactivate%20SqlDAO%0A%0A%0AArchiveManager%20-%3EArchiveManager%3A%20Catch%20Exception%0A%2F%2F%20Removing%20created%20files%20if%20the%20process%20failed%0Aalt%20%23red%20Log%20output%20text%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(string%20filePath)%0Aend%0Aalt%20%23red%20Compressed%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(string%20comFilePath)%0Aend%0Aend%20%0A%0Aactivate%20SqlDAO%20%23D3D3D3%0A%2F%2F%20Compress%20the%20file%20%0ASqlDAO%20-%3ESqlDAO%3A%20bool%20CompressArchive(string%20filePath)%0Aalt%20%23lightgreen%20File%20Compression%20was%20successful%0ASqlDAO%20--%3EArchiveManager%3A%20return%20True%0Aend%20%0Aalt%20%23red%20File%20Compresssion%20failed%0ASqlDAO%20--%3EArchiveManager%3A%20throw%20FileException%0AArchiveManager%20-%3EArchiveManager%3A%20Catch%20Exception%0Aalt%20%23red%20Log%20output%20text%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(filePath)%0Aend%0Aalt%20%23red%20Compressed%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(string%20comFilePath)%0Aend%0Aend%0A%2F%2F%20Remove%20output%20file%0ASqlDAO%20-%3ESqlDAO%3Abool%20RemoveOutputFile(string%20filePath)%0Aalt%20%23lightgreen%20UncompressFile%20was%20removed%20successfully%0ASqlDAO%20--%3EArchiveManager%3A%20return%20true%0Aend%20%0A%0Aalt%20%23red%20Uncompressfile%20failed%20to%20be%20removed%0ASqlDAO%20--%3EArchiveManager%3A%20throw%20FileException%0Adeactivate%20SqlDAO%0AArchiveManager%20-%3EArchiveManager%3A%20catch%20Exception%0A%0Aalt%20%23red%20Log%20output%20text%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(string%20filePath)%0Aend%0Aalt%20%23red%20Compressed%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(string%20comFilePath)%0Aend%0Aend%20%0A%0Aactivate%20SqlDAO%20%23D3D3D3%0Aactivate%20MariaDB%20%2300FFFF%0ASqlDAO%20-%3EMariaDB%3A%20bool%20RemoveEntries(%20)%0AMariaDB%20-%3EMariaDB%3A%20DELETE%20from%20log%20%5CnWHERE%20%5CnDATEDIFF(CURRENT_TIMESTAMP%2C%20log.LtimeStamp)%20%3E%2030%3B%0A%0Aalt%20%23lightgreen%20No%20error%20when%20doing%20executing%20remove%20old%20logs%20SQL%20command%0AMariaDB--%3ESqlDAO%3Areturn%20True%0ASqlDAO%20--%3EArchiveManager%3A%20return%20True%0Aend%0A%0Aalt%20%23red%20Error%20occur%20when%20executing%20removing%20SQL%20command%20on%20Database%0AMariaDB%20--%3ESqlDAO%3A%20throw%20SQLException%0Adeactivate%20MariaDB%0ASqlDAO--%3EArchiveManager%3A%20throw%20SQLException%0Adeactivate%20SqlDAO%0AArchiveManager%20-%3EArchiveManager%3ACatch%20Exception%0Aalt%20%23red%20Log%20output%20text%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(string%20filePath)%0Aend%0Aalt%20%23red%20Compressed%20file%20exist%0AArchiveManager%20-%3EArchiveManager%3A%20File.Delete(string%20comFilePath)%0Aend%0Aend%20%0A%0A%0AArchiveManager%20--%3E%20Controller.cs%3Areturn%20True%0Adeactivate%20ArchiveManager%0Aend%0A%0Aend%20%0Aend%20%0A%0AUse Case: ArchivingController.csRDSFactoryArchiveManagerSqlDAOMariaDBfactory = new RDSFactory()Constructor()return RDSFactoryIDataSource factory.GetDataSource(string name, string connInfo)Constructor(string connInfo)return SqlDAOCatch Exceptionreturn "DataSourceTimeOut"new ArchiveManager(IDataSource conn)ArchiveManager(IDatasSource conn)return ArchiveManagerbool ArchiveManager.Controller( )bool CreateArchiveFolder(string path)string filePath = string CreateOutFileName( )bool Compress(string filePath)bool CopyToArchive(string filePath)SELECT 'LtimeStamp', 'logID', 'LvName', 'catName', 'userOP', 'logMessage' UNION ALLSELECT * FROM logWHERE DATEDIFF(CURRENT_TIMESTAMP, log.LtimeStamp) > 30INTO OUTFILE @filePathFIELDS ENCLOSED BY ''TERMINATED BY ','ESCAPED BY '"'LINES TERMINATED BY '\r\n';return Truereturn Truethrow SQLExceptionthrow SqlExceptionCatch ExceptionFile.Delete(string filePath)File.Delete(string comFilePath)bool CompressArchive(string filePath)return Truethrow FileExceptionCatch ExceptionFile.Delete(filePath)File.Delete(string comFilePath)bool RemoveOutputFile(string filePath)return truethrow FileExceptioncatch ExceptionFile.Delete(string filePath)File.Delete(string comFilePath)bool RemoveEntries( )DELETE from log WHERE DATEDIFF(CURRENT_TIMESTAMP, log.LtimeStamp) > 30;return Truereturn Truethrow SQLExceptionthrow SQLExceptionCatch ExceptionFile.Delete(string filePath)File.Delete(string comFilePath)return TruealtConnection to DataSource successfulloop[while true]alt[The First Day of the month at 00:00:00 AM]alt[Archive folder does not exist already in the current directory]alt[No error when doing executing copy SQL command]alt[Error occur when executing copy SQL command on Database]alt[Log output text file exist]alt[Compressed file exist]alt[File Compression was successful]alt[File Compresssion failed]alt[Log output text file exist]alt[Compressed file exist]alt[UncompressFile was removed successfully]alt[Uncompressfile failed to be removed]alt[Log output text file exist]alt[Compressed file exist]alt[No error when doing executing remove old logs SQL command]alt[Error occur when executing removing SQL command on Database]alt[Log output text file exist]alt[Compressed file exist] \ No newline at end of file diff --git a/doc/LowLevel/ArchivingWithError.txt b/doc/LowLevel/ArchivingWithError.txt index 0edc5ca..8265491 100644 --- a/doc/LowLevel/ArchivingWithError.txt +++ b/doc/LowLevel/ArchivingWithError.txt @@ -18,10 +18,18 @@ Controller.cs->SqlDAO: ++IDataSource factory.GetDataSource(string name, string c activate SqlDAO #D3D3D3 SqlDAO->SqlDAO:++Constructor(string connInfo)++ Controller.cs<--SqlDAO: ++return SqlDAO++ + + +alt #red +SqlDAO ->SqlDAO: Catch Exception +SqlDAO -->Controller.cs:return "DataSourceTimeOut" +end deactivate SqlDAO // Create Archive Manager + activate ArchiveManager #ffffe0 +group #lightblue Connection to DataSource successful Controller.cs ->ArchiveManager:new ArchiveManager(IDataSource conn) ArchiveManager ->ArchiveManager: ArchiveManager(IDatasSource conn) @@ -105,10 +113,10 @@ end end activate SqlDAO #D3D3D3 - +activate MariaDB #00FFFF SqlDAO ->MariaDB: bool RemoveEntries( ) MariaDB ->MariaDB: DELETE from log \nWHERE \nDATEDIFF(CURRENT_TIMESTAMP, log.LtimeStamp) > 30; -activate MariaDB #00FFFF + alt #lightgreen No error when doing executing remove old logs SQL command MariaDB-->SqlDAO:return True SqlDAO -->ArchiveManager: return True @@ -134,4 +142,5 @@ deactivate ArchiveManager end end +end