diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java | |
| download | Studium-master.tar.gz Studium-master.tar.bz2 | |
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java | 81 |
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 |
