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); }
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); }