summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java
diff options
context:
space:
mode:
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java b/Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java
new file mode 100644
index 0000000..3322481
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java
@@ -0,0 +1,81 @@
+/* TrivialObjectStore.java */
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * Trivialer Objektspeicher, der Mengen von Name-Objekt-
+ * Paaren aufnehmen und persistent speichern kann.
+ */
+public class TrivialObjectStore
+{
+ //Instance variables
+ private String fname;
+ private Hashtable objects;
+
+ /**
+ * Erzeugt einen neuen Objektspeicher mit dem angegebenen
+ * Namen (die Erweiterung ".tos" ("trivial object store")
+ * wird ggfs. automatisch angehängt.
+ */
+ public TrivialObjectStore(String fname)
+ {
+ this.fname = fname;
+ if (!fname.endsWith(".tos")) {
+ this.fname += ".tos";
+ }
+ this.objects = new Hashtable(50);
+ }
+
+ /**
+ * Sichert den Objektspeicher unter dem im Konstruktor
+ * angegebenen Namen.
+ */
+ public void save()
+ throws IOException
+ {
+ FileOutputStream fs = new FileOutputStream(fname);
+ ObjectOutputStream os = new ObjectOutputStream(fs);
+ os.writeObject(objects);
+ os.close();
+ }
+
+ /**
+ * Lädt den Objektspeicher mit dem im Konstruktor
+ * angegebenen Namen.
+ */
+ public void load()
+ throws ClassNotFoundException, IOException
+ {
+ FileInputStream fs = new FileInputStream(fname);
+ ObjectInputStream is = new ObjectInputStream(fs);
+ objects = (Hashtable)is.readObject();
+ is.close();
+ }
+
+ /**
+ * Fügt ein Objekt in den Objektspeicher ein.
+ */
+ public void putObject(String name, Object object)
+ {
+ objects.put(name, object);
+ }
+
+ /**
+ * Liest das Objekt mit dem angegebenen Namen aus dem
+ * Objektspeicher. Ist es nicht vorhanden, wird null
+ * zurückgegeben.
+ */
+ public Object getObject(String name)
+ {
+ return objects.get(name);
+ }
+
+ /**
+ * Liefert eine Aufzählung aller gespeicherten Namen.
+ */
+ public Enumeration getAllNames()
+ {
+ return objects.keys();
+ }
+} \ No newline at end of file