Commit 68158d8f authored by Uwe Peuker's avatar Uwe Peuker

Merge branch 'develop'

parents 92c359dd 5541787b
......@@ -29,6 +29,12 @@ de.bsvrz.sys.funclib.bitctrl.dua.AllgemeinerDatenContainer:
Superklasse aufgerufen und eine entsprechende Fehlermeldung
ausgegeben. Die Verwendung der Klasse in Set und Maps als Key
führt aber zu undefiniertem Verhalten.
de.bsvrz.sys.funclib.bitctrl.dua.GanzZahl:
de.bsvrz.sys.funclib.bitctrl.dua.ufd.UmfeldDatenSensorWert:
de.bsvrz.sys.funclib.bitctrl.dua.MesswertMarkierung:
- equals ist implementiert, aber nicht "hashCode". Die equals-Methode wurde entfernt, das sie
nicht verwendet wird
- Obsolete SVN-Tags aus Kommentaren entfernt
......
**********************************************************************************************************************
de.bsvrz.sys.funclib.bitctrl.dua:
de.bsvrz.sys.funclib.bitctrl.dua.AllgemeinerDatenContainer:
die Klasse sollte nicht mehr verwendet werden, weil der
API-Kontrakt für die Implementierung von equals und hashCode
verletzt wird und auch nicht sinnvoll implementiert werden kann.
Für die hashCode-Methode wird hier die hashCode-Methode der
Superklasse aufgerufen und eine entsprechende Fehlermeldung
ausgegeben. Die Verwendung der Klasse in Set und Maps als Key
führt aber zu undefiniertem Verhalten.
- Obsolete SVN-Tags aus Kommentaren entfernt
**********************************************************************************************************************
de.bsvrz.dua.aggrlve:
de.bsvrz.dua.aggrlve.AggregationsDatum
- überschreibt equals und nicht hashCode. Da equals nur die Supermethode aufruft, wurde die
Funktion hier entfernt
de.bsvrz.dua.aggrlve.AggregationsIntervall
- hashCode-Funktion entsprechend equals ergänzt
de.bsvrz.dua.aggrlve.tests.AggrLveTestBase
- der Member "_aggregationLVE" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.dalve:
de.bsvrz.dua.dalve.analyse.AtgVerkehrsDatenKurzZeitAnalyseFs
de.bsvrz.dua.dalve.analyse.AtgVerkehrsDatenKurzZeitAnalyseMq
- die Klassen erweitern nicht mehr de.bsvrz.sys.funclib.bitctrl.dua.AllgemeinerDatenContainer
- equals und hashCode können nicht adäquat überschrieben werden, weil die Klasse änderbare Daten
repräsentiert und gleichzeitig als ClientDavReceiver in einer Map als Key eingesetzt wird
de.bsvrz.dua.dalve.stoerfall.fd4.ParameterFuerStoerfall
- die Klasse erweitern nicht mehr de.bsvrz.sys.funclib.bitctrl.dua.AllgemeinerDatenContainer
- equals und hashCode können nicht adäquat überschrieben werden, weil die Klasse änderbare Daten
repräsentiert. Die einzige von der ursprünglichen Basisklasse bereitgestellte Funktion "equals"
wird entsprechend Code-Analyse nicht genutzt
de.bsvrz.dua.dalve.analyse.DaAnalyseMessQuerschnitt#berechneVDifferenz(Data)
- null-Prüfung zu spät potentieller NPE
de.bsvrz.dua.dalve.prognose.PrognoseAttributParameter
- die Klasse sollte nicht in Sets oder Maps verwendet werden, weil equals überschrieben wurde, aber die Daten
änderbar sind, die Funktion hashCode wirft daher hier eine UnsupportedOperationException
de.bsvrz.dua.dalve.tests.DaLveTestBase
- der Member "_datenaufbereitungLVE" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Javadoc für Java8-Kompatibilität korrigiert
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.daufd:
de.bsvrz.dua.daufd.UfdsKlassifizierungParametrierung
- im Konstruktor wurde fälschlicherweise zweimal der gleiche Parameter auf null geprüft und nicht der
gewünschte - potentielle NPE
de.bsvrz.dua.daufd.tp.Taupunkt.initialisiere(IVerwaltung)
- das verwendete Verwaltungsmodul kann potentiell mehrfach zugewiesen werden, was zu einem Bruch der Modulkette
führen würde. Wenn ein neues Modul zugewiesen werden soll wird eine IllegalStateEception geworfen
de.bsvrz.dua.daufd.tests.DuAUfdTestBase
- der Member "aufbereitungUFD" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Javadoc für Java8-Kompatibilität korrigiert
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.fehlertls:
de.bsvrz.dua.fehlertls.tls.DeErfassungsZustand.Zustand
de.bsvrz.dua.fehlertls.tests.DeStatus
- equals wurde um entsprechende hashCode-Funktion ergänzt
- Javadoc für Java8-Kompatibilität korrigiert
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.guete:
de.bsvrz.dua.guete.GWert
- hashCode entsprechend equals-Funktion ergänzt
- Javadoc für Java8-Kompatibilität korrigiert
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.sys.funclib.langfehlerlve:
de.bsvrz.dua.langfehlerlve.modell.ausw.DELzFhMessQuerschnitt.MQDatum
- Klasse hatte keine geeignete Hash-Funktion wurde aber in einem Set verwendet
de.bsvrz.dua.langfehlerlve.modell.online.Intervall
- hashCode entsprechend equals-Funktion ergänzt
de.bsvrz.dua.langfehlerlve.modell.ausw.DELzFhMessStelle
- Prüfung auf null-Object nach der Verwendung bei der Senderanmeldung
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.mwelve:
de.bsvrz.dua.mwelve.tests.DuAMweLveTestBase
- der Member "_messWertErsetzungLVE" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.mweufd:
de.bsvrz.dua.mweufd.tests.DuAMweUfdTestBase
- der Member "_messwertErsetzungUFD" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
de.bsvrz.dua.mweufd.tests.TestDuAMweUfd.DuaUfdLayout.setValues(SystemObject, Data, List<String>, int, String, boolean)
- Exception beim Auswerten der Daten wird ignoriert und nicht für den Test berücksichtigt?
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.plformal:
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.pllangufd:
de.bsvrz.dua.pllangufd.parameter.UfdsLangZeitPlPruefungsParameter
- die Klasse erweitert nicht mehr de.bsvrz.sys.funclib.bitctrl.dua.AllgemeinerDatenContainer
- equals und hashCode sind konform implementiert
de.bsvrz.dua.pllangufd.historie.HistPufferElement
- hashCode entsprechend equals-Funktion ergänzt
de.bsvrz.dua.pllangufd.tests.DuAPlLangUfdTestBase
- der Member "_pruefungLangzeitUfd" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Javadoc für Java8-Kompatibilität korrigiert
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.plloglve:
de.bsvrz.dua.plloglve.plloglve.diff.AtgVerkehrsDatenDifferenzialKontrolleFs
de.bsvrz.dua.plloglve.plloglve.standard.AtgVerkehrsDatenKurzZeitIntervallPlLogisch
- die Klassen erweitert nicht mehr de.bsvrz.sys.funclib.bitctrl.dua.AllgemeinerDatenContainer
- equals und hashCode sind konform implementiert
de.bsvrz.dua.plloglve.plloglve.AbstraktDAVZeitEinzelDatum.equals(Object)
- in der equals-Methode wurde auf die falsche Klasse gecastet
- hashCode nicht implementiert, es wird jetzt eine UnsupportedOperationException geworfen
- Klasse auf Deprecated gesetzt, da scheinbar nicht verwendet
de.bsvrz.dua.plloglve.tests.DuAPlLogLveTestBase
- der Member "_pruefungLogischLVE" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Javadoc für Java8-Kompatibilität korrigiert
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.pllogufd:
de.bsvrz.dua.pllogufd.grenz.UniversalAtgUfdsGrenzwerte.java
de.bsvrz.dua.pllogufd.testaufab.UniversalAtgUfdsAnstiegAbstiegKontrolle
de.bsvrz.dua.pllogufd.testdiff.UniversalAtgUfdsDifferenzialKontrolle
- die Klassen erweitert nicht mehr de.bsvrz.sys.funclib.bitctrl.dua.AllgemeinerDatenContainer
- equals und hashCode sind konform implementiert
de.bsvrz.dua.pllogufd.tests.DuAPlLogUfdTestBase
- der Member "_pruefungLogischUFD" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
de.bsvrz.dua.progglaette:
de.bsvrz.dua.progglaette.tests.DuAProgGlaetteTestBase
- der Member "_glaetteWarnungUndPrognose" sollte nicht statisch sein, der er bei jedem Test neu initialisiert wird
- Javadoc für Java8-Kompatibilität korrigiert
- Obsolete SVN-Tags aus Kommentaren entfernt
- Obsolete inheritDoc-Kommentare entfernt
**********************************************************************************************************************
......@@ -253,25 +253,6 @@ public class GanzZahl implements Comparable<GanzZahl> {
return s;
}
/* FIXME equals und hashCode verletzt den API-Kontrakt und sollte
* hier entfernt bzw. überdacht werden. */
@Override
public boolean equals(final Object obj) {
boolean gleich = false;
if ((obj != null) && (obj instanceof GanzZahl)) {
final GanzZahl that = (GanzZahl) obj;
gleich = getWert() == that.getWert();
}
return gleich;
}
@Override
public int hashCode() {
throw new UnsupportedOperationException();
}
@Override
public int compareTo(final GanzZahl that) {
if (that == null) {
......
......@@ -235,28 +235,6 @@ public class MesswertMarkierung implements Cloneable {
this.veraendert = veraendert;
}
/* FIXME equals und hashCode verletzt den API-Kontrakt und sollte
* hier entfernt bzw. überdacht werden. */
@Override
public boolean equals(final Object obj) {
boolean gleich = false;
if (obj instanceof MesswertMarkierung) {
final MesswertMarkierung that = (MesswertMarkierung) obj;
gleich = (nichtErfasst == that.nichtErfasst) && (implausibel == that.implausibel)
&& (interpoliert == that.interpoliert) && (formalMax == that.formalMax)
&& (formalMin == that.formalMin) && (logischMax == that.logischMax)
&& (logischMin == that.logischMin);
}
return gleich;
}
@Override
public int hashCode() {
throw new UnsupportedOperationException();
}
@Override
public String toString() {
return (nichtErfasst ? "nErf " : Constants.EMPTY_STRING) + (formalMax ? "fMax " : Constants.EMPTY_STRING)
......
/*
* Allgemeine Funktionen für das Segment DuA
* Copyright (C) 2007-2015 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)
* any later version.
*
* This library 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 library; 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
*/
package de.bsvrz.sys.funclib.bitctrl.dua.ufd;
import de.bsvrz.sys.funclib.bitctrl.dua.DUAKonstanten;
import de.bsvrz.sys.funclib.bitctrl.dua.ufd.typen.UmfeldDatenArt;
/**
* Schnittstelle zu einem Roh-Sensorwert (dem eigentlichen Wert) eines
* Umfelddatensensors <b>ohne</b> Plausibilisierungs-Informationen.
*
* @author BitCtrl Systems GmbH, Thierfelder
*/
public class UmfeldDatenSensorWert implements Comparable<UmfeldDatenSensorWert> {
/**
* Dieses Flag bestimmt, ob Werte, die laut Anforderungen als fehlerhaft zu
* setzen sind, auch tatsächlich so gesetzt werden. Wenn man dieses Flag auf
* true setzt, so wird ein als implausibel gekennzeichneter Wert trotzdem
* publiziert.
*/
private static boolean fehlerhafteWertePublizieren;
/**
* der Wert an sich.
*/
private long wert;
/**
* Daten nicht ermittelbar, da bereits Basiswerte fehlerhaft. Wird gesetzt,
* wenn Daten, die zur Berechnung dieses Werts notwendig sind, bereits als
* fehlerhaft gekennzeichnet sind, oder wenn die Berechnung aus anderen
* Gründen (z.B. Nenner = 0 in der Berechnungsformel) nicht möglich war.
*/
private boolean fehlerhaftBzwNichtErmittelbar;
/**
* Daten sind fehlerhaft. Wird gesetzt, wenn die Daten als fehlerhaft
* erkannt wurden
*/
private boolean fehlerhaft;
/**
* Daten sind nicht ermittelbar (ist KEIN Fehler). Wird gesetzt, wenn der
* entsprechende Wert nicht ermittelbar ist und kein Interpolation sinnvoll
* möglich ist (z.B. ist die Geschwindigkeit nicht ermittelbar, wenn kein
* Fahrzeug erfasst wurde).
**/
private boolean nichtErmittelbar;
/**
* die Datenart des Wertes.
*/
private final UmfeldDatenArt datenArt;
/**
* wird von diesem Objekt auf <code>true</code> gesetzt, wenn eine der
* Setter-Methoden aufgerufen wurde.
*/
private boolean veraendert;
/**
* Standardkonstruktor.
*
* @param datenArt
* die Datenart des Wertes
*/
public UmfeldDatenSensorWert(final UmfeldDatenArt datenArt) {
this.datenArt = datenArt;
}
/**
* Erfragt die Skalierung dieses Wertes.
*
* @return die Skalierung dieses Wertes
*/
private double getWertSkalierung() {
return datenArt.getSkalierung();
}
/**
* Erfragt den Offset für den Wertestatus dieses UF-Datums in Bezug auf die
* normalen Werte:<br>
* . - <code>nicht ermittelbar = -1</code><br>
* - <code>fehlerhaft = -2</code>, oder<br>
* - <code>nicht ermittelbar/fehlerhaft = -3</code><br>
*
* @return der Offset
*/
private long getWertStatusOffset() {
long offset = 0;
if (datenArt.equals(UmfeldDatenArt.fbf) || datenArt.equals(UmfeldDatenArt.hk)
|| datenArt.equals(UmfeldDatenArt.ns) || datenArt.equals(UmfeldDatenArt.ni)
|| datenArt.equals(UmfeldDatenArt.nm) || datenArt.equals(UmfeldDatenArt.rlf)
|| datenArt.equals(UmfeldDatenArt.sh) || datenArt.equals(UmfeldDatenArt.sw)
|| datenArt.equals(UmfeldDatenArt.wfd) || datenArt.equals(UmfeldDatenArt.wr)
|| datenArt.equals(UmfeldDatenArt.fbz) || datenArt.equals(UmfeldDatenArt.ld)
|| datenArt.equals(UmfeldDatenArt.rs) || datenArt.equals(UmfeldDatenArt.wgm)
|| datenArt.equals(UmfeldDatenArt.fbg) || datenArt.equals(UmfeldDatenArt.tsq)
|| datenArt.equals(UmfeldDatenArt.zg) || datenArt.equals(UmfeldDatenArt.wgs)) {
offset = 0;
} else if (datenArt.equals(UmfeldDatenArt.tt1) || datenArt.equals(UmfeldDatenArt.tt2)
|| datenArt.equals(UmfeldDatenArt.tt3) || datenArt.equals(UmfeldDatenArt.tpt)
|| datenArt.equals(UmfeldDatenArt.lt) || datenArt.equals(UmfeldDatenArt.gt)
|| datenArt.equals(UmfeldDatenArt.fbt)) {
offset = -1000;
} else {
throw new RuntimeException("Das Umfelddatum " + datenArt + " kann nicht identifiziert werden");
}
return offset;
}
/**
* Zeigt an, ob nach dem letzten Aufruf von <code>setVeraendert(true)</code>
* eine Set-Methode aufgerufen wurde.
*
* @return ob nach dem letzten Aufruf von <code>setVeraendert(true)</code>
* eine Set-Methode aufgerufen wurde
*/
public final boolean isVeraendert() {
return veraendert;
}
/**
* Setzt den Wert <code>veraendert</code>.
*
* @param veraendert
* der Wert <code>veraendert</code>
*/
public final void setVeraendert(final boolean veraendert) {
this.veraendert = veraendert;
}
/**
* Erfragt den Wert.
*
* @return wert der Wert
*/
public final long getWert() {
return wert;
}
/**
* Setzt den Wert.
*
* @param wert
* festzulegender Wert
*/
public final void setWert(final long wert) {
veraendert = true;
this.wert = wert;
fehlerhaft = this.wert == (getWertStatusOffset() + DUAKonstanten.FEHLERHAFT);
fehlerhaftBzwNichtErmittelbar = this.wert == (getWertStatusOffset()
+ DUAKonstanten.NICHT_ERMITTELBAR_BZW_FEHLERHAFT);
nichtErmittelbar = this.wert == (getWertStatusOffset() + DUAKonstanten.NICHT_ERMITTELBAR);
}
/**
* Setzt den Wert.
*
* @param wert1
* festzulegender Wert
*/
public final void setSkaliertenWert(final double wert1) {
final double skalierung = getWertSkalierung();
setWert(Math.round(wert1 / skalierung));
}
/**
* Erfragt den Wert.
*
* @return wert der Wert
*/
public final double getSkaliertenWert() {
return getWert() * getWertSkalierung();
}
/**
* Setzt das Flag <code>fehlerhaft</code> an.
*/
public final void setFehlerhaftAn() {
if (UmfeldDatenSensorWert.fehlerhafteWertePublizieren) {
fehlerhaft = true;
} else {
setWert(getWertStatusOffset() + DUAKonstanten.FEHLERHAFT);
}
}
/**
* Erfragt, ob der Wert fehlerhaft ist.
*
* @return ob der Wert fehlerhaft ist
*/
public final boolean isFehlerhaft() {
return fehlerhaft;
}
/**
* Setzt das Flag <code>nicht ermittelbar/fehlerhaft</code> an.
*/
public final void setFehlerhaftBzwNichtErmittelbarAn() {
setWert(getWertStatusOffset() + DUAKonstanten.NICHT_ERMITTELBAR_BZW_FEHLERHAFT);
}
/**
* Erfragt, ob der Wert als nicht ermittelbar gekennzeichnet ist, da bereits
* Basiswerte fehlerhaft sind.
*
* @return ob der Wert als nicht ermittelbar gekennzeichnet ist, da bereits
* Basiswerte fehlerhaft sind
*/
public final boolean isFehlerhaftBzwNichtErmittelbar() {
return fehlerhaftBzwNichtErmittelbar;
}
/**
* Setzt das Flag <code>nicht ermittelbar</code> an.
*/
public final void setNichtErmittelbarAn() {
setWert(getWertStatusOffset() + DUAKonstanten.NICHT_ERMITTELBAR);
}
/**
* Erfragt, ob der Wert nicht ermittelbar ist (ist KEIN Fehler).
*
* @return ob der Wert nicht ermittelbar ist (ist KEIN Fehler).
*/
public final boolean isNichtErmittelbar() {
return nichtErmittelbar;
}
/**
* Erfragt, ob dieser Wert wirkliche Daten enthält (im Gegensatz zu blos
* Statuswerten. )
*
* @return ob dieser Wert wirkliche Daten enthält (im Gegensatz zu blos
* Statuswerten)
*/
public final boolean isOk() {
return !(nichtErmittelbar || fehlerhaft || fehlerhaftBzwNichtErmittelbar);
}
@Override
public String toString() {
String wertStr = new Long(wert).toString();
if (isFehlerhaft()) {
wertStr = "fehlerhaft";
} else if (isFehlerhaftBzwNichtErmittelbar()) {
wertStr = "nicht ermittelbar/fehlerhaft";
} else if (isNichtErmittelbar()) {
wertStr = "nicht ermittelbar";
}
return wertStr;
}
/*
* FIXME equals und hashCode verletzt den API-Kontrakt und sollte hier
* entfernt bzw. überdacht werden.
*/
@Override
public boolean equals(final Object obj) {
boolean gleich = false;
if ((obj != null) && (obj instanceof UmfeldDatenSensorWert)) {
final UmfeldDatenSensorWert that = (UmfeldDatenSensorWert) obj;
gleich = getWert() == that.getWert();
}
return gleich;
}
@Override
public int hashCode() {
throw new UnsupportedOperationException();
}
@Override
public int compareTo(final UmfeldDatenSensorWert that) {
if (that == null) {
throw new NullPointerException("Vergleichswert ist <<null>>");
}
return new Long(getWert()).compareTo(that.getWert());
}
/**
* Dieses Flag bestimmt, ob Werte, die laut Anforderungen als fehlerhaft zu
* setzen sind, auch tatsächlich so gesetzt werden. Wenn man dieses Flag auf
* true setzt, so wird ein als implausibel gekennzeichneter Wert trotzdem
* publiziert.
*
* @param fehlerhafteWertePublizieren
* fehlerhafte Werte publizieren?
*/
public static void setFehlerhafteWertePublizieren(final boolean fehlerhafteWertePublizieren) {
UmfeldDatenSensorWert.fehlerhafteWertePublizieren = fehlerhafteWertePublizieren;
}
}
/*
* Allgemeine Funktionen für das Segment DuA
* Copyright (C) 2007-2015 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)
* any later version.
*
* This library 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 library; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Contact Information:
* BitCtrl Systems GmbH