IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Périodiser une méthode.....


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Par défaut Périodiser une méthode.....
    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 en statique!)
    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??

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 65
    Par défaut
    "planification / périodisation" :
    - jcrontab.
    - avec observer / observable : Thinking in patterns, de Bruce Eckel, § "system decoupling".

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par zeldoi5
    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...).
    Tu peux utiliser une des méthodes File.listFiles() sur ton répertoire...

    a++

  4. #4
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 50
    Par défaut
    une idee pour ton premier probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File repertoir=new File("c:/ton_rep");
    String[] list_file;
    list_file=repertoir.listFiles();

    tu aura alors dans list_file la liste des fichier .tu peu verifier si tu n'a pas deja traiter se fichier. une fois traiter tu te debrouille pour dire que ce fichier a ete traiter, par exemple tu stock son nom dans un vector.

  5. #5
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Par défaut
    Citation Envoyé par adiGuba
    Salut,

    Citation Envoyé par zeldoi5
    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...).
    Tu peux utiliser une des méthodes File.listFiles() sur ton répertoire...

    a++
    Ok, je vais déjà voir ça.
    Merci

    Par contre j'ai pas tout compris le jcrontab....

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Par défaut
    Citation Envoyé par mabs
    une idee pour ton premier probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File repertoir=new File("c:/ton_rep");
    String[] list_file;
    list_file=repertoir.listFiles();

    tu aura alors dans list_file la liste des fichier .tu peu verifier si tu n'a pas deja traiter se fichier. une fois traiter tu te debrouille pour dire que ce fichier a ete traiter, par exemple tu stock son nom dans un vector.
    Merci de ton aide, je vais essayer ça.
    Quand le fichier est traité (c'est à dire injecté en base) je le supprime après.

  7. #7
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 50
    Par défaut
    bon pour le probleme de périodiciter j ai bien une méthode qui me vient en tete mais bon ca fait plus barbare...
    creer un nouveau Thread dans lequel par exemple tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while (on_continue)
    {
    Thread.sleep(nb_milliseconde);
    //instructions ou tu parse ton fichier
    }
    Mais bon comme je l'ai dit ca fait pas tres propre

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Par défaut
    bonjour,

    java.util.Timer doit répondre parfaitement à tes besoins !!

    Cordialement

  9. #9
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Par défaut
    Bon je reviens à vous pour vous faire part de l'avancée :
    (on m'a pas mal aider!)
    J'arrive à "trouver" un fichier xml différent (cf problème d'avant) :

    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
    // Classe Principale
    import java.util.*;
    import java.io.*;
    import java.sql.*;
    import java.awt.*;
    import java.lang.*;
     
     
    public class Main
    {		
    	public static void main(String[] args)
    	{		
     
    		new MonProcess();
    	}
    }//Principal
     
    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)
    	{
    		System.out.println("Le fichier présent dans le répertoire à analyser : "+xmlFilePath);
    /*		try
    		{
            	String url=xmlFilePath;
    			LireXML fichierxml = new LireXML();
    			fichierxml.LireXML(url);
            }
    		catch(Exception e)
    		{
    			System.out.println(e.getMessage());
    		}*/
    	}
     
    	public void run()
    	{
    		while(true)
    		{
    			File dir=new File("U:/repertoire");
    			String[] xmlFiles=dir.list(new XMLFilter());
    			for(int i=0;i<xmlFiles.length;i++) 
    				parserETtraitementXML(xmlFiles[i]);
    		}
    	}
     
    }
    Je recherche encore pour analyser de façon périodique...
    Faut que j'étudie tout ça....

  10. #10
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Par défaut
    Bon merci de vos réponses, j'ai trouvé :

    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
    // Projet 
    // Classe Principale
    import java.util.*;
    import java.io.*;
    import java.sql.*;
    import java.awt.*;
    import java.lang.*;
     
     
    public class Main
    {
    	Timer timer;
    	public static void main(String[] args)
    	{		
    		System.out.println("Parser XML et traitement");
    		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(60);
    		}
    	}
    }//Principal
     
    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");
    		//stop();
    	}
    	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;
    			}
    		}
    	}
    }
    Merci beaucoup de votre aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant]périodiser une méthode
    Par niark-niark dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2006, 14h53
  2. Comment connaitre l'appelant d'une méthode
    Par Alec6 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/07/2004, 14h51
  3. [Reflection] Exécuter une méthode donnée d'une classe
    Par schousso dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/06/2004, 10h35
  4. Réponses: 3
    Dernier message: 16/04/2004, 16h51
  5. une méthode qui écrit dans la sortie html ?
    Par iubito dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/12/2003, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo