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.
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