Class Feld

java.lang.Object
gdv.xport.feld.Feld
All Implemented Interfaces:
Serializable, Cloneable, Comparable<Feld>
Direct Known Subclasses:
AlphaNumFeld, FeldXml, NumFeld, Undefiniert, Version

public class Feld extends Object implements Comparable<Feld>, Cloneable, Serializable
Die Feld-Klasse bezieht ihre Information hauptsaechlich aus Enum-Klassen wie Feld100 oder Feld1bis7, die mit Annotationen versehen sind.
Since:
04.10.2009
Author:
oliver
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Die Validierung von Werten wurde jetzt in einer eingenen Validator- Klasse zusammengefasst.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final Config
     
    protected String
     
    static final Feld
    statt "null".
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
     
    Legt ein neues Feld an.
     
    Feld(int start, String s, Align alignment)
    Deprecated.
    durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
     
    Feld(Bezeichner bezeichner, int length, int start, Align alignment)
    Deprecated.
    durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
    protected
    Feld(Bezeichner bezeichner, int length, int start, Align alignment, Config config)
    Deprecated.
     
    Feld(Bezeichner bezeichner, int length, ByteAdresse start, Align alignment)
    Erzeugt ein neues Feld.
    protected
    Feld(Bezeichner bezeichner, int length, ByteAdresse start, Align alignment, Config config)
     
     
    Feld(Bezeichner name, int start, String s, Align alignment)
    Deprecated.
    durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
     
    Feld(Bezeichner name, ByteAdresse start, String s, Align alignment)
    Erzeugt ein neues Feld.
     
    Feld(ByteAdresse start, String s, Align alignment)
    Legt ein neues Feld an.
     
    Feld(Feld other)
    Dies ist der Copy-Constructor, mit dem man ein bestehendes Feld kopieren kann.
    protected
    Feld(Feld other, Config cfg)
     
     
    Feld(String name, int start, char c)
    Deprecated.
    durch entsprechenden Constructor mit Bezeichner und ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
     
    Feld(String name, int length, int start, char c, Align alignment)
    Deprecated.
    durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
     
    Feld(String name, int length, int start, String s, Align alignment)
    Deprecated.
    durch entsprechenden Constructor mit Bezeichner und ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
     
    Feld(String name, String s, Align alignment)
    Instantiates a new feld.
  • Method Summary

    Modifier and Type
    Method
    Description
    Die clone-Methode hat gegenueber dem CopyConstructor Feld(Feld) den Vorteil, dass es den richtigen Typ fuer die abgeleiteten Klassen zurueckliefert.
    final int
    compareTo(Feld other)
    Es gilt fuer Feld a und b: a < b, wenn die Start-Adresse von a vor b liegt.
    boolean
    Zwei Felder sind gleich, wenn sie die gleiche Adresse und den gleichen Inhalt haben.
    Diese Methode ist dafuer vorgesehen, das Feld als normalen String ausgeben zu koennen.
    final int
    Gets the anzahl bytes.
    Liefert die Ausrichtung eines Feldes.
    Liefert den Bezeichner eines Feldes zurueck.
    Gets the bezeichnung.
    final int
    Gets the byte adresse.
    final int
    Gets the end adresse.
    Liefert den Inhalt, so wie er im Record steht (ungetrimm't).
    Hierueber kann der Validator zur Pruefung im Vorfeld geholt werden.
    int
     
    final boolean
    Dient zum Ermittel, ob ein Wert schon gesetzt wurde.
    boolean
    Checks if is empty.
    boolean
    Checks if is invalid.
    boolean
    Valid bedeutet: Byte-Adresse >= 1, Feld geht nicht ueber (Teil-)Datensatz-Grenze hinaus, Ausrichtung ist bekannt.
    Liefert eine neues Feld mit neuer Konfiguration
    final boolean
    Ueberprueft, ob sich zwei Felder mit unterschiedlichen Start-Adressen ueberlagern.
    protected String
     
    final void
    Reset inhalt.
    void
    setAusrichtung(Align alignment)
    Hiermit kann man die Ausrichtung umstellen.
    void
    setInhalt(char c)
    Sets the inhalt.
    void
    setInhalt(char c, int i)
    Sets the inhalt.
    void
    setInhalt(long n)
    Setzt den Inhalt aus der uebergebenen Zahl.
    void
    setInhalt(String neuerInhalt)
    Setzt den Inhalt.
    void
    Setzt den Inhalt aus der uebergebenen Zahl.
    void
    Setzt den Inhalt mit der uebergebenen Zahl.
     
     
    protected String
    Schneidet einen zu langen String unabhaengig vom Alignment rechts ab.
    List<net.sf.oval.ConstraintViolation>
    Validate.
    List<net.sf.oval.ConstraintViolation>
    validate(Config validationConfig)
    Validiert das Feld mit der angegebenen Konfiguration.
    Setzt das Feld und liefert es als Ergebnis zurueck.
    final void
    write(Writer writer)
    Write.

    Methods inherited from class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • NULL_FELD

      public static final Feld NULL_FELD
      statt "null".
    • inhalt

      protected String inhalt
    • config

      protected final Config config
  • Constructor Details

    • Feld

      public Feld()
      Legt ein neues Feld an. Dieser Default-Konstruktor ist fuer Unterklassen vorgesehen. Da er aber auch fuer die Cloneable-Implementierung benoetigt wird, ist er 'public'.
      Since:
      1.0
    • Feld

      public Feld(String name, String s, Align alignment)
      Instantiates a new feld.
      Parameters:
      name - the name
      s - the s
      alignment - the alignment
    • Feld

      @Deprecated public Feld(Bezeichner name, int start, String s, Align alignment)
      Deprecated.
      durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
      Erzeugt ein neues Feld.
      Parameters:
      name - Name
      start - Start-Adresse
      s - der Inhalt
      alignment - the alignment
    • Feld

      public Feld(Bezeichner name, ByteAdresse start, String s, Align alignment)
      Erzeugt ein neues Feld.
      Parameters:
      name - Name
      start - Start-Adresse
      s - der Inhalt
      alignment - Ausrichtung
      Since:
      7.0 (07-Jan-2024)
    • Feld

      @Deprecated public Feld(Bezeichner bezeichner, int length, int start, Align alignment)
      Deprecated.
      durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
      Erzeugt ein neues Feld.
      Parameters:
      bezeichner - der Name des Felds
      length - die Anzahl der Bytes
      start - die Start-Adresse
      alignment - die Ausrichtung
      Since:
      1.0
    • Feld

      public Feld(Bezeichner bezeichner, int length, ByteAdresse start, Align alignment)
      Erzeugt ein neues Feld.
      Parameters:
      bezeichner - der Name des Felds
      length - die Anzahl der Bytes
      start - die Start-Adresse
      alignment - die Ausrichtung
      Since:
      7.0 (07-Jan-2024)
    • Feld

      @Deprecated protected Feld(Bezeichner bezeichner, int length, int start, Align alignment, Config config)
      Deprecated.
    • Feld

      protected Feld(Bezeichner bezeichner, int length, ByteAdresse start, Align alignment, Config config)
    • Feld

      @Deprecated public Feld(String name, int length, int start, char c, Align alignment)
      Deprecated.
      durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
      Instantiates a new feld.
      Parameters:
      name - the name
      length - the length
      start - the start
      c - the c
      alignment - the alignment
    • Feld

      @Deprecated public Feld(String name, int length, int start, String s, Align alignment)
      Deprecated.
      durch entsprechenden Constructor mit Bezeichner und ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
      Instantiates a new feld.
      Parameters:
      name - the name
      length - the length
      start - the start
      s - the s
      alignment - the alignment
    • Feld

      @Deprecated public Feld(String name, int start, char c)
      Deprecated.
      durch entsprechenden Constructor mit Bezeichner und ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
      Instantiates a new feld.
      Parameters:
      name - the name
      start - the start
      c - the c
    • Feld

      @Deprecated public Feld(int start, String s, Align alignment)
      Deprecated.
      durch entsprechenden Constructor mit ByteAdresse ersetzt (TODO: wird mit v8 entsorgt)
      Instantiates a new feld.
      Parameters:
      start - the start
      s - the s
      alignment - the alignment
    • Feld

      public Feld(ByteAdresse start, String s, Align alignment)
      Legt ein neues Feld an.
      Parameters:
      start - Start-Adresse
      s - Inhalt
      alignment - Ausrichtung
      Since:
      7.0 (07-Jan-2024)
    • Feld

      public Feld(Feld other)
      Dies ist der Copy-Constructor, mit dem man ein bestehendes Feld kopieren kann.
      Parameters:
      other - das originale Feld
    • Feld

      protected Feld(Feld other, Config cfg)
  • Method Details

    • mitConfig

      public Feld mitConfig(Config c)
      Liefert eine neues Feld mit neuer Konfiguration
      Parameters:
      c - neue Konfiguration
      Returns:
      neues NumFeld
      Since:
      5.3
    • getAusrichtung

      public Align getAusrichtung()
      Liefert die Ausrichtung eines Feldes. Dies ist hauptsaechlich fuer alhpanumerische Felder interessant.
      Returns:
      linksbuendig oder rechtsbuendig
    • setAusrichtung

      public void setAusrichtung(Align alignment)
      Hiermit kann man die Ausrichtung umstellen.
      Parameters:
      alignment - z.B. Align.LEFT
      Since:
      6.1
    • getBezeichnung

      public String getBezeichnung()
      Gets the bezeichnung.
      Returns:
      the bezeichnung
    • getBezeichner

      public Bezeichner getBezeichner()
      Liefert den Bezeichner eines Feldes zurueck.

      Vor 1.0 lieferte diese Methode einen "String" zurueck. Aus Konsistenz-Gruenden wurde die alte Implementierung in "GetBzeichnerAsString" umbenannt.

      Returns:
      den Bezeichner des Feldes
      Since:
      1.0
    • setInhalt

      public void setInhalt(String neuerInhalt)
      Setzt den Inhalt. Hierueber kann auch ein Inhalt gesetzt werden, der nicht zum Datentyp passt (z.B. Buchstaben in einem NumFeld, damit ein Import nicht beim ersten fehlerhaften Feld abbricht.

      Um festzustellen, ob ein Feld einen gueltigen Wert hat, kann die isValid()-Methode verwendet werden.

      Parameters:
      neuerInhalt - der neue Inhalt
    • pack

      protected String pack(String s)
    • truncate

      protected String truncate(String s)
      Schneidet einen zu langen String unabhaengig vom Alignment rechts ab.
      Parameters:
      s - String, der evtl. gekuerzt wird
      Returns:
      String der Laenge getAnzahlBytes()
    • setInhalt

      public void setInhalt(BigInteger n)
      Setzt den Inhalt mit der uebergebenen Zahl.
      Parameters:
      n - Zahl
      Since:
      5.0
    • setInhalt

      public void setInhalt(BigDecimal n)
      Setzt den Inhalt aus der uebergebenen Zahl.
      Parameters:
      n - der neue Inhalt
    • setInhalt

      public void setInhalt(long n)
      Setzt den Inhalt aus der uebergebenen Zahl.
      Parameters:
      n - der neue Inhalt
    • setInhalt

      public void setInhalt(char c)
      Sets the inhalt.
      Parameters:
      c - the new inhalt
    • setInhalt

      public void setInhalt(char c, int i)
      Sets the inhalt.
      Parameters:
      c - zu setzendes Zeichen
      i - index, beginnend bei 0
    • getInhalt

      public String getInhalt()
      Liefert den Inhalt, so wie er im Record steht (ungetrimm't).
      Returns:
      den Inhalt
    • withInhalt

      public Feld withInhalt(String inhalt)
      Setzt das Feld und liefert es als Ergebnis zurueck.
      Parameters:
      inhalt - neuer Inhalt
      Returns:
      das gesetzte Feld
      Since:
      5.0
    • resetInhalt

      public final void resetInhalt()
      Reset inhalt.
    • getAnzahlBytes

      public final int getAnzahlBytes()
      Gets the anzahl bytes.
      Returns:
      the anzahl bytes
    • getByteAdresse

      public final int getByteAdresse()
      Gets the byte adresse.
      Returns:
      Byte-Adresse, beginnend bei 1
    • getEndAdresse

      public final int getEndAdresse()
      Gets the end adresse.
      Returns:
      absolute End-Adresse
    • overlapsWith

      public final boolean overlapsWith(Feld other)
      Ueberprueft, ob sich zwei Felder mit unterschiedlichen Start-Adressen ueberlagern.
      Parameters:
      other - das andere Feld
      Returns:
      true, falls sich die Felder ueberlappen
    • write

      public final void write(Writer writer) throws IOException
      Write.
      Parameters:
      writer - the writer
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • isEmpty

      public boolean isEmpty()
      Checks if is empty.
      Returns:
      true, if is empty
    • hasValue

      public final boolean hasValue()
      Dient zum Ermittel, ob ein Wert schon gesetzt wurde.
      Returns:
      true, falls Feld mit einem Wert belegt ist
      Since:
      3.1
    • isValid

      public boolean isValid()
      Valid bedeutet: Byte-Adresse >= 1, Feld geht nicht ueber (Teil-)Datensatz-Grenze hinaus, Ausrichtung ist bekannt.

      Aus Performance-Gruenden stuetzt sich diese Methode nicht direkt auf validate(), sondern implementiert die entsprechenden Abfragen selbst und bricht ab, wenn er etwas ungueltiges findet.

      Returns:
      false, falls Verletzung erkannt wird
      Since:
      0.1.0
    • isInvalid

      public boolean isInvalid()
      Checks if is invalid.
      Returns:
      true, if is invalid
    • validate

      public List<net.sf.oval.ConstraintViolation> validate()
      Validate.
      Returns:
      eine Liste mit Constraint-Verletzungen
    • validate

      public List<net.sf.oval.ConstraintViolation> validate(Config validationConfig)
      Validiert das Feld mit der angegebenen Konfiguration.
      Parameters:
      validationConfig - Konfiguration
      Returns:
      Liste mit Validierungsfehler
    • format

      public String format()
      Diese Methode ist dafuer vorgesehen, das Feld als normalen String ausgeben zu koennen. Zahlen koennen so z.B. in der Form "123,45" ausgegeben werden, unter Beruecksichtigung der eingestellten "Locale".
      Returns:
      Inhalt des Feldes
      Since:
      0.5.1
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toShortString

      public String toShortString()
    • equals

      public boolean equals(Object obj)
      Zwei Felder sind gleich, wenn sie die gleiche Adresse und den gleichen Inhalt haben.

      ACHTUNG: Bis v5.1 wurde noch die Ausrichtung fuer die Gleichheit herangezogen. Ab v5.1 spielt dies aber keine Rolle mehr.

      Overrides:
      equals in class Object
      Parameters:
      obj - das andere Feld
      Returns:
      true, wenn beide Felder gleich sind
      See Also:
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • compareTo

      public final int compareTo(Feld other)
      Es gilt fuer Feld a und b: a < b, wenn die Start-Adresse von a vor b liegt.
      Specified by:
      compareTo in interface Comparable<Feld>
      Parameters:
      other - das andere Feld
      Returns:
      0 wenn beide Felder die gleiche Startadresse haben
    • getValidator

      public Feld.Validator getValidator()
      Hierueber kann der Validator zur Pruefung im Vorfeld geholt werden.
      Returns:
      aktuellen Validator
    • clone

      public Object clone()
      Die clone-Methode hat gegenueber dem CopyConstructor Feld(Feld) den Vorteil, dass es den richtigen Typ fuer die abgeleiteten Klassen zurueckliefert.
      Overrides:
      clone in class Object
      Returns:
      eine Kopie