Esempio n. 1
0
 public int InsertMonitorServerFile(MonitorServerFile MonitorServerFile, SqlConnection conn)
 {
     try
     {
         return(db.insert(MonitorServerFile, "monitorServerFile", conn));
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        /// <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;
            }
        }
Esempio n. 7
0
 /// <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);
     }
 }
Esempio n. 8
0
        /// <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;
                }
            }
        }