/// <summary> /// Initializes SreFileSystemWatcher with a file watcher to keep an eye on specific pull folder(taken from keys) /// </summary> /// <param name="dataSourceId">DataSource Id</param> /// <param name="keys">The keys of data source</param> public SreFileSystemWatcher(int dataSourceId, List <IdpeKey> keys) { this.DataSourceId = dataSourceId; this.Keys = keys; this.LocalFileSystemFolderPullFolder = DataSource.GetPullFolder(dataSourceId, keys); this.LocalFileSystemFolderArchive = DataSource.GetArchiveFolder(dataSourceId, keys); }
/// <summary> /// This method will get called for each file found within the zip file. /// </summary> /// <param name="unzippedFileName">Un zipped full file name</param> /// <param name="onlyFileName">Un zipped file name</param> /// <param name="extension">file extension</param> /// <param name="fileStatus">file status</param> public virtual void Handle(string unzippedFileName, string onlyFileName, string extension, FileStatus fileStatus) { string destFileName = string.Empty; string zipId = string.Empty; unzippedFileName = ExtractActualFileName(unzippedFileName); zipId = ExtractUniqueId(onlyFileName); ExtensionMethods.TraceInformation("Actual name = '{0}', zip id = '{1}', extension = '{2}', and status = '{3}'", Path.GetFileName(unzippedFileName), zipId, extension, fileStatus); switch (fileStatus) { case FileStatus.Process: destFileName = Path.Combine(DataSource.GetArchiveFolder(DataSourceId, DataSourceKeys), onlyFileName); Registry.Instance.Pullers._LocalFileSystemWatcher.Process(unzippedFileName, onlyFileName, this.DataSourceId); break; case FileStatus.IgnoreMoveToOutput: AddIgnoredFileCountToZipFileInfo(zipId); //moving to output string myOutputFolder = Path.Combine(DataSource.GetOutputFolder(DataSourceId, DataSourceKeys), zipId); if (!Directory.Exists(myOutputFolder)) { Directory.CreateDirectory(myOutputFolder); } destFileName = string.Format("{0}\\{1}", myOutputFolder, onlyFileName); destFileName = ExtractActualFileName(destFileName); if (File.Exists(destFileName)) { string buName = Path.Combine(OutputFolder, string.Format("{0}_{1}", RenamedToIdentifier, onlyFileName)); new FileUtility().FileCopy(destFileName, buName, true); //backup existing } new FileUtility().FileCopy(unzippedFileName, destFileName, false); //ignored and copied to output folder List <IdpeKey> appKeys = _datasourceKeys; if (appKeys == null) { appKeys = Cache.Instance.Bag[DataSourceId + ".keys"] as List <IdpeKey>; } Registry.Instance.Pullers.InvokeFileProcessed(this.DataSourceId, string.Empty, appKeys, destFileName, DataSource.GetOutputFolder(DataSourceId, DataSourceKeys), this.ZipUniqueId); break; case FileStatus.Ignore: AddIgnoredFileCountToZipFileInfo(zipId); break; default: throw new Exception("'fileStatus' can be set either to 'Ignore' or 'IgnoreMoveToOutput'!"); } }
public void Process() { string onlyFileName = string.Format("{0}{1}", Path.GetFileNameWithoutExtension(FileName), ".csv"); string flatFileName = Path.Combine(DataSource.GetArchiveFolder(DataSource.Id, DataSource.Keys), onlyFileName); TransformEDIToFlat(flatFileName); Registry.Instance.Pullers._LocalFileSystemWatcher.Process(flatFileName, onlyFileName, DataSource.Id, false); }