Zur Homepage www.HI-Tier.de Sourcen LomCoder
Zurück Home Nach oben Weiter
Öffentlicher Bereich für Entwickler

 

Download

bullet 20260330_Lomcoder.zip [Stand: 30.03.2026]

Wichtig: da es im Jahr 2021 eine Restrukturierung des Java-Sources bei HIT gab, wurden umbenannte und neue packages gebildet.
Die u.g. Sourcen sind somit in anderen Unterordnern abgelegt als im zuletzt angebotenen Download von 2018. Die Klassen per se sind
von den Methodenaufrufen her jedoch gleich geblieben.

Änderungshistorie siehe Ende der Seite

Inhalt

de/hi_tier/hitupros/lom/LomCoder.java
de/hi_tier/hitupros/lom/LomCoderErrors.java
de/hi_tier/hitupros/lom/LomNumber.java
Dies sind die elementaren Klassen: Der LomCoder stellt die generischen Methoden zur Verfügung, mit denen jede Ohrmarke unabhängig von ihrem Land verarbeitet werden kann. Die Klasse greift dann automatisch auf die länderspezifische Klasse, siehe nächste Tabellenzeile, zu.

Die Erkennung und Umwandlung liefert ein Ergebnis, die dann in einem Objekt der Klasse LomNumber gespeichert wird - vorausgesetzt, es wird kein Fehler geliefert. Details über den Fehlercode lassen sich über die Klasse LomCoderErrors ermitteln.

[20260330] Die Klasse LomCoder hiess früher LomCoder2, die Aufrufe sind jedoch gleich geblieben.

de/hi_tier/hitupros/lom/rind/Lom_AT.java
de/hi_tier/hitupros/lom/rind/Lom_BE.java
de/hi_tier/hitupros/lom/rind/Lom_BG.java
de/hi_tier/hitupros/lom/rind/Lom_CH.java
de/hi_tier/hitupros/lom/rind/Lom_CY.java
de/hi_tier/hitupros/lom/rind/Lom_CZ.java
de/hi_tier/hitupros/lom/rind/Lom_DE.java
de/hi_tier/hitupros/lom/rind/Lom_DK.java
de/hi_tier/hitupros/lom/rind/Lom_EE.java
de/hi_tier/hitupros/lom/rind/Lom_EL.java
de/hi_tier/hitupros/lom/rind/Lom_ES.java
de/hi_tier/hitupros/lom/rind/Lom_FI.java
de/hi_tier/hitupros/lom/rind/Lom_FR.java
de/hi_tier/hitupros/lom/rind/Lom_HR.java
de/hi_tier/hitupros/lom/rind/Lom_HU.java
de/hi_tier/hitupros/lom/rind/Lom_IE.java
de/hi_tier/hitupros/lom/rind/Lom_IT.java
de/hi_tier/hitupros/lom/rind/Lom_LT.java
de/hi_tier/hitupros/lom/rind/Lom_LU.java
de/hi_tier/hitupros/lom/rind/Lom_LV.java
de/hi_tier/hitupros/lom/rind/Lom_MT.java
de/hi_tier/hitupros/lom/rind/Lom_NL.java
de/hi_tier/hitupros/lom/rind/Lom_PL.java
de/hi_tier/hitupros/lom/rind/Lom_PT.java
de/hi_tier/hitupros/lom/rind/Lom_RO.java
de/hi_tier/hitupros/lom/rind/Lom_SE.java
de/hi_tier/hitupros/lom/rind/Lom_SI.java
de/hi_tier/hitupros/lom/rind/Lom_SK.java
de/hi_tier/hitupros/lom/rind/Lom_UK.java

de/hi_tier/hitupros/lom/rind/Lom_DY.java

Für jedes der 27 Länder gibt es eine Klasse, die Funktionalität der Ohrmarkennummern über einheitliche Aufrufe abbildet. Das Kürzel nach dem Lom_ entspricht dem ISO-Standard.

Lom_DY bildet hierbei einen Sonderfall: dies sind Ohrmarken, die in HIT nicht gespeichert werden können und somit im "DUMMY"-Format verwendet werden. In HIT gibt es dann dazu eine Übersetzungstabelle.

Anmerkung: Früher wurde Griechenland irrtümlich als GR gekennzeichnet, es hat aber nach ISO-Norm das Kürzel EL. Im Mai 2004 wurde daher die Klasse umbenannt, ohne jedoch die Funktionalität zu ändern.

de/hi_tier/hitupros/lom/LomRindEU.java
de/hi_tier/hitupros/lom/LomCountryInterface.java
de/hi_tier/hitupros/lom/LomCountries.java
de/hi_tier/hitupros/lom/LomDate.java

de/hi_tier/hitupros/HitException.java

