Commit df29a2d3 authored by Steffen Gieseler's avatar Steffen Gieseler

Testfälle realisiert

git-svn-id: svn://ntoserver/Datenverteiler/VRZ3/trunk/de.bsvrz.kex.lmstic3@63743 40c0be50-5d29-0410-901d-fb59edb5cafc
parent 21a0dfeb
This diff is collapsed.
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
</DataProducer> </DataProducer>
<DataIdentifier name="Datenkennung">1266</DataIdentifier> <DataIdentifier name="Datenkennung">1266</DataIdentifier>
<Description name="Beschreibung">A5 Karlsruhe Richtung Basel zwischen <Description name="Beschreibung">A5 Karlsruhe Richtung Basel zwischen
Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel 1 km Stau Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel 1 km Stau
für LKW</Description> für LKW</Description>
<Location name="Ort" <Location name="Ort"
description="A5 Karlsruhe Richtung Basel zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel"> description="A5 Karlsruhe Richtung Basel zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel">
<!-- Position ist hier aus anderer Meldung kopiert!!! --> <!-- Position ist hier aus anderer Meldung kopiert!!! -->
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
</DataProducer> </DataProducer>
<DataIdentifier name="Datenkennung">1266</DataIdentifier> <DataIdentifier name="Datenkennung">1266</DataIdentifier>
<Description name="Beschreibung">A5 Karlsruhe Richtung Basel zwischen <Description name="Beschreibung">A5 Karlsruhe Richtung Basel zwischen
Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel 1 km Stau Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel 1 km Stau
für LKW</Description> für LKW</Description>
<Location name="Ort" <Location name="Ort"
description="A5 Karlsruhe Richtung Basel zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel"> description="A5 Karlsruhe Richtung Basel zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel">
<!-- Position ist hier aus anderer Meldung kopiert!!! --> <!-- Position ist hier aus anderer Meldung kopiert!!! -->
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TIC version="4.26.63.1" created="2015-10-13T12:36:08.378Z" culture="de-DE"> <TIC version="4.26.63.1" created="2015-10-13T12:36:08.378Z" culture="de-DE">
<TrafficAndTravelEvent name="Verkehrs- und Reiseereignis" description="A5 Karlsruhe Richtung Basel&#xA;zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel&#xA;1 km Stau für LKW"> <TrafficAndTravelEvent name="Verkehrs- und Reiseereignis" description="A5 Karlsruhe Richtung Basel&#xA;zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel&#xA;1 km Stau für LKW">
<TicId name="TIC Id">TestMeldung-TMC-Empfang4_1</TicId> <TicId name="TIC Id">TestMeldung-TMC-Empfang6_1</TicId>
<DataProducer name="Datenproduzent" value="D BW LMS-BW">D BW LMS-BW</DataProducer> <DataProducer name="Datenproduzent" value="D BW LMS-BW">D BW LMS-BW</DataProducer>
<DataIdentifier name="Datenkennung">1266</DataIdentifier> <DataIdentifier name="Datenkennung">1266</DataIdentifier>
<Description name="Beschreibung">A5 Karlsruhe Richtung Basel <Description name="Beschreibung">A5 Karlsruhe Richtung Basel
...@@ -708,7 +708,7 @@ zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel ...@@ -708,7 +708,7 @@ zwischen Dreieck Weil am Rhein und Grenzübergang Weil am Rhein/Basel
<CreatedBySystem name="Erzeugt durch System">LMS-BW</CreatedBySystem> <CreatedBySystem name="Erzeugt durch System">LMS-BW</CreatedBySystem>
</TrafficAndTravelEvent> </TrafficAndTravelEvent>
<TrafficAndTravelEvent name="Verkehrs- und Reiseereignis" description="A5 Karlsruhe - Basel&#xA;zwischen Offenburg und Lahr&#xA;in beiden Richtungen Bauarbeiten, Fahrbahnverengung, bis 11.03.2016"> <TrafficAndTravelEvent name="Verkehrs- und Reiseereignis" description="A5 Karlsruhe - Basel&#xA;zwischen Offenburg und Lahr&#xA;in beiden Richtungen Bauarbeiten, Fahrbahnverengung, bis 11.03.2016">
<TicId name="TIC Id">TestMeldung-TMC-Empfang4_2</TicId> <TicId name="TIC Id">TestMeldung-TMC-Empfang6_2</TicId>
<DataProducer name="Datenproduzent" value="D BW LMS-BW">D BW LMS-BW</DataProducer> <DataProducer name="Datenproduzent" value="D BW LMS-BW">D BW LMS-BW</DataProducer>
<DataIdentifier name="Datenkennung">377</DataIdentifier> <DataIdentifier name="Datenkennung">377</DataIdentifier>
<Description name="Beschreibung">A5 Karlsruhe - Basel <Description name="Beschreibung">A5 Karlsruhe - Basel
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -304,17 +304,21 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener { ...@@ -304,17 +304,21 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
final TIC3InfoDatei tid = new TIC3InfoDatei(datei); final TIC3InfoDatei tid = new TIC3InfoDatei(datei);
try { final TIC3InfoDateiDaten bildeMeldungen = tid.bildeMeldungen(mitValidierung);
for (TIC3MeldungsDaten daten : tid.bildeMeldungen(mitValidierung)) {
dateimeldungen.add(new TIC3Meldung(daten)); for (TIC3MeldungsDaten daten : bildeMeldungen.getMeldungen()) {
} dateimeldungen.add(new TIC3Meldung(daten));
} catch (final TIC3InfoDateiException te) { }
LMSTIC3LogTools.log(debug, LmsMsg.ErrorTICDatei, datei, te.getMessage());
LMTIC3Betriebsmeldungen.sendeDateifehler(System.currentTimeMillis(), false); if (bildeMeldungen.getExeption() != null) {
LMSTIC3LogTools.log(debug, LmsMsg.ErrorTICDatei, datei, bildeMeldungen.getExeption().getMessage());
LMTIC3Betriebsmeldungen.sendeDateifehler(System.currentTimeMillis(),
bildeMeldungen.getMeldungen().size() > 0);
sichereDatei(datei); sichereDatei(datei);
} else {
LMSTIC3LogTools.log(debug, LmsMsg.FineDateiGeloescht, datei);
datei.delete();
} }
LMSTIC3LogTools.log(debug, LmsMsg.FineDateiGeloescht, datei);
datei.delete();
} }
} }
......
...@@ -29,9 +29,6 @@ package de.bsvrz.kex.lmstic3.empfang.dekoder; ...@@ -29,9 +29,6 @@ package de.bsvrz.kex.lmstic3.empfang.dekoder;
import java.io.File; import java.io.File;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.xml.XMLConstants; import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
...@@ -77,27 +74,34 @@ public class TIC3InfoDatei { ...@@ -77,27 +74,34 @@ public class TIC3InfoDatei {
* @param mitVerifikation * @param mitVerifikation
* legt fest, ob die empfangenen Dateien gegen das Schema * legt fest, ob die empfangenen Dateien gegen das Schema
* validiert werden sollen * validiert werden sollen
* @return Liste von Meldungsdaten * @return {@link TIC3InfoDateiDaten}
* @throws TIC3InfoDateiException
* bei Fehlern
*/ */
public Collection<TIC3MeldungsDaten> bildeMeldungen(final boolean mitVerifikation) throws TIC3InfoDateiException { public TIC3InfoDateiDaten bildeMeldungen(final boolean mitVerifikation) {
final List<TIC3MeldungsDaten> meldungen = new ArrayList<>(); final TIC3InfoDateiDaten daten = new TIC3InfoDateiDaten();
final Document doc = getDocument(mitVerifikation); final Document doc;
try {
doc = getDocument(mitVerifikation);
} catch (final TIC3InfoDateiException e) {
daten.setExeption(new TIC3InfoDateiException(e.getMessage()));
return daten;
}
final NodeList nl = doc.getElementsByTagName(TIC3Meldung.XML_ELEMENT_MELDUNG); final NodeList nl = doc.getElementsByTagName(TIC3Meldung.XML_ELEMENT_MELDUNG);
for (int i = 0; i < nl.getLength(); i++) { for (int i = 0; i < nl.getLength(); i++) {
try { try {
final TIC3MeldungsDaten meldung = new TIC3MeldungsDaten(nl.item(i)); final TIC3MeldungsDaten meldung = new TIC3MeldungsDaten(nl.item(i));
meldungen.add(meldung); daten.addMeldung(meldung);
} catch (final TIC3Exception | NumberFormatException e) { } catch (final TIC3Exception | NumberFormatException e) {
throw new TIC3InfoDateiException(e.getMessage()); // speichere die erste Exception
if (daten.getExeption() == null) {
daten.setExeption(new TIC3InfoDateiException(e.getMessage()));
}
} }
} }
return meldungen; return daten;
} }
/** /**
......
/*
* Segment 2 (KEx), SWE LMS-TIC3
* Copyright (C) 2016 BitCtrl Systems GmbH
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Contact Information:
* BitCtrl Systems GmbH
* Weißenfelser Straße 67
* 04229 Leipzig
* Phone: +49 341-490670
* mailto: info@bitctrl.de
*/
package de.bsvrz.kex.lmstic3.empfang.dekoder;
import java.util.ArrayList;
import java.util.Collection;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3MeldungsDaten;
/**
* Ergebnis Einlesen der TIC3-Datei.
*
* @author BitCtrl Systems GmbH, Gieseler
* @version $Id: $
*/
public class TIC3InfoDateiDaten {
private Collection<TIC3MeldungsDaten> meldungen = new ArrayList<>();
private TIC3InfoDateiException exeption;
public Collection<TIC3MeldungsDaten> getMeldungen() {
return meldungen;
}
public void addMeldung(TIC3MeldungsDaten meldung) {
meldungen.add(meldung);
}
public TIC3InfoDateiException getExeption() {
return exeption;
}
public void setExeption(TIC3InfoDateiException exeption) {
this.exeption = exeption;
}
}
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
package de.bsvrz.kex.lmstic3.empfang.erzeugung; package de.bsvrz.kex.lmstic3.empfang.erzeugung;
import java.io.File;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -63,7 +64,6 @@ import de.bsvrz.kex.lmstic3.vew.TMCMeldung; ...@@ -63,7 +64,6 @@ import de.bsvrz.kex.lmstic3.vew.TMCMeldung;
import de.bsvrz.kex.lmstic3.vew.daten.ExterneMeldung; import de.bsvrz.kex.lmstic3.vew.daten.ExterneMeldung;
import de.bsvrz.kex.lmstic3.vew.daten.TMCKonvertierungException; import de.bsvrz.kex.lmstic3.vew.daten.TMCKonvertierungException;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Exception; import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Exception;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Meldung;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TmcConverter; import de.bsvrz.kex.lmstic3.vew.daten.tic.TmcConverter;
import de.bsvrz.kex.lmstic3.vew.daten.tmc.TMCException; import de.bsvrz.kex.lmstic3.vew.daten.tmc.TMCException;
import de.bsvrz.sys.funclib.debug.Debug; import de.bsvrz.sys.funclib.debug.Debug;
...@@ -320,7 +320,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface ...@@ -320,7 +320,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
/** /**
* Die Liste der zuletzt empfangenen TMC-Meldungen. * Die Liste der zuletzt empfangenen TMC-Meldungen.
*/ */
private Map<String, TIC3Meldung> meldungen = new HashMap<>(); // private Map<String, TIC3Meldung> meldungen = new HashMap<>();
/** /**
* Die Liste der aktuellen TIC3-Meldungen. * Die Liste der aktuellen TIC3-Meldungen.
...@@ -367,9 +367,6 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface ...@@ -367,9 +367,6 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
/** Objekttyp der TIC3-Meldungen. */ /** Objekttyp der TIC3-Meldungen. */
private DynamicObjectType objektTypExterneMeldungen; private DynamicObjectType objektTypExterneMeldungen;
/** Waitlock. */
private final Object waitLock = new Object();
private boolean mitValidierung = true; private boolean mitValidierung = true;
private boolean parameterEmpfangen; private boolean parameterEmpfangen;
...@@ -464,25 +461,25 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface ...@@ -464,25 +461,25 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
* *
*/ */
public void hinzufuegenMeldung(final SystemObject objekt) { public void hinzufuegenMeldung(final SystemObject objekt) {
synchronized (meldungen) { // synchronized (meldungen) {
// final TIC3Meldung meldung = new TIC3Meldung(objekt); // final TIC3Meldung meldung = new TIC3Meldung(objekt);
// try { // try {
// meldung.aktualisierenDav(dav); // meldung.aktualisierenDav(dav);
// } catch (final TIC3Exception e) { // } catch (final TIC3Exception e) {
// // das ist hier kein Fehler: // // das ist hier kein Fehler:
// // Meldungen von RdcTmcApp, die erst in die Menge eingetragen // // Meldungen von RdcTmcApp, die erst in die Menge eingetragen
// // und dann mit Daten gef�ttert werden erzeugen sonst hier // // und dann mit Daten gef�ttert werden erzeugen sonst hier
// // einen Fehler // // einen Fehler
// // LogTools.log(debug, LmsMsg.ErrorAppException, // // LogTools.log(debug, LmsMsg.ErrorAppException,
// // e.getMessage()); // // e.getMessage());
// } // }
// try { // try {
// meldung.anmeldenDavEmpfang(dav); // meldung.anmeldenDavEmpfang(dav);
// } catch (final TIC3Exception e) { // } catch (final TIC3Exception e) {
// LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage()); // LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
// } // }
// meldungen.put(meldung.getPID(), meldung); // meldungen.put(meldung.getPID(), meldung);
} // }
} }
@Override @Override
...@@ -511,57 +508,83 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface ...@@ -511,57 +508,83 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
meldungenLoeschen(); meldungenLoeschen();
try { synchronized (this) {
synchronized (this) { try {
subscribeData(); subscribeData();
parameterEmpfangen = false;
// auf Parameter warten while (run) {
if (!parameterEmpfangen) { // auf Parameter warten
LMSTIC3LogTools.log(debug, LmsMsg.InfoWarteParameter); if (!parameterEmpfangen) {
LMSTIC3LogTools.log(debug, LmsMsg.InfoWarteParameter);
try {
wait();
} catch (final InterruptedException e1) {
debug.warning("unterbrochen");
}
}
parameterEmpfangen = false;
try { if (!isEmpfangAktiv()) {
wait(); LMSTIC3LogTools.log(debug, LmsMsg.InfoKeinEmpfang);
} catch (final InterruptedException e1) { continue;
// TODO Auto-generated catch block
e1.printStackTrace();
} }
}
}
if (isEmpfangAktiv()) { if (!parameterGueltig()) {
worker = new MeldungenWorker(); continue;
}
meldungsdekodierer = new Meldungsdekodierer(lms.getPid(), lmsParameter, mitValidierung); worker = new MeldungenWorker();
meldungsdekodierer.addListener(this);
while (run) { meldungsdekodierer = new Meldungsdekodierer(lms.getPid(), lmsParameter, mitValidierung);
try { meldungsdekodierer.addListener(this);
synchronized (waitLock) { while (run) {
waitLock.wait(10000); try {
} wait(10000);
if (!meldungsdekodierer.isAlive()) {
LMSTIC3LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "FTPServer");
break;
}
if (!meldungsdekodierer.isAlive()) { if (parameterEmpfangen) {
LMSTIC3LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "FTPServer"); break;
break; }
} catch (final InterruptedException e) {
debug.warning("unterbrochen");
} }
} catch (final InterruptedException e) { }
// _debug.error("unterbrochen"); if (meldungsdekodierer != null) {
// interrupt(); meldungsdekodierer.stopp();
}
if (worker != null) {
worker.stopp();
} }
} }
} else { } catch (final TIC3Exception e) {
LMSTIC3LogTools.log(debug, LmsMsg.InfoKeinEmpfang); LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
} }
} catch (final TIC3Exception e) {
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
} }
}
private boolean parameterGueltig() {
final File dir = new File(lmsParameter.getEingangsverzeichnis());
if (meldungsdekodierer != null) { if (!dir.exists()) {
meldungsdekodierer.stopp(); debug.warning("Das parametrierte Eingangsverzeichnis '" + lmsParameter.getEingangsverzeichnis()
+ "' exitiert nicht");
return false;
} }
if (worker != null) { if (!dir.isDirectory()) {
worker.stopp(); debug.warning("Das parametrierte Eingangsverzeichnis '" + lmsParameter.getEingangsverzeichnis()
+ "' ist kein Verzeichnis");
return false;
} }
return true;
} }
private void meldungenLoeschen() { private void meldungenLoeschen() {
...@@ -660,8 +683,8 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface ...@@ -660,8 +683,8 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
debug.info("Parameterdatensatz erhalten für ", debug.info("Parameterdatensatz erhalten für ",
datensatz.getObject() + ", " + datensatz.getDataDescription().getAttributeGroup()); datensatz.getObject() + ", " + datensatz.getDataDescription().getAttributeGroup());
lmsParameter.aktualisieren(datensatz.getData()); lmsParameter.aktualisieren(datensatz.getData());
parameterEmpfangen = true;
synchronized (this) { synchronized (this) {
parameterEmpfangen = true;
this.notify(); this.notify();
} }
} }
......
...@@ -48,7 +48,7 @@ import de.bsvrz.sys.funclib.debug.Debug; ...@@ -48,7 +48,7 @@ import de.bsvrz.sys.funclib.debug.Debug;
* Modul FTP-Empfang. * Modul FTP-Empfang.
* *
* @author BitCtrl Systems GmbH, Gieseler * @author BitCtrl Systems GmbH, Gieseler
* @version $Id$ * @version $Id$
*/ */
public class FTPEmpfang extends Thread { public class FTPEmpfang extends Thread {
/** /**
...@@ -80,7 +80,7 @@ public class FTPEmpfang extends Thread { ...@@ -80,7 +80,7 @@ public class FTPEmpfang extends Thread {
/** /**
* Liste der angemeldeten Listener. * Liste der angemeldeten Listener.
*/ */
private final List<LMSFTPListener> listenerList = new ArrayList<LMSFTPListener>(); private final List<LMSFTPListener> listenerList = new ArrayList<>();
/** /**
* Der Kommunikationsstatus mit der Landesmeldestelle. * Der Kommunikationsstatus mit der Landesmeldestelle.
...@@ -135,8 +135,8 @@ public class FTPEmpfang extends Thread { ...@@ -135,8 +135,8 @@ public class FTPEmpfang extends Thread {
final File[] dateien = dir.listFiles(new XmlFilenameFilter()); final File[] dateien = dir.listFiles(new XmlFilenameFilter());
List<File> neueDateien = new ArrayList<File>(); List<File> neueDateien = new ArrayList<>();
if (dateien != null) { if (dateien != null) {
for (final File datei : dateien) { for (final File datei : dateien) {
if (datei.getName().equalsIgnoreCase(LMSProperties.KEEP_ALIVE_DATEINAME)) { if (datei.getName().equalsIgnoreCase(LMSProperties.KEEP_ALIVE_DATEINAME)) {
...@@ -146,20 +146,20 @@ public class FTPEmpfang extends Thread { ...@@ -146,20 +146,20 @@ public class FTPEmpfang extends Thread {
datei.delete(); datei.delete();
continue; continue;
} }
boolean isNeu = false; boolean isNeu = false;
// Test, ob immer die gleiche Datei überschrieben wird // Test, ob immer die gleiche Datei überschrieben wird
if (dateimap.containsKey(datei)) { if (dateimap.containsKey(datei)) {
final Long fileTime = dateimap.get(datei); final Long fileTime = dateimap.get(datei);
if (fileTime != datei.lastModified()) { if (fileTime != datei.lastModified()) {
isNeu = true; isNeu = true;
} }
} else { } else {
isNeu = true; isNeu = true;
} }
if (isNeu) { if (isNeu) {
dateimapneu.put(datei, datei.lastModified()); dateimapneu.put(datei, datei.lastModified());
neueDateien.add(datei); neueDateien.add(datei);
...@@ -168,7 +168,9 @@ public class FTPEmpfang extends Thread { ...@@ -168,7 +168,9 @@ public class FTPEmpfang extends Thread {
} }
dateimap = dateimapneu; dateimap = dateimapneu;
neueDateien = checkFileReady(neueDateien);
neueDateien = handleOverrideMode(neueDateien); neueDateien = handleOverrideMode(neueDateien);
if (neueDateien.size() > 0) { if (neueDateien.size() > 0) {
...@@ -179,12 +181,47 @@ public class FTPEmpfang extends Thread { ...@@ -179,12 +181,47 @@ public class FTPEmpfang extends Thread {
} }
} }
/**
* Prüft, ob der Transfer der Dateien beendet ist.
* <p>
* Es wird geprüft, ob sich innerhalb einer Sekunde die Größe ändert.
* </p>
*
* @param neueDateien
* neue Dateien
* @return Liste von Dateien
*/
private List<File> checkFileReady(final List<File> neueDateien) {
final List<File> result = new ArrayList<>();
final Map<File, Long> sizeMap = new HashMap<>();
for (File f : neueDateien) {
final long length = f.length();
sizeMap.put(f, length);
}
try {
Thread.sleep(1000);
} catch (final InterruptedException e) {
}
for (File f : neueDateien) {
final long length = f.length();
if (sizeMap.get(f) == length) {
result.add(f);
}
}
return result;
}
private List<File> handleOverrideMode(final List<File> dateien) { private List<File> handleOverrideMode(final List<File> dateien) {
final List<File> neueDateien = new ArrayList<File>(); final List<File> neueDateien = new ArrayList<>();
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss"); final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
final String ts = simpleDateFormat.format(new Date(System.currentTimeMillis())); final String ts = simpleDateFormat.format(new Date(System.currentTimeMillis()));
for (File f : dateien) { for (File f : dateien) {
final String destname = f.getAbsolutePath() + "_" + ts; final String destname = f.getAbsolutePath() + "_" + ts;
final File dest = new File(destname); final File dest = new File(destname);
...@@ -195,7 +232,7 @@ public class FTPEmpfang extends Thread { ...@@ -195,7 +232,7 @@ public class FTPEmpfang extends Thread {
debug.error(e.getMessage()); debug.error(e.getMessage());
} }
} }
return neueDateien; return neueDateien;
} }
......
...@@ -77,8 +77,8 @@ import de.bsvrz.kex.lmstic3.vew.TMCMeldung; ...@@ -77,8 +77,8 @@ import de.bsvrz.kex.lmstic3.vew.TMCMeldung;
import de.bsvrz.kex.lmstic3.vew.XMLTools; import de.bsvrz.kex.lmstic3.vew.XMLTools;
import de.bsvrz.kex.lmstic3.vew.daten.DavDatenModell; import de.bsvrz.kex.lmstic3.vew.daten.DavDatenModell;
import de.bsvrz.kex.lmstic3.vew.daten.ExterneMeldungsDaten; import de.bsvrz.kex.lmstic3.vew.daten.ExterneMeldungsDaten;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Exception;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Converter; import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Converter;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Exception;
import de.bsvrz.sys.funclib.debug.Debug; import de.bsvrz.sys.funclib.debug.Debug;
/** /**
...@@ -555,8 +555,9 @@ public class Meldungskodierer extends Thread ...@@ -555,8 +555,9 @@ public class Meldungskodierer extends Thread
debug.info("Parameterdatensatz erhalten für ", debug.info("Parameterdatensatz erhalten für ",
datensatz.getObject() + ", " + datensatz.getDataDescription().getAttributeGroup()); datensatz.getObject() + ", " + datensatz.getDataDescription().getAttributeGroup());
lmsParameter.aktualisieren(datensatz.getData()); lmsParameter.aktualisieren(datensatz.getData());
parameterEmpfangen = true;
synchronized (this) { synchronized (this) {
parameterEmpfangen = true;
this.notify(); this.notify();
} }
} }
......
...@@ -46,7 +46,6 @@ public final class LMTIC3Betriebsmeldungen { ...@@ -46,7 +46,6 @@ public final class LMTIC3Betriebsmeldungen {
private static final String APPLIKATIONSKENNUNG = "KEx LMS-TIC3"; private static final String APPLIKATIONSKENNUNG = "KEx LMS-TIC3";
private static final String ID = "KEx-ÜK-LMS"; private static final String ID = "KEx-ÜK-LMS";
private static final String ZUSATZ_PREFIX = "KEx-ÜK-LMS";
/**