Imports System.IO
Imports System.Threading
Imports System.Data

Module Mod_Delete
    'Public Sub DeleteFile()
    '    DeleteFileFromList()
    'End Sub

    'Public Sub DeleteFileFromList()    '//파일목록으로부터 삭제대상폴더의 파일을 삭제한다.
    '    Dim FileList As New ArrayList
    '    Dim FI() As FileInfo
    '    Dim Di As DirectoryInfo

    '    If MsgBox("파일삭제작업을 진행하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "삭제확인") <> MsgBoxResult.Ok Then
    '        MsgBox("취소되었습니다", MsgBoxStyle.Information, "확인")
    '        Return
    '    End If

    '    '//파일목록을 작성합니다.
    '    MSG("삭제 진행중...")
    '    MDiMain.pbar2.Minimum = 0
    '    MDiMain.pbar2.Maximum = Ep
    '    MDiMain.Refresh()

    '    Addlog2("삭제시작 줄번호 범위 " & SP & " ~ " & Ep, True)

    '    Dim NullCnt As Short = 0
    '    Dim fn As String

    '    For i As Integer = SP To Ep
    '        MDiMain.pbar2.Value = i
    '        If i Mod 10 = 0 Then
    '            MSG("삭제중 (" & i & "/" & Ep & ")")
    '            MDiMain.Refresh()
    '        End If

    '        fn = Frm_srcfile.Get_FileList(i + 1) & Mod_Comm.GetExtendFromMdi.Trim("*")
    '        If fn.Trim <> "" Then
    '            NullCnt = 0                '//파일을 삭제하는 루틴을 만든다.
    '            Di = New DirectoryInfo(GetWorkDIr) '//경로선택
    '            FI = Di.GetFiles(fn, GetSubdirType)
    '            If FI.Length < 1 Then
    '                addlog("X", fn, "", "파일없음")
    '            End If

    '            For Each F As FileInfo In FI  '//일치하는 모든 파일을 삭제한다.
    '                If F.FullName.IndexOf("-원본") = -1 Then '//백업이 만들어놓은 폴더의 파일은 제낀다.
    '                    Fileok.Add(F.FullName) '//정상파일목록을 가진다.
    '                    addlog("O", F.FullName, "", "삭제")
    '                    If Mod_Comm.GetExeType Then  ''//모의실행은 백업및 작업을 하지않는다.
    '                        '//백업정책을 확인해서 해당 파일을 백업할곳을 결정한다.
    '                        Check_Backup(F, BakTag)
    '                        F.Delete()
    '                    End If
    '                End If
    '            Next
    '        Else
    '            NullCnt += 1
    '            If NullCnt = 5 Then '//빈줄이나올때 널카운트를 증가시키고 빈줄이 5번연속나올때는 빠져나온다.
    '                Exit For
    '            End If
    '        End If
    '    Next
    '    Addlog2("삭제작업이 완료되었습니다")
    '    'Frm_Wait.Hide()
    'End Sub
    Public Sub DeleteFileM(Param As RunParam)    '//파일목록으로부터 삭제대상폴더의 파일을 삭제한다.
        '//파일목록을 작성합니다.
        MDiMain.MSG("삭제목록 작성중...")

        '//변수목록
        Dim NR As ireaDataSet.WorkListRow
        Dim WRow() As ireaDataSet.FileListRow
        Dim index As Integer = 0
        Dim endcnt As Integer = MDiMain.DataSet1.SrcList.Rows.Count - 1


        If MDiMain.DataSet1.SrcList Is Nothing Then
            MsgBox("원본목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인")
            Return
        End If


        For Each drs As ireaDataSet.SrcListRow In MDiMain.DataSet1.SrcList.Rows    '//원본목록회전

            If MDiMain.DataSet1.SrcList Is Nothing Then
                MsgBox("파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인")
                Return
            End If

            index += 1
            Application.DoEvents()
            MDiMain.ShowCnt1(index, endcnt, "목록작성")
            '//전체목록에서 원본목록 검색
            WRow = MDiMain.DataSet1.FileList.Select("파일명 like '" & drs.목록명 & "'")
            If WRow.Length = 0 Then Addlog("X", drs.목록명, "", "파일없음")

            For Each dr As ireaDataSet.FileListRow In WRow  '//일치하는 목록들 작업목록에 집어넣는다.
                NR = MDiMain.DataSet1.WorkList.NewWorkListRow
                NR.원본경로 = dr.경로
                NR.원본파일명 = dr.파일명
                NR.구분 = "삭제"
                NR.대상경로 = dr.경로
                NR.대상파일명 = dr.파일명
                NR.오류 = ""
                If NR.대상파일명.IndexOf("*") = -1 AndAlso NR.대상파일명.IndexOf("?") = -1 Then
                    Try
                        MDiMain.DataSet1.WorkList.Rows.Add(NR)
                    Catch ex As Exception '//추가오류는 뻔하다이미 그 파일이 있는경우다.
                        NR.오류 = "중복된 삭제대상파일입니다(" & Format(Now, "HHmmss") & ")"
                        MDiMain.DataSet1.WorkList.Rows.Add(NR)
                        makelog2("중복된 삭제대상파일이 생성되었습니다")
                        makelog2("   파일명 : " & NR.원본경로 & "\" & NR.원본파일명)
                        'If MsgBox("중복된 대상파일이 확인되었습니다" & vbCrLf & vbCrLf & "계속하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then
                        '    Return
                        'End If
                    End Try
                End If
            Next
        Next
        MDiMain.MSG("삭제목록 작성완료...")

        'If GetExeType() Then   '//실제실행일경우
        '    DeleteFileR()
        'Else   '//모의실행일경우
        '    Addlog2("모의실행 : 실제 복사/이동/삭제는 수행되지 않습니다")
        '    MsgBox("모의실행입니다" & vbCrLf & "실제파일의 복사/이동/삭제 는 수행되지 않습니다", MsgBoxStyle.Information, "확인")
        'End If

    End Sub

    Public Sub DeleteFileR(winhide As Boolean)    '//실제로 파일을 삭제합니다. 삭제시 성공여부를 기록합니다
        Dim FI As FileInfo
        Dim Err As Boolean = False

        MDiMain.MSG("파일삭제 준비중")

        Dim index As Integer = 0
        Dim endcnt As Integer = MDiMain.DataSet1.WorkList.Rows.Count - 1


        If MDiMain.DataSet1.WorkList Is Nothing Then
            MsgBox("작업파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인")
            Return
        End If

        For Each Dr As ireaDataSet.WorkListRow In MDiMain.DataSet1.WorkList.Rows
            index += 1
            MDiMain.ShowCnt1(index, endcnt, "파일삭제")
            Application.DoEvents()

            If Dr.오류 <> "" Then
                Errlog("선오류감지되어서 넘어갑니다(" & Dr.오류 & ")")
            Else

                Try
                    FI = New FileInfo(CStr(Dr.원본경로 & "\" & Dr.원본파일명).Replace("\\", "\"))
                    Check_Backup(FI, BakTag)
                    If FI.Exists = False Then Dr.오류 = "파일없음"
                    Try
                        FI.Delete()
                        Dr.성공 = "O"
                        Dr.오류 = ""
                    Catch ex As Exception
                        Err = True
                        Dr.성공 = "X"
                        Dr.오류 = ex.Message.ToString()
                    End Try
                Catch ex As Exception
                    Err = True
                    Dr.성공 = "X"
                    Dr.오류 = ex.Message
                    Errlog("FI = New FileInfo(CStr(Dr.원본경로 &)" & ex.Message.ToString)
                End Try

            End If
        Next
        MDiMain.MSG("파일 [삭제] 완료" & IIf(Err, "(일부파일에 오류가 발생하였습니다", ""))
    End Sub


End Module