LomRindEU ist die Basisklasse aller oben genannten Länderklassen. Diese enthält die Standardmethoden, die zum Großteil vorbereitende Aufgaben (z.B. Normierung der Ohrmarken-Strings etc) für die Länderklassen übernehmen. Das LomCountryInterface legt die Methoden fest, die jede Länderklasse zu haben hat. LomCountries bietet Methoden zur Umsetzung von Ländercodes in Kürzel und umgekehrt.

Die Klassen HitHelpers, HitSimpleDTS und HitException sind Hilfsklassen und Unterprogrammsammlungen, die HIT-weit verwendet werden und auch bei den Ohrmarken Verwendung finden.

[20040902] Ende August 2004 wurde HitDate aufgelöst und mit HitHelpers in andere Klassen, meist HitSimpleDTS, umgelagert.

[20100811] LomDate wurde für die Konvertierung von Java in andere Programmiersprachen angelegt. .NET beispielsweise hat keinen Objekttyp für Datumsangaben und dementsprechend keine exakte Entsprechung zum java.util.Date. Dies wird mit LomDate simuliert.

[20201021] HitHelpers und HitSimpleDTS sind optional: löscht man beide Dateien, lässt sich der Source per se compilieren. Die beiden Klassen enthalten lediglich Anwendungsbeispiele für den LomCoder.

[20260330] LomRindEU hiess früher LomEU. Wurde umbenannt, da es noch weitere LOM-Klassen für verschiedene Tierarten gibt. Früher wurden auch die Klassen HitHelpers und HitSimpleDTS mitgeliefert, welche jedoch nicht mehr nötig sind, da der Code von dort direkt in die LOM-Prüfung integriert wurde. Daher zusätzlich nur noch die HitException.

de/hi_tier/hitupros/lom/LomAndere.java
de/hi_tier/hitupros/lom/andere/LomCameliden.java
de/hi_tier/hitupros/lom/andere/LomCerviden.java
de/hi_tier/hitupros/lom/andere/LomSchafeZiegen.java
de/hi_tier/hitupros/lom/andere/LomSchweine.java
LomSchafeZiegen und LomSchweine sind Klassen zur LOM-Prüfung für Schweine und Schafe/Ziegen.

LomCameliden und LomCerviden sind Klassen zur LOM-Prüfung für Paarhufer und Hirschartige Tiere.

LomAndere ist die gemeinsame Basisklasse.

de/hi_tier/hitlom/LomObject.java
de/hi_tier/hitlom/Demo_LomObject.java
de/hi_tier/hitlom/LomsToCSV.java
Im Package de.hi_tier.hitlom finden sich zwei Programme und ein Hilfsobjekt.

Das Programm LomsToCSV erwartet eine Datei mit Ohrmarken und gibt -je nach Parameter- eine CSV-Datei aus, in der dann die umgewandelten Ohrmarken bzw. fehlerhaften Ohrmarken mit Fehlerbeschreibung stehen. Dies kann in Batch-Jobs zum seriellen Umwandeln verwendet werden. Siehe auch die eigene Anleitung hierfür.

Das LomObject dient der einfachen Handhabung von Ohrmarken, um Ohrmarkenmanipulationen als COM oder Dot.NET Object zu ermöglichen. Um die Anwendung (leicht auf andere Sprachen übertragbar) in Java zu demonstrieren, wird das Programm Demo_LomObject verwendet.

 

Anwendung

Nachfolgendes Beispiel gilt hauptsächlich für Java und ähnliche OO-Sprachen.

Um eine Ohrmarke zu prüfen, wird diese über den LomCoder und dessen Methode sintEncodeLom() aufgerufen. Da wir aber zwei Rückgabewerte erwarten (numerische Ohrmarke und Fehlercode), aber nur einen zurückerhalten können, unterstützt der Parameter LomNumber die Rückgabe der geprüften und codierten Ohrmarke.

Zuerst wird also ein Objekt von LomNumber angelegt:

LomNumber objLom = new LomNumber();

Danach wird die generische Klasse LomCoder mit der statischen Methode sintEncodeLom() aufgerufen, welche zwei bzw drei Parameter erwartet (Ohrmarke als String, das LomNumber-Objekt und schließlich ggf. ein Datum, zu dem die Ohrmarke geprüft werden soll):

String strLom = "DE0196442853";
int intFehler = LomCoder.sintEncodeLom(strLom,objLom);

