//This file is part of SECONDO.
//Copyright (C) 2004, University in Hagen, Department of Computer Science,
//Database Systems for New Applications.
//SECONDO is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2 of the License, or
//(at your option) any later version.
//SECONDO is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
//along with SECONDO; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package viewer.hoese.algebras.network;
import java.util.HashMap;
import java.util.Vector;
/**
* GPoints, GLines and their moving counterparts can only be displayed in the
* HoeseViewer if the network they belong two has allready been loaded.
*
* Each Network will be registered at this NetworkManager. When
* it is needed it is available via it's id. If it has not been loaded an
* exception will be thrown.
*
* WARNING: Networks are only released when a new network with the same id
* is loaded!
*
* @author Martin Scheppokat
*
*/
public class NetworkManager
{
/**
* Instance for the Singleton-Pattern of GOF
*/
private static final NetworkManager INSTANCE = new NetworkManager();
/**
* Get-Method returning the instance of the NetworkManager
*
* @return The NetworkManager
*/
public static NetworkManager getInstance()
{
return INSTANCE;
}
/**
* All Networks loaded in the client
*/
private HashMap m_xNetworks;
/**
* Private-Constructor for Singleton-Pattern
*
*/
private NetworkManager()
{
m_xNetworks = new HashMap();
}
/**
* Registers a network.
* @param in_xNetwork A network
*/
void addNetwork(Network in_xNetwork)
{
// Old network with same id will be replaced
m_xNetworks.put(new Long(in_xNetwork.getId()),
in_xNetwork);
}
/**
* Returns a network with a given id.
*
* @return A network
* @throws Exception If the network had not yet been loaded.
*/
public Network getNetwork(long in_lId)
throws NetworkNotAvailableException
{
if(!m_xNetworks.containsKey(new Long(in_lId)))
{
throw new NetworkNotAvailableException(in_lId);
}
return (Network)m_xNetworks.get(new Long(in_lId));
}
}