/* File: ObjectsInformation.java University of Applied Science Berne,HTA-Biel/Bienne, Computer Science Department. Diploma thesis J3D Solar System Simulator Originally written by Marcel Portner & Bernhard Hari (c) 2000 CVS - Information : $Header: /var/cvsreps/projects/c450/2000/sss3d/source_diploma/sss3d/utils/observer/ObjectsInformation.java,v 1.6 2000/12/13 13:42:03 portm Exp $ $Author: portm $ $Date: 2000/12/13 13:42:03 $ $State: Exp $ */ package sss3d.utils.observer; import sss3d.contentbranch.*; import sss3d.utils.xmlparser.XMLConstants; import sss3d.utils.SSS3dConstants; import java.util.*; /** * The class ObjectsInformation is part of the information observer - defined * by the observer pattern. * References : E.Gamma; Design Patterns ISBN 0-201-63361-2, Addison Wesley, 1995
* It stores the state (info) of the concrete observers and sends a notification to * its concrete observers when its state changes. * * @author Marcel Portner & Bernhard Hari * @version $Revision: 1.6 $ * @see ObjectInfo * @see InfoObserver */ public class ObjectsInformation extends ObjectInfo { /** * Initialization Object, keeps the state and configuration * of the solar system simulator */ private InitializationObject iniObject; /** * Constructor.
* It calls the constructor of its parent class ObjectInfo. */ public ObjectsInformation( InitializationObject iniObject ) { super(); this.iniObject = iniObject; } /** * Returns the information from the object given by the identification. * * @return id the id of the concrete observer */ public CelestialObjectInfo getInfo(String id) { boolean found = false; CelestialObjectInfo cObjInfo = null; InfoObserver io = null; // gets the object from the observer list Enumeration e = observers.elements(); while(e.hasMoreElements()) { io = (InfoObserver)e.nextElement(); if( (io.getId()).equals(id) ) { found = true; break; } } if(!found) { // not specified at the moment } else { if( io != null){ cObjInfo = io.getInfo(); if(cObjInfo != null)return cObjInfo; } return null; } return null; } // end method getInfo /** * Sets the object specified by the parameter and the * name of the celestial object. * * @param object the object associated to the parameter * @param parameter the desired parameter * @param name the name of the celestial object */ public void setParameter(Object object, int parameter ) { //System.out.println("setParameter/2"); if ( iniObject.setParameter(object, parameter, null) ) { notifyObservers( "all", parameter ); //System.out.println("set parameter = "+object.toString()+" "+parameter); if ( parameter == XMLConstants.JDAY ) { notifyObservers( "all", SSS3dConstants.RELOAD); } } } /** * Sets the object specified by the parameter and the * name of the celestial object. * * @param object the object associated to the parameter * @param parameter the desired parameter * @param name the name of the celestial object */ public void setParameter(Object object, int parameter , String name ) { //System.out.println("setParameter/3"); if ( iniObject.setParameter(object, parameter, name) ) { notifyObservers( name , parameter ); //System.out.println("set parameter = "+object.toString()+" "+parameter+" "+name); } } /** * Returns the object specified by the parameter. * * @param parameter the desired parameter * @return Object an object reference to the specified parameter */ public Object getParameter( int parameter ) { //System.out.println("get parameter = "+parameter); return iniObject.getParameter( parameter, null ); } /** * Returns the object specified by the parameter and * the object name. * * @param parameter the desired parameter * @param name the name of the celestial object * @return Object an object reference to the specified parameter */ public Object getParameter( int parameter, String name ) { //System.out.println("get parameter = "+parameter+" name = "+name); return iniObject.getParameter( parameter, name ); } /** * gets the whole state - initialization object */ public InitializationObject getInitializationObject() { return iniObject; } }// end class ObjectsInformation