Beispiel #1
0
        private void RecordFileInfo(FileActivity activity)
        {
            if (activity.IsChanged)
            {
                _fConn.ExecuteScalar(string.Format("delete from file where guid='{0}'", activity.HashCode));
            }

            FileInfo fileInfo = new FileInfo(activity.FilePath);

            //记录文件信息
            _fConn.ExecuteNonQuery(string.Format(InsertFileSql, fileInfo.FullName.ToLower(), activity.Md5, fileInfo.LastWriteTime.ToString(DateFormat), DateTime.Now.ToString(DateFormat), activity.HashCode));
        }
Beispiel #2
0
        private void FileEnqueueCallBack(FileActivity activity)
        {
#if DEBUG
            Console.WriteLine("扫描文件->" + activity.FilePath);

            if (activity.IsChanged)
            {
                Console.WriteLine(string.Format("文件发生变化->{0}", activity.FilePath));
            }
            if (!activity.IsValid)
            {
                Console.WriteLine(string.Format("文件无效->{0}", activity.FilePath));
            }
#endif
        }
Beispiel #3
0
        protected override bool VerifyFile(FileActivity activity)
        {
            FileInfo fileInfo = new FileInfo(activity.FilePath);

            if (!fileInfo.Exists)
            {
                activity.Message = "文件不存在";
                return(false);
            }
            if ((fileInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
            {
                activity.Message = "隐藏文件不参与扫描";
                return(false);
            }

            if (Filter.IndexOf(fileInfo.Extension.ToLower()) < 0)
            {
                activity.Message = "不支持此扩展名的文件";
                return(false);
            }
            if (fileInfo.Length > MaxSize * 1024 * 1024)
            {
                activity.Message = string.Format("不支持大于[{0}m]的文件", MaxSize);
                return(false);
            }

            //判断文件是否变化,没有变化不处理
            if (!FileChanged(activity))
            {
                activity.Message = "文件内容未发生变化";
                return(false);
            }

            //检验是否为简历
            var result = _service.Predict(activity.FilePath, new ExtractOption[] { ExtractOption.Text });

            if (result.Status == OperateStatus.Failure || !result.Data.IsResume)
            {
                activity.Message = result.Description;
                return(false);
            }

            return(true);
        }
Beispiel #4
0
        /// <summary>
        /// 校验文件md5变化(data/data.sqllite)
        /// </summary>
        private bool FileChanged(FileActivity activity)
        {
            activity.Md5 = IOUtility.GetFileMD5(activity.FilePath).ToLower();

            var value = _fConn.ExecuteScalar(string.Format("select md5 from file nolock where path='{0}'", activity.FilePath));

            if (value == null)
            {
                return(true);
            }

            var result = value.ToString() != activity.Md5;

            if (result)
            {
                activity.IsChanged = true;
            }
            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// 处理事件(核心功能,解析文件存储,监听文件,回调)
        /// </summary>
        /// <param name="activity"></param>
        /// <returns></returns>
        protected override bool HandleActivity(FileActivity activity)
        {
            activity.HashCode = activity.FilePath.MD5();

            RecordFileInfo(activity);

            var result = _service.Parse(activity.FilePath, new ExtractOption[] { ExtractOption.Text });

            if (result.Status == OperateStatus.Success)
            {
                _storage.Save(activity, result.Data);

                WatchFile(activity);
            }

            _handleCallback(activity, result);

            return(true);
        }
Beispiel #6
0
        private void FileHandleCallBack(FileActivity activity, OperateResult <ResumeResult> result)
        {
#if DEBUG
            Console.WriteLine("处理文件->" + activity.FilePath);
#endif
        }
Beispiel #7
0
 protected override void EnqueueActivity(FileActivity activity)
 {
     _enqueueCallback(activity);
 }