Commit 276a3658 authored by Steffen Gieseler's avatar Steffen Gieseler

Koordinatenreduktion eingebaut

Refactoriert

git-svn-id: svn://ntoserver/Datenverteiler/VRZ3/trunk/de.bsvrz.kex.lmstic3@63650 40c0be50-5d29-0410-901d-fb59edb5cafc
parent 852cef08
This diff is collapsed.
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
formatter_settings_version=12
org.eclipse.jdt.ui.javadoc=false
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\n * \n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
sp_cleanup.add_missing_deprecated_annotations=true
sp_cleanup.add_missing_methods=false
sp_cleanup.add_missing_nls_tags=false
sp_cleanup.add_missing_override_annotations=true
sp_cleanup.add_missing_override_annotations_interface_methods=true
sp_cleanup.add_serial_version_id=false
sp_cleanup.always_use_blocks=true
sp_cleanup.always_use_parentheses_in_expressions=false
sp_cleanup.always_use_this_for_non_static_field_access=false
sp_cleanup.always_use_this_for_non_static_method_access=false
sp_cleanup.convert_functional_interfaces=false
sp_cleanup.convert_to_enhanced_for_loop=false
sp_cleanup.correct_indentation=true
sp_cleanup.format_source_code=true
sp_cleanup.format_source_code_changes_only=false
sp_cleanup.insert_inferred_type_arguments=false
sp_cleanup.make_local_variable_final=true
sp_cleanup.make_parameters_final=false
sp_cleanup.make_private_fields_final=true
sp_cleanup.make_type_abstract_if_missing_method=false
sp_cleanup.make_variable_declarations_final=false
sp_cleanup.never_use_blocks=false
sp_cleanup.never_use_parentheses_in_expressions=true
sp_cleanup.on_save_use_additional_actions=true
sp_cleanup.organize_imports=true
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
sp_cleanup.remove_private_constructors=true
sp_cleanup.remove_redundant_type_arguments=true
sp_cleanup.remove_trailing_whitespaces=false
sp_cleanup.remove_trailing_whitespaces_all=true
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
sp_cleanup.remove_unnecessary_casts=true
sp_cleanup.remove_unnecessary_nls_tags=true
sp_cleanup.remove_unused_imports=false
sp_cleanup.remove_unused_local_variables=false
sp_cleanup.remove_unused_private_fields=true
sp_cleanup.remove_unused_private_members=false
sp_cleanup.remove_unused_private_methods=true
sp_cleanup.remove_unused_private_types=true
sp_cleanup.sort_members=false
sp_cleanup.sort_members_all=false
sp_cleanup.use_anonymous_class_creation=false
sp_cleanup.use_blocks=false
sp_cleanup.use_blocks_only_for_return_and_throw=false
sp_cleanup.use_lambda=true
sp_cleanup.use_parentheses_in_expressions=false
sp_cleanup.use_this_for_non_static_field_access=false
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
sp_cleanup.use_this_for_non_static_method_access=false
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
......@@ -64,6 +64,10 @@
<konfigurationsAenderung stand="15.09.2016"
version="3" autor="BitCtrl, Dipl.-Ing. S. Gieseler"
grund="TIC3 TmcEventQuantifierType.Value als 'att.tic3OptionalerDoubleWert' modelliert"></konfigurationsAenderung>
<konfigurationsAenderung stand="22.09.2016"
version="4" autor="BitCtrl, Dipl.-Ing. S. Gieseler"
grund="zusätzliches Attribut 'KoordinatenRaster'"></konfigurationsAenderung>
<modell>
<typDefinition pid="typ.tic3LandesMeldeStelle" name="TIC3LandesMeldeStelle"
objektNamenPermanent="nein">
......@@ -97,6 +101,7 @@
<datum name="LaufendeNummer" wert="1"/>
<datum name="Versandart" wert="spontan"/>
<datum name="VersandZyklus" wert="5 Minuten"/>
<datum name="KoordinatenRaster" wert="nicht ermittelbar"/>
</defaultParameter>
</typDefinition>
......@@ -233,6 +238,12 @@
<kurzinfo>Versandzykluszeit bei Versandart 'zyklisch'.</kurzinfo>
</info>
</attribut>
<attribut pid="att.längeInMetern1Bis" anzahl="1" anzahlIst="fest" name="KoordinatenRaster">
<info>
<kurzinfo>Koodinatenraster in Meter, auf welches die Koordinatenlisten reduziert werden. Wenn nicht angegeben (nicht ermittelbar), werden die Koordinatenlisten unverändert übernommen.</kurzinfo>
</info>
</attribut>
</attributgruppenDefinition>
<attributgruppenDefinition pid="atg.tmcTic3infoMeldung"
......
......@@ -41,18 +41,20 @@ import de.bsvrz.kex.lmstic3.vew.LMSFTPListener;
import de.bsvrz.kex.lmstic3.vew.LMSKommunikationsstatus;
import de.bsvrz.kex.lmstic3.vew.LMSMeldungenListener;
import de.bsvrz.kex.lmstic3.vew.LMSParameter;
import de.bsvrz.kex.lmstic3.vew.LMSTIC3LogTools;
import de.bsvrz.kex.lmstic3.vew.LMTIC3Betriebsmeldungen;
import de.bsvrz.kex.lmstic3.vew.LMTIC3Betriebsmeldungen.LMTIC3Betriebsmeldung;
import de.bsvrz.kex.lmstic3.vew.LmsMsg;
import de.bsvrz.kex.lmstic3.vew.daten.ExterneMeldung;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Meldung;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3MeldungsDaten;
import de.bsvrz.sys.funclib.bitctrl.daf.LogTools;
import de.bsvrz.sys.funclib.debug.Debug;
/**
* Modul Meldungsdekodierer.
*
* @author BitCtrl Systems GmbH, Gieseler
* @version $Id: $
* @version $Id$
*/
public class Meldungsdekodierer extends Thread implements LMSFTPListener {
......@@ -134,11 +136,13 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
public void kommunikationsStatus(final LMSKommunikationsstatus status) {
kommunikationsStatus = status;
if (kommunikationsStatus == LMSKommunikationsstatus.GESTOERT) {
LogTools.log(debug, LmsMsg.WarningStoerungEingehend, lmsName);
LMSTIC3LogTools.log(debug, LmsMsg.WarningStoerungEingehend, lmsName);
LMTIC3Betriebsmeldungen.sendeMeldung(LMTIC3Betriebsmeldung.KOMMUNIKATION_EINGEHEND_GESTOERT);
}
if (kommunikationsStatus == LMSKommunikationsstatus.NICHT_GESTOERT) {
LogTools.log(debug, LmsMsg.InfoStatusEingehendOK, lmsName);
LMSTIC3LogTools.log(debug, LmsMsg.InfoStatusEingehendOK, lmsName);
LMTIC3Betriebsmeldungen.sendeMeldung(LMTIC3Betriebsmeldung.KOMMUNIKATION_EINGEHEND_OK);
}
}
......@@ -161,7 +165,7 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(final Thread t, final Throwable e) {
LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "Meldungsdekodierer (" + e + ")"); //$NON-NLS-1$
LMSTIC3LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "Meldungsdekodierer (" + e + ")"); //$NON-NLS-1$
run = false;
if ((ftpserver != null) && ftpserver.isAlive()) {
ftpserver.stopp();
......@@ -188,7 +192,7 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
}
if (!ftpserver.isAlive()) {
LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "FTPEmpfang");
LMSTIC3LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "FTPEmpfang");
break;
}
} catch (final InterruptedException e) {
......@@ -197,7 +201,8 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
}
}
} catch (final Exception e) {
LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
e.printStackTrace();
}
if (ftpserver != null) {
......@@ -231,7 +236,7 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
// verschiedenen Dateisystemen liegen können
kopiereDatei(datei.getAbsolutePath(), backupfile.getAbsolutePath());
} catch (final Exception e) {
LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
debug.error("Fehler beim Kopieren der Datei " + datei + e.getMessage());
}
}
......@@ -273,7 +278,7 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
}
}
} catch (final Exception e) {
LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
}
}
......@@ -295,7 +300,7 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
if ((dateien != null) && (dateien.size() > 0)) {
for (final File datei : dateien) {
LogTools.log(debug, LmsMsg.InfoDateiVerarbeitet, datei);
LMSTIC3LogTools.log(debug, LmsMsg.InfoDateiVerarbeitet, datei);
final TIC3InfoDatei tid = new TIC3InfoDatei(datei);
......@@ -304,10 +309,11 @@ public class Meldungsdekodierer extends Thread implements LMSFTPListener {
dateimeldungen.add(new TIC3Meldung(daten));
}
} catch (final TIC3InfoDateiException te) {
LogTools.log(debug, LmsMsg.ErrorTICDatei, datei, te.getMessage());
LMSTIC3LogTools.log(debug, LmsMsg.ErrorTICDatei, datei, te.getMessage());
LMTIC3Betriebsmeldungen.sendeDateifehler(System.currentTimeMillis(), false);
sichereDatei(datei);
}
LogTools.log(debug, LmsMsg.FineDateiGeloescht, datei);
LMSTIC3LogTools.log(debug, LmsMsg.FineDateiGeloescht, datei);
datei.delete();
}
}
......
......@@ -24,7 +24,6 @@
* mailto: info@bitctrl.de
*/
package de.bsvrz.kex.lmstic3.empfang.dekoder;
import java.io.File;
......@@ -49,14 +48,14 @@ import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Meldung;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3MeldungsDaten;
/**
* Klasse zum Zugriff auf Dateien nach TIC-Info Spezifikation.
* Klasse zum Zugriff auf Dateien nach TIC3-Info Spezifikation.
*
* @author BitCtrl Systems GmbH, Gieseler
* @version $Id$
*/
public class TIC3InfoDatei {
/** TIC-Info Schema Location. */
@SuppressWarnings("unused")
private final String ticSchemaDatei = "de/bsvrz/kex/lms/vew/TIC Info XML.xsd";
/** die Datei. */
......@@ -78,12 +77,12 @@ public class TIC3InfoDatei {
* @param mitVerifikation
* legt fest, ob die empfangenen Dateien gegen das Schema
* validiert werden sollen
* @return Liste von Meldungsdaten
* @return Liste von Meldungsdaten
* @throws TIC3InfoDateiException
* bei Fehlern
*/
public Collection<TIC3MeldungsDaten> bildeMeldungen(final boolean mitVerifikation) throws TIC3InfoDateiException {
final List<TIC3MeldungsDaten> meldungen = new ArrayList<TIC3MeldungsDaten>();
final List<TIC3MeldungsDaten> meldungen = new ArrayList<>();
final Document doc = getDocument(mitVerifikation);
......@@ -93,7 +92,7 @@ public class TIC3InfoDatei {
try {
final TIC3MeldungsDaten meldung = new TIC3MeldungsDaten(nl.item(i));
meldungen.add(meldung);
} catch (final TIC3Exception e) {
} catch (final TIC3Exception | NumberFormatException e) {
throw new TIC3InfoDateiException(e.getMessage());
}
}
......@@ -123,19 +122,20 @@ public class TIC3InfoDatei {
try {
schemaurl = new URL("file://" + ticSchemaDatei);
// final URL schemaurl = ClassLoader.getSystemResource(_ticSchemaDatei);
// Validierung gegen Schema nicht möglich
// Aussage Herr Kuske, Fa. GEWI
final Schema ticschema = schemafactory.newSchema(schemaurl);
docfactory.setSchema(ticschema);
docfactory.setValidating(true);
// final URL schemaurl =
// ClassLoader.getSystemResource(_ticSchemaDatei);
// Validierung gegen Schema nicht möglich
// Aussage Herr Kuske, Fa. GEWI
final Schema ticschema = schemafactory.newSchema(schemaurl);
docfactory.setSchema(ticschema);
docfactory.setValidating(true);
} catch (final MalformedURLException e) {
throw new TIC3InfoDateiException(e.getMessage());
} catch (final SAXException e) {
throw new TIC3InfoDateiException(e.getMessage());
}
}
try {
final DocumentBuilder parser = docfactory.newDocumentBuilder();
doc = parser.parse(ticDatei);
......
/*
* Segment 2 (KEx), SWE 2.1 LMS
* Copyright (C) 2007 BitCtrl Systems GmbH
*
* 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)
......@@ -18,7 +18,7 @@
*
* Contact Information:
* BitCtrl Systems GmbH
* Wei�enfelser Stra�e 67
* Weißenfelser Straße 67
* 04229 Leipzig
* Phone: +49 341-490670
* mailto: info@bitctrl.de
......
......@@ -57,14 +57,14 @@ import de.bsvrz.kex.lmstic3.empfang.dekoder.Meldungsdekodierer;
import de.bsvrz.kex.lmstic3.vew.LMSMeldungenListener;
import de.bsvrz.kex.lmstic3.vew.LMSParameter;
import de.bsvrz.kex.lmstic3.vew.LMSTIC3;
import de.bsvrz.kex.lmstic3.vew.LMSTIC3LogTools;
import de.bsvrz.kex.lmstic3.vew.LmsMsg;
import de.bsvrz.kex.lmstic3.vew.TMCMeldung;
import de.bsvrz.kex.lmstic3.vew.daten.ExterneMeldung;
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.tmc.TMCException;
import de.bsvrz.kex.lmstic3.vew.daten.tmc.TmcConverter;
import de.bsvrz.sys.funclib.bitctrl.daf.LogTools;
import de.bsvrz.sys.funclib.debug.Debug;
import de.bsvrz.sys.funclib.dynobj.DynObjektException;
import de.bsvrz.sys.funclib.dynobj.DynamischeObjekte;
......@@ -73,7 +73,7 @@ import de.bsvrz.sys.funclib.dynobj.DynamischeObjekte;
* Modul Meldungserzeugung.
*
* @author BitCtrl Systems GmbH, Gieseler
* @version $Id: $
* @version $Id$
*/
public class Meldungserzeugung extends Thread implements ClientReceiverInterface, ClientSenderInterface,
......@@ -190,7 +190,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
try {
found.anmeldenDav(dav);
found.publiziereDav(dav);
found.publiziereDav(dav, lmsParameter);
synchronized (meldungenTIC3) {
meldungenTIC3.put(pid, found);
}
......@@ -265,15 +265,15 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
@Override
public void update(final MutableSet set, final SystemObject[] addedObjects,
final SystemObject[] removedObjects) {
LogTools.log(debug, LmsMsg.FineMengenAenderung);
LMSTIC3LogTools.log(debug, LmsMsg.FineMengenAenderung);
for (final SystemObject so : addedObjects) {
LogTools.log(debug, LmsMsg.InfoMeldungNeu, so.getPid());
LMSTIC3LogTools.log(debug, LmsMsg.InfoMeldungNeu, so.getPid());
hinzufuegenMeldung(so);
}
for (final SystemObject so : removedObjects) {
LogTools.log(debug, LmsMsg.InfoMeldungEntfernt, so.getPid());
LMSTIC3LogTools.log(debug, LmsMsg.InfoMeldungEntfernt, so.getPid());
entfernenMeldung(so);
}
}
......@@ -370,6 +370,8 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
private MeldungenWorker worker;
private boolean datenAngemeldet;
/**
* Konstruktor.
*
......@@ -483,7 +485,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(final Thread t, final Throwable e) {
LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "Meldungserzeugung (" + e + ")"); //$NON-NLS-1$
LMSTIC3LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "Meldungserzeugung (" + e + ")"); //$NON-NLS-1$
run = false;
if ((meldungsdekodierer != null) && meldungsdekodierer.isAlive()) {
meldungsdekodierer.stopp();
......@@ -504,7 +506,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
// auf Parameter warten
if (!parameterEmpfangen) {
LogTools.log(debug, LmsMsg.InfoWarteParameter);
LMSTIC3LogTools.log(debug, LmsMsg.InfoWarteParameter);
try {
wait();
......@@ -515,30 +517,31 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
}
}
worker = new MeldungenWorker();
meldungsdekodierer = new Meldungsdekodierer(lms.getPid(), lmsParameter, mitValidierung);
meldungsdekodierer.addListener(this);
while (run) {
try {
// ueberpruefeDateien();
// verarbeiteNeueDateien();
synchronized (waitLock) {
waitLock.wait(10000);
}
if (isEmpfangAktiv()) {
worker = new MeldungenWorker();
if (!meldungsdekodierer.isAlive()) {
LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "FTPServer");
break;
meldungsdekodierer = new Meldungsdekodierer(lms.getPid(), lmsParameter, mitValidierung);
meldungsdekodierer.addListener(this);
while (run) {
try {
synchronized (waitLock) {
waitLock.wait(10000);
}
if (!meldungsdekodierer.isAlive()) {
LMSTIC3LogTools.log(debug, LmsMsg.ErrorThreadBeendet, "FTPServer");
break;
}
} catch (final InterruptedException e) {
// _debug.error("unterbrochen");
// interrupt();
}
} catch (final InterruptedException e) {
// _debug.error("unterbrochen");
// interrupt();
}
} else {
LMSTIC3LogTools.log(debug, LmsMsg.InfoKeinEmpfang);
}
} catch (final TIC3Exception e) {
LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
}
if (meldungsdekodierer != null) {
......@@ -575,6 +578,10 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
AttributeGroup attributeGroup = null;
Aspect aspect = null;
if (datenAngemeldet) {
return;
}
// Anmeldungen zum Senden und Empfangen.
try {
// Menge TMC-Meldungen auslesen
......@@ -585,7 +592,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
}
for (final SystemObject meldung : meldungsmengeTMC.getElements()) {
LogTools.log(debug, LmsMsg.InfoMeldungInitialisiert, meldung);
LMSTIC3LogTools.log(debug, LmsMsg.InfoMeldungInitialisiert, meldung);
// meldungenTMC.put(meldung.getPid(), new TMCMeldung(meldung));
}
meldungsmengeTMC.addChangeListener(this);
......@@ -598,7 +605,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
}
for (final SystemObject meldung : meldungsmengeTIC3.getElements()) {
LogTools.log(debug, LmsMsg.InfoMeldungInitialisiert, meldung);
LMSTIC3LogTools.log(debug, LmsMsg.InfoMeldungInitialisiert, meldung);
// meldungenTIC3.put(meldung.getPid(), new
// TIC3Meldung(meldung));
}
......@@ -626,9 +633,10 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
// InvalidationListener
objektTypTMC.addInvalidationListener(this);
objektTypExterneMeldungen.addInvalidationListener(this);
datenAngemeldet = true;
} catch (final DataNotSubscribedException e) {
// TBD: Die Exception ist wiedersprüchlich dokumentiert --> Roland
LogTools.log(debug, LmsMsg.ErrorAnmeldungEmpfang, dataDescription);
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAnmeldungEmpfang, dataDescription);
throw new RuntimeException(e);
}
}
......@@ -826,6 +834,9 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
if (set.equals(meldungsmengeTIC3)) {
handleTIC3SetUpdate(addedObjects, removedObjects);
}
}
private boolean isEmpfangAktiv() {
return !lmsParameter.getEingangsverzeichnis().isEmpty();
}
}
......@@ -48,7 +48,7 @@ import de.bsvrz.sys.funclib.debug.Debug;
* Modul FTP-Empfang.
*
* @author BitCtrl Systems GmbH, Gieseler
* @version $Id: $
* @version $Id$
*/
public class FTPEmpfang extends Thread {
/**
......
......@@ -48,7 +48,7 @@ import de.bsvrz.sys.funclib.debug.Debug;
* Modul FTP-Client.
*
* @author BitCtrl Systems GmbH, Gieseler
* @version $Id: $
* @version $Id$
*/
public class LMSFTPClient extends Thread {
......
......@@ -68,23 +68,24 @@ import de.bsvrz.kex.lmstic3.vew.LMSKommunikationsstatus;
import de.bsvrz.kex.lmstic3.vew.LMSParameter;
import de.bsvrz.kex.lmstic3.vew.LMSProperties;
import de.bsvrz.kex.lmstic3.vew.LMSTIC3;
import de.bsvrz.kex.lmstic3.vew.LMSTIC3LogTools;
import de.bsvrz.kex.lmstic3.vew.LMTIC3Betriebsmeldungen;
import de.bsvrz.kex.lmstic3.vew.LMTIC3Betriebsmeldungen.LMTIC3Betriebsmeldung;
import de.bsvrz.kex.lmstic3.vew.LmsMsg;
import de.bsvrz.kex.lmstic3.vew.MeldungsStatus;
import de.bsvrz.kex.lmstic3.vew.TMCMeldung;
import de.bsvrz.kex.lmstic3.vew.XMLTools;
import de.bsvrz.kex.lmstic3.vew.daten.DavDatenModell;
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.tmc.ExterneMeldungsDaten;
import de.bsvrz.sys.funclib.bitctrl.daf.LogTools;
import de.bsvrz.kex.lmstic3.vew.daten.tic.TIC3Converter;
import de.bsvrz.sys.funclib.debug.Debug;
import de.bsvrz.sys.funclib.operatingMessage.MessageSender;
/**
* Modul Meldungskodierer.
*
* @author BitCtrl Systems GmbH, Gieseler
* @version $Id: $
* @version $Id$
*/
public class Meldungskodierer extends Thread
......@@ -147,18 +148,13 @@ public class Meldungskodierer extends Thread
/**
* Die Liste der zu versendenden Meldungen.
*/
private Map<String, TMCMeldung> meldungen = new HashMap<String, TMCMeldung>();
private Map<String, TMCMeldung> meldungen = new HashMap<>();
/**
* FTP-Client Thread.
*/
private LMSFTPClient ftpclient;
/**
* Diese Klasse versendet Betriebsmeldungen.
*/
private MessageSender nachrichtenSender;
/** Datenbeschreibung, mit der Parameter empfangen werden. */
private DataDescription paramEmpfang;
......@@ -197,13 +193,11 @@ public class Meldungskodierer extends Thread
this.dav = dav;
this.lms = lms;
config = dav.getDataModel();
this.nachrichtenSender = MessageSender.getInstance();
this.setName(this.getClass().getSimpleName());
// this.nachrichtenSender.init(dav, "LMS-Meldungsversand",
// "LMS-Meldungsversand");
DavDatenModell.getInstanz().setVerbindung((ClientDavConnection) dav);
this.nachrichtenSender.setApplicationLabel("LMS-Meldungen");
// selbst starten
start();
......@@ -221,7 +215,6 @@ public class Meldungskodierer extends Thread
@Override
public void dataRequest(final SystemObject object, final DataDescription dataDescription, final byte state) {
debug.finest("dataRequest");
}
/**
......@@ -364,10 +357,12 @@ public class Meldungskodierer extends Thread
if (changed) {
if (kommunikationsStatus == LMSKommunikationsstatus.GESTOERT) {
LogTools.log(debug, LmsMsg.WarningStoerungAusgehend, lms.getName());
LMSTIC3LogTools.log(debug, LmsMsg.WarningStoerungAusgehend, lms.getName());
LMTIC3Betriebsmeldungen.sendeMeldung(LMTIC3Betriebsmeldung.KOMMUNIKATION_AUSGEHEND_GESTOERT);
}
if (kommunikationsStatus == LMSKommunikationsstatus.NICHT_GESTOERT) {
LogTools.log(debug, LmsMsg.InfoStatusAusgehendOK, lms.getName());
LMSTIC3LogTools.log(debug, LmsMsg.InfoStatusAusgehendOK, lms.getName());
LMTIC3Betriebsmeldungen.sendeMeldung(LMTIC3Betriebsmeldung.KOMMUNIKATION_AUSGEHEND_OK);
}
}
}
......@@ -398,9 +393,9 @@ public class Meldungskodierer extends Thread
}
}
} catch (final DataNotSubscribedException e) {
LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
} catch (final SendSubscriptionNotConfirmed e) {
LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
LMSTIC3LogTools.log(debug, LmsMsg.ErrorAppException, e.getMessage());
}
}
......@@ -430,7 +425,7 @@ public class Meldungskodierer extends Thread
datenAnmeldenDaV();
// auf Parameter warten
if (!parameterEmpfangen) {
LogTools.log(debug, LmsMsg.InfoWarteParameter);
LMSTIC3LogTools.log(debug, LmsMsg.InfoWarteParameter);
synchronized (this) {
try {
wait();
......@@ -440,9 +435,12 @@ public class Meldungskodierer extends Thread
}
}
}
ftpclient = new LMSFTPClient(lmsParameter, true);
ftpclient.addListener(this);
if (isVersandAktiv()) {
ftpclient = new LMSFTPClient(lmsParameter, true);
ftpclient.addListener(this);
} else {
LMSTIC3LogTools.log(debug, LmsMsg.InfoKeinVersand);
}
}
parameterEmpfangen = false;
......@@ -475,13 +473,16 @@ public class Meldungskodierer extends Thread
try {
ftpclient.join();
} catch (final InterruptedException e1) {
// TODO Auto-generated catch block
// e1.printStackTrace();
}
}
ftpclient = new LMSFTPClient(lmsParameter, true);
ftpclient.addListener(this);
if (isVersandAktiv()) {
ftpclient = new LMSFTPClient(lmsParameter, true);
ftpclient.addListener(this);
} else {
debug.info(
"Es erfolgt kein Versand vom Meldungen an die LMS (der Parameter 'LMSHostRechner' ist nicht gesetzt).");
}
}
/**
......@@ -499,7 +500,7 @@ public class Meldungskodierer extends Thread
* bei Ausnahmen
*/
private void ueberpruefeMeldungen() throws TIC3Exception {
final List<TMCMeldung> versenden = new ArrayList<TMCMeldung>();
final List<TMCMeldung> versenden = new ArrayList<>();
synchronized (meldungen) {
boolean spontanVersand = false;
......@@ -528,12 +529,16 @@ public class Meldungskodierer extends Thread
}
}
if (versenden.size() > 0) {
if (versenden.size() > 0 && isVersandAktiv()) {
versendeMeldungen(versenden, spontanVersand);
}
}
}
private boolean isVersandAktiv() {
return !lmsParameter.getLMSHostRechner().isEmpty();
}
private void