org.concord.biologica.engine
Class OrganismChromosomePair

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

public final class OrganismChromosomePair
extends EngineObject
implements java.io.Serializable, java.beans.PropertyChangeListener

This class represents a pair of organism chromosomes, either a pair of autosomes or a pair of sex chromosomes. This type of object should only exist for organisms of a diploid species.

In general this object is created when the organism is created and never changes from that time on. It's essentially a convenience object.

An instance of this class is contained by one organism.

An object of this class will generate the following property change events:

Version:
$Revision: 1.1.1.1 $ $Date: 2001/04/28 00:39:14 $
Author:
$Author: ed $
See Also:
EngineProp.DELETED, EngineProp.ID, EngineProp.LOCKED_STATE, 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
OrganismChromosomePair(Organism anOrganism, OrganismChromosome aFirstOrganismChromosome, OrganismChromosome aSecondOrganismChromosome)
          Create a new organism chromosome pair from the two given organism chromosomes.
OrganismChromosomePair(Organism anOrganism, java.lang.String anElementName, int anElementID, com.sun.xml.parser.Parser anXMLParser, ImportContext importContext)
          Create a new organism chromosome pair 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 getChromosomePairNumberType()
          Get the chromosome pair number number type.
 OrganismChromosome getFirstOrganismChromosome()
          Get the first organism chromosome of this pair.
 int getNumberOfOrganismAllelePairs()
          Get the number of organism allele pairs
 Organism getOrganism()
          Returns the organism chromosome pair's organism.
 java.util.Enumeration getOrganismAllelePairs()
          Returns an enumeration over the vector of all organism allele pairs in this organism chromosome pair.
 OrganismChromosome getSecondOrganismChromosome()
          Get the second organism chromosome of this pair.
 Species getSpecies()
          Returns the organism chromosome pair's species.
 World getWorld()
          Get the world containing this object.
 void ignorableWhitespace(char[] ch, int start, int length)
          Receive notification of ignorable white space character data.
 void propertyChange(java.beans.PropertyChangeEvent event)
          Handle property change events
 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

OrganismChromosomePair

public OrganismChromosomePair(Organism anOrganism,
                              OrganismChromosome aFirstOrganismChromosome,
                              OrganismChromosome aSecondOrganismChromosome)
Create a new organism chromosome pair from the two given organism chromosomes.

Parameters:
anOrganism - Organism - containing organism, may not be null
aFirstOrganismChromosome - OrganismChromosome - a first organism chromosome
aSecondOrganismChromosome - OrganismChromosome - a second organism chromosome
Throws:
java.lang.IllegalArgumentException - - input argument(s) illegal

OrganismChromosomePair

public OrganismChromosomePair(Organism anOrganism,
                              java.lang.String anElementName,
                              int anElementID,
                              com.sun.xml.parser.Parser anXMLParser,
                              ImportContext importContext)
Create a new organism chromosome pair and start handling XML parsing events to set the properties of this object.

Parameters:
anOrganism - Organism - the enclosing organism for this new organism chromosome pair
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 world
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 generated for the property named EngineProp.DELETED.

Overrides:
delete in class EngineObject

delete

public void delete(boolean notifyChange)

getChromosomePairNumberType

public int getChromosomePairNumberType()
Get the chromosome pair number number type. If this is a pair of autosomes, return the number of the chromosomes (e.g. 1, 2, 3, ...). If this is a pair of sex chromosomes, return IChromosome.SEX_CHROMOSOME.
Returns:
int - IChromosome.SEX_CHROMOSOME or a number > 0

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

getOrganism

public Organism getOrganism()
Returns the organism chromosome pair's organism.

Returns:
Organism - containing organism, never null

getSpecies

public Species getSpecies()
Returns the organism chromosome pair's species.

Returns:
Species - organism chromosome pair's species, may not be null

getWorld

public World getWorld()
Get the world containing this object.

Overrides:
getWorld in class EngineObject
Returns:
World - the world containing this object, never null.

getFirstOrganismChromosome

public OrganismChromosome getFirstOrganismChromosome()
Get the first organism chromosome of this pair.

Returns:
OrganismChromosome - the first organism chromosome in this pair, never null.

getSecondOrganismChromosome

public OrganismChromosome getSecondOrganismChromosome()
Get the second organism chromosome of this pair.

Returns:
OrganismChromosome - the second organism chromosome in this pair, never null.

getNumberOfOrganismAllelePairs

public int getNumberOfOrganismAllelePairs()
Get the number of organism allele pairs
Returns:
int - the number of organism allele pairs in this organism chromosome pair

getOrganismAllelePairs

public java.util.Enumeration getOrganismAllelePairs()
Returns an enumeration over the vector of all organism allele pairs in this organism chromosome pair.

Returns:
Enumeration - an enumeration over all organism allele pairs in this organism chromosome pair

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent event)
Handle property change events
Specified by:
propertyChange in interface java.beans.PropertyChangeListener
Parameters:
event - PropertyChangeEvent - the property change event

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