From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/examples/TrivialObjectStore.java | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/TrivialObjectStore.java') 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 -- cgit v1.2.3