/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.navigator.tools;
/*******************************************************************************
Copyright (c) : EIG (Environmental Informatics Group)
http://www.htw-saarland.de/eig
Prof. Dr. Reiner Guettler
Prof. Dr. Ralf Denzer
HTWdS
Hochschule fuer Technik und Wirtschaft des Saarlandes
Goebenstr. 40
66117 Saarbruecken
Germany
Programmers : Pascal
Project : WuNDA 2
Version : 1.0
Purpose :
Created : 01.11.1999
History :
*******************************************************************************/
import java.util.*;
/**
* Der Object Manager verwaltet in einer Hashtable Referenzen auf Objekte. Ein Object kann sich beim ObjectManager mit
* einem bestimmten Namen registrieren und andere Klassen koennen dann ueber den ObjectManager auf dieses Object
* zugreifen.Der ObjectManager bietet hierzu enige static Funktionen an.<br>
* Der Vorteil: Es koennen auch dann Referenzen auf Objekte gebildet werden, wenn das Objekt in einer bestimmten Klasse
* nicht verfuegbar ist (keine Referenz auf dieses Objekt im Konstruktir, etc.). Besonders nuetzlich erweist sich das
* beim Registrieren von Event Listenern. Der Nachteil: Wenn eine static Methode aufgerufen wird, bevor der
* ObjektManager instantiiert wurde, kommt es zu einer NullPointerException.
*
* @author Pascal Dihé
* @version 1.0
*/
public final class ObjectManager {
//~ Static fields/initializers ---------------------------------------------
private static Hashtable objectPool = null;
//~ Constructors -----------------------------------------------------------
/**
* Erzeugt einen neue Instanz des Objektmanagers.Der Objektmanagers sollte nur genau ein mal instantiiert werden.
*/
public ObjectManager() {
objectPool = new Hashtable(10);
}
/**
* Erzeugt einen neue Instanz des Objektmanagers.Der Objektmanagers sollte nur genau ein mal instantiiert werden.
*
* @param initialCapacity Anfaengliche Groesse der Hashtable
* @param loadFactor loadFactor der Hashtable
*/
public ObjectManager(final int initialCapacity, final float loadFactor) {
objectPool = new Hashtable(initialCapacity, loadFactor);
}
//~ Methods ----------------------------------------------------------------
/**
* Registriert ein Objekt.
*
* @param objStr Name des Objekts
* @param objRef Referenz auf das Objekt
*/
public static void registerObject(final String objStr, final java.lang.Object objRef) {
final java.lang.Object objectEntry = (java.lang.Object)objectPool.get(objStr);
if (objectEntry == null) {
objectPool.put(objStr, objRef);
// else
// Exception ...
}
}
/**
* Deregistriert ein Objekt.
*
* @param objStr Name des Objekts.
*/
public static void unregisterObject(final String objStr) {
final java.lang.Object objectEntry = (java.lang.Object)objectPool.get(objStr);
if (objectEntry != null) {
objectPool.remove(objStr);
}
}
/**
* Gibt ein Referenz auf ein registriertes Objekt zurueck.
*
* @param objStr Name des Objekts.
*
* @return Referenz auf das Objekt oder null.
*/
public static java.lang.Object getRegistredObject(final String objStr) {
final java.lang.Object objectEntry = (java.lang.Object)objectPool.get(objStr);
return objectEntry;
}
}