Périodiser une méthode....

Résolu
zeldoi5 Messages postés 58 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 13 novembre 2005 - 18 mai 2005 à 16:36
zeldoi5 Messages postés 58 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 13 novembre 2005 - 19 mai 2005 à 17:46
Bonjour, je dois réaliser un serveur Java qui réalise plusieurs tâches....
La première, c'est prendre un fichier XML dont le nom varie avec le temps dans un répertoire.
La seconde, c'est parser ce fichier XML. Pour ceci j'utilise le parseur SAX... Toute cette partie est active et fonctionne correctement...
Mais premier soucis, comme le nom du fichier change tout le temps, comment puis je "dire" à mon programme Java qu'il choppe l'unique fichier XML qui soit dans son répertoire??? (la c'est le premier soucis...).

Mon second soucis consiste à périodiser le parser : j'ai un nouveau fichier XML qui arrive tous les quarts d'heure dans mon répertoire par FTP.
Et je ne vois pas comment périodiser cette tâche....

Auriez vous des suggestions s'il vous plaît??

5 réponses

safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
19 mai 2005 à 09:21
Ok je vé te donner le code complet (presque) :


public MainClass ......{


....


....


....


public static void main(String [] args){


.....


......


......


new MonProcess();


}


}




class XMLFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".xml"));
}
}

class MonProcess extends Thread{

public MonProcess(){
start();
}

public void parserETtraitementXML(String xmlFilePath){
...........
}

public void run(){
while(true){
File dir=new File("xx/xx/xx/tonrepertoir");
String[] xmlFiles=dir.list(new XMLFilter());
for(int i=0;i<xmlFiles.lenght;i++) parserETtraitementXML(xmlFiles[i]);
}
}
}
3
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
18 mai 2005 à 16:58
Alors, pour la première question je sé pas s'il ya une méthode plus
éficace mais je propose de créer un objet dir de type File de ton
repertoire, tu crèe un filtre de fichiers XML:


class XMLFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".xml"));
}
}

et tu recupère la liste des fichiers XML avec dir.list(new XMLFilter());

pour la 2ème question je X que tu pourras faire un Thread qui refait l'opération après un sleep
de 900000 pour 15 minutes.
0
zeldoi5 Messages postés 58 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 13 novembre 2005 2
18 mai 2005 à 17:05
Whoua.....
Je suis pas assez bon en java...
Je comprends pas tout....

Je mets dans ma Main le filtre XMLFilter, c'est ça?
0
zeldoi5 Messages postés 58 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 13 novembre 2005 2
19 mai 2005 à 14:32
C'est super cool de ta part!

Je viens d'étudier tout ça, et en plus ça marche!
Super sympa de ta part!

Je suis en train d'étudier la périodisation de ça....

Je regarde aussi vers la classe java.util.timer ... (parce que moi, pas fan des threads.... je sais je suis mauvais en java :( )
Si tu connais, fais moi signe!

Merci beaucoup!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zeldoi5 Messages postés 58 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 13 novembre 2005 2
19 mai 2005 à 17:46
Bon voici mon code timer :

public class Main
{
Timer timer;
public static void main(String[] args)
{
System.out.println("Debut du programme....");
new Main(60);
}
public Main(int seconds)
{
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask
{
public void run()
{
System.out.println("\nRecherche du Fichier XML");
new MonProcess();
timer.cancel(); //Terminate the timer thread
new Main(2);
}
}
}//Principal

et MonProcess :
class XMLFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{ return (name.endsWith(".xml")); }
}


class MonProcess extends Thread
{
String[] xmlFiles;
public boolean filedeleted=true;
public String url2 = "U:/rep";
public MonProcess()
{ start();}
public void parserETtraitementXML(String xmlFilePath)
{
System.out.println("Le fichier present dans le repertoire a analyser : "+xmlFilePath);
/*try
{
String url=xmlFilePath;
LireXML fichierxml = new LireXML();
fichierxml.LireXML(url);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}*/
File XMLFile = new File(xmlFilePath);
filedeleted = XMLFile.delete();
if (filedeleted==true)
System.out.println("Fichier Efface");
else
System.out.println("Fichier non Efface");
}
public void run()
{
while(true)
{
try
{
File dir=new File(url2);
xmlFiles=dir.list(new XMLFilter());
parserETtraitementXML(xmlFiles[0]);
break;
}
catch (Exception e)
{
System.err.println("Aucun fichier de mesure XML trouve");
break;
}
}
}
}
0
Rejoignez-nous