FileScanner liest nur xml-Datei,wenn sie als erstes steht

OKShaitan

Grünschnabel
Es ist mal wieder soweit, ich seh den Wald vor lauter Bäumen nicht!

Also, ich habe hier einen FileScanner gebaut, der nach XML-Dateien suchen soll und sie dann an den parser weitergeben soll.

Funktioniert so auch, bis auf: Wenn die XML-Datei nicht als erstes liegt, dann findet er sie nicht?! Es ist sicherlich wieder nur ein kleiner Fehler, aber ich seh ihn nicht.

Kann jemand mal kurz über den Code drüber schauen und mir evtl. sagen, wo der Fehler liegt? Wäre echt nett.


Code:
package workflowServer;
	
import logging.*;
import java.net.*;
import java.util.*;
import java.io.File;
import timesimulation.*;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

	
/**
 * @author Christiane Vetter
 *
 * Der FileScanner wird vom Server initiiert, wenn der Server eine Anfrage nach
 * Bestellungen erhält.
 * Der FileScanner prüft, ob eine neue XML-Datei im StandardVerzeichnis abgelegt
 * worden ist. Wenn ja, wird der absolute Pfad an den XMLParser zum Auslesen
 * weitergeleitet.
 *
 */
	
public class FileScanner {
	
  private File src; //Quelldatei
  private List lstFiles; //Liste nach dem Prüfen, ob xml-Files
  private String url = "rmi://localhost/";
  public XMLParser parser;//zur Weitergabe des Pfades an Parser
  	
//Konstruktor
  public FileScanner() throws RemoteException
  {
	//Erstellung von der Deskriptoren
	this.lstFiles = new ArrayList();
	this.src = new File("C://Bestellungen/");
	this.parser = new XMLParser();
  }
	
 /*************
  * Methoden
  *************/
	
 public void getFile () throws RemoteException {

  try {
  //Einlesen aller Dateien aus dem Verzeichnis in ein Array
  File[] files = src.listFiles();
   //Wenn Array keine Inhalte enthält?
   if (files.length == 0) {
 	 //Beenden
	 System.out.println ("Keine Datei vorhanden");
	 System.exit(99);
	 }//end if

   else {

  //Verbinden mit dem SimTimeServer
  SimTimeInterface test = null;
  try {
	test= (SimTimeInterface)Naming.lookup(url + "zeit");
  } catch (MalformedURLException e) {
	e.printStackTrace();
  } catch (NotBoundException e) {
	e.printStackTrace();
  }
  String simTime = test.getSimTimeString();

  //Verbinden mit dem LoggingServer
  RMIServerInterface log = null;
  try {
	log= (RMIServerInterface)Naming.lookup(url + "logging");
  } catch (MalformedURLException e1) {
	e1.printStackTrace();
  } catch (NotBoundException e1) {
	e1.printStackTrace();
  }
  LoggerInterface logger = log.getLoggerForModule("WorkflowServer");
   	
   //Variable zur Darstellung, ob xml-Files gefunden oder nicht
   boolean found = false;
   //Auslesen, ob im Array eine xml-Datei enthalten ist
   for (int i = 0; i < files.length; i++)
   {
   logger.info("Es wurden " + files.length + " Dateien gefunden", simTime, null);
   //Name der auszulesenden Datei als String
   String fileName = files[i].getName();
   //wenn eine Datei mit Endung xml vorhanden sind
     if (fileName.substring(fileName.indexOf(".") + 1).equalsIgnoreCase("xml"))
     {
      found = true;
     //Ausgabe auf Konsole und in LogBook
     logger.info("Neue XML-Datei gefunden: " + fileName, simTime ,null);
 	 String complete = "C://Bestellungen/" + fileName;
	 //Weitergabe des Strings an den XMLParser
	 parser.parse(complete);
	 logger.info("Die Datei" + complete + " wurde in die Datenbank eingelesen", simTime, null);
	 }//end if
	 
	 else if(!found)
	 {
	 //Wenn keine XML Dateien gefunden wurden, ans Ende der Schleife
	 logger.info("Keine XML-Bestellung vorhanden", simTime, null);
	 System.exit(99);
	 }//end else if
	}//end for
   }//end else
  }//end try

 catch (Exception e) {

  //Verbinden mit dem SimTimeServer
  SimTimeInterface test = null;
  try {
	test= (SimTimeInterface)Naming.lookup(url + "zeit");
  } catch (MalformedURLException e1) {
	e1.printStackTrace();
  } catch (NotBoundException e2) {
	e2.printStackTrace();
  }
  String simTime = test.getSimTimeString();

  //Verbinden mit dem LoggingServer
  RMIServerInterface log = null;
  try {
	log= (RMIServerInterface)Naming.lookup(url + "logging");
  } catch (MalformedURLException e1) {
	e1.printStackTrace();
  } catch (NotBoundException e2) {
	e2.printStackTrace();
  }
  LoggerInterface logger = log.getLoggerForModule("WorkflowServer");
 	
  //Ausgabe der Exception auf Konsole und in LogBook
 logger.error("Fehlermeldung in FileScanner: ", simTime, e);
  }//end catch

 }//end getFile
 
}//end FileScanner
 
Hallo!

Code:
if (fileName.substring(fileName.indexOf(".") + 1).equalsIgnoreCase("xml"))
... ein
Code:
fileName.endsWith(".xml")
hätte auch gereicht ;-)

Wenn ich das richtig sehe, dann passiert bei dir im
Code:
else if(!found)
Zweig direkt ein
System.exit(99);
Damit geht er also sofort raus, wenn er keine XML Datei als erste Datei identifiziert hat...

Gruß Tom
 
Zurück