コード例 #1
0
ファイル: RenamerModel.cs プロジェクト: gnipoleved/Renamer
        public /*override*/ ActionResult Undo(StatusListen listen)
        {
            if (AbleToUndo() == false)
            {
                throw new InvalidOperationException("더이상 실행 취소 할 수 없는데...");
            }

            ActionResult undoResult = new ActionResult();

            undoResult.CountTotal = QueriedFileList.Count;

            foreach (FileVo vo in prevAction.FileList)
            {
                bool succ = false;

                // vo.PathMoved 는 변환 작업 중 vo 의 PathOriginal 에서 where 문자열을 to 문자열로 replace 한 파일명이 되겠다.
                // 정상적으로 변환이 되었으면 상태는 conv_complete 이 되어 있을 것이고, PathMoved에도 바뀐 파일명으로 들어가 있어야 함.
                if (vo.Status == Status.CONV_COMPLETE && File.Exists(vo.PathMoved))
                {
                    vo.Status = Status.ON_REVERT;
                    listen(vo);
                    try
                    {
                        File.Move(vo.PathMoved, vo.PathOriginal);
                        succ = true;
                    }
                    catch
                    {
                        succ = false;
                    }
                }
                else
                {
                    succ = false;
                }

                if (succ)
                {
                    vo.Status = Status.REVERT_COMPLETE;
                    listen(vo);
                    ++undoResult.CountSuccess;
                }
                else
                {
                    vo.Status = Status.NOT_ABLE_TO_REVERT;
                    listen(vo);
                    ++undoResult.CountFail;
                }
            }

            prevAction = null;
            return(undoResult);
        }
コード例 #2
0
ファイル: RenamerModel.cs プロジェクト: gnipoleved/Renamer
        public /*override*/ ActionResult ConvertFiles(string to, StatusListen listen)
        {
            this.To = to;
            ActionResult convertResult = new ActionResult();

            convertResult.CountTotal = QueriedFileList.Count;

            ConvertAction convertAction = new ConvertAction(QueriedFileList, Where, To);

            prevAction = convertAction;

            foreach (FileVo vo in QueriedFileList)
            {
                bool succ = false;
                if (File.Exists(vo.PathOriginal))
                {
                    vo.SetPathMoved(this.Where, this.To);
                    vo.Status = Status.ON_CONV;
                    listen(vo);
                    try
                    {
                        File.Move(vo.PathOriginal, vo.PathMoved);
                        succ = true;
                    }
                    catch
                    {
                        succ = false;
                    }
                }
                else
                {
                    succ = false;
                }

                if (succ)
                {
                    vo.Status = Status.CONV_COMPLETE;
                    listen(vo);
                    ++convertResult.CountSuccess;
                }
                else
                {
                    vo.Status = Status.NOT_ABLE_TO_CONV;
                    listen(vo);
                    ++convertResult.CountFail;
                }
            }

            return(convertResult);
        }