org.concord.biologica.engine
Class Environment

java.lang.Object
  |
  +--org.xml.sax.HandlerBase
        |
        +--org.concord.biologica.engine.EngineObject
              |
              +--org.concord.biologica.engine.Environment
All Implemented Interfaces:
org.xml.sax.DocumentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, java.io.Serializable

public final class Environment
extends EngineObject
implements java.io.Serializable

This class represents an environment. An environment is defined as a closed biosphere in which a population of organisms exists. The organisms in one environment may not move to another environment, although they may move from a subenvironment to another subenvironment.

Currently this environment doesn't contain any geometric information, but it probably should at sometime in the future, once we decide if geometric information (e.g. locations in an environment) is 2D or 3D.

An object of this class will environmentrate the following simple, non-vector property change events:

Version:
$Revision: 1.1.1.1 $ $Date: 2001/04/28 00:39:12 $
Author:
$Author: ed $
See Also:
EngineProp.ID, EngineProp.DELETED, EngineProp.HEIGHT, EngineProp.LOCKED_STATE, EngineProp.NAME, EngineProp.TERRAINS, EngineProp.WIDTH, PropertyChangeListener, Serialized Form

Fields inherited from class org.concord.biologica.engine.EngineObject
AUTOMATIC_LOCKED, AUTOMATIC_LOCKED_STRING, changes, deleted, FALSE, id, lockedState, MANUAL_AND_AUTOMATIC_LOCKED, MANUAL_AND_AUTOMATIC_LOCKED_STRING, MANUAL_LOCKED, MANUAL_LOCKED_STRING, NULL_ID, TRUE, UNLOCKED, UNLOCKED_STRING, xmlElementContext
 
Constructor Summary
Environment(World aWorld, java.lang.String aName, int aWidth, int aHeight)
          Creates a new environment with the given name.
Environment(World aWorld, java.lang.String anElementName, int anElementID, com.sun.xml.parser.Parser anXMLParser, ImportContext importContext)
          Create a new environment and start handling XML parsing events to set the properties of this object.
 
Method Summary
 void characters(char[] ch, int start, int length)
          Receive notification of character data.
 void delete()
          Delete this object, notifying parent objects and deleting any child objects.
 void delete(boolean notifyChange)
           
 void endElement(java.lang.String anElementName)
          Handle notification that the parsing of the given element has ended.
 int getHeight()
          Get the height of the environment
 java.lang.String getName()
          Return the name of this environment.
 Terrain getTerrain(int indexColumn, int indexRow)
          Get the terrain at the given indexes into the terrain array
 int getWidth()
          Get the width of the environment
 World getWorld()
          Return the world containing this environment.
 void ignorableWhitespace(char[] ch, int start, int length)
          Receive notification of ignorable white space character data.
 void setHeight(int aHeight)
          Set the height of the environment.
 void setName(java.lang.String aName)
          Set the name of this environment.
 void setTerrain(int indexColumn, int indexRow, Terrain aTerrain)
          Set the terrain at the given indexes into the terrain array.
 void setWidth(int aWidth)
          Set the width of the environment.
 void startElement(java.lang.String anElementName, org.xml.sax.AttributeList amap)
          Handle notification that the parser has hit the start of a new element with the given name and attributes.
 java.lang.String toString()
          Return a string representation of this object, usually the object's name.
 void writeToStream(java.io.PrintWriter stream)
          Writes this object to the given stream in XML format.
 
Methods inherited from class org.concord.biologica.engine.EngineObject
addPropertyChangeListener, getID, getLockedState, getLockedStateAsString, isAutomaticLocked, isDeleted, isLocked, isManualLocked, notifySelected, release, removePropertyChangeListener, setAutomaticLocked, setID, setLockedState, setLockedStateAsString, setManualLocked
 
Methods inherited from class org.xml.sax.HandlerBase
endDocument, error, fatalError, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, startDocument, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Environment

public Environment(World aWorld,
                   java.lang.String aName,
                   int aWidth,
                   int aHeight)
Creates a new environment with the given name.

Parameters:
aWorld - World - a world containing this environment
aName - String - name of this environment, may not be null
aWidth - int - the width of the environment, must be > 0
aHeight - int - the height of the environment, must be > 0
Throws:
java.lang.IllegalArgumentException - - input argument(s) illegal

Environment

public Environment(World aWorld,
                   java.lang.String anElementName,
                   int anElementID,
                   com.sun.xml.parser.Parser anXMLParser,
                   ImportContext importContext)
Create a new environment and start handling XML parsing events to set the properties of this object.

Parameters:
aWorld - World - the enclosing world for this new environment
anElementName - String - the element name
anElementID - int - the element id
anXMLParser - com.sun.xml.parser.Parser - the element parser
importContext - ImportContext - import context for mapping ids from file to this environment
Throws:
java.lang.IllegalArgumentException - - input arguments illegal
Method Detail

