Commit 51d2c4bb authored by Steffen Gieseler's avatar Steffen Gieseler
Browse files

Junit-Tests bearbeitet

git-svn-id: svn://ntoserver/Datenverteiler/VRZ3/trunk/de.bsvrz.ste.tmcvew@63611 40c0be50-5d29-0410-901d-fb59edb5cafc
parent 25a1315a
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ public class TMCVerwaltung implements MutableSetChangeListener, InvalidationList
	/**
	 * Löschverfahren für die dynamischen TMC-Meldungsobjekte.
	 */
	private int loeschVerfahren;
	// private int loeschVerfahren;

	/**
	 * Flag zur Unterdrückung der Korrektur, wenn ein Zeitstempel einer Meldung
@@ -116,7 +116,6 @@ public class TMCVerwaltung implements MutableSetChangeListener, InvalidationList
	public TMCVerwaltung(final ClientDavInterface connection, final ConfigurationObject konfigObjekt, final int optionen) {
		dav = connection;
		lmsObjekt = konfigObjekt;
		loeschVerfahren = optionen & TMCVerwaltungApp.MASKE_LOESCH_VERFAHREN;
		ohneZeitstempelKorrektur = (optionen & TMCVerwaltungApp.MASKE_OHNE_ZEITSTEMPEL_KORREKTUR) != 0;

		final AttributeGroup atg = dav.getDataModel().getAttributeGroup("atg.tmcMeldungsVerwaltung");
@@ -189,15 +188,6 @@ public class TMCVerwaltung implements MutableSetChangeListener, InvalidationList
		return lmsObjekt;
	}

	/**
	 * Gibt das Löschverfahren zurück.
	 * 
	 * @return das Löschverfahren
	 */
	public int getLoeschVerfahren() {
		return loeschVerfahren;
	}

	/**
	 * . 
	 * @return true, falls die Korrektur unterdrückt wird, wenn ein Zeitstempel
+7 −23
Original line number Diff line number Diff line
@@ -69,11 +69,6 @@ public class TMCVerwaltungApp implements StandardApplication {
	 */
	private int ohneZeitstempelKorrektur;

	public static final int OPTION_LOESCH_VERFAHREN_1 = 1;
	public static final int OPTION_LOESCH_VERFAHREN_2 = 2;
	public static final int OPTION_LOESCH_VERFAHREN_3 = 3;
	public static final int MASKE_LOESCH_VERFAHREN = 3;

	public static final int OPTION_OHNE_ZEITSTEMPEL_KORREKTUR = 4;
	public static final int MASKE_OHNE_ZEITSTEMPEL_KORREKTUR = 4;
	
@@ -145,23 +140,12 @@ public class TMCVerwaltungApp implements StandardApplication {

		lmsPid = argumentList.fetchArgument("-lms=").asNonEmptyString();

		if (argumentList.hasArgument("-löschen")) {
			loeschVerfahren = argumentList.fetchArgument("-löschen=").intValueBetween(0, 1);
		}

		// -loeschen statt -löschen, -löschen wird zur Rückwartskompatiblität
		// beibehalten,
		// aber -loeschen hat Vorrang
		if (argumentList.hasArgument("-loeschen")) {
			loeschVerfahren = argumentList.fetchArgument("-loeschen=").intValueBetween(0, 1);
		}

		if (argumentList.hasArgument("-ohneZeitstempelKorrektur")) {
			final String text = argumentList.fetchArgument("-ohneZeitstempelKorrektur=").asString();
			if ("1".equals(text) || "true".equalsIgnoreCase(text) || "wahr".equalsIgnoreCase(text)) {
				ohneZeitstempelKorrektur = OPTION_OHNE_ZEITSTEMPEL_KORREKTUR;
			}
		}
//		if (argumentList.hasArgument("-ohneZeitstempelKorrektur")) {
//			final String text = argumentList.fetchArgument("-ohneZeitstempelKorrektur=").asString();
//			if ("1".equals(text) || "true".equalsIgnoreCase(text) || "wahr".equalsIgnoreCase(text)) {
//				ohneZeitstempelKorrektur = OPTION_OHNE_ZEITSTEMPEL_KORREKTUR;
//			}
//		}

		argumentList.fetchUnusedArguments();
	}
