Commit 25a1315a authored by Steffen Gieseler's avatar Steffen Gieseler
Browse files

Warnungen bearbeitet

git-svn-id: svn://ntoserver/Datenverteiler/VRZ3/trunk/de.bsvrz.ste.tmcvew@63599 40c0be50-5d29-0410-901d-fb59edb5cafc
parent 262831ba
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -172,20 +172,26 @@ public class TMCVerwaltung implements MutableSetChangeListener, InvalidationList
	}

	/**
	 * @return die aktuelle DAV-Verbindung
	 * Gibt die die aktuelle DAV-Verbindung zurück.
	 * 
	 * @return {@link ClientDavInterface}
	 */
	public ClientDavInterface getConnection() {
		return dav;
	}

	/**
	 * @return das aktuelle Konfigurationsobjekt vom Typ typ.landesMeldeStelle
	 * Gibt das aktuelle Konfigurationsobjekt vom Typ typ.landesMeldeStelle zurück.
	 * 
	 * @return {@link ConfigurationObject}
	 */
	public ConfigurationObject getKonfigObjekt() {
		return lmsObjekt;
	}

	/**
	 * Gibt das Löschverfahren zurück.
	 * 
	 * @return das Löschverfahren
	 */
	public int getLoeschVerfahren() {
@@ -193,6 +199,7 @@ public class TMCVerwaltung implements MutableSetChangeListener, InvalidationList
	}

	/**
	 * . 
	 * @return true, falls die Korrektur unterdrückt wird, wenn ein Zeitstempel
	 *         einer Meldung in der Vergangenheit liegt, false sonst
	 */
+83 −109
Original line number Diff line number Diff line
@@ -47,7 +47,8 @@ import de.bsvrz.sys.funclib.debug.Debug;
 * Modelliert eine TMC-Meldungen so wie sie von der SWE TMC-Meldungsverwaltung
 * benötigt wird.
 * 
 * Erstellt auf Basis der SWE RDS/TMC-Verwaltung von: Dambach Werke GmbH, Stefan Sans
 * Erstellt auf Basis der SWE RDS/TMC-Verwaltung von: Dambach Werke GmbH, Stefan
 * Sans
 * 
 * @author BitCtrl Systems GmbH, Gieseler
 * @version $Id: $