Nach dem Aufruf erhält man eine Fehlernummer und im Objekt objLom eventuell die codierte (numerische) Ohrmarke. Zur Fehlerbehandlung ist in jedem Fall die Klasse LomCoderErrors zu Rate zu ziehen: sie liefert über die Methode sintGetFehlerSchwere() einen 'allgemeineren' Fehlercode zurück, der der Schwere des HIT-Systems entspricht (d.h. 0=Ok, 1=Hinweis, 2=Nachfrage, 3=Fehler, 4=Panik). Ist die Fehlerschwere 0 oder 1, dann steht in objLom die codierte Ohrmarke (in numerischer Form). Bei Fehlerschweren größer 1 wurde nichts codiert und man erhält über die Methode sstrGetError() die Fehlermeldung zur Fehlernummer.

int intSchwere = LomCoderErrors.sintGetFehlerSchwere(intFehler);

if (intSchwere > 1)  {
   String strFehler = LomCoderErrors.sstrGetError(intFehler);
   System.err.println("Fehler bei Lom "+strLom+": "+strFehler);
}
else  {
   System.out.println(strLom+" = "+objLom.getLom())
}

Um die Ohrmarke in formatierter Form auszugeben, greifen wir auf die Methode sstrToFormattedString() der Klasse LomCoder zurück:

String strFormatiert = LomCoder.sstrToFormattedString(objLom);

Damit ließe sich obengenannte Beispielohrmarke als DE 01 964 42853 ausgeben.

Möchte man die 15stellige numerische Form einer EU-Ohrmarke haben, läßt man sich diese aus objLom über getLom() geben (vorausgesetzt, es gab keinen Fehler):

String strNumerisch = objLom.getLom();

 

Vereinfachung für externe Aufrufe

Um für eigene Zwecke die Anwendung zu vereinfachen (z.B. nach einer Umwandlung in ein COM bzw. Dot.NET-Objekt) gibt es die Klasse LomObject. Diese fasst das eben beschriebene Procedere in einfache Methoden zusammen:

LomObject objLomcoder = new LomObject();
String strFormatiert = objLomcoder.encodeLom(strLom);
if (objLomcoder.wasError())   {
   System.err.println("Fehler: "+objLomcoder.getError());
}
else  {
   System.out.println(strFormatiert);
}

Erst wird die Ohrmarke via encodeLom() (für die formatierte Ausgabe) oder decodeLom() (für die numerische Ausgabe) konvertiert, dann via wasError() geprüft, ob bei der zuletzt vorangegangenen Konvertierung ein Fehler auftrat. Wenn ja, kann man sich die Fehlermeldung via getError() holen, anderenfalls hat der Aufruf von encodeLom() bzw. decodeLom() eine Ohrmarke geliefert.

Man kann auch direkt getError() abholen, ohne wasError() abgefragt zu haben: bei einer korrekten Konvertierung liefert sie eine leere Zeichenkette. Möchte man auf die Fehlerbehandlung völlig verzichten (was nicht anzuraten ist), läßt sich über encodeLom() bzw. decodeLom() auch erkennen, ob eine Ohrmarke falsch war: sie liefern dann jeweils eine leere Zeichenkette.

 

Anmerkungen

Die Zip-Datei enthält nur die Sourcen für die Ohrmarkencodierung.

Ab dem 01.05.2004 sind 10 neue Länder (EU-Osterweiterung) dazugekommen (es liegen aber nicht für alle Länder eine Codiervorschrift vor, so daß für diese eine 15stellige LOM als Vorgabe erwartet wird). Für detailierte Ausführungen lese man bei den Alpha-Lom-Codierungen nach.

Ab dem 01.01.2007 sind zwei neue Länder (BG und RO) dazugekommen.

Zum 01.07.2013 ist Krotatien (HR) der EU beigetreten.

Zum 04.08.2022 wurden niederländische (NL) Ohrmarkennummern um eine neue Serie (12- statt 9-stellig) erweitert (erst Anfang 2026 der HIT mitgeteilt worden).

 

Änderungen

30.03.2026 lomcoder.zip aktualisiert, inkl. Refaktorisierung, Anpassungen NL und SE
09.07.2018 lomcoder.zip aktualisiert
24.04.2018 lomcoder.zip aktualisiert (und umbenannt worden)
28.04.2015 lomcoder3.zip aktualisiert
10.07.2013 lomcoder3.zip aktualisiert, HR dazu
07.02.2013 lomcoder3.zip aktualisiert, RO angepaßt (neue Gebietscodes), Schweine und Schafe/Ziegen LOMs hinzugefügt.
01.08.2010 lomcoder3.zip aktualisiert, CH dazu.
22.09.2009 lomcoder3.zip aktualisiert, Prüfziffer-Überprüfung bei FI korrigiert.
12.02.2007 lomcoder3.zip aktualisiert, BG und RO hinzugefügt.
02.09.2004 lomcoder3.zip aktualisiert, nachdem in HitUpros einige Klassen und Methoden refaktorisiert wurden.
02.09.2004 Englische Doku dieser Seite ergänzt.