Commit f7e82b91 authored by Steffen Gieseler's avatar Steffen Gieseler

neu

git-svn-id: svn://ntoserver/Datenverteiler/VRZ3/trunk/de.bsvrz.ste.tmcvew@62965 40c0be50-5d29-0410-901d-fb59edb5cafc
parent bf18fa5a
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>de.bsvrz.ste.tmcvew</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding//src/test/resources=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.bsvrz.ste</groupId>
<artifactId>de.bsvrz.ste.tmcvew</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Segment STE, SWE TMC-Meldungsverwaltung</name>
<url>http://www.bitctrl.de</url>
<organization>
<name>BitCtrl Systems GmbH</name>
<url>http://www.bitctrl.de</url>
</organization>
<licenses>
<license>
<name>GNU General Public License, Version 2</name>
<url>LICENSE.txt</url>
</license>
</licenses>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>8</java.version>
<project.status>BETA</project.status>
<project.standDatum>2016-07-20</project.standDatum>
</properties>
<repositories>
<repository>
<id>bitctrl.nexus</id>
<name>Lokales BitCtrl Maven Repository</name>
<url>http://bitctrlbuildserver:8081/nexus/content/repositories/releases/</url>
</repository>
<repository>
<id>bitctrl.nexus.snapshots</id>
<name>Lokales BitCtrl Maven Snapshots Repository</name>
<url>http://bitctrlbuildserver:8081/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>bintray-bitctrl-maven</id>
<name>Externes BitCtrl Maven Repository</name>
<url>https://dl.bintray.com/bitctrl/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>de.bsvrz.dav</groupId>
<artifactId>de.bsvrz.dav.daf</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>de.bsvrz.sys</groupId>
<artifactId>de.bsvrz.sys.funclib.application</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>de.bsvrz.sys</groupId>
<artifactId>de.bsvrz.sys.funclib.dynobj</artifactId>
<version>[1.0.0,)</version>
</dependency>
<dependency>
<groupId>de.bsvrz.sys</groupId>
<artifactId>de.bsvrz.sys.funclib.operatingMessage</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.14</version>
<configuration>
<propertyExpansion>basedir=${project.basedir}</propertyExpansion>
<configLocation>${basedir}/releng/checkstyle.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>jar</id>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
</execution>
<execution>
<id>runtime-jar</id>
<configuration>
<finalName>${project.artifactId}</finalName>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathLayoutType>custom</classpathLayoutType>
<customClasspathLayout>
../${artifact.artifactId}/${artifact.artifactId}-runtime.${artifact.extension}
</customClasspathLayout>
<mainClass>de.bsvrz.kex.lms.vew.KexLMS</mainClass>
</manifest>
<manifestEntries>
<Class-Path>${project.artifactId}.jar lib/commons-net-1.4.1.jar</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>**</exclude>
</excludes>
<classifier>runtime</classifier>
</configuration>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>source</id>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>doc-api</id>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
<configuration>
<show>protected</show>
<finalName>${project.artifactId}-${project.version}-doc-api</finalName>
</configuration>
</execution>
<execution>
<id>doc-design</id>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
<configuration>
<show>private</show>
<finalName>${project.artifactId}-${project.version}-doc-design</finalName>
<classifier>design</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>swe</id>
<goals>
<goal>single</goal>
</goals>
<phase>verify</phase>
<configuration>
<finalName>SWE_${project.artifactId}_${project.status}_V${project.version}_D${project.standDatum}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/swe.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>bitctrl.nexus.snapshots</id>
<name>BitCtrl Nexus Snapshots Repository</name>
<url>http://bitctrlbuildserver:8081/nexus/content/repositories/snapshots/</url>
</repository>
</distributionManagement>
</project>
\ No newline at end of file
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;
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 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.
*