Commit e5031ef9 authored by Steffen Gieseler's avatar Steffen Gieseler

weiter bearbeitet

git-svn-id: svn://ntoserver/Datenverteiler/VRZ3/trunk/de.bsvrz.ste.tmcvew@63033 40c0be50-5d29-0410-901d-fb59edb5cafc
parent f7e82b91
<?xml version="1.0" encoding="UTF-8"?>
<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
<local-check-config name="Local-CS" location="releng/checkstyle.xml" type="project" description="">
<additional-data name="protect-config-file" value="false"/>
</local-check-config>
<fileset name="all" enabled="true" check-config-name="Local-CS" local="true">
<file-match-pattern match-pattern="." include-pattern="true"/>
</fileset>
</fileset-config>
......@@ -10,6 +10,11 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
......@@ -19,5 +24,6 @@
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
</natures>
</projectDescription>
Tester=geheim
TestDatenverteilerBenutzer=geheim
configuration=configuration
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
This configuration file was written by the eclipse-cs plugin configuration editor
-->
<!--
Checkstyle-Configuration: Local CS
Description: none
-->
<module name="Checker">
<property name="severity" value="warning"/>
<module name="TreeWalker">
<module name="JavadocMethod">
<property name="scope" value="public"/>
<property name="suppressLoadErrors" value="true"/>
</module>
<module name="JavadocType">
<property name="scope" value="protected"/>
<property name="authorFormat" value="BitCtrl Systems GmbH, \S"/>
</module>
<module name="JavadocVariable">
<property name="scope" value="protected"/>
</module>
<module name="JavadocStyle">
<property name="checkEmptyJavadoc" value="true"/>
</module>
<module name="ConstantName"/>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName"/>
<module name="MethodName"/>
<module name="PackageName"/>
<module name="ParameterName"/>
<module name="StaticVariableName"/>
<module name="TypeName"/>
<module name="AvoidStarImport"/>
<module name="IllegalImport"/>
<module name="RedundantImport"/>
<module name="UnusedImports"/>
<module name="MethodLength">
<property name="severity" value="info"/>
</module>
<module name="ParameterNumber"/>
<module name="LineLength">
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="EmptyForIteratorPad"/>
<module name="MethodParamPad"/>
<module name="NoWhitespaceAfter">
<property name="tokens" value="BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS"/>
</module>
<module name="NoWhitespaceBefore"/>
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>
<module name="AvoidNestedBlocks"/>
<module name="EmptyBlock"/>
<module name="LeftCurly"/>
<module name="NeedBraces"/>
<module name="RightCurly"/>
<module name="AvoidInlineConditionals">
<property name="severity" value="info"/>
</module>
<module name="EmptyStatement"/>
<module name="EqualsHashCode"/>
<module name="HiddenField">
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
</module>
<module name="IllegalInstantiation"/>
<module name="InnerAssignment"/>
<module name="MagicNumber">
<property name="severity" value="info"/>
</module>
<module name="MissingSwitchDefault"/>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InterfaceIsType"/>
<module name="VisibilityModifier"/>
<module name="ArrayTypeStyle"/>
<module name="FinalParameters"/>
<module name="TodoComment"/>
<module name="UpperEll"/>
<module name="AnnotationUseStyle"/>
<module name="MissingDeprecated"/>
<module name="PackageAnnotation"/>
<module name="SuppressWarnings"/>
<module name="MissingOverride"/>
<module name="CovariantEquals"/>
<module name="DefaultComesLast"/>
<module name="EqualsAvoidNull"/>
<module name="ExplicitInitialization"/>
<module name="FallThrough"/>
<module name="FinalLocalVariable">
<property name="tokens" value="PARAMETER_DEF,VARIABLE_DEF"/>
</module>
<module name="IllegalCatch"/>
<module name="IllegalThrows"/>
<module name="ModifiedControlVariable"/>
<module name="MultipleVariableDeclarations">
<property name="severity" value="info"/>
</module>
<module name="MultipleStringLiterals">
<property name="severity" value="info"/>
</module>
<module name="NestedIfDepth">
<property name="severity" value="info"/>
</module>
<module name="NestedTryDepth">
<property name="severity" value="info"/>
</module>
<module name="NoClone">
<property name="severity" value="info"/>
</module>
<module name="PackageDeclaration"/>
<module name="ParameterAssignment"/>
<module name="ReturnCount">
<property name="severity" value="info"/>
</module>
<module name="StringLiteralEquality"/>
<module name="SuperClone"/>
<module name="SuperFinalize"/>
<module name="UnnecessaryParentheses">
<property name="severity" value="info"/>
</module>
<module name="MutableException"/>
<module name="ThrowsCount">
<property name="severity" value="info"/>
</module>
<module name="UncommentedMain">
<property name="severity" value="info"/>
</module>
</module>
<module name="JavadocPackage"/>
<module name="Translation"/>
<module name="FileLength"/>
<module name="Header">
<property name="headerFile" value="${basedir}/releng/java.header"/>
<property name="fileExtensions" value="java"/>
</module>
<module name="NewlineAtEndOfFile">
<property name="lineSeparator" value="lf"/>
</module>
</module>
/*
* Segment 7 (Ste), SWE TMC-Meldungsverwaltung
* Copyright (C) 2016 BitCtrl Systems GmbH
*
* This program 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 programm 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 program; 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
*/
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact Information:
* Dambach-Werke GmbH
* Elektronische Leitsysteme
* Fritz-Minhardt-Str. 1
* 76456 Kuppenheim
* Phone: +49-7222-402-0
* Fax: +49-7222-402-200
* mailto: info@els.dambach.de
*/
package de.bsvrz.ste.rdstmcvew;
import de.bsvrz.dav.daf.main.ClientDavInterface;
import de.bsvrz.dav.daf.main.config.ConfigurationObject;
import de.bsvrz.sys.funclib.application.StandardApplication;
import de.bsvrz.sys.funclib.application.StandardApplicationRunner;
import de.bsvrz.sys.funclib.commandLineArgs.ArgumentList;
import de.bsvrz.sys.funclib.debug.Debug;
import de.bsvrz.sys.funclib.operatingMessage.MessageSender;
/**
* Applikationsklasse der SWE RDS/TMC-Verwaltung.<br>
* Fr die bergebene LMS wird eine Applikations-Instanz der SWE RDS/TMC
* erzeugt und initialisiert.<br>
* SWE-spezifische Parameter:<br>
* -lms: Die Landesmeldestelle, auf welche diese Instanz der SWE sich bezieht.
* Das Konfigurationsobjekt der LMS enthlt insbesondere die zu verwendeten Paramenter.
*
* @author Dambach Werke GmbH
* @author Stefan Sans
* @version $Revision: 1.2 $ / $Date: 2008/09/30 15:20:19 $ / ($Author: Hilpp $)
*
* Geprft Hilpp 30.9.2008
*/
public class RDSVerwaltungApp implements StandardApplication
{
/**
* Debug-Logger fr Logging-Ausgaben
*/
private Debug _debug;
/**
* -lms von Kommandozeile
*/
private String _lmsPid = null;
/**
* -loeschen von Kommandozeile
*/
private int _loeschVerfahren = 0;
/**
* -ohneZeitstempelKorrektur von Kommandozeile
*/
private int _ohneZeitstempelKorrektur = 0;
public final static int OPTION_LOESCH_VERFAHREN_1 = 1;
public final static int OPTION_LOESCH_VERFAHREN_2 = 2;
public final static int OPTION_LOESCH_VERFAHREN_3 = 3;
public final static int MASKE_LOESCH_VERFAHREN = 3;
public final static int OPTION_OHNE_ZEITSTEMPEL_KORREKTUR = 4;
public final static int MASKE_OHNE_ZEITSTEMPEL_KORREKTUR = 4;
/**
* Datenverteiler-Verbindung
*/
private ClientDavInterface _connection;
/**
* Default- Konstruktor.<br>
* Wird typischerweise von <code>main</code> aufgerufen
*/
public RDSVerwaltungApp()
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
}
}
/**
* Extrahiert das Konfigurationsobjekt zur bergebenenen PID und fhrt ggf.
* eine Typprfung durch.
* @param pid die PID des Konfigurationsobjektes, das extrahiert werden soll
* @param typ der Typ, den das Konfigutationsobjekt haben muss - wenn hier <code>null</code> bergeben
* wird, unterbleibt eine Typprfung.
* @return das gefundene Konfigurationsobjekt
* @throws IllegalArgumentException, falls Konfigurationsobjekt nicht gefunden oder
* vom falschen Typ
*/
private ConfigurationObject getKonfigObjekt(String pid, String typ)
{
ConfigurationObject obj = null;
try
{
obj = (ConfigurationObject)_connection.getDataModel().getObject(pid);
}
catch(ClassCastException e)
{
throw new IllegalArgumentException("Die PID \"" + pid +
"\" bezeichnet kein KonfigurationsObjekt");
}
if (obj == null)
{
throw new IllegalArgumentException("Zur PID \"" + pid +
"\" wurde kein Konfigurationsobjekt gefunden ");
}
if (typ != null && !obj.isOfType(typ))
{
throw new IllegalArgumentException("Das Konfigurationsobjekt \"" +
obj.getPid() + "\" ist nicht vom Typ " + typ);
}
return obj;
}
/**
* berschriebene Methode von <code>StandardApplication</code>,
* die die speziellen Startparameter auswertet.<br>
* Die Argumtwerte, die ausgewertet werden, sind durch das Attribut
* {@link #_lmsPid} spezifiziert
*
* @param argumentList
* siehe sys.funclib.application.StandardApplication#parseArguments(sys.funclib.ArgumentList)
*/
public void parseArguments(ArgumentList argumentList)
{
_debug = Debug.getLogger();
_lmsPid = argumentList.fetchArgument("-lms=").asNonEmptyString();
if (argumentList.hasArgument("-lschen"))
{
_loeschVerfahren = argumentList.fetchArgument("-lschen=").intValueBetween(0, 1);
}
// -loeschen statt -lschen, -lschen wird zur Rckwartskompatiblitt beibehalten,
// aber -loeschen hat Vorrang
if (argumentList.hasArgument("-loeschen"))
{
_loeschVerfahren = argumentList.fetchArgument("-loeschen=").intValueBetween(0, 1);
}
if (argumentList.hasArgument("-ohneZeitstempelKorrektur"))
{
String text = argumentList.fetchArgument("-ohneZeitstempelKorrektur=").asString();
if (text.equals("1") || text.equalsIgnoreCase("true") || text.equalsIgnoreCase("wahr"))
{
_ohneZeitstempelKorrektur = OPTION_OHNE_ZEITSTEMPEL_KORREKTUR;
}
}
argumentList.fetchUnusedArguments();
}
/**
* berschriebene Methode von StandardApplication, die die Initialisierung durchfhrt.<br>
* Es wird eine Instanz von <code>VerwaltungEngstellen</code> erzeugt und initialisiert
*
* @param connection
* siehe sys.funclib.application.StandardApplication#initialize(de.bsvrz.dav.daf.main.ClientDavInterface)
*/
public void initialize(ClientDavInterface connection)
{
_connection = connection;
try
{
MessageSender.getInstance().setApplicationLabel(
_connection.getLocalApplicationObject().getName());
ConfigurationObject lms = getKonfigObjekt(_lmsPid, "typ.landesMeldeStelle");
final RDSVerwaltung verwaltung = new RDSVerwaltung(connection, lms, // Hauptapplikation
_loeschVerfahren | _ohneZeitstempelKorrektur);
Runtime.getRuntime().addShutdownHook(new Thread() // Raeumt System auf
{
public void run()
{
_debug.info("Freigabe Resourcen ...");
verwaltung.dispose();
}
});
_debug.info("SWE RDS/TMC-Verwaltung initialisiert");
}
catch (Exception e)
{
_debug.error("Abbruch der SWE RDS/TMC-Verwaltung whrend der Initialisierung", e);
System.exit(1);
}
}
/**
* Programmeinstieg RDS/TMC-Verwaltung.<br>
*
* @param arguments Kommandozeilenargumente, folgende speziellen Argumente werden ausgewertet:<p>
* -netz: Netz, dessen Infrastrukturobjekte verwendet werden.
* -lms: Zustndige Landesmeldestelle (LMS).
*/
public static void main(String[] arguments)
{
StandardApplicationRunner.run(new RDSVerwaltungApp(), arguments);
}
}
This diff is collapsed.
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact Information:
* Dambach-Werke GmbH
* Elektronische Leitsysteme
* Fritz-Minhardt-Str. 1
* 76456 Kuppenheim
* Phone: +49-7222-402-0
* Fax: +49-7222-402-200
* mailto: info@els.dambach.de
*/
package de.bsvrz.ste.rdstmcvew.parameter;
import java.util.Iterator;
import de.bsvrz.dav.daf.main.Data;
import de.bsvrz.dav.daf.main.Data.Array;
import de.bsvrz.dav.daf.main.config.AttributeGroup;
import de.bsvrz.dav.daf.main.config.DoubleAttributeType;
import de.bsvrz.dav.daf.main.config.IntegerAttributeType;
import de.bsvrz.dav.daf.main.config.ReferenceAttributeType;
import de.bsvrz.dav.daf.main.config.StringAttributeType;
import de.bsvrz.dav.daf.main.config.SystemObject;
import de.bsvrz.dav.daf.main.config.TimeAttributeType;
/**
* Methoden zur Bearbeitung von Datens�tzen.
*
* @author Dambach Werke GmbH
* @author Stefan Sans
* @version $Revision: 1.1 $ / $Date: 2008/09/29 11:20:38 $ / ($Author: Sans $)
*/
public class DatenTools
{
/**
* Fertigt eine tiefe Kopie der Daten, die in quelle enthalten sind, in ziel an.
* Die Daten von quelle werden rekursiv durchlaufen, es werden alle Attributlisten,
* Arrays (werden vor dem Kopieren in Ziel auf die selbe L�nge gesetzt wie in quelle)
* und einfache Attribute vom Typ Text, Ganzahl unskaliert, Ganzzahl skaliert, Zeit
* und Referenz unterst�tzt.
* ziel muss jeweils die exakt gleiche Datenstruktur wie in quelle auf demselben Level
* enthalten, die Struktur muss vollst�ndig vorhanden sein (wie z. B., wenn mit
* {@link de.bsvrz.dav.daf.main.ClientDavInterface#createData(AttributeGroup)} erzeugt.
*
* @param quelle der Datensatz, dessen Daten kopiert werden sollen
* @param ziel der Datensatz, in den die Daten kopiert werden. Er muss die Struktur von
* Quelle enthalten
*
* @throws IllegalArgumentException wenn Attributtypen oder die Namen eines (Sub-)Datums
* auf einem bestimmten Level nicht gleich sind oder ein in quelle vorhandenes Attribut
* in Ziel auf demselben Level nicht vorhanden ist
* @throws UnsupportedOperationExceptuion wenn ein (Sub-)Datum nicht Attributliste, Array
* oder einfaches Datum ist, bzw. wenn bei einfachem Datum der Typ nicht unterst�tzt wird
* (s. o.)
*/
public static void tiefeKopie (Data quelle, Data ziel)
{
/*
* Attributtypen m�ssen gleich sein auf jedem Level.
* Auf ATG-Level sind beide Attributtypen null!
*/
if ((quelle.getAttributeType() == null && ziel.getAttributeType() != null) ||
(quelle.getAttributeType() != null && ziel.getAttributeType() == null) ||
(quelle.getAttributeType() != null && ziel.getAttributeType() != null &&
!quelle.getAttributeType().equals(ziel.getAttributeType())))
{
/* Attribut-Typen auf diesem Sub-Level sind unterschiedlich */
throw new IllegalArgumentException("Attributtypen des Datums \"" +
quelle.getName() + "\" sind nicht gleich f�r Quelle und Ziel");
}
/*
* Namen m�ssen gleich sein auf jedem Level.
* Ausnahme: wenn beide Attributtypen null sind (auf ATG-Level), wird nicht gepr�ft
*/
if (quelle.getAttributeType() != null && ziel.getAttributeType() != null &&
!quelle.getName().equals(ziel.getName()))
{
/* Item/Attribut-Namen auf diesem Sub-Level sind unterschiedlich */
throw new IllegalArgumentException("Attributnamen des Datums \"" +
quelle.getName() + "\" sind nicht gleich f�r Quelle und Ziel");
}
if (quelle.isList())
{
Iterator it = quelle.iterator();
while (it.hasNext())
{
Data subQuelle = (Data)it.next();
Data subZiel = ziel.getItem(subQuelle.getName());
if (subZiel == null)
{
/* Ziel-Attribut mit diesem Namen existiert nicht */
throw new IllegalArgumentException("Ziel-Datensatz hat kein Sub-Datum \"" +
subQuelle.getName() + "\"");
}
tiefeKopie(subQuelle, subZiel);
}
}
else if (quelle.isArray())
{
Array arrQuelle = quelle.asArray();
Array arrZiel = ziel.asArray();
arrZiel.setLength(arrQuelle.getLength());
for(int i = 0; i < arrQuelle.getLength(); i += 1)
{
Data subSource = arrQuelle.getItem(i);
Data subTarget = arrZiel.getItem(i);
tiefeKopie(subSource, subTarget);
}
}
else if (quelle.isPlain())
{
if (quelle.getAttributeType() instanceof StringAttributeType)
{
String value = quelle.asTextValue().getText();
ziel.asTextValue().setText(value);
}
else if (quelle.getAttributeType() instanceof IntegerAttributeType)
{
long value = quelle.asUnscaledValue().longValue();
ziel.asUnscaledValue().set(value);
}
else if (quelle.getAttributeType() instanceof DoubleAttributeType)
{
double value = quelle.asScaledValue().doubleValue();
ziel.asScaledValue().set(value);
}
else if (quelle.getAttributeType() instanceof TimeAttributeType)
{
long value = quelle.asTimeValue().getMillis();
ziel.asTimeValue().setMillis(value);
}
else if (quelle.getAttributeType() instanceof ReferenceAttributeType)
{
SystemObject value = quelle.asReferenceValue().getSystemObject();
ziel.asReferenceValue().setSystemObject(value);
}
else
{
/* Nicht unterst�tzter Attributtyp */
throw new UnsupportedOperationException("Operation nicht definiert f�r Datum \"" +
quelle.getName() + "\" und Attributtyp" + quelle.getAttributeType());
}
}
else
{
/* Nicht unterst�tzte Struktur */
throw new UnsupportedOperationException("Operation nur f�r Attributlisten, Arrays und einfache Datentypen definiert");
}
}
}
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact Information:
* Dambach-Werke GmbH
* Elektronische Leitsysteme
* Fritz-Minhardt-Str. 1
* 76456 Kuppenheim
* Phone: +49-7222-402-0
* Fax: +49-7222-402-200
* mailto: info@els.dambach.de
*/
package de.bsvrz.ste.rdstmcvew.parameter;
import de.bsvrz.dav.daf.main.ClientDavInterface;
import de.bsvrz.dav.daf.main.ClientReceiverInterface;
import de.bsvrz.dav.daf.main.Data;
import de.bsvrz.dav.daf.main.DataDescription;
import de.bsvrz.dav.daf.main.ReceiveOptions;
import de.bsvrz.dav.daf.main.ReceiverRole;
import de.bsvrz.dav.daf.main.ResultData;
import de.bsvrz.dav.daf.main.config.Aspect;
import de.bsvrz.dav.daf.main.config.AttributeGroup;
import de.bsvrz.dav.daf.main.config.SystemObject;
import de.bsvrz.sys.funclib.debug.Debug;
/**
* Empfangen und Versenden eines Parameterdatensatzes.
* Empf�ngt einen Datensatz einer Quell-ATG und kopiert ihn in einen Datensatz
* einer Ziel-ATG. Der Datensatz der Ziel-ATG wird mit
* {@link de.bsvrz.dav.daf.main.ClientDavInterface#createData(AttributeGroup)}
* erzeugt und muss die Struktur des Quelldatensatzes exakt enthalten. muss, aber eine unterschiedliche ATG haben
* Die Empfangs-Anmeldung -und Abmeldung erfolgt im Konstruktor.
*
* @author Dambach Werke GmbH
* @author Stefan Sans
* @version $Revision: 1.1 $ / $Date: 2008/09/29 11:20:38 $ / ($Author: Sans $)
*/
public class ParameterEmpfaenger implements ClientReceiverInterface
{
/**
* Debug-Logger f�r Logging-Ausgaben
*/
private final static Debug _debug = Debug.getLogger();
/**
* Zeitin ms, die max. auf Sendesteuerung gewartet wird
*/
static final long TIMEOUT = 5000;
/**
* Die Datenverteilerverbindung
*/
final ClientDavInterface connection;
/**
* Das DAV-Objekt, f�r das das Senden erfolgt
*/
final SystemObject davObjekt;
/**
* Datenbeschreibung der Daten, die aus der Parametrierung gelesen werden
*/
final DataDescription datenBeschreibungQuell;
/**
* Datenbeschreibung unter der die Daten zur�ckgegeben werden
*/
final DataDescription datenBeschreibungZiel;