
com.sta.cts.LeafHashtable Maven / Gradle / Ivy
package com.sta.cts;
import java.util.Date;
import java.util.Hashtable;
import java.util.LinkedList;
/**
* Name: LeafHashtable
* Description:
* Spezielle Hash-Tabelle f?r die Behandlung von Bl?ttern im Strukturbaum.
* In der Hashtabelle liegen unter den Blatt(-Tag)-Namen (String) als
* Schl?ssel der Wert des jeweiligen Blatts (ebenfalls als String).
*
* Copyright: Copyright (c) 2002-2004, 2011, 2012, 2016-2018, 2021
* Company: >StA-Soft<
* @author StA
* @version 1.0
*/
public class LeafHashtable extends Hashtable
{
/**
* Ermittelt den Wert eines Blatts als String. Das Blatt wird aus der
* LeafHashtable entfernt.
* @param pName der Name des Blatts
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Wert des Blatts, pDefault oder null im Fehlerfall.
*/
public String getLeaf(String pName, String pDefault)
{
String s = (String) get(pName);
if (s == null)
{
return pDefault;
}
remove(pName);
return s.length() != 0 ? s : null;
}
/**
* Ermittelt den Wert eines Blatts als String.
* @param pName der Name des Blatts
* @return Wert des Blatts, null im Fehlerfall.
*/
public String getLeaf(String pName)
{
return getLeaf(pName, null);
}
/**
* String-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als String
*/
public String getLeafString(String pName, String pDefault)
{
return getLeaf(pName, pDefault);
}
/**
* String-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als String
*/
public String getLeafString(String pName)
{
return getLeafString(pName, null);
}
/**
* Integer-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Integer
*/
public Integer getLeafInt(String pName, Integer pDefault)
{
String s = getLeaf(pName);
Integer i = UniTypeConv.convString2Int(s);
return i != null ? i : pDefault;
}
/**
* Integer-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Integer
*/
public Integer getLeafInt(String pName)
{
return getLeafInt(pName, null);
}
/**
* Long-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Long
*/
public Long getLeafLong(String pName, Long pDefault)
{
String s = getLeaf(pName);
Long l = UniTypeConv.convString2Long(s);
return l != null ? l : pDefault;
}
/**
* Long-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Long
*/
public Long getLeafLong(String pName)
{
return getLeafLong(pName, null);
}
/**
* Float-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Float
*/
public Float getLeafFloat(String pName, Float pDefault)
{
String s = getLeaf(pName);
Float f = UniTypeConv.convString2Float(s);
return f != null ? f : pDefault;
}
/**
* Float-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Float
*/
public Float getLeafFloat(String pName)
{
return getLeafFloat(pName, null);
}
/**
* Double-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Double
*/
public Double getLeafDouble(String pName, Double pDefault)
{
String s = getLeaf(pName);
Double d = UniTypeConv.convString2Double(s);
return d != null ? d : pDefault;
}
/**
* Double-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Double
*/
public Double getLeafDouble(String pName)
{
return getLeafDouble(pName, null);
}
/**
* Date-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @param pMask optionale Maske
* @return Inhalt als Date (nur Datum)
*/
public Date getLeafDate(String pName, Date pDefault, String pMask)
{
String s = getLeaf(pName);
Date d = UniTypeConv.convString2Date(s, pMask);
return d != null ? d : pDefault;
}
/**
* Date-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Date (nur Datum)
*/
public Date getLeafDate(String pName, Date pDefault)
{
return getLeafDate(pName, pDefault, null);
}
/**
* Date-Blatt.
* @param pName der Name des Blatt-Tags
* @param pMask optionale Maske
* @return Inhalt als Date (nur Datum)
*/
public Date getLeafDate(String pName, String pMask)
{
return getLeafDate(pName, null, pMask);
}
/**
* Date-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Date (nur Datum)
*/
public Date getLeafDate(String pName)
{
return getLeafDate(pName, null, null);
}
/**
* Time-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @param pMask optionale Maske
* @return Inhalt als Date (nur Zeitangabe)
*/
public Date getLeafTime(String pName, Date pDefault, String pMask)
{
String s = getLeaf(pName);
Date d = UniTypeConv.convString2Time(s, pMask);
return d != null ? d : pDefault;
}
/**
* Time-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Date (nur Zeitangabe)
*/
public Date getLeafTime(String pName, Date pDefault)
{
return getLeafTime(pName, pDefault, null);
}
/**
* Time-Blatt.
* @param pName der Name des Blatt-Tags
* @param pMask optionale Maske
* @return Inhalt als Date (nur Zeitangabe)
*/
public Date getLeafTime(String pName, String pMask)
{
return getLeafTime(pName, null, pMask);
}
/**
* Time-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Date (nur Zeitangabe)
*/
public Date getLeafTime(String pName)
{
return getLeafTime(pName, null, null);
}
/**
* DateTime-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @param pMask optionale Maske
* @return Inhalt als Date (Datum und Zeitangabe)
*/
public Date getLeafDateTime(String pName, Date pDefault, String pMask)
{
String s = getLeaf(pName);
Date d = UniTypeConv.convString2DateTime(s, pMask);
return d != null ? d : pDefault;
}
/**
* DateTime-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Date (Datum und Zeitangabe)
*/
public Date getLeafDateTime(String pName, Date pDefault)
{
return getLeafDateTime(pName, pDefault, null);
}
/**
* DateTime-Blatt.
* @param pName der Name des Blatt-Tags
* @param pMask optionale Maske
* @return Inhalt als Date (Datum und Zeitangabe)
*/
public Date getLeafDateTime(String pName, String pMask)
{
return getLeafDateTime(pName, null, pMask);
}
/**
* DateTime-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Date (Datum und Zeitangabe)
*/
public Date getLeafDateTime(String pName)
{
return getLeafDateTime(pName, null, null);
}
/**
* Boolean-Blatt.
* @param pName der Name des Blatt-Tags
* @param pDefault der Standardwert, falls das Blatt nicht existiert.
* @return Inhalt als Boolean
*/
public Boolean getLeafBool(String pName, Boolean pDefault)
{
String s = getLeaf(pName);
Boolean b = UniTypeConv.convString2Bool(s);
return b != null ? b : pDefault;
}
/**
* Boolean-Blatt.
* @param pName der Name des Blatt-Tags
* @return Inhalt als Boolean
*/
public Boolean getLeafBool(String pName)
{
return getLeafBool(pName, null);
}
//---------------------------------------------------------------------------
// Erlauben von mehrfachem Auftreten von Feldern
//---------------------------------------------------------------------------
@Override
public Object get(Object key)
{
Object value = super.get(key);
if (value == null || !(value instanceof LinkedList))
{
return value;
}
else
{
LinkedList list = (LinkedList) value;
return list.getLast();
}
}
/**
* Liefert die gesamte Liste f?r einen Key oder baut eine Liste zusammen,
* falls nur ein einzelnes Objekt vorliegt.
* @param key Schl?ssel
* @return die Liste
*/
public LinkedList getList(Object key)
{
Object value = super.get(key);
LinkedList list;
if (value == null || value instanceof LinkedList)
{
list = (LinkedList) value;
}
else
{
list = new LinkedList();
list.add(value);
}
super.remove(key);
return list;
}
@Override
public Object remove(Object key)
{
Object value = super.get(key);
if (!(value instanceof LinkedList))
{
return super.remove(key);
}
else
{
LinkedList list = (LinkedList) value;
value = list.removeLast();
if (list.isEmpty())
{
super.remove(key);
}
return value;
}
}
@Override
public Object put(String key, Object value)
{
Object oldvalue = super.get(key);
if (oldvalue == null)
{
return super.put(key, value);
}
else
{
LinkedList list;
// falls schon Liste, value anh?ngen und ehemals letztes zur?ckliefern
if (oldvalue instanceof LinkedList)
{
list = (LinkedList) oldvalue;
oldvalue = list.getLast();
}
// falls keine Liste, diese erzeugen beide Werte reinpacken
// und alten Wert zur?ckliefern
else
{
list = new LinkedList();
list.add(oldvalue);
}
list.add(value);
super.put(key, list);
return oldvalue;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy