public class SimplePreferences implements Preferences {
/**
* map wird mit String & Int Werten & mit dem dazugehörigen passendem
* Schlüssel gefüllt
*/
Map<String, Object> hashMap = new HashMap<String, Object>();
/**
* nodeMap wird mit den PfadNAmen & mit dem dazugehörigen passendem
* Schlüssel gefüllt
*/
Map<String, SimplePreferences> nodeMap = new HashMap<String, SimplePreferences>();
private String name;
private Preferences parent;
/**
* Erzeugt Knoten mit entsprechendem Namen
*
* @param name
*/
public SimplePreferences(String name,Preferences parent) {
super();
this.name = name;
this.parent = parent;
}
/**
* Methode packt den String Schlüssel & die String Wert in die Pereference
* und in die {@link SimplePreferences#hashMap}
*
* @param key
* Schlüssel
* @param value
* Wert
*/
@Override
public void put(String key, String value) {
hashMap.put(key, value);
}
/**
* Methode überprüft ob in der {@link SimplePreferences#hashMap} zu dem
* String Schlüssel ein passender String Wert existiert
*
* @param key
* Schlüssel in der Preference
* @param defaultValue
* Standertwert zu dem zugehörigen Schlüssel
* @return <li>defaultValue ,wenn die {@link SimplePreferences#hashMap} kein
* Wert enthält. <li>value.toString ,der enthaltene Wert in der
* {@link SimplePreferences#hashMap}
*/
@Override
public String get(String key, String defaultValue) {
Object value = hashMap.get(key);
if (value == null)
return defaultValue;
return value.toString();
}
/**
* Methode packt den String Schlüssel & den Int Wert in die Pereference und
* in die {@link SimplePreferences#hashMap}
*
* @param key
* Schlüssel
* @param value
* Wert
*/
@Override
public void putInt(String key, int value) {
hashMap.put(key, value);
}
/**
* Methode überprüft ob in der {@link SimplePreferences#hashMap} zu dem
* String Schlüssel ein passender Int Wert existiert
*
* @param key
* Schlüssel in der Preference
* @param defaultValue
* Standertwert zu dem zugehörigen Schlüssel
* @return<li>value ,der enthaltene Wert in der
* {@link SimplePreferences#hashMap} <li>defaultValue ,wenn
* ein {@link NumberFormatException} ausgelöst wird
*/
@Override
public int getInt(String key, int defaultValue) {
String value = get(key, "" + defaultValue);
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
return defaultValue;
}
}
@Override
public Preferences node(String pathName) {
int index = pathName.indexOf("/");
if (pathName == "")
return this;
if (index < 0) { // Wenn der index < 0 ist wurde kein Slash mehr
// gefunden
Preferences p = getNode(pathName);
// und im pathName steht das letzte Element
return p;
}
// Wenn der Index >=0 wurde ein Slash gefunden
pathName = pathName.substring(++index); // Der Anfang des Strings bis
// zum gefundenen Slash wird
// abgeschnitten
return node(pathName); // die Methode ruft sich selbst mit dem gekürzten
// pathName auf
}
/**
* Prüft ob ein Pfad vorhanden ist, wenn kein pfad vorhanden ist, erzeuge
* ihn und gebe ihn zurück!
*
* @param
* @return value, der gegebene oder erzeugte Pfad
*/
private Preferences getNode(String node) {
SimplePreferences value = nodeMap.get(node); // prüfen ob knoten
// vorhanden ist
if (value == null) { // knoten nicht vorhanden
value = new SimplePreferences(node,this); // knoten erzeugen
nodeMap.put(node, value);
}
return value;
}
@Override
public String name() {
return name;
}
// /**
// * Liefert den Eltern-Knoten zurück, oder null falls es sich bei diesem
// * Knoten um einen Wurzel-Knoten handelt.
// */
@Override
public Preferences parent() {
return parent;
}
@Override
public String[] childrenNames() {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void remove(String key) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void clear() throws BackingStoreException {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void putLong(String key, long value) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public long getLong(String key, long def) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void putBoolean(String key, boolean value) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public boolean getBoolean(String key, boolean def) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void putFloat(String key, float value) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public float getFloat(String key, float def) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void putDouble(String key, double value) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public double getDouble(String key, double def) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void putByteArray(String key, byte[] value) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public byte[] getByteArray(String key, byte[] def) {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public String[] keys() throws BackingStoreException {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public boolean nodeExists(String pathName) throws BackingStoreException {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void removeNode() throws BackingStoreException {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public String absolutePath() {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void flush() throws BackingStoreException {
throw new UnsupportedOperationException("Not implemented !");
}
@Override
public void sync() throws BackingStoreException {
throw new UnsupportedOperationException("Not implemented !");
}
}