All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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