using System; using System.Data; using System.IO; using iMESCore.Settings; using Microsoft.VisualBasic; using static iMESCore.DataBase.iMESSql; namespace AutoLoaderLib_Base { //調整行業包基底AutoLoaderLib_Base將原有EPIParseTemplate, ParseNEL, ParsePL, ParsePR, ParseQEL等類別進行下架處理 //public abstract class EPIParseTemplate //{ // // 設定暫存資料表的欄位 // internal abstract bool AddColumns(DataTable dt); // // 解析資料, 並寫入暫存資料表 // internal abstract bool ParsingFile(DataTable dt, string file); // // 將暫存資料表寫入資料庫 // internal abstract bool InsertTable(DataTable dt); // internal IDbConnection objConnection; // public enum FileTypeEnum // { // csv = 0, // xls = 1, // dat = 2 // } // private string[] wildcards = new string[] { "*.csv", "*.xls", "*.dat" }; // private string strDataBaseType; // DataBase Type:oracle, mysql, access // private string strConnectionString; // Connection string // private AppSettings objSetting = new AppSettings(); // private DataTable objDataTable; // private string SourcePath; // private string DestinationPath; // private string QueuePath; // private string FailPath; // /// ///// 建構子 ///// ///// ///// ///// ///// ///// // public EPIParseTemplate(string paramSourcePath, string paramDestinationPath, string paramQueuePath, string paramFailPath) // { // objSetting = new AppSettings(); // // //Get database type // strDataBaseType = objSetting.GetDataBaseType(); // // //Get connection string // strConnectionString = objSetting.GetConnectionString(strDataBaseType); // objConnection = CreateConnection(strConnectionString); // if (Strings.Right(paramSourcePath, 1) != @"\") // { // paramSourcePath += @"\"; // } // SourcePath = paramSourcePath; // if (Strings.Right(paramDestinationPath, 1) != @"\") // { // paramDestinationPath += @"\"; // } // DestinationPath = paramDestinationPath; // if (Strings.Right(paramQueuePath, 1) != @"\") // { // paramQueuePath += @"\"; // } // QueuePath = paramQueuePath; // if (Strings.Right(paramFailPath, 1) != @"\") // { // paramFailPath += @"\"; // } // FailPath = paramFailPath; // } // ~EPIParseTemplate() // { // if (objConnection != null) // { // objConnection = null; // } // if (objSetting != null) // { // objSetting = null; // } // if (objDataTable != null) // { // objDataTable = null; // } // } // /// ///// 解析資料 ///// ///// ///// ///// // public string ParsingData(FileTypeEnum paramFileType) // { // string strResult = string.Empty; // string QueueFile = ""; // string DestinationFile = ""; // string FailFile = ""; // try // { // objDataTable = new DataTable("RawData"); // // 設定暫存資料表的欄位 // if (AddColumns(objDataTable)) // { // foreach (var SourceFile in Directory.GetFiles(SourcePath, wildcards[(int)paramFileType], SearchOption.TopDirectoryOnly)) // { // if (File.Exists(SourceFile)) // { // QueueFile = QueuePath + Path.GetFileName(SourceFile); // DestinationFile = DestinationPath + Path.GetFileName(SourceFile); // FailFile = FailPath + Path.GetFileName(SourceFile); // try // { // // 將檔案從 Source 移至 Queue // MoveFile(SourceFile, QueueFile); // objDataTable.Rows.Clear(); // // 解析資料, 並寫入暫存資料表 // if (ParsingFile(objDataTable, QueueFile)) // { // // 將暫存資料表寫入資料庫 // if (InsertTable(objDataTable)) // { // // 將檔案從 Queue 移至 Destination // MoveFile(QueueFile, DestinationFile); // } // } // } // catch (Exception ex) // { // // 將檔案從 Queue 移至 Fail // MoveFile(QueueFile, FailFile); // throw; // } // } // } // strResult = "success"; // } // } // catch (Exception ex) // { // strResult = "Message:" + ex.Message + ",StackTrace:" + ex.StackTrace; // } // finally // { // } // return strResult; // } // /// ///// 搬移檔案 ///// ///// 來源檔案 ///// 目的檔案 ///// // private void MoveFile(string paramSourceFile, string paramTargetFile) // { // try // { // // 判斷目的檔案是否已存在, 若存在必須先刪除 // if (File.Exists(paramTargetFile)) // { // File.Delete(paramTargetFile); // } // // 移動檔案至目的 // Directory.Move(paramSourceFile, paramTargetFile); // } // catch (Exception ex) // { // throw; // } // } //} }