@@ -181,7 +165,7 @@ public class TMCVerwaltungApp implements StandardApplication {
		try {
			MessageSender.getInstance().setApplicationLabel(connection.getLocalApplicationObject().getName());

			final ConfigurationObject lmsobjekt = getKonfigObjekt(lmsPid, "typ.tmcLandesMeldeStelle");
			final ConfigurationObject lmsobjekt = getKonfigObjekt(lmsPid, LMS_TYP);
			
			if (lmsobjekt == null) {
				throw new RuntimeException("Das angegebene Objekt '" + lmsPid + "' kann nicht vom Datenverteiler gelesen werden!");
+29 −33
Original line number Diff line number Diff line
@@ -703,34 +703,29 @@ public class TMCVewMeldung implements ClientReceiverInterface {
		final Data datenSenden = sender.getDatenSenden() != null && sender.getDatenSenden().hasData()
				? sender.getDatenSenden().getData() : null;

		// TODO:
		// /*
		// * Wenn bereits Status Aufhebung gesendet wurde, wird nur noch Status
		// * Löschung weitergeleitet, wenn bereits Status Löschung gesendet
		// wurde,
		// * werden keine Daten mehr weitergeleitet.
		// */
		// if (datenSenden != null) {
		// final TMCStatus sendeStatus = getStatus(datenSenden);
		/*
		 * Wenn bereits Status Aufhebung gesendet wurde, wird nur noch Status
		 * 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"
		// + 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"
			// + " vor - nur Aktualisierungen mit Status " + TMCStatus.Loeschung
			// + " werden weitergeleitet"
			// + suffixFehler);
			// return;
			// }
		// }
		// }
			// } else
			if (sendeStatus == TMCStatus.Geloescht) {
				DEBUG.config(text + "\nEs liegt bereits eine Aktualisierung mit Status " + sendeStatus + " vor"
						+ suffixFehler);
				return;
			}
		}

		/*
		 * Zu sendende Daten unter dem Aspekt TMCGeneriert werden dann nicht
@@ -740,11 +735,13 @@ public class TMCVewMeldung implements ClientReceiverInterface {
		if (asp.equals(datenBeschreibungGeneriert.getAspect())) {
			final Data datenBearbeitetData = datenBearbeitet != null && datenBearbeitet.hasData()
					? datenBearbeitet.getData() : null;
			final Zustand zustandBearbeited = datenBearbeitetData != null ? getZustand(datenBearbeitetData) : null;
			if ((zustandBearbeited == Zustand.Editiert || zustandBearbeited == Zustand.Verworfen)
					&& (datenSenden == null || !(getZustand(datenSenden) == Zustand.Verworfen))) {
			final Zustand zustandBearbeitet = datenBearbeitetData != null ? getZustand(datenBearbeitetData) : null;
			if ((zustandBearbeitet == Zustand.Editiert || zustandBearbeitet == Zustand.Verworfen)) {
				// Gieseler, angepasst für Test 15
				// && (datenSenden == null || !(getZustand(datenSenden) ==
				// Zustand.Verworfen))) {
				DEBUG.config(
						text + "\nEs liegen bearbeitete Daten im Zustand " + zustandBearbeited + " vor" + suffixFehler);
						text + "\nEs liegen bearbeitete Daten im Zustand " + zustandBearbeitet + " vor" + suffixFehler);
				return;
			}
		}
@@ -760,7 +757,6 @@ public class TMCVewMeldung implements ClientReceiverInterface {
							+ "\" 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);
+26 −27
Original line number Diff line number Diff line
@@ -79,7 +79,9 @@ public class TMCVewSender implements ClientSenderInterface {
	private boolean angemeldet;

	/**
	 * @return ist diese Instanz zum DAV-Senden angemeldet?
	 * Ist diese Instanz zum DAV-Senden angemeldet?
	 * 
	 * @return <code>true</code>, wenn angemeldet, sonst <code>false</code>
	 */
	public boolean isAngemeldet() {
		return angemeldet;
@@ -88,14 +90,17 @@ public class TMCVewSender implements ClientSenderInterface {
	/**
	 * Datenbeschreibung "gesendet".
	 */
	protected final DataDescription _datenBeschreibung;
	private final DataDescription datenBeschreibung;

	/**
	 * Übergeordnete Instanz vom Typ TMCVewMeldung.
	 */
	protected final TMCVewMeldung meldung;
	private final TMCVewMeldung meldung;
	

	/**
	 * Gibt die Datenverteiler-Verbindung zur&uuml;ck.
	 * 
	 * @return die Datenverteiler-Verbindung
	 */
	public ClientDavInterface getConnection() {
@@ -103,7 +108,9 @@ public class TMCVewSender implements ClientSenderInterface {
	}

	/**
	 * @return das Dav-Systemobject, für das das Senden von Daten erfolgt
	 * Gibt das Dav-Systemobject zur&uuml;ck, für das das Senden von Daten erfolgt.
	 * 
	 * @return {@link SystemObject}
	 */
	public SystemObject getDavObjekt() {
		return meldung.getDavObjekt();
@@ -121,7 +128,7 @@ public class TMCVewSender implements ClientSenderInterface {

		final AttributeGroup atg = getConnection().getDataModel().getAttributeGroup("atg.tmcVerkehrsMeldung");
		final Aspect asp = getConnection().getDataModel().getAspect("asp.tmcSenden");
		_datenBeschreibung = new DataDescription(atg, asp);
		datenBeschreibung = new DataDescription(atg, asp);

		// /*
		// * Restauriere unter dem Aspekt RDSSenden gesendete Daten aus den
@@ -132,8 +139,8 @@ public class TMCVewSender implements ClientSenderInterface {
		// "atg.rdsMeldung").getData();

		try {
			getConnection().subscribeSender(this, getDavObjekt(), _datenBeschreibung, ROLLE);
			DEBUG.fine(_datenBeschreibung + " zum Senden angemeldet für " + getDavObjekt());
			getConnection().subscribeSender(this, getDavObjekt(), datenBeschreibung, ROLLE);
			DEBUG.fine(datenBeschreibung + " zum Senden angemeldet für " + getDavObjekt());
		} catch (final OneSubscriptionPerSendData e) {
			/*
			 * Es liegt bereits eine Sendeanmeldung von anderer Stelle vor =>
@@ -151,8 +158,8 @@ public class TMCVewSender implements ClientSenderInterface {
	public void dispose() {
		stopSenden();
		if (angemeldet) {
			getConnection().unsubscribeSender(this, getDavObjekt(), _datenBeschreibung);
			DEBUG.fine("Senden abgemeldet von " + _datenBeschreibung + " für " + getDavObjekt());
			getConnection().unsubscribeSender(this, getDavObjekt(), datenBeschreibung);
			DEBUG.fine("Senden abgemeldet von " + datenBeschreibung + " für " + getDavObjekt());
			angemeldet = false;
		}
	}
@@ -198,13 +205,7 @@ public class TMCVewSender implements ClientSenderInterface {
		return true;
	}

	/*
	 * (Kein Javadoc)
	 * 
	 * @see
	 * de.bsvrz.dav.daf.main.ClientSenderInterface#dataRequest(de.bsvrz.dav.daf.
	 * main.config.SystemObject, de.bsvrz.dav.daf.main.DataDescription, byte)
	 */
	@Override
	public void dataRequest(final SystemObject object, final DataDescription dataDescription, final byte state) {
		DEBUG.fine("dataRequest() für " + getDavObjekt().getPid() + " - Sender state: " + state);
		if (warten && state == ClientSenderInterface.START_SENDING) {
@@ -214,13 +215,7 @@ public class TMCVewSender implements ClientSenderInterface {
		}
	}

	/*
	 * (Kein Javadoc)
	 * 
	 * @see
	 * de.bsvrz.dav.daf.main.ClientSenderInterface#isRequestSupported(de.bsvrz.
	 * dav.daf.main.config.SystemObject, de.bsvrz.dav.daf.main.DataDescription)
	 */
	@Override
	public boolean isRequestSupported(final SystemObject so, final DataDescription dd) {
		return true;
	}
@@ -228,7 +223,7 @@ public class TMCVewSender implements ClientSenderInterface {
	/**
	 * Aktuell unter dem Aspekt senden gesendete Daten.
	 */
	private ResultData _datenSenden = null;
	private ResultData _datenSenden;

	/**
	 * @return die unter dem Aspekt senden aktuell gesendeten Daten
@@ -380,7 +375,11 @@ public class TMCVewSender implements ClientSenderInterface {
		@Override
		public void run() {
			if (!isAbgebrochen() && verzoegerung > 0) {
				// TODO: Gieseler wieder entfernen
				DEBUG.fine("Start sleep " + verzoegerung + " ms");
				getConnection().sleep(verzoegerung);
				// TODO: Gieseler wieder entfernen
				DEBUG.fine("Ende sleep " + verzoegerung + " ms");
			}
			synchronized (TMCVewSender.this) {
				try {
@@ -393,18 +392,18 @@ public class TMCVewSender implements ClientSenderInterface {
								&& TMCVewMeldung.getZustand(data) == TMCVewMeldung.Zustand.NichtQuittiert
								&& meldung.getRDSMeldungsAktion().equals("0")) {
							DEBUG.fine(
									text + " werden NICHT unter dem Aspekt " + _datenBeschreibung.getAspect().getName()
									text + " werden NICHT unter dem Aspekt " + datenBeschreibung.getAspect().getName()
											+ " gesendet, da RDSMeldungsAktion den Wert \""
											+ meldung.getRDSMeldungsAktion() + "\" hat");
							return;
						}

						final ResultData resultData = new ResultData(getDavObjekt(), _datenBeschreibung, zeitStempel,
						final ResultData resultData = new ResultData(getDavObjekt(), datenBeschreibung, zeitStempel,
								data);

						if (send(resultData)) {
							DEBUG.fine(text + " wurden erfolgreich unter dem Aspekt "
									+ _datenBeschreibung.getAspect().getName() + " gesendet");
									+ datenBeschreibung.getAspect().getName() + " gesendet");

							setDatenSenden(resultData);

+6 −2
Original line number Diff line number Diff line
@@ -46,7 +46,11 @@ import de.bsvrz.dav.daf.main.config.TimeAttributeType;
 * @author BitCtrl Systems GmbH, Gieseler
 * @version $Id: $
 */
public class DatenTools {
public final class DatenTools {
	
	private 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
@@ -102,7 +106,7 @@ public class DatenTools {
		}

		if (quelle.isList()) {
			final Iterator it = quelle.iterator();
			final Iterator<?> it = quelle.iterator();
			while (it.hasNext()) {
				final Data subQuelle = (Data) it.next();
				final Data subZiel = ziel.getItem(subQuelle.getName());
Loading