@@ -481,6 +482,8 @@ public class TMCVewMeldung implements ClientReceiverInterface {
	 * verwendet und dem gc überlassen werden.
	 */
	protected void loesche() {
		DEBUG.info("Das Meldungsobjekt '" + getDavObjekt() + "' wird gelöscht");

		final MutableSet menge = verwaltung.getKonfigObjekt().getMutableSet(TMCVerwaltung.TMCMELDUNGEN);
		if (menge != null) {
			try {
@@ -493,7 +496,7 @@ public class TMCVewMeldung implements ClientReceiverInterface {
			try {
				getDavObjekt().invalidate();
			} catch (final ConfigurationChangeException e) {
				throw new RuntimeException("Objekt " + getDavObjekt() + " konnte nich gelöscht werden", e);
				throw new RuntimeException("Objekt " + getDavObjekt() + " konnte nicht gelöscht werden", e);
			}
		} else {
			throw new IllegalStateException("Dynamische Menge \"" + TMCVerwaltung.TMCMELDUNGEN
@@ -501,13 +504,8 @@ public class TMCVewMeldung implements ClientReceiverInterface {
		}
	}

	/*
	 * (Kein Javadoc)
	 * 
	 * @see
	 * de.bsvrz.dav.daf.main.ClientReceiverInterface#update(de.bsvrz.dav.daf.
	 * main.ResultData[])
	 */
	/** {@inheritDoc} */
	@Override
	public void update(final ResultData[] resultData) {
		for (ResultData data : resultData) {
			final Aspect asp = data.getDataDescription().getAspect();
@@ -544,14 +542,11 @@ public class TMCVewMeldung implements ClientReceiverInterface {
						final Zustand zustand = getZustand(datenSatz);
						final TMCStatus status = getStatus(datenSatz);

						// System.out.println("Bearbeite empfangene Daten für "
						// + getDavObjekt().getPid() +
						// " Aspekt: " + asp.getName() + " Quelle: " + quelle +
						// " Zustand: " + zustand +
						// " Status: " + status + " ZeitStempel: " +
						// zeitStempel);
						//
						if (status.name() == "Löschung") { // Lösche Objekt
						DEBUG.fine("Bearbeite empfangene Daten für " + getDavObjekt().getPid() + " Aspekt: "
								+ asp.getName() + " Quelle: " + quelle + " Zustand: " + zustand + " Status: " + status
								+ " ZeitStempel: " + zeitStempel);

						if (status == TMCStatus.Geloescht) { // Lösche Objekt
							loesche();
						}
					}
@@ -609,6 +604,8 @@ public class TMCVewMeldung implements ClientReceiverInterface {
		final Zustand zustand = getZustand(datenSatz);
		final TMCStatus status = getStatus(datenSatz);

		boolean loeschen = false;

		String text = "Bearbeite empfangene Daten für " + getDavObjekt().getPid() + "\nAspekt: " + asp.getName()
				+ "\nQuelle: " + quelle + "\nZustand: " + zustand + "\nStatus: " + status + "\nZeitStempel: "
				+ zeitStempel;
@@ -709,21 +706,26 @@ public class TMCVewMeldung implements ClientReceiverInterface {
		// TODO:
		// /*
		// * Wenn bereits Status Aufhebung gesendet wurde, wird nur noch Status
//		 * Löschung weitergeleitet, wenn bereits Status Löschung gesendet wurde,
		// * Löschung weitergeleitet, wenn bereits Status Löschung gesendet
		// wurde,
		// * werden keine Daten mehr weitergeleitet.
		// */
		// if (datenSenden != null) {
		// final TMCStatus sendeStatus = getStatus(datenSenden);
		// if (sendeStatus == TMCStatus.Aufhebung) {
		// if (status != TMCStatus.Loeschung || true) {
//					DEBUG.config(text + "\nEs liegt bereits eine Aktualisierung mit Status " + sendeStatus
//							+ " vor - nur Aktualisierungen mit Status " + TMCStatus.Loeschung + " werden weitergeleitet"
		// DEBUG.config(text + "\nEs liegt bereits eine Aktualisierung mit
		// Status " + sendeStatus
		// + " vor - nur Aktualisierungen mit Status " + TMCStatus.Loeschung + "
		// werden weitergeleitet"
		// + suffixFehler);
		// return;
		// }
		// } else if (sendeStatus == TMCStatus.Loeschung) {
//				if (!(status == TMCStatus.Loeschung && verwaltung.getLoeschVerfahren() == 1)) {
//					DEBUG.config(text + "\nEs liegt bereits eine Aktualisierung mit Status " + sendeStatus + " vor"
		// if (!(status == TMCStatus.Loeschung &&
		// verwaltung.getLoeschVerfahren() == 1)) {
		// DEBUG.config(text + "\nEs liegt bereits eine Aktualisierung mit
		// Status " + sendeStatus + " vor"
		// + suffixFehler);
		// return;
		// }
@@ -740,8 +742,7 @@ public class TMCVewMeldung implements ClientReceiverInterface {
					? datenBearbeitet.getData() : null;
			final Zustand zustandBearbeited = datenBearbeitetData != null ? getZustand(datenBearbeitetData) : null;
			if ((zustandBearbeited == Zustand.Editiert || zustandBearbeited == Zustand.Verworfen)
					&&
					(datenSenden == null || !(getZustand(datenSenden) == Zustand.Verworfen))) {
					&& (datenSenden == null || !(getZustand(datenSenden) == Zustand.Verworfen))) {
				DEBUG.config(
						text + "\nEs liegen bearbeitete Daten im Zustand " + zustandBearbeited + " vor" + suffixFehler);
				return;
@@ -755,12 +756,14 @@ public class TMCVewMeldung implements ClientReceiverInterface {
		if (asp.equals(datenBeschreibungBearbeitet.getAspect())) {
			if (zustand == Zustand.Verworfen) {
				if (status != TMCStatus.Geloescht) {
					text += "\nDer Status wird auf \"" + TMCStatus.Geloescht.toString() + "\" gesetzt, da der Zustand \""
							+ Zustand.Verworfen + "\" ist";
					text += "\nDer Status wird auf \"" + TMCStatus.Geloescht.toString()
							+ "\" gesetzt, da der Zustand \"" + Zustand.Verworfen + "\" ist";
					try {
						setStatus(datenSatz, TMCStatus.Geloescht);
						loeschen = true;
					} catch (final RuntimeException e) {
						DEBUG.error(text + "\nFehler beim Setzen von Status auf " + TMCStatus.Geloescht + suffixFehler, e);
						DEBUG.error(text + "\nFehler beim Setzen von Status auf " + TMCStatus.Geloescht + suffixFehler,
								e);
						return;
					}
				}
@@ -773,39 +776,6 @@ public class TMCVewMeldung implements ClientReceiverInterface {
		 * Instanz keine Aktualiserungen - auch nicht der Status "Löschung"
		 * selbst - weitergeleitet
		 */
		boolean loeschen = false;

		// TODO:
//		switch (verwaltung.getLoeschVerfahren()) {
//		case 0:
//			/*
//			 * Wenn Status Aufhebung oder Löschung gesendet werden soll und
//			 * bisher noch keine Daten gesendet wurden, wird die Aktualisierung
//			 * unterdrückt und die Meldung gelöscht.
//			 */
//			if ((status == TMCStatus.Aufhebung || status == TMCStatus.Loeschung)
//					&& (sender.getDatenSenden() == null || !sender.getDatenSenden().hasData())) {
//				text += "\nStatus " + status + " wurde empfangen und es wurde bisher noch nichts gesendet";
//				loeschen = true;
//			}
//			break;
//
//		case 1:
//			/*
//			 * Wenn Status Aufhebung gesendet werden soll und bisher noch keine
//			 * Daten gesendet wurden oder wenn Löschung gesendet werden soll,
//			 * wird die Aktualisierung unterdrückt und die Meldung gelöscht.
//			 */
//			if (status == TMCStatus.Aufhebung && (sender.getDatenSenden() == null || !sender.getDatenSenden().hasData())) {
//				text += "\nStatus " + status + " wurde empfangen und es wurde bisher noch nichts gesendet";
//				loeschen = true;
//			} else if (status == TMCStatus.Loeschung) {
//				text += "\nStatus " + status + " wurde empfangen";
//				loeschen = true;
//			}
//			break;
//		}

		if (loeschen) {
			DEBUG.config(text + suffixFehler + "\nAktuelle Meldung wird gelöscht");
			try {
@@ -845,14 +815,18 @@ public class TMCVewMeldung implements ClientReceiverInterface {
	}

	/**
	 * @return den Wert des Parameters RDSMeldungsRückhaltung
	 * Gibt den Wert des Parameters RDSMeldungsRückhaltung zurück.
	 * 
	 * @return Wert des Parameters RDSMeldungsRückhaltung
	 */
	public long getRDSMeldungsRueckhaltung() {
		return verwaltung.getRDSMeldungsRueckhaltung();
	}

	/**
	 * @return den Wert des Parameters RDSMeldungsAktion
	 * Gibt den Wert des Parameters RDSMeldungsAktion zurück.
	 * 
	 * @return Wert des Parameters RDSMeldungsAktion
	 */
	public String getRDSMeldungsAktion() {
		return verwaltung.getRDSMeldungsAktion();
+1 −0
Original line number Diff line number Diff line
@@ -24,5 +24,6 @@
 * mailto: info@bitctrl.de
 */

/** Modul Verwaltung.	*/
package de.bsvrz.ste.tmcvew;
+1 −0
Original line number Diff line number Diff line
@@ -24,5 +24,6 @@
 * mailto: info@bitctrl.de
 */

/** Parameter-Behandlung.	*/
package de.bsvrz.ste.tmcvew.parameter;
+110 −80
Original line number Diff line number Diff line
@@ -231,7 +231,8 @@ public class RdsMeldung implements StandardApplication, Runnable {
	/**
	 * Initialisiert den Empfangsthread.
	 * 
	 * @param text Parametertext
	 * @param text
	 *            Parametertext
	 */
	public void iniTest(final String text) {
		ergebnis = text;
@@ -288,9 +289,8 @@ public class RdsMeldung implements StandardApplication, Runnable {

				if (!_testnummer.equalsIgnoreCase(_testnummer_old)) {
					if (debug) {
						System.out
								.println("Rdsmeldung-Thread -> Initialisiere Test: " + _testnummer + ", Objekt: '" + tmc + "'" 
						+ ", TestParameter: " + ergebnis);
						System.out.println("Rdsmeldung-Thread -> Initialisiere Test: " + _testnummer + ", Objekt: '"
								+ tmc + "'" + ", TestParameter: " + ergebnis);
					}

					loesche = true;
@@ -338,7 +338,8 @@ public class RdsMeldung implements StandardApplication, Runnable {
				}

				// if (debug) {
//					System.out.println("Rdsmeldung-Thread -> ZM: " + zaehler_min);
				// System.out.println("Rdsmeldung-Thread -> ZM: " +
				// zaehler_min);
				// }

				if (m_rds_meldung.getMeldungen() != null) {
@@ -346,14 +347,16 @@ public class RdsMeldung implements StandardApplication, Runnable {
				}

				if (empfMeldung != null) {
					rdsa = empfMeldung.get(tmc); // Hole Meldung für empfangenes Objekt
					rdsa = empfMeldung.get(tmc); // Hole Meldung für empfangenes
													// Objekt
				} else {
					rdsa = null;
				}

				if (rdsa != null) {
					// if (debug) {
//						System.out.println("Rdsmeldung-Thread ->  Meldung: " + rdsa.getPid() + ", Flag: " + rdsa.getFlag());
					// System.out.println("Rdsmeldung-Thread -> Meldung: " +
					// rdsa.getPid() + ", Flag: " + rdsa.getFlag());
					// }

					if (rdsa.getFlag() == 0) { // neues TMC-Objekt
@@ -403,7 +406,8 @@ public class RdsMeldung implements StandardApplication, Runnable {

								ok = tmcmeldung(m_connection, tmc, quelle, _zustand, "versendet", "9");

								try  { // Objekt soll gelöscht werden, Prüfe nach 5 Sekunden ob Löschung erfolgreich
								try { // Objekt soll gelöscht werden, Prüfe nach
										// 5 Sekunden ob Löschung erfolgreich
									Thread.sleep(5000);
								} catch (final InterruptedException e) {
									e.printStackTrace();
@@ -471,17 +475,17 @@ public class RdsMeldung implements StandardApplication, Runnable {
	 *            Meldungsaspekt
	 * @param statusP
	 *            Meldungsstatus
	 * @return true -> Wenn Ergebnis erfolgreich.
	 * @return true, wenn Ergebnis erfolgreich.
	 */

	public boolean tmcmeldung(final ClientDavInterface connection, final String pid, final String quelleP, final String zustandP, final String aspektP,
			final String statusP) {
	public boolean tmcmeldung(final ClientDavInterface connection, final String pid, final String quelleP,
			final String zustandP, final String aspektP, final String statusP) {
		final ConfigurationObject netz = (ConfigurationObject) m_dataModel.getObject(LMS_PID);
		final List<SystemObject> liste = netz.getMutableSet(MELDUNGEN_MENGE).getElements();

		if (!"versendet".equalsIgnoreCase(aspektP)) {
			final String log = "> TmcMeldung (" + aspektP + "):  " + new Date().toString() + ", PID: " + pid
				+ ", Status: " + statusP + ", Zustand: " + zustandP + ",  Quelle: " + quelleP;
					+ ", Status: " + getInternalStatusText(statusP) + ", Zustand: " + zustandP + ",  Quelle: " + quelleP;
			System.out.println(log);
			_debug.info(log);
		}
@@ -542,7 +546,8 @@ public class RdsMeldung implements StandardApplication, Runnable {
	/**
	 * Erstellung der Konfigurationsobjekte.
	 * 
	 * @throws Exception bei Fehlern
	 * @throws Exception
	 *             bei Fehlern
	 */
	protected void erstelleRdsMeldung() throws Exception {

@@ -830,8 +835,14 @@ public class RdsMeldung implements StandardApplication, Runnable {
	 * Testfälle für automatische JUnit - Tests.
	 * 
	 * @param connection
	 * @return
	 * @throws Exception bei Fehlern
	 *            {@link ClientDavInterface}
	 * @param test
	 *            Name des Tests
	 * @param teiler
	 *            Teiler
	 * @return <code>true</code>, wenn Test ok, sonst <code>false</code>
	 * @throws Exception
	 *             bei Fehlern
	 */

	public boolean testfall(final ClientDavInterface connection, final String test, final int teiler) throws Exception {
@@ -903,8 +914,10 @@ public class RdsMeldung implements StandardApplication, Runnable {
			// 2. Kennung -> Erster Status
			// 3. Kennung -> Erster Zustand
			// 4. Kennung -> Erste Quelle
			// 5. Kennung -> Zeit in Sekunden in der Rückmeldung erwartet wird, bei 0 wird kein Telegramm erwartet
			// 6. Kennung -> Zeit in Sekunden in der Rückmeldung nicht erwartet wird, bei 0 wird kein Telegramm erwartet
			// 5. Kennung -> Zeit in Sekunden in der Rückmeldung erwartet wird,
			// bei 0 wird kein Telegramm erwartet
			// 6. Kennung -> Zeit in Sekunden in der Rückmeldung nicht erwartet
			// wird, bei 0 wird kein Telegramm erwartet

			// Für Auswertung Telegramm bei 0: wird kein Telegramm erwartet
			iniTest("1:Geändert:quittiert:automatisch:0:0");
@@ -912,8 +925,8 @@ public class RdsMeldung implements StandardApplication, Runnable {
			ok = tmcmeldung(connection, tmc, quelle, zustand, aspekt, status);

			if (debug) {
				System.out.println("Testfall 2: " + tmc + "   " + quelle + "   " + zustand + "   " + aspekt
						+ "   " + status + " --> " + ok);
				System.out.println("Testfall 2: " + tmc + "   " + quelle + "   " + zustand + "   " + aspekt + "   "
						+ status + " --> " + ok);
			}

			Thread.sleep(20000 / teiler); // Sleep 20 Sekunden
@@ -934,8 +947,8 @@ public class RdsMeldung implements StandardApplication, Runnable {
			ok = tmcmeldung(connection, tmc, quelle, zustand, aspekt, status);

			if (debug) {
				System.out.println("Testfall 2a: " + tmc + "   " + quelle + "   " + zustand + "   " + aspekt
						+ "   " + status + " --> " + ok);
				System.out.println("Testfall 2a: " + tmc + "   " + quelle + "   " + zustand + "   " + aspekt + "   "
						+ status + " --> " + ok);
			}
		}

@@ -1317,7 +1330,7 @@ public class RdsMeldung implements StandardApplication, Runnable {

			if (debug) {
				System.out.println("Start Testfall 6-15: " + tmc + "   " + quelle + "   " + zustand + "   " + aspekt
						+ "   " + status);
						+ "   " + getInternalStatusText(status));
			}

			iniTest("15:Gelöscht:verworfen:automatisch:0:0");
@@ -2193,4 +2206,21 @@ public class RdsMeldung implements StandardApplication, Runnable {
			m_proc = null;
		}
	}

	private String getInternalStatusText(final String status) {
		if ("0".equalsIgnoreCase(status)) {
			return "Geändert";
		}

		if ("1".equalsIgnoreCase(status)) {
			return "Gelöscht";
		}

		if ("9".equalsIgnoreCase(status)) {
			return "Gelöscht";
		}

		return "!!unbekannter interner Status!!";
	}

}
Loading