1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
|
#Region "Déclarations"
Public Const CNXStr As String = "Data Source=xwayr;Persist Security Info=True;User ID=icsf;Password=crossway"
Public Const Histo As Double = 2
Dim dossierApplicatif As String = My.Application.Info.DirectoryPath
Dim emplacementListeUf As String = Path.Combine(dossierApplicatif, "UfListe.txt")
Dim WithEvents BGWorkerADM As ComponentModel.BackgroundWorker
Dim WithEvents BGWorkerTC As ComponentModel.BackgroundWorker
Dim WithEvents BGWorkerPlanSoin As ComponentModel.BackgroundWorker
Dim WithEvents BGWorkerCopiePartage As ComponentModel.BackgroundWorker
Dim WithEvents BGWorkerCopieClient As ComponentModel.BackgroundWorker
Dim dossierTraces As String = dossierApplicatif & "\Traces"
Dim traceMain As RapportLog
Dim traceADM As New RapportLog(dossierTraces, "TraceADM")
Dim tracePlanSoin As New RapportLog(dossierTraces, "TraceIPS")
Dim traceTC As New RapportLog(dossierTraces, "TraceTC")
Dim traceCopieClient As New RapportLog(dossierTraces, "CopieClient")
Dim traceCopiePartage As New RapportLog(dossierTraces, "CopiePartage")
Dim UFliste As New List(Of UF)
Dim checkThreads As Boolean
Dim checkThreadsCopy As Boolean
Public Const crystalReportPath As String = "C:\refer_c\usv2\app\CrwReport.exe"
Dim shareDirectory As String
Dim clientDirectory As String
#End Region
Sub Main()
'Vérification du répertoire des traces
If Directory.Exists("Traces") = False Then
Directory.CreateDirectory("Traces")
Else
'Suppression des traces
Console.WriteLine("Epuration des traces")
For Each fichier As String In Directory.GetFiles("Traces")
If File.GetCreationTime("Traces\" & fichier).AddDays(Histo) < Now Then
File.Delete(fichier)
End If
Next
End If
traceMain = New RapportLog(dossierTraces, "TraceGenerale")
Console.WriteLine("Démarrage de la procédure dégradée IPS")
Console.WriteLine()
traceMain.addEvenement("Démarrage de la procédure dégradée IPS")
'Création du répertoire des Fichiers
If Directory.Exists("xway") = False Then
Directory.CreateDirectory("xway")
End If
'Vérification des process en cours de la dernière opération
Console.WriteLine("Vérification des process CrystalReport")
traceMain.addEvenement("Vérification des process CrystalReport")
Dim loadProcesses As Process()
loadProcesses = Process.GetProcessesByName("CrwReport")
For Each loadProcess In loadProcesses
loadProcess.Kill()
Next
'Instanciation des Threads de traitements
'ADM
BGWorkerADM = New ComponentModel.BackgroundWorker
AddHandler BGWorkerADM.DoWork, AddressOf BGWorkerADm_DoWork
'PLANSOIN
BGWorkerPlanSoin = New ComponentModel.BackgroundWorker
AddHandler BGWorkerPlanSoin.DoWork, AddressOf BGWorkerPlanSoin_DoWork
'TC
BGWorkerTC = New ComponentModel.BackgroundWorker
AddHandler BGWorkerTC.DoWork, AddressOf BGWorkerTC_DoWork
'COPIES CLIENTS
BGWorkerCopieClient = New ComponentModel.BackgroundWorker
AddHandler BGWorkerCopieClient.DoWork, AddressOf BGWorkerCopieClient_DoWork
'COPIES PARTAGE
BGWorkerCopiePartage = New ComponentModel.BackgroundWorker
AddHandler BGWorkerCopiePartage.DoWork, AddressOf BGWorkerCopiePartage_DoWork
'Alimentation de la liste des UF
Console.WriteLine()
Console.WriteLine("Récupération de la liste de UF")
traceMain.addEvenement("Récupération de la liste de UF")
Dim lectureFichier As New StreamReader(emplacementListeUf)
Dim ligneCourrante As String
Dim recupValeurs() As String
Dim UFCourrante As UF
ligneCourrante = lectureFichier.ReadLine
While Not Trim(ligneCourrante) = String.Empty
recupValeurs = Split(ligneCourrante, ";", 3)
'Création de l'objet UF
UFCourrante = New UF(recupValeurs(0), recupValeurs(1), recupValeurs(2))
'Ajout de l'objet à la collection d'UF
UFliste.Add(UFCourrante)
ligneCourrante = lectureFichier.ReadLine
End While
lectureFichier.Close()
'Création des répertoires d'UF
Console.WriteLine("Création des répertoires d'UF")
traceMain.addEvenement("Création des répertoires d'UF")
For Each monUf As UF In UFliste
If Directory.Exists("xway\" & monUf.getNumUf) = False Then
Directory.CreateDirectory("xway\" & monUf.getNumUf)
End If
Next
'Démarrage des Threads
Console.WriteLine()
Console.WriteLine("Démarrage des Threads de création des PDF")
traceMain.addEvenement("Démarrage des Threads de création des PDF")
Console.WriteLine()
checkThreads = True
BGWorkerADM.RunWorkerAsync()
Console.WriteLine("-THREAD ADM : OK")
'BGWorkerPlanSoin.RunWorkerAsync()
'Console.WriteLine("-THREAD PLANSOIN : OK")
'BGWorkerTC.RunWorkerAsync()
'Console.WriteLine("-THREAD TC : OK")
Dim timeThreads As Integer
timeThreads = 0
'Vérifications des threads
While checkThreads = True
timeThreads = timeThreads + 1
Console.Write(".")
System.Threading.Thread.Sleep(1000)
Select Case True
Case BGWorkerADM.IsBusy
Case BGWorkerPlanSoin.IsBusy
Case BGWorkerTC.IsBusy
Case Else
checkThreads = False
End Select
End While
Console.WriteLine()
Console.WriteLine("Fin des traitements de création de PDF (" & timeThreads & " Secondes)")
traceMain.addEvenement("Fin des traitements de création de PDF (" & timeThreads & " Secondes)")
'Une fois que les threads sont libérés. Copie des fichier, gestion de l'historique des dossiers
If checkThreads = False Then
checkThreadsCopy = True
timeThreads = 0
'Démarrage des Threads de répartition
Console.WriteLine("Démarrage de la répartition des fichiers créés")
traceMain.addEvenement("Démarrage de la répartition des fichiers créés")
'Copie des fichiers sur les partages
BGWorkerCopiePartage.RunWorkerAsync()
'Copie des fichiers sur les clients
BGWorkerCopieClient.RunWorkerAsync()
'Vérification des Threads de répartitions
While checkThreadsCopy = True
timeThreads = timeThreads + 1
Console.Write(".")
System.Threading.Thread.Sleep(1000)
Select Case True
Case BGWorkerCopieClient.IsBusy
Case BGWorkerCopiePartage.IsBusy
Case Else
checkThreadsCopy = False
End Select
End While
Console.WriteLine("Fin des traitements de répartition des PDF (" & timeThreads & " Secondes)")
traceMain.addEvenement("Fin des traitements de répartition de PDF (" & timeThreads & " Secondes)")
If checkThreadsCopy = False Then
'Suppression des fichiers actuels du serveur
Console.WriteLine("Suppression des fichiers du serveur")
traceMain.addEvenement("Suppression des fichiers du serveur")
For Each MonUf As UF In UFliste
Try
Dim repertoireActif As String
repertoireActif = dossierApplicatif & "\xway\" & MonUf.getNumUf
For Each fichier As String In Directory.GetFiles(repertoireActif)
File.Delete(fichier)
traceMain.addEvenement("-Fichier supprimé :" & fichier)
Next
Catch ex As Exception
traceMain.addEvenement("Erreur lors de la suppression des fichiers de :" & dossierApplicatif & "\wxay\" & MonUf.getNumUf)
End Try
Next
End If
End If
Console.WriteLine("Fin de la procédure dégradée IPS")
traceMain.addEvenement("Fin de la procédure dégradée IPS") |
Partager