Bonjour à tous,
je vous sollicite pour un avis, j'ai une fonction dans un de mes codes qui me pose problème, le but et simple, je lie un fichier texte séparé par des ; puis je split tout sa dans des variables pour faire une insertion dans une BDD... tout cela fonctionne sans problème, après le traitement du fichier je veux le déplacer dans un autre répertoire afin de valider le traitement. (Action que j'ai deja codé y a au moins 10 ans ... et qui fonctionne sans problème.)
Pour info, le code suivant et lancé dans un Thread dans une boucle infini pour vérifier l'arriver d'un nouveau fichier.
La fonction suivante prend, lie le fichier et écrie dans la BDD.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public void readRdvFileToSql() throws FileNotFoundException, IOException, SQLException{ File here = new File("z:/ORTHO/"); // fichiers et répertoires du répertoire courant for(File content : here.listFiles()) { // vérifier que c'est bien un fichier et qu'il termine en .txt if(content.isFile() && content.getName().endsWith(".txt")) { File source = new File(here+"/"+content.getName()); String filesource = source.toString(); //log de la lecture writeLogFile(TimeStamp+" : LECTURE : Fichier de RDV : "+filesource+Newligne,"c:/IMROSoinsExt/Logg/FileSQL_auto.log"); fileToSQL(source); //Methode qui lie et insert fdans la base SQL ////------ et QUI FAIT PLANTER LE DEPLACEMENT DES FICHIERS LU HELP HELP HELP HELP !!!!!! :) System.out.println(filesource); //writeLogFile(TimeStamp+" : SQL ECRITURE : Ecriture du RDV de : "+nom_Pat+" "+prenom_Pat+" "+ipp+Newligne,"c:/IMROSoinsExt/Logg/FileSQL_auto.log"); File destination = new File(here+"/TT_DAEMON_OK/"+"DEV_"+content.getName()); //On deplace le fichier lorsque il est traité par la passerelle. source.renameTo(destination); } } }
Mon problème est que si je n’exécute pas la méthode fileToSQL(File fic) dans la méthode de déplacement readRdvFileToSql, le fichier et bien déplacé, si je lance le traitement qui stock dans la BDD le fichier n'est pas déplacé... et la sa fait 3 heures que je m'arrache le peux de cheveux qu'il me reste si quelqu'un as une idée , je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public void fileToSQL(File fic) throws FileNotFoundException, IOException, SQLException{ // répertoire courant File here = new File("z:/ORTHO"); String num_RDV; //0 String crea_Mod_Sup;//1 String date_RDV;//2 String heure_RDV;//3 String type_RDV;//4 String comm_RDV;//5 String comm_RDVConcat; String nom_Pat = null;//6 String prenom_Pat = null;//7 String date_Naiss;//8 String sexe;//9 String ipp = null;//10 String adresse_1; String adressConcat; String adresse_2; String cp; String ville; String villeConcat; String tel_1; String tel_2; String modalite; String code_Examen; String libelle_Examen; String num_Adeli; String nom_Prescripteur; String ligne; BufferedInputStream in = new BufferedInputStream(new FileInputStream(fic)); InputStream ips = new FileInputStream(fic); InputStreamReader ipsr= new InputStreamReader(ips); BufferedReader br = new BufferedReader(ipsr); while((ligne=br.readLine())!=null){ String str[] =ligne.split(";"); // chaque valeur du tableau str est une valeur de la ligne num_RDV = str[0]; System.out.println(num_RDV); crea_Mod_Sup = str[1]; date_RDV= str[2]; heure_RDV =str[3]; type_RDV = str[4]; comm_RDV = str[5]; comm_RDVConcat = apostrophe(comm_RDV); nom_Pat = str[6]; prenom_Pat = str[7]; date_Naiss = str[8]; sexe = str[9]; ipp = str[10]; adresse_1 = str[11]; adressConcat = apostrophe(adresse_1); adresse_2 = str[12]; cp = str[13]; ville = str[14]; villeConcat = apostrophe(ville); tel_1 = str[15]; tel_2 = str[16]; modalite = str[17]; code_Examen = str[18]; libelle_Examen = str[19]; num_Adeli = str[20]; nom_Prescripteur = str[21]; try { Class.forName("org.postgresql.Driver"); } catch (ClassNotFoundException ex) { Logger.getLogger(IMROSoinsExt_GestFile.class.getName()).log(Level.SEVERE, null, ex); } System.out.println("DRIVER OK ! "); String url = "jdbc:postgresql://10.99.31.103:5432/BDDHL7INTERFACE_DEV"; String user = "dev_julien"; String passwd = "********"; Connection conn = null; try { conn = DriverManager.getConnection(url, user,passwd); } catch (SQLException ex) { Logger.getLogger(IMROSoinsExt_GestFile.class.getName()).log(Level.SEVERE, null, ex); } System.out.println("Connection effective !"); Statement state = null; try { state = conn.createStatement(); } catch (SQLException ex) { Logger.getLogger(IMROSoinsExt_GestFile.class.getName()).log(Level.SEVERE, null, ex); } state.executeUpdate("INSERT INTO hl7communicator_inputmessage (num_rdv,crea_mod_sup, date_rdv, heure_rdv, type_rdv, comm_rdv,nom_pat,prenom_pat,date_naiss,sexe,ipp,adresse_1,adresse_2,cp,ville,tel_1,tel_2,modalite,code_examen,libelle_examen,num_adeli,nom_prescripteur)"+" VALUES('"+ num_RDV+ "','"+ crea_Mod_Sup+ "','"+ date_RDV+ "', '"+ heure_RDV+ "', '"+ type_RDV+ "', '"+ comm_RDVConcat+ "', '"+ nom_Pat+ "', '"+ prenom_Pat+ "', '"+ date_Naiss+ "', '"+ sexe+ "', '"+ ipp+ "', '"+ adressConcat+ "', '"+ adresse_2+ "', '"+ cp+ "', '"+ villeConcat+ "', '"+ tel_1+ "', '"+ tel_2+ "', '"+ modalite+ "', '"+ code_Examen+ "', '"+ libelle_Examen+ "', '"+ num_Adeli+ "', '"+ nom_Prescripteur+ "')"); //ips.close(); //ipsr.close(); //br.close(); } }
Pour info je traite déjà un code comme celui -ci ou tout marche nikel.!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public void ReadAndMoveFile() throws IOException{ // répertoire courant File here = new File("z:/ORTHO/"); // fichiers et répertoires du répertoire courant for(File content : here.listFiles()) { // vérifier que c'est bien un fichier et qu'il termine en .txt if(content.isFile() && content.getName().endsWith(".txt")) { File source = new File(here+"/"+content.getName()); String filesource = source.toString(); System.out.println(filesource); //log de la lecture writeLogFile(TimeStamp+" : LECTURE : Fichier de RDV : "+filesource+Newligne,"c:/IMROSoinsExt/Logg/FileIntegrationlog.log"); String lecture = readFile(source); writeLogFile(TimeStamp+" : ECRITURE : Fichier de RDV RDV_FILE_SQL.txt contenant: "+filesource+Newligne,"c:/IMROSoinsExt/Logg/FileIntegrationlog.log"); writeFileRdv(lecture,"z:/ORTHO/TT_DAEMON_SQL/RDV_FILE_SQL.txt"); File destination = new File(here+"/TT_DAEMON_OK/"+content.getName()); //On deplace le fichier lorsque il est traité par la passerelle. source.renameTo(destination); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 //****************************** // lecture du fichier text + on stocke la valeur dans une chaine de caractere RETURN OU.toString. //****************************** public String readFile(File f) throws FileNotFoundException, IOException { StringWriter out; try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(f))) { out = new StringWriter(); int b; while ((b=in.read()) != -1) out.write(b); out.flush(); out.close(); } return out.toString(); }
PS : Bien sur j'ai aucun retour d'erreur dans le compilateur.
Merci les gas.
Partager