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

 

Note: This page is also available in english.

Download

bullet 20180709_Lomcoder.zip [Stand: 09.07.2018]

Änderungshistorie siehe Ende der Seite

Inhalt

HitUpros/LomCoder2.java
HitUpros/LomNumber.java
HitUpros/LomCoderErrors.java
Dies sind die elementaren Klassen: Der LomCoder2 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 unten, 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.

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

HitUpros/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.

HitUpros/LomCountryInterface.java
HitUpros/LomEU.java
HitUpros/LomDate.java

HitUpros/HitException.java
HitUpros/HitHelpers.java
HitUpros/HitSimpleDTS.java

LomEU 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.

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.

HitUpros/LomSchafeZiegen.java
HitUpros/LomSchweine.java
LomSchafeZiegen und LomSchweine sind Klassen zur LOM-Prüfung für Schweine und Schafe/Ziegen.
HitLom/LomsToCSV.java

HitLom/LomObject.java
HitLom/Demo_LomObject.java

Im Package 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 LomCoder2 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 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 LomCoder2 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 = LomCoder2.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 LomCoder2 zurück:

String strFormatiert = LomCoder2.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 faßt 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. Wollen Sie diese unverändert in Ihren Java-Programmen verwenden, sollten Sie sich das Applet-Archiv herunterladen. Dieses können Sie dann in eigenen Programmen aufrufen, wie oben unter Anwendung oder unter Vereinfachtung für externe Aufrufe beschrieben:

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.

 

Bei Fehlern oder Anregungen bitte den Autor kontaktieren.

Änderungen

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.