private List <FileDataSet> FindDataFiles() { List <FileDataSet> list = new List <FileDataSet>(); ThirdDBConnection config = SQLInAdapterConfigMgt.SQLInAdapterConfig.ThirdPartyInteractConfig.ConnectionParameter; if (config.IndexFileDriven) { string iFolder = ConfigHelper.GetFullPath(config.IndexFileFolder); string[] iflist = Directory.GetFiles(iFolder, config.FileNamePattern); Program.Log.Write(string.Format("Find {0} index file in folder {1}", iflist.Length, iFolder)); foreach (string f in iflist) { string iFile = ConfigHelper.GetFullPath(iFolder, f); string iFileName = Path.GetFileNameWithoutExtension(iFile); string dFileNamePattern = string.Format("{0}.*", iFileName); string dFolder = ConfigHelper.GetFullPath(config.FileFolder); string[] dflist = Directory.GetFiles(dFolder, dFileNamePattern); if (dflist.Length < 1) { Program.Log.Write(LogType.Error, string.Format("Cannot find data file with pattern {0} in folder {1}", dFileNamePattern, dFolder)); continue; } string dFile = ConfigHelper.GetFullPath(dFolder, dflist[0]); FileDataSet fds = new FileDataSet(); fds.IndexFileLocation = iFile; fds.DataFileLocation = dFile; fds.DataFileName = Path.GetFileName(dFile); Program.Log.Write(string.Format("Find data file named {0} from {1} with index file {2}", fds.DataFileName, fds.DataFileLocation, fds.IndexFileLocation)); list.Add(fds); } } else { string dFolder = ConfigHelper.GetFullPath(config.FileFolder); string[] dflist = Directory.GetFiles(dFolder, config.FileNamePattern); Program.Log.Write(string.Format("Find {0} data file in folder {1}", dflist.Length, dFolder)); foreach (string f in dflist) { string dFile = ConfigHelper.GetFullPath(dFolder, f); FileDataSet fds = new FileDataSet(); fds.DataFileLocation = dFile; fds.DataFileName = Path.GetFileName(dFile); Program.Log.Write(string.Format("Find data file named {0} from {1}", fds.DataFileName, fds.DataFileLocation)); list.Add(fds); } } return(list); }
private void HandleDataFile(FileDataSet fds, bool success) { bool hasIndex = !string.IsNullOrEmpty(fds.IndexFileLocation); if (success) { if (hasIndex) { Program.Log.Write("Deleting success file: " + fds.IndexFileLocation); File.Delete(fds.IndexFileLocation); } Program.Log.Write("Deleting success file: " + fds.DataFileLocation); File.Delete(fds.DataFileLocation); } else { ThirdDBConnection config = SQLInAdapterConfigMgt.SQLInAdapterConfig.ThirdPartyInteractConfig.ConnectionParameter; if (config.MoveFileWhenError) { string mFolder = ConfigHelper.GetFullPath(config.MoveFileFolder); if (!Directory.Exists(mFolder)) { Directory.CreateDirectory(mFolder); } if (hasIndex) { string mIFolder = Path.Combine(mFolder, "Index"); if (!Directory.Exists(mIFolder)) { Directory.CreateDirectory(mIFolder); } string iFileName = Path.GetFileName(fds.IndexFileLocation); string iFile = Path.Combine(mIFolder, iFileName); Program.Log.Write("Moving error index file to: " + iFile); File.Move(fds.IndexFileLocation, iFile); } string mDFolder = Path.Combine(mFolder, "Data"); if (!Directory.Exists(mDFolder)) { Directory.CreateDirectory(mDFolder); } string dFile = Path.Combine(mDFolder, fds.DataFileName); Program.Log.Write("Moving error data file to: " + dFile); File.Move(fds.DataFileLocation, dFile); } else { if (hasIndex) { Program.Log.Write("Deleting error file: " + fds.IndexFileLocation); File.Delete(fds.IndexFileLocation); } Program.Log.Write("Deleting error file: " + fds.DataFileLocation); File.Delete(fds.DataFileLocation); } } }
private void QueryDataToFile() { if (OnDataRequest == null || OnDataDischarge == null) { return; } ThirdDBConnection cfg = SQLOutAdapterConfigMgt.SQLOutAdapterConfig.ThirdPartyInteractConfig.ConnectionParameter; foreach (SQLOutboundChanel ch in SQLOutAdapterConfigMgt.SQLOutAdapterConfig.OutboundChanels) { try { if (!ch.Enable) { continue; } if (ch.OperationType != ThrPartyDBOperationType.Table) { continue; } DataSet dsResult = OnDataRequest((IOutboundRule)ch.Rule, null); int count = PrepareQueryResult(dsResult); if (count < 1) { continue; } // generate file name string fn = RuleControl.GetRandomNumber(); string dataFileFolder = ConfigHelper.GetFullPath(cfg.FileFolder); string csvFileName = string.Format("{0}{1}", fn, cfg.FileNameExtension); string tmpFileName = string.Format("{0}{1}", fn, cfg.TempFileNameExtensin); // create CSV file List <string> idList = new List <string>(); if (!CreateDataFile(ch, tmpFileName)) { continue; } if (!InsertDataFile(ch, tmpFileName, dsResult, idList, count)) { continue; } Program.Log.Write("Creating data file: " + csvFileName); File.Move(Path.Combine(dataFileFolder, tmpFileName), Path.Combine(dataFileFolder, csvFileName)); // delete INI file if (!cfg.KeepSchemaFile) { string schameFilePath = Path.Combine(dataFileFolder, cfg.SchemaFileName); Program.Log.Write("Deleting schema file: " + schameFilePath); File.Delete(schameFilePath); } // create IDX file if (cfg.WriteIndexFile) { string indexFileName = string.Format("{0}.idx", fn); string indexFileFolder = ConfigHelper.GetFullPath(cfg.IndexFileFolder); string indexFilePath = Path.Combine(indexFileFolder, indexFileName); Program.Log.Write("Creating index file: " + indexFilePath); if (!Directory.Exists(indexFileFolder)) { Directory.CreateDirectory(indexFileFolder); } using (StreamWriter sw = File.CreateText(indexFilePath)) { } } OnDataDischarge(idList.ToArray()); } catch (Exception err) { Program.Log.Write(err); } } }