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 length, int start, Align alignment)
    Deprecated.
    Felder ohne Bezeichner werden ab v7 nicht mehr unterstuetzt
     
    Feld(int length, Align alignment)
    Deprecated.
    Felder ohne Bezeichner werden ab v7 nicht mehr unterstuetzt
     
    Feld(int start, String s, Align alignment)
    Instantiates a new feld.
     
    Feld(Bezeichner bezeichner, int length, int start, Align alignment)
    Erzeugt ein neues Feld.
    protected
    Feld(Bezeichner bezeichner, int length, int start, Align alignment, Config config)
     
     
    Feld(Bezeichner name, int start, String s, Align alignment)
    Erzeugt ein neues Feld.
     
    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)
    Instantiates a new feld.
     
    Feld(String name, int length, int start, char c, Align alignment)
    Instantiates a new feld.
     
    Feld(String name, int length, int start, String s, Align alignment)
    Instantiates a new feld.
     
    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.
    protected Align
    Deprecated. 
    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
     
    boolean
    Dient zum Ermittel, ob ein Werte 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
     
    void
    Reset inhalt.
    void
    Deprecated.
    wird nicht mehr benoetigt
    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)
     
    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

      public Feld(Bezeichner name, int start, String s, Align alignment)
      Erzeugt ein neues Feld.
      Parameters:
      name - Name
      start - Start-Adresse
      s - der Inhalt
      alignment - the alignment
    • Feld

      public Feld(Bezeichner bezeichner, int length, int 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:
      1.0
    • Feld

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

      public Feld(String name, int length, int start, char c, Align alignment)
      Instantiates a new feld.
      Parameters:
      name - the name
      length - the length
      start - the start
      c - the c
      alignment - the alignment
    • Feld

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

      public Feld(String name, int start, char c)
      Instantiates a new feld.
      Parameters:
      name - the name
      start - the start
      c - the c
    • Feld

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

      @Deprecated public Feld(int length, Align alignment)
      Deprecated.
      Felder ohne Bezeichner werden ab v7 nicht mehr unterstuetzt
      Instantiates a new feld.

      TODO: wird mit v7 entfernt

      Parameters:
      length - the length
      alignment - the alignment
    • Feld

      @Deprecated public Feld(int length, int start, Align alignment)
      Deprecated.
      Felder ohne Bezeichner werden ab v7 nicht mehr unterstuetzt
      Instantiates a new feld.

      TODO: wird mit v7 entfernt

      Parameters:
      length - the length
      start - the start
      alignment - the alignment
    • 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
    • getDefaultAlignment

      @Deprecated protected Align getDefaultAlignment()
      Deprecated.
      Die Default-Ausrichtung ist links-buendig. Diese Vorgabe kann aber von den Unterklassen ueberschrieben werde.

      TODO: wird mit v7 entfernt

      Returns:
      links-buendig
    • 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 void resetInhalt()
      Reset inhalt.
    • setAnzahlBytes

      @Deprecated public void setAnzahlBytes(int n)
      Deprecated.
      wird nicht mehr benoetigt
      Wenn sich das Feld vergroessert, werden rechts Leerzeichen aufgefuellt (alphanumerische Zeichen sind standardmaessig linksbuendig).

      TODO: wird in v7 entsorgt

      Parameters:
      n - neue Groesse
    • 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 boolean hasValue()
      Dient zum Ermittel, ob ein Werte schon gesetzt wurde. Dabei werden typische Initialisierungswerte wie "0" als "nicht gesetzt" interpretiert.
      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)
    • 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