public int InsertMonitorServerFile(MonitorServerFile MonitorServerFile, SqlConnection conn) { try { return(db.insert(MonitorServerFile, "monitorServerFile", conn)); } catch (Exception e) { throw e; } }
/// <summary> /// /// </summary> /// <param name="MonitorServerFile"></param> /// <returns></returns> public int UpdateMonitorServerFile(MonitorServerFile MonitorServerFile) { OdbcConnection conn; int count = 0; using (conn = OdbcHelper.CreateConntion()) { conn.Open(); count = MonitorServerFileDal.UpdateMonitorServerFile(MonitorServerFile, conn); conn.Close(); } return(count); }
/// <summary> /// 初始化copy完成 /// 初始化copy完成后,需要全部传输一次,所以插入一条待传输数据 /// </summary> void _Info_MyCopyEnd() { IMonitorServerService MonitorServerService = BLLFactory.ServiceAccess.CreateMonitorServerService(); IMonitorServerFileService MonitorServerFileService = BLLFactory.ServiceAccess.CreateMonitorServerFileService(); MonitorServerService.UpdateMonitorServerCopyInit(_id); MonitorServerFile monitorServerFile = new MonitorServerFile(); monitorServerFile.monitorServerID = _id; monitorServerFile.monitorFileName = Path.GetFileName(_copydir); monitorServerFile.monitorFilePath = Path.GetDirectoryName(_copydir); monitorServerFile.monitorFileType = ""; monitorServerFile.monitorFileSize = "0"; monitorServerFile.monitorFileStatus = 1; monitorServerFile.monitorStartTime = CommonUtil.DateTimeNowToString(); monitorServerFile.transferFlg = 0; monitorServerFile.deleteFlg = 0; monitorServerFile.creater = "exe"; monitorServerFile.createDate = CommonUtil.DateTimeNowToString(); monitorServerFile.updater = "exe"; monitorServerFile.updateDate = CommonUtil.DateTimeNowToString(); MonitorServerFileService.InsertMonitorServerFile(monitorServerFile, _localpath); }
public int UpdateMonitorServerFile(MonitorServerFile MonitorServerFile, SqlConnection conn) { string sql = @"UPDATE monitorServerFile SET monitorServerID = @monitorServerID ,monitorFileName = @monitorFileName ,monitorFilePath = @monitorFilePath ,monitorFileType = @monitorFileType ,monitorFileSize = @monitorFileSize ,monitorTime = @monitorTime ,transferFlg = @transferFlg ,updater = @updater ,updateDate = @updateDate WHERE id=@id"; try { SqlParameter[] spvalues = DBTool.GetSqlPm(MonitorServerFile); return(SqlHelper.ExecuteNonQuery(conn, System.Data.CommandType.Text, sql, spvalues)); } catch (Exception e) { throw e; } }
/// <summary> /// 插入监视到的文件变化 /// 先判断该文件是否需要处理 /// 是:插入 /// 否:不插入 /// </summary> /// <param name="MonitorServerFile"></param> /// <returns></returns> public int InsertMonitorServerFile(MonitorServerFile MonitorServerFile, string filepath) { OdbcConnection conn; SearchCondition[] condition = new SearchCondition[] { new SearchCondition { con = "monitorServerID=? ", param = "@monitorServerID", value = MonitorServerFile.monitorServerID.ToString() }, new SearchCondition { con = "monitorFileName=? ", param = "@monitorFileName", value = MonitorServerFile.monitorFileName }, new SearchCondition { con = "monitorFilePath=? ", param = "@monitorFilePath", value = filepath.Replace("\\" + MonitorServerFile.monitorFileName, "") }, new SearchCondition { con = "deleteFlg=?", param = "@deleteFlg", value = "0" } }; int count = 0; using (conn = OdbcHelper.CreateConntion()) { conn.Open(); int result = MonitorServerFolderDal.GetMonitorServerFolderCount(condition, conn); //文件更新了,且需要监视 if (MonitorServerFile.monitorFileStatus == 2 && result > 0) { count = MonitorServerFileDal.InsertMonitorServerFile(MonitorServerFile, conn); } //新增文件,重命名后文件,默认为要监视 else if (MonitorServerFile.monitorFileStatus == 1 || MonitorServerFile.monitorFileStatus == 3 || MonitorServerFile.monitorFileStatus == 4) { count = MonitorServerFileDal.InsertMonitorServerFile(MonitorServerFile, conn); } conn.Close(); } return(count); }
/// <summary> /// /// </summary> /// <param name="MonitorServerFile"></param> /// <param name="conn"></param> /// <returns></returns> public int UpdateMonitorServerFile(MonitorServerFile MonitorServerFile, OdbcConnection conn) { string sql = @"UPDATE monitorServerFile SET monitorServerID = ? ,monitorFileName = ? ,monitorFilePath = ? ,monitorFileType = ? ,monitorFileSize = ? ,monitorTime = ? ,transferFlg = ? ,updater = ? ,updateDate = ? WHERE id=?"; try { OdbcParameter[] spvalues = DBTool.GetOdbcPm(MonitorServerFile); return(OdbcHelper.ExecuteNonQuery(conn, System.Data.CommandType.Text, sql, spvalues)); } catch (Exception e) { throw e; } }
/// <summary> /// insert log and backupserverfile /// </summary> /// <param name="file"></param> /// <param name="backup"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <param name="timespan"></param> /// <param name="transferFlg"></param> private void InsertTransferInfo(MonitorServerFile file, BackupServer backup, DateTime startTime, DateTime endTime, TimeSpan timespan, int transferFlg) { //insert log try { Log Log = new Log(); Log.monitorServerID = file.monitorServerID; Log.monitorFileName = file.monitorFileName; Log.monitorFilePath = file.monitorFilePath; Log.monitorFileType = file.monitorFileType; Log.monitorFileSize = file.monitorFileSize; Log.monitorTime = file.monitorStartTime; Log.transferFlg = transferFlg; Log.backupServerGroupID = Int32.Parse(_backupgroupid); Log.backupServerID = Int32.Parse(backup.id); Log.backupServerFileName = file.monitorFileName; Log.backupServerFilePath = backup.startFile; Log.backupServerFileType = file.monitorFileType; Log.backupServerFileSize = file.monitorFileSize; Log.backupStartTime = startTime.ToString(); Log.backupEndTime = endTime.ToString(); Log.backupTime = timespan.TotalMilliseconds.ToString() + "ms"; Log.backupFlg = transferFlg; Log.copyStartTime = startTime.ToString(); Log.copyEndTime = endTime.ToString(); Log.copyTime = timespan.TotalMilliseconds.ToString() + "ms"; Log.copyFlg = transferFlg; Log.deleteFlg = DEFAULTINT_VALUE; Log.deleter = DEFAULTCHAR_VALUE; Log.deleteDate = DEFAULTDATETIME_VALUE; Log.creater = "exe"; Log.createDate = CommonUtil.DateTimeNowToString(); Log.updater = "exe"; Log.updateDate = CommonUtil.DateTimeNowToString(); Log.restorer = DEFAULTCHAR_VALUE; Log.restoreDate = DEFAULTDATETIME_VALUE; LogService.InsertLog(Log); //insert backupserverfile BackupServerFile BackupServerFile = new BackupServerFile(); BackupServerFile.backupServerGroupID = Int32.Parse(_backupgroupid); BackupServerFile.backupServerID = Int32.Parse(backup.id); BackupServerFile.backupServerFileName = file.monitorFileName; BackupServerFile.backupServerFilePath = backup.startFile; BackupServerFile.backupServerFileType = file.monitorFileType; BackupServerFile.backupServerFileSize = file.monitorFileSize; BackupServerFile.backupStartTime = startTime.ToString(); BackupServerFile.backupEndTime = endTime.ToString(); BackupServerFile.backupTime = timespan.TotalMilliseconds.ToString() + "ms"; BackupServerFile.backupFlg = transferFlg; BackupServerFile.copyStartTime = startTime.ToString(); BackupServerFile.copyEndTime = endTime.ToString(); BackupServerFile.copyTime = timespan.TotalMilliseconds.ToString() + "ms"; BackupServerFile.copyFlg = transferFlg; BackupServerFile.deleteFlg = DEFAULTINT_VALUE; BackupServerFile.deleter = DEFAULTCHAR_VALUE; BackupServerFile.deleteDate = DEFAULTDATETIME_VALUE; BackupServerFile.creater = "exe"; BackupServerFile.createDate = CommonUtil.DateTimeNowToString(); BackupServerFile.updater = "exe"; BackupServerFile.updateDate = CommonUtil.DateTimeNowToString(); BackupServerFile.restorer = DEFAULTCHAR_VALUE; BackupServerFile.restoreDate = DEFAULTDATETIME_VALUE; BackupServerFileService.InsertBackupServerFile(BackupServerFile); } catch (Exception e) { logger.Error(e.Message); } }
/// <summary> /// 变化处理 /// </summary> /// <param name="state"></param> private void OnWatchedFileChange(object state) { IMonitorServerFileService MonitorServerFileService = BLLFactory.ServiceAccess.CreateMonitorServerFileService(); IMonitorServerFolderService MonitorServerFolderService = BLLFactory.ServiceAccess.CreateMonitorServerFolderService(); // File Info SortedList htfilescopy = (SortedList)htfiles.Clone(); Mutex mutex = new Mutex(false, "FSW"); mutex.WaitOne(); mutex.ReleaseMutex(); foreach (DictionaryEntry file in htfilescopy) { try { FileSystemEventArgs fileevent = (FileSystemEventArgs)file.Value; //源路径 string filepath = System.IO.Path.GetFullPath(file.Key.ToString()); //备份路径 string backuppath = Path.Combine(_copydir, fileevent.Name); MonitorServerFile monitorServerFile = new MonitorServerFile(); MonitorServerFolder monitorServerFolder = new MonitorServerFolder(); // copy機能 if (fileevent.ChangeType.Equals(WatcherChangeTypes.Created)) { // Copy方法変更 2014/01/30 変更 //bool result = FileSystem.FileCopy(filepath, backuppath); CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath); fileCopy.StarCopy(); //IO問題であれば、次のファイルを処理する if (fileCopy._Errorlist.Count > 0) { foreach (string errorMessage in fileCopy._Errorlist) { logger.Error(errorMessage); } continue; } //if (!result) //{ // continue; //} //判断是否是目录 if (Directory.Exists(filepath)) { monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = "0"; monitorServerFile.monitorFileStatus = 1; //--- monitorServerFolder.monitorServerID = _id; monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name); monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray()); monitorServerFolder.monitorFileType = "99"; monitorServerFolder.initFlg = "0"; monitorServerFolder.monitorFlg = "0"; monitorServerFolder.creater = "admin"; monitorServerFolder.updater = "admin"; monitorServerFolder.createDate = CommonUtil.DateTimeNowToString(); monitorServerFolder.updateDate = CommonUtil.DateTimeNowToString(); } else { System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath); monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = fileinfo.Length.ToString(); monitorServerFile.monitorFileStatus = 1; //--- monitorServerFolder.monitorServerID = _id; monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name); monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray()); monitorServerFolder.monitorFileType = Path.GetExtension(backuppath); monitorServerFolder.initFlg = "0"; monitorServerFolder.monitorFlg = "1"; monitorServerFolder.creater = "admin"; monitorServerFolder.updater = "admin"; monitorServerFolder.createDate = CommonUtil.DateTimeNowToString(); monitorServerFolder.updateDate = CommonUtil.DateTimeNowToString(); } //新增文件默认为监视,添加check MonitorServerFolderService.InsertMonitorServerFolder(monitorServerFolder); } else if (fileevent.ChangeType.Equals(WatcherChangeTypes.Changed)) { System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath); if (fileinfo.IsReadOnly) { continue; } fileinfo.IsReadOnly = true; // Copy方法変更 2014/01/30 変更 //bool result = FileSystem.FileCopy(filepath, backuppath); CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath); fileCopy.StarCopy(); //IO問題であれば、次のファイルを処理する if (fileCopy._Errorlist.Count > 0) { foreach (string errorMessage in fileCopy._Errorlist) { logger.Error(errorMessage); } continue; } //if (!result) //{ // continue; //} //判断是否是目录 if (Directory.Exists(filepath)) { monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = "0"; monitorServerFile.monitorFileStatus = 2; } else { monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = fileinfo.Length.ToString(); monitorServerFile.monitorFileStatus = 2; } } else if (fileevent.ChangeType.Equals(WatcherChangeTypes.Deleted)) { //判断被删除的目录是否存在 if (Directory.Exists(backuppath)) { monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = "0"; bool result = FileSystem.FileDelete(backuppath); //如果出现IO冲突,去执行下一个 if (!result) { continue; } monitorServerFile.monitorFileStatus = 3; } //判断被删除的文件是否存在 else if (File.Exists(backuppath)) { System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath); fileinfo.IsReadOnly = false; monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = fileinfo.Length.ToString(); bool result = FileSystem.FileDelete(backuppath); //如果出现IO冲突,去执行下一个 if (!result) { continue; } monitorServerFile.monitorFileStatus = 3; } else { // File Info Remove htfiles.Remove(file.Key); continue; } } else if (fileevent.ChangeType.Equals(WatcherChangeTypes.Renamed)) { RenamedEventArgs refileevent = (RenamedEventArgs)file.Value; string oldfilename = refileevent.OldName.ToString(); string olddir = Path.Combine(_copydir, oldfilename); if (Path.GetExtension(olddir) == string.Empty) { //old file dir info insert if (Directory.Exists(olddir)) { MonitorServerFile monitorServerFile1 = new MonitorServerFile(); monitorServerFile1.monitorServerID = _id; monitorServerFile1.monitorFileName = Path.GetFileName(oldfilename); monitorServerFile1.monitorFilePath = olddir; monitorServerFile1.monitorFileType = Path.GetExtension(olddir); monitorServerFile1.monitorFileSize = "0"; monitorServerFile1.monitorStartTime = CommonUtil.DateTimeNowToString(); monitorServerFile1.monitorFileStatus = 3; monitorServerFile1.transferFlg = 0; monitorServerFile1.deleteFlg = 0; monitorServerFile1.creater = "exe"; monitorServerFile1.createDate = CommonUtil.DateTimeNowToString(); monitorServerFile1.updater = "exe"; monitorServerFile1.updateDate = CommonUtil.DateTimeNowToString(); MonitorServerFileService.InsertMonitorServerFile(monitorServerFile1, filepath); bool result = FileSystem.FileDelete(olddir); //如果出现IO冲突,去执行下一个 if (!result) { continue; } } // Copy方法変更 2014/01/30 変更 //bool result1 = FileSystem.FileCopy(filepath, backuppath); CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath); fileCopy.StarCopy(); //IO問題であれば、次のファイルを処理する if (fileCopy._Errorlist.Count > 0) { foreach (string errorMessage in fileCopy._Errorlist) { logger.Error(errorMessage); } continue; } //if (!result1) //{ // continue; //} //new file dir info insert monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = "0"; monitorServerFile.monitorFileStatus = 4; //--- monitorServerFolder.monitorServerID = _id; monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name); monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray()); monitorServerFolder.monitorFileType = "99"; monitorServerFolder.initFlg = "0"; monitorServerFolder.monitorFlg = "0"; monitorServerFolder.creater = "admin"; monitorServerFolder.updater = "admin"; monitorServerFolder.createDate = CommonUtil.DateTimeNowToString(); monitorServerFolder.updateDate = CommonUtil.DateTimeNowToString(); } else { //old file info insert if (File.Exists(olddir)) { MonitorServerFile monitorServerFile1 = new MonitorServerFile(); monitorServerFile1.monitorServerID = _id; monitorServerFile1.monitorFileName = Path.GetFileName(oldfilename); monitorServerFile1.monitorFilePath = olddir; System.IO.FileInfo fileinfo1 = new System.IO.FileInfo(olddir); monitorServerFile1.monitorFileType = Path.GetExtension(olddir); monitorServerFile1.monitorFileSize = fileinfo1.Length.ToString(); monitorServerFile1.monitorStartTime = CommonUtil.DateTimeNowToString(); monitorServerFile1.monitorFileStatus = 3; monitorServerFile1.transferFlg = 0; monitorServerFile1.deleteFlg = 0; monitorServerFile1.creater = "exe"; monitorServerFile1.createDate = CommonUtil.DateTimeNowToString(); monitorServerFile1.updater = "exe"; monitorServerFile1.updateDate = CommonUtil.DateTimeNowToString(); MonitorServerFileService.InsertMonitorServerFile(monitorServerFile1, filepath); fileinfo1.IsReadOnly = false; bool result = FileSystem.FileDelete(olddir); //如果出现IO冲突,去执行下一个 if (!result) { continue; } } // Copy方法変更 2014/01/30 変更 //bool result1 = FileSystem.FileCopy(filepath, backuppath); CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath); fileCopy.StarCopy(); //IO問題であれば、次のファイルを処理する if (fileCopy._Errorlist.Count > 0) { foreach (string errorMessage in fileCopy._Errorlist) { logger.Error(errorMessage); } continue; } //if (!result1) //{ // continue; //} //new file info insert System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath); monitorServerFile.monitorFileType = Path.GetExtension(backuppath); monitorServerFile.monitorFileSize = fileinfo.Length.ToString(); monitorServerFile.monitorFileStatus = 4; //--- monitorServerFolder.monitorServerID = _id; monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name); monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray()); monitorServerFolder.monitorFileType = Path.GetExtension(backuppath); monitorServerFolder.initFlg = "0"; monitorServerFolder.monitorFlg = "1"; monitorServerFolder.creater = "admin"; monitorServerFolder.updater = "admin"; monitorServerFolder.createDate = CommonUtil.DateTimeNowToString(); monitorServerFolder.updateDate = CommonUtil.DateTimeNowToString(); } //重命名后文件默认为监视,添加check MonitorServerFolderService.InsertMonitorServerFolder(monitorServerFolder); } //insert database monitorServerFile.monitorServerID = _id; monitorServerFile.monitorFileName = Path.GetFileName(fileevent.Name); monitorServerFile.monitorFilePath = backuppath; monitorServerFile.monitorStartTime = CommonUtil.DateTimeNowToString(); monitorServerFile.transferFlg = 0; monitorServerFile.deleteFlg = 0; monitorServerFile.creater = "exe"; monitorServerFile.createDate = CommonUtil.DateTimeNowToString(); monitorServerFile.updater = "exe"; monitorServerFile.updateDate = CommonUtil.DateTimeNowToString(); MonitorServerFileService.InsertMonitorServerFile(monitorServerFile, filepath); // File Info Remove htfiles.Remove(file.Key); } catch (Exception e) { logger.Error(e.Message); continue; } } }