startElement

public void startElement(java.lang.String anElementName,
                         org.xml.sax.AttributeList amap)
                  throws org.xml.sax.SAXException
Handle notification that the parser has hit the start of a new element with the given name and attributes.

For internal elements (elements that are non-EngineObject instance variables of this object), call xmlElementContext.startElement() and xmlElementContext will receive the remaining element notifications. For external elements (elements that are EngineObject instance variables of this object), create an object of the appropriate class and that object will receive the remaining element notifications.

Overrides:
startElement in class org.xml.sax.HandlerBase
Parameters:
anElementName - String - name of element
amap - AttributeList - an attribute list

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws org.xml.sax.SAXException
Receive notification of character data.
Overrides:
characters in class org.xml.sax.HandlerBase
Parameters:
ch - char[] - characters
start - int - start of string
length - int - length of string

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
                         throws org.xml.sax.SAXException
Receive notification of ignorable white space character data.
Overrides:
ignorableWhitespace in class org.xml.sax.HandlerBase
Parameters:
ch - char[] - characters
start - int - start of string
length - int - length of string

endElement

public void endElement(java.lang.String anElementName)
                throws org.xml.sax.SAXException
Handle notification that the parsing of the given element has ended.
Overrides:
endElement in class org.xml.sax.HandlerBase
Parameters:
anElementName - String - the element name

delete

public void delete()
Delete this object, notifying parent objects and deleting any child objects.

When this method is called, a property change event is environmentrated for the property named EngineProp.DELETED.

Overrides:
delete in class EngineObject

delete

public void delete(boolean notifyChange)

toString

public java.lang.String toString()
Return a string representation of this object, usually the object's name.

Overrides:
toString in class EngineObject
Returns:
String - string representation of object

getName

public java.lang.String getName()
Return the name of this environment.

Returns:
String - name of this environment, may not be null

setName

public void setName(java.lang.String aName)
Set the name of this environment.

When this method is successful, a property change event is fired for the property named EngineProp.NAME.

Parameters:
aName - String - the new name of this environment, may not be null
Throws:
java.lang.IllegalArgumentException - - input argument illegal

getWorld

public World getWorld()
Return the world containing this environment. May not be null.

Overrides:
getWorld in class EngineObject
Returns:
World - the world containing this environment, may not be null

getWidth

public int getWidth()
Get the width of the environment
Returns:
int - width of environment in rectangles

setWidth

public void setWidth(int aWidth)
Set the width of the environment.

When this method is successful, a property change event is fired for the property named EngineProp.WIDTH.

Parameters:
aWidth - int - a new width, must be >= 0
Throws:
java.lang.IllegalArgumentException - - bad input argument

getHeight

public int getHeight()
Get the height of the environment
Returns:
int - height of environment in rectangles

setHeight

public void setHeight(int aHeight)
Set the height of the environment.

When this method is successful, a property change event is fired for the property named EngineProp.HEIGHT.

Parameters:
aHeight - int - a new height, must be >= 0
Throws:
java.lang.IllegalArgumentException - - bad input argument

getTerrain

public Terrain getTerrain(int indexColumn,
                          int indexRow)
Get the terrain at the given indexes into the terrain array
Parameters:
indexColumn - int - column index, must be valid
indexRow - int - row index, must be valid
Returns:
Terrain - terrain at given index, may be null
Throws:
java.lang.IllegalArgumentException - - invalid index

setTerrain

public void setTerrain(int indexColumn,
                       int indexRow,
                       Terrain aTerrain)
Set the terrain at the given indexes into the terrain array. When this method is successful, a property change event is fired for the property named EngineProp.TERRAINS.

Parameters:
indexColumn - int - column index, must be valid
indexRow - int - row index, must be valid
aTerrain - Terrain - terrain at given index, may be null
Throws:
java.lang.IllegalArgumentException - - invalid index

writeToStream

public void writeToStream(java.io.PrintWriter stream)
                   throws java.io.IOException
Writes this object to the given stream in XML format. Usually this method is used to write the object to a file for saving it, but that is potentially not the only use.

We could supply a default implementation that knows how to write the id value. But that convenience is not chosen because it's never correct to use just this implementation of these methods, so I'd rather have a compilation fail if a derived class fails to implement this method.

The inverse of this method is a constructor that takes a org.xml.sax.Parser argument and other arguments.

Overrides:
writeToStream in class EngineObject
Parameters:
stream - PrintWriter - print stream
Throws:
java.lang.IllegalArgumentException - - input arguments illegal
java.io.IOException - - an IO error occurred in java libraries