コード例 #1
0
ファイル: SyncData.cs プロジェクト: hijushen/WindowDemo
        protected SyncData(OracleDbOperation targetDb, OracleDbOperation localDb, string targetCode,
            string localCode, FtpHelper targetFtp, FtpHelper localFtp, StringBuilder sbLog)
        {
            this.targetDb = targetDb;
            this.localDb = localDb;
            this.targetCode = targetCode;
            this.localCode = localCode;
            this.targetFtp = targetFtp;
            this.localFtp = localFtp;
            this.sbLog = sbLog;

            dtOperation = new DataTableOperation();

            deleteAction = () =>
            {
                LogOperation.Append(sbLog, "删除成功");
            };
            totalAction = (tableName, count) =>
            {
                LogOperation.Append(sbLog, "统计:" + tableName + "表共同步了" + count + "条数据");
            };
            deleteFileAction = (itemCode,fileName) =>
            {
                LogOperation.Append(sbLog, string.Format("项目编号:{0}, 删除文件:{1}", itemCode, fileName));
            };

            ftpCopyAction = (itemCode, fileCount) =>
            {
                LogOperation.Append(sbLog, string.Format("项目编号:{0}, 拷贝文件数:{1}", itemCode, fileCount.ToString()));
            };
        }
コード例 #2
0
ファイル: FtpHelper.cs プロジェクト: hijushen/WindowDemo
        public void CopyDirectory(string localParentPath, string localDirectoryName, 
            FtpHelper targetFtpOperation, string targetParentPath, string targetDirectoryName,Action<string,int> CopyAction)
        {
            string localFullPath = localParentPath + localDirectoryName;
            string targetFullPath = targetParentPath + targetDirectoryName;
            if (CheckHaveDirectory(localFullPath))
            {
                if (targetFtpOperation.CheckHaveDirectory(targetFullPath))
                {
                    targetFtpOperation.DeleteDirectory(targetFullPath);
                }
                targetFtpOperation.CreateDirectory(targetFullPath);
                List<string> fileNames = GetFileList(localFullPath, WebRequestMethods.Ftp.ListDirectory);
                foreach (var fileName in fileNames)
                {
                    CopyFile(localFullPath + "/" + fileName, targetFtpOperation, targetFullPath + "/" + fileName);
                }

                if (CopyAction != null)
                {
                    CopyAction(localDirectoryName, fileNames.Count);
                }
            }
        }
コード例 #3
0
 public SyncDataSystemInfo(OracleDbOperation targetDbOperation, OracleDbOperation localDbOperation, string targetCode,
     string localCode, FtpHelper targetFtpOperation, FtpHelper localFtpOperation, StringBuilder sbLog)
     : base(targetDbOperation, localDbOperation, targetCode, localCode, targetFtpOperation, localFtpOperation, sbLog)
 {
 }
コード例 #4
0
ファイル: FtpHelper.cs プロジェクト: hijushen/WindowDemo
 public void CopyFile(string localFtpPath, FtpHelper targetFtpOperation, string targetFtpPath)
 {
     if (CheckHaveDirectory(localFtpPath))
     {
         string targetDirectory = GetParentDirectory(targetFtpPath);
         if (!targetFtpOperation.CheckHaveDirectory(targetDirectory))
         {
             targetFtpOperation.CreateDirectory(targetDirectory);
         }
         Stream downloadStream = GetResponseStream(localFtpPath, WebRequestMethods.Ftp.DownloadFile);
         Stream uploadStream = targetFtpOperation.GetRequestStream(targetFtpPath, WebRequestMethods.Ftp.UploadFile);
         byte[] buff = new byte[bufferSize];
         int length;
         while ((length = downloadStream.Read(buff, 0, bufferSize)) != 0)
         {
             uploadStream.Write(buff, 0, length);
             if (length < bufferSize)
             {
                 break;
             }
         }
         downloadStream.Close();
         uploadStream.Close();
     }
 }
コード例 #5
0
ファイル: SyncManage.cs プロジェクト: hijushen/WindowDemo
        /// <summary>
        /// 同步。
        /// </summary>
        /// <param name="setting">同步配置。</param>
        /// <param name="log">日志信息。</param>
        /// <returns>同步是否成功。</returns>
        public bool Sync(SyncConfig syncConfig, SyncConfigTarget targetConfig, SyncConfigLocal localConfig, ref StringBuilder sbLog)
        {
            bool result = false;

            LogOperation.Append(sbLog, string.Format("开始同步数据:{0}({1})  开始时间:{2}", targetConfig.Name, targetConfig.Code, DateTime.Now));

            OracleDbOperation localDb = new OracleDbOperation(localConfig.DbConfig.ConnStr);
            FtpHelper localFtp = new FtpHelper(localConfig.FtpConfig.Ip, localConfig.FtpConfig.Port, localConfig.FtpConfig.Username, localConfig.FtpConfig.Password);

            OracleDbOperation targetDb = new OracleDbOperation(targetConfig.DbConfig.ConnStr);
            FtpHelper targetFtp = new FtpHelper(targetConfig.FtpConfig.Ip, targetConfig.FtpConfig.Port, targetConfig.FtpConfig.Username, targetConfig.FtpConfig.Password);
            try
            {
                targetDb.BeginTransaction();
                localDb.BeginTransaction();

                List<SyncData> syncDataList = new List<SyncData>();
                ////系统数据
                syncDataList.Add(new SyncDataSystemInfo(targetDb, localDb, targetConfig.Code, localConfig.Code, targetFtp, localFtp, sbLog));
                ////项目数据
                syncDataList.Add(new SyncDataItem(syncConfig, targetDb, localDb, targetConfig.Code, localConfig.Code, targetFtp, localFtp, sbLog));
                ////流程数据
                syncDataList.Add(new SyncDataWorkflow(targetDb, localDb, targetConfig.Code, localConfig.Code, targetFtp, localFtp, sbLog));
                ////Syncs.Add(new SyncXtxx(targetDbOperation, localDbOperation, targetSetting.Code, localSetting.Code, targetFtpOperation, localFtpOperation, sbLog));

                foreach (var syncData in syncDataList)
                {
                    syncData.Sync();
                }

                targetDb.Commit();
                localDb.Commit();
                result = true;
            }
            catch (Exception e)
            {
                targetDb.Rollback();
                localDb.Rollback();
                LogOperation.WriteExceptionLog(sbLog, e);
            }

            sbLog.AppendLine();
            sbLog.AppendLine("结束时间:" + DateTime.Now);
            return result;
        }
コード例 #6
0
ファイル: SyncDataItem.cs プロジェクト: hijushen/WindowDemo
 public SyncDataItem(SyncConfig SyncConfig, OracleDbOperation targetDb, OracleDbOperation localDb,
     string targetCode, string localCode, FtpHelper targetFtp, FtpHelper localFtp, StringBuilder sbLog)
     : base(targetDb, localDb, targetCode, localCode, targetFtp, localFtp, sbLog)
 {
     this.syncConfig = SyncConfig;
 }