gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 102 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 10 août 2005 - 18 h 41 m 04 s |
|
|
Reprise du message précédent :
Le 10 août 2005 - 18 h 37, Florent42 a écrit :
je parle bien de java et non de javascript
le truc surtout c que ca date de 2ans....
|
Tu t'en sors avec les cours fournis sur la communauté Developpez ?
Dès que tu as des questions, poum, tu fais remonter le topic officiel Java
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 10 août 2005 - 20 h 53 m 33 s |
|
|
je te remercie de ton soutien gege 
dans l immediat je ne m occuperais pas d une qulconque connexion a une base de données mysql
je veux essayer de voir ce que ca donne uniquement avec des fichiers
Dans un premier temps je regarde seulement comment creer un fichier, l ouvrir et y ecrire dedans.
> sur le site developpez il y a pas grand chose la dessus sur la gestion des flux de données mais j ai trouve un code qui repond a certaines questions. Par contre lors du lancement du code, il demande le nom du fichier. A la rigueur, dans un premeir temps je prefererais avoir un nom de fichier fixe et ca pour linstant je ne sais pas comment le faire. Pour l ecriture le Outputstream devrait me servir.
Dans un deuxieme temps, je pense formatter les trames arrivants selon des champs bien précis.
> la par contre actuellement j ai absolument rien trouve des equivalent en php a str_replace()et explode() voire ereg() notament.
Ainsi je pourrais par la suite ecrire facilement un code en php pur lui, qui sera utilise par l utilisateur pour consulter le fichier et recuperer dans l ordre:
l heure de l appel
le numero de l appelant
la duree de l appel
le poste interne de l appele
et pour les sortants:
l heure de l appel
le numero appele
la duree de l appel
le poste interne de l appelant
|
|
| |
Message édité 1 fois, la dernière par Florent42 le 10 août 2005 - 20 h 54. |
| |
- je cherche un emploi
ICI
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 10 août 2005 - 22 h 17 m 52 s |
|
|
je te posterai ce soir apres le W une modif du prog pour que la sortie soit enregistree ds un fichier, un peu comme la trace que tu nous as montree avec les tickets.
|
|
| |
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 12 août 2005 - 05 h 14 m 43 s |
|
|
Bon alors voila :
1. import java.io.BufferedReader;
2. import java.io.BufferedWriter;
3. import java.io.File;
4. import java.io.FileWriter;
5. import java.io.IOException;
6. import java.io.InputStreamReader;
7. import java.io.PrintWriter;
8. import java.net.InetAddress;
9. import java.net.Socket;
10. import java.net.UnknownHostException;
11. import java.text.SimpleDateFormat;
12. import java.util.ArrayList;
13. import java.util.Date;
14. import java.util.LinkedList;
15. import java.util.List;
16.
17. /**
18. * Main class of the program
19. *
20. * @author kha
21. */
22. public final class Main implements Processor
23. {
24. private final List queue;
25. private Consumer consumer;
26. private Producer producer;
27.
28. private Main(final String host, final String port, final String output) throws UnknownHostException
29. {
30. Log.log("new Main");
31.
32. queue = new LinkedList();
33.
34. consumer = new Consumer(queue, output, this);
35. producer = new Producer(host, port, queue);
36.
37. try
38. {
39. consumer.start();
40. producer.start();
41. }
42. catch (final IOException e)
43. {
44. if (consumer != null)
45. {
46. consumer.stop();
47. consumer = null;
48. }
49. if (producer != null)
50. {
51. producer.stop();
52. producer = null;
53. }
54. e.printStackTrace();
55. }
56. }
57.
58. /**
59. * @see Processor#process(java.lang.String)
60. */
61. public String process(final String pLine)
62. {
63. Log.log("processing line: " + pLine);
64.
65. final StringBuffer sb = new StringBuffer();
66.
67. // MODIFIE ICI LE CODE NECESSAIRE POUR RECUPERE TES CHAMPS.
68. // J AI PRIS COMME EXAMPLE:
69. // 1737 09-08 14H17' 48 10 01 00 F1 3699 00'04" 3 B042 1 01
70.
71. final String [] parts = removeVoidEntries(pLine.split("\\s|\\t|-|'|\\\"|-|H"));
72.
73. sb.append("id=").append(parts[0]);
74. sb.append("&dateday=").append(parts[1]);
75. sb.append("&datemonth=").append(parts[2]);
76. sb.append("&datehour=").append(parts[3]);
77. sb.append("&datemin=").append(parts[4]);
78. sb.append("&data1=").append(parts[5]);
79. sb.append("&data2=").append(parts[6]);
80. sb.append("&data3=").append(parts[7]);
81. sb.append("&data4=").append(parts[8]);
82. sb.append("&data5=").append(parts[9]);
83. sb.append("&data6=").append(parts[10]);
84. sb.append("&lastmin=").append(parts[11]);
85. sb.append("&lastsec=").append(parts[12]);
86. sb.append("&data7=").append(parts[13]);
87. sb.append("&data8=").append(parts[14]);
88. sb.append("&data9=").append(parts[15]);
89. sb.append("&data10=").append(parts[16]);
90.
91. // MODIFIE AN HAUT LE CODE NECESSAIRE POUR RECUPERE TES CHAMPS.
92.
93. return sb.toString();
94. }
95.
96. private String[] removeVoidEntries(final String[] a)
97. {
98. final List l = new ArrayList();
99. for (int i = 0; i < a.length; i++)
100. {
101. if (a[i].length() > 0)
102. {
103. l.add(a[i]);
104. }
105. }
106. return (String[]) l.toArray(new String[] {});
107. }
108.
109. /**
110. * Entry point
111. *
112. * @param args -
113. */
114. public static void main(final String[] args)
115. {
116. if (args.length < 3)
117. {
118. System.err.println("Usage: SocketTest <host> <port> <output>");
119. System.exit(1);
120. }
121.
122. try
123. {
124. new Main(args[0], args[1], args[2]);
125. }
126. catch (final UnknownHostException e)
127. {
128. System.err.println("Cannot find hostname: " + args[0]);
129. }
130. }
131. }
132.
133. /**
134. * Command pattern.
135. *
136. * @author kha
137. */
138. interface Processor
139. {
140. /**
141. * A class implementing this interface can be used to process lines
142. *
143. * @param line The line to process
144. * @return The response
145. */
146. String process(final String line);
147. }
148.
149. /**
150. * Producer thread<br/>
151. * gte lines from socket and put them in a queue for processing
152. *
153. * @author kha
154. */
155. final class Producer implements Runnable
156. {
157. private final InetAddress address;
158. private final short port;
159. private final List queue;
160.
161. private Socket socket;
162. private BufferedReader in;
163. private Thread producer;
164.
165. Producer(final String pHost, final String pPort, final List pQueue) throws UnknownHostException
166. {
167. Log.log("new Producer");
168.
169. this.address = InetAddress.getByName(pHost);
170. this.port = Short.parseShort(pPort);
171. this.queue = pQueue;
172. }
173.
174. void start() throws IOException
175. {
176. if (producer == null)
177. {
178. Log.log("starting");
179.
180. socket = new Socket(this.address, this.port);
181. in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
182.
183. Log.log("connected to " + this.address.getHostAddress() + ":" + this.port);
184.
185. producer = new Thread(this, "ProducerThread");
186. producer.start();
187. }
188. }
189.
190. void stop()
191. {
192. if (producer != null)
193. {
194. Log.log("stopping");
195.
196. producer = null;
197.
198. try
199. {
200. in.close();
201. socket.close();
202.
203. in = null;
204. socket = null;
205. }
206. catch (final IOException e)
207. {
208. e.printStackTrace();
209. }
210. }
211. }
212.
213. /**
214. * @see java.lang.Runnable#run()
215. */
216. public void run()
217. {
218. String line;
219.
220. try
221. {
222. while (producer != null)
223. {
224. line = in.readLine();
225. Log.log("put line in queue: " + line);
226. synchronized (this.queue)
227. {
228. queue.add(line);
229. queue.notifyAll();
230. }
231. }
232. }
233. catch (final IOException e)
234. {
235. e.printStackTrace();
236. }
237. finally
238. {
239. stop();
240. }
241. }
242. }
243.
244. /**
245. * Consumer thread<br/>
246. * Get lines from queue, process them and write them in a file
247. *
248. * @author kha
249. */
250. final class Consumer implements Runnable
251. {
252. private final File output;
253. private final Processor processor;
254. private final List queue;
255.
256. private PrintWriter out;
257. private Thread consumer;
258.
259. Consumer(final List pQueue, final String pOutput, final Processor pProcessor)
260. {
261. Log.log("new Consumer");
262.
263. this.processor = pProcessor;
264. this.output = new File(pOutput);
265. if (this.output.getParentFile() != null)
266. {
267. this.output.getParentFile().mkdirs();
268. }
269. this.queue = pQueue;
270. }
271.
272. void start() throws IOException
273. {
274. if (consumer == null)
275. {
276. Log.log("starting");
277.
278. this.out = new PrintWriter(new BufferedWriter(new FileWriter(this.output)));
279. consumer = new Thread(this, "ConsumerThread");
280. consumer.start();
281. }
282. }
283.
284. void stop()
285. {
286. if (consumer != null)
287. {
288. Log.log("stopping");
289. consumer.interrupt();
290. consumer = null;
291. out.close();
292. out = null;
293. }
294. }
295.
296. /**
297. * @see java.lang.Runnable#run()
298. */
299. public void run()
300. {
301. while (consumer != null)
302. {
303. String line = null;
304.
305. synchronized (this.queue)
306. {
307. while (consumer != null && queue.isEmpty())
308. {
309. try
310. {
311. Log.log("waiting for line...");
312. queue.wait();
313. }
314. catch (final InterruptedException e)
315. {
316. Log.log("thread interrupted in waiting state");
317. }
318. }
319.
320. if (consumer != null)
321. {
322. line = (String) queue.remove(0);
323. Log.log("get line from queue: " + line);
324. }
325. }
326.
327. if (line != null)
328. {
329. final String res = this.processor.process(line);
330. Log.log("writting line: " + res);
331. out.write(res + System.getProperty("line.separator"));
332. out.flush();
333. }
334. }
335.
336. stop();
337. }
338. }
339.
340. /**
341. * Logger
342. *
343. * @author kha
344. */
345. final class Log
346. {
347. private static final StringBuffer SB = new StringBuffer();
348. private static final SimpleDateFormat DF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
349.
350. private Log()
351. {
352. super();
353. }
354.
355. /**
356. * Log object
357. *
358. * @param o Object to log
359. */
360. public static synchronized void log(final Object o)
361. {
362. final StackTraceElement[] elems = new Exception().getStackTrace();
363.
364. SB.setLength(0);
365. SB.append(DF.format(new Date()));
366. SB.append(" [").append(Thread.currentThread().getName()).append("] DEBUG ");
367. SB.append(elems[1].getClassName()).append(" - ");
368. SB.append(o);
369.
370. System.out.println(SB.toString());
371. }
372. }
Resultat :
Telechargement de la classe :
http://khapp.free.fr/tmp/Main.java
Compilation : javac Main.java
Execution : java Main.java <ip> <port> <fichier de sortie>
|
|
| |
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 15 août 2005 - 21 h 45 m 44 s |
|
|
merci bien kha pour le code!
j etais tres tres loin d arriver a ton resultat meme en tudiant le site developpez.com!!
après ton code j ai cree mon propre code php qui récupère le contenu du fichier mais encore merci car sasn toi cette partie n aurait pas été possible:
1. $annee=date('Y');
2. $fichier="c:/taxe.txt";
3. $fp = fopen ($fichier,"r+");
4. $taille=filesize($fichier);
5. if($taille!=0)
6. {
7. $texte_complet = fread ($fp, $taille);
8. $tableau = preg_split ("/_/", $texte_complet);
9. $nb_lignes = count ($tableau)-1;
10. }
11. $i = 0;
12. for ($i=0; $i<=$nb_lignes; $i++)
13. {
14. if ($i != $nb_lignes)
15. {
16. $ligne= explode("&",$tableau[$i]);
17. $id=trim(str_replace("id="," ",$ligne[0]));
18. $jour=trim(str_replace("dateday="," ",$ligne[1]));
19. $mois=trim(str_replace("datemonth="," ",$ligne[2]));
20. if($mois<10){$mois='0'.$mois;}
21. $heure=trim(str_replace("datehour="," ",$ligne[3]));
22. $minute=trim(str_replace("datemin="," ",$ligne[4]));
23. $poste_appelant=trim(str_replace("data1="," ",$ligne[5]));
24. $faisceau_appele=trim(str_replace("data4="," ",$ligne[8]));
25. $numero_appelant_ou_faisceau_sorti=trim(str_replace("data5="," ",$ligne[9]));
26. $numero_appele=trim(str_replace("data6="," ",$ligne[10]));
27. $duree_minute=trim(str_replace("lastmin="," ",$ligne[11]));
28. $duree_seconde=trim(str_replace("lastsec="," ",$ligne[12]));
29. $poste_interne_appele=trim(str_replace("data8="," ",$ligne[14]));
30. $db = mysql_connect('localhost', 'root', '');
31. mysql_select_db('appelants',$db);
32. if(ereg("F",$numero_appelant_ou_faisceau_sorti))
33. {
34. $sql1 = "INSERT INTO appel_sortant VALUES('$id','$poste_appelant','$numero_appele','$numero_appelant_ou_faisceau_sorti','$duree_heure','$duree_minute','$duree_seconde','$heure','$minute','$jour','$mois','$annee')";
35. mysql_query($sql1);
36. }
37. else
38. {
39. $sql1 = "INSERT INTO appel_entrant VALUES('$id','$poste_interne_appele','$numero_appelant_ou_faisceau_sorti','$faisceau_appele','$duree_heure','$numero_appele','$duree_minute','$heure','$minute','$jour','$mois','$annee')";
40. mysql_query($sql1);
41. }
42. }
43. }
44. echo '</table>';
45. fclose($fp);
46. $fp = fopen ($fichier,"w");
47. fclose($fp);
avec tout ca, on peut sans aucun pb faire la difference entre un appel entrant et sortant et ca va dans la bonne table.De plus je vide le fichier pour eviter d avoir un fichier trop lourd.
Derriere j ai fait une fonction d affichage bien sur.
maintenant j essai de travailler sur un fichier jar executable qui contiendra toutes les classes mais a la rigueur ca c pas grave, ma plus grande preoccupation est maintenant de lancer le script java en arriere plan(genre service) qui ne demande plus d avoir oligatoirement une fenetre ms dos ouverte perpetuelement.
|
|
| |
Message édité 1 fois, la dernière par Florent42 le 17 août 2005 - 09 h 48. |
| |
- je cherche un emploi
ICI
|
gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 102 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 15 août 2005 - 22 h 10 m 52 s |
|
|
Pour le fichier Java exécutable, cf. Jsmooth ou encore d'autres que tu peux trouver sur la communauté Developpez.com
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 16 août 2005 - 00 h 48 m 43 s |
|
|
Mais... le PHP ne fait QUE lire le fichier et rentrer les infos dans une BD ??
Ce serait pas plus simple de faire ca dans le code java, au lieu passer par un fichier ?
Pour lancer un progranne java en service, ya plusieurs facon. Regarde a http://wrapper.tanukisoftware.org/ par example ca c est un bon moyen.
Si j ai un peu de temps un soir ou ce w-e je modifierai le code java pour inclure les acces BD pour enregistrer les donnees et faire un jar et un wrapper. Le plus chiant c est les acces BD, le reste c est simple.
|
|
| |
|
gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 102 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 16 août 2005 - 09 h 08 m 39 s |
|
|
Déjà, s'il a Eclipse, il peut générer facilement un jar auto-exécutable grâce à l'attribut Main-Class à rajouter dans le Manifest...
Mais pour ça, y a Google (spa que je veux pas t'aider, mais je préfère qu'en ayant qqs pistes, tu trouves tout seul, ce sera plus instructif...)
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 08 h 34 m 52 s |
|
|
j ai vu des pistes sur developpez.com sur les jar et la creation des fichiers manifest...ca ne devrait pas etre difficile
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 08 h 55 m 21 s |
|
|
le code PHP fait 4 choses:
- lire ligne par ligne le fichier
- chaque ligne le decomposer par variable
- tout mettre dans la base de données correspondante
- vider le fichier
et il fait une derniere chose non montree ici:
- afficher a l utilisateur les appels
j ai fait comme ca parce que justement j avais vu sur le site developpez.com un document sur les liens entre java et mysql. C était qualifié de compliqué. Alors vu que je connais le php...
par contre j ai laisse ton code tourne kha et il s est planté. Il a après le plantage toujours recu les indication du central téléphonique mais a tout mis en queue et terminé.
J ignore pour l instant pourquoi ca c est passé ainsi et surtout qu el type d appel bien particulier il s est passé. Dès que j en sais plus je le dis(je ne peux donner l erreur la fenetre ms dos a été fermé inopinément hier alors que j etais en déplacement).
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 09 h 36 m 38 s |
|
|
voila l erreur:
|
|
| |
Message édité 1 fois, la dernière par Florent42 le 17 août 2005 - 10 h 36. |
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 09 h 49 m 13 s |
|
|
je viens de corriger mon code php, il contenait une erreur au niveau des appels entrants
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 10 h 38 m 01 s |
|
|
un autre type d erreur:
clairement le premier type d erreur est lors des appels interne
le 2eme est lors des envois de fax, effectivement le format change légèrement je n avais jamais remarque et je m en excuse
|
|
| |
Message édité 2 fois, la dernière par Florent42 le 17 août 2005 - 11 h 53. |
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 11 h 08 m 28 s |
|
|
voila une explication (enfin) sur le format complet des tickets recupérés:
id : longueur (4 bytes) 0001 à 9999
date : longueur 5
heure: longueur 6
appelant: 1 à 4 chiffres
Bus : Bxxx
classe de service: longueur 2
téléservice: longueur 2
type d appel :longueur 2
groupe : longueur 2 (si rien 2 espaces)
numéro appelé : longueur 18 chiffre
duree :longueur 9 chiffre
duree sonnerie + 4 dernier chiffre : longueur 11
taxe
numero interne appele : longueur 1 à 4 chiffres
bus : bxxx
cause : longueur 2
chaine : longueur 2 (si pas de chaine 2 espaces)
route : longueur 3 (si pas de route 3 espaces)
index : longueur 8
numéro envoyé : longueur 18
j ai un tableau plus precis mais je ne peux le mettre comme ca dispo sur internet, je peux par contre l envoyer par mail a des personnes bien précises
|
|
| |
Message édité 3 fois, la dernière par Florent42 le 17 août 2005 - 11 h 57. |
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 11 h 49 m 32 s |
|
|
voila des exemples de traces:
|
|
| |
Message édité 1 fois, la dernière par Florent42 le 17 août 2005 - 11 h 53. |
| |
- je cherche un emploi
ICI
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 17 août 2005 - 16 h 22 m 14 s |
|
|
Salut !
le array index of bound provient d une erreur lors du parsing des trames : je presumais que le format etait tout le temps le emem etant donne que tu ne nous avait donne aucune info. Donc en fait c eait le parsing qui plantait.
Maintenant que tu nous a donne les vraie spec, il faut modifier le parsing dans le code java pour recuperer chaque element correctement.
Envoie moi ton tableau quand meme car j aimerais avoir plus de details sur l espacement et les conditions surtout.
Mail: mathieu.carbou@laposte.net
J essaierai de corriger ca et je modifierai le consumer pour qu il enregistre a la fois dans une BD avec JDBC et aussi dans un CVS que tu pourras ouvrir dans Excel par exemple ou traiter.
NB : si Gege peux aider aussi... car j aurai p-e pas le temps de tout faire avant lundi prochains.
NB2 : il faudrait aussi creer un projet simple car il va y avoir des librairies externes (pour la DB).
NB3 : il faudrait ausi creer un JTO pour representer un ticket.
NB4 : non la c fini !
|
|
| |
Message édité 1 fois, la dernière par kha le 17 août 2005 - 16 h 22. |
| |
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 17 août 2005 - 23 h 06 m 57 s |
|
|
j ai eu ce tableau en question que depuis...aujourd hui
pour le format a part pour des trucs bien precis (appel interne ou fax) ca marchait parfaitement
je t envoi le tableau des demain matin
une question: c koi un JTO simplement?
|
|
| |
- je cherche un emploi
ICI
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 18 août 2005 - 03 h 34 m 28 s |
|
|
Un JTO (Java Transfer Object) un un bean (classe java contenant des proprietes avec leurs getters/setters).
Il est generalement couple avec un DAO, qui va s occuper de sa persistence.
Dans le cas de ton truc, on va avoir un JTO Ticket qui sera manage par un TicketDAO, qui lui va s occuper des connexion DB
|
|
| |
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 18 août 2005 - 04 h 37 m 56 s |
|
|
Bon je t envoie un mail : ya des pbs dans le tableau... c est imprecis
|
|
| |
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 18 août 2005 - 08 h 14 m 50 s |
|
|
j ai repondu a ton mail j espere t a voir repondu au mieux
|
|
| |
- je cherche un emploi
ICI
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 22 août 2005 - 03 h 52 m 44 s |
|
|
FINI !
Le projet est a : http://khapp.free.fr/tmp/Ticket.zip
Tu peux l importer dans Eclipse (www.eclipse.org)
Voila ce que ca donne :
Le projet sert a recuperer des trames sur un server et les envoyer formattees dans une base de donnes et un fichier de stats CSV.
features
-> un properties pour configurer l application
-> creation d un fichier csv
-> insertion dans une base de donnes
-> systeme de pooling
-> classe principale : TicketControler
-> le script SQL de creation des tables est dans le dossier data (IMPORTANT: le nom des champs doit correspondre au nom des proprietes de l objet Ticket)
NB : le systeme de pooling est tres generique et se situe dans la partie commune. il peut etre reprise dans n importe lequel de vos projet au besoin.
Voila !
Il ne reste plus qu a faire si ca vous tente un jar (option exporter de Eclipse), et faire un .cmd pour lancer l appli / un service si necessaire (cf le wrapper dont ke t ai parle + haut).
Mais pour ca je te laisse faire car ce n est pas de la prog et ca m interesse beaucoup moins
EDIT : fait en un apres midi
|
|
| |
Message édité 1 fois, la dernière par kha le 22 août 2005 - 03 h 54. |
| |
|