<$comment
EO Template for use by "eogenerator" based upon MiscMerge engine.
You may customize this file to modify the templates generated
by this tool.  See the MiscMerge documentation for a description
of the parsing language.  The engine gets passed this file and an
EOEntity to process, so the methods used must be ones that an
EOEntity can respond to.

BE SURE NOT TO INCLUDE DATES IN THIS FILE.  Since the "eogenerator"
tool tries to compare the newly generated file with the old file,
adding dates to this file will guarantee the old file gets
overridden by the new file, forcing a recompilation of your EO.$>

// <$GEN_PREFIX$><$className$>.java
// 
// Created by eogenerator
// DO NOT EDIT.  Make changes to <$className$>.java instead.

import java.lang.*;
import next.util.*;
import next.eo.*;

public abstract class <$GEN_PREFIX$><$className$> extends CustomObject {
<$foreach attribute classAttributes.@sortedNameArray do$>
    protected <$attribute.javaValueClassName$> <$attribute.name$>;<$endforeach
do$><$foreach ToOneRelationship classToOneRelationships.@sortedNameArray do$>
    protected <$ToOneRelationship.destinationEntity.referenceJavaClassName$> <$ToOneRelationship.name$>;<$endforeach
do$><$foreach ToManyRelationship classToManyRelationships.@sortedNameArray do$>
    protected MutableVector <$ToManyRelationship.name$>;<$endforeach do$>

    // this is the constructor that EOF uses.  Later (perhaps upon a willRead()) it will
    // be populated with values via CustomObject's takeValueForKey() method
    public <$GEN_PREFIX$><$className$>() {
        super();
    }

    // Archiving (Coding) is done if PageSessionStore is used.  The actual archiving
    // is done for us by CustomObject but since Java doesn't allow for inherited
    // constructors we must provide an explict one
    public <$GEN_PREFIX$><$className$>(next.util.Coder coder) {
        super(coder);
    }
<$foreach attribute classAttributes.@sortedNameArray do$>
    public <$attribute.javaValueClassName$> <$attribute.name$>() { willRead(); return <$attribute.name$>; }

    public void set<$attribute.name.initialCapitalString$>(<$attribute.javaValueClassName$> aValue) {
        willChange();
        <$attribute.name$> = aValue;
    }
<$endforeach do
$><$foreach ToOneRelationship classToOneRelationships.@sortedNameArray do$>
    public <$ToOneRelationship.destinationEntity.referenceJavaClassName$> <$ToOneRelationship.name$>() { willRead(); return <$ToOneRelationship.name$>;}

    public void set<$ToOneRelationship.name.initialCapitalString$>(<$ToOneRelationship.destinationEntity.referenceJavaClassName$> aValue) {
        willChange();
        <$ToOneRelationship.name$> = aValue;
    }<$endforeach do$>
<$foreach ToManyRelationship classToManyRelationships.@sortedNameArray do$>
    public ImmutableVector <$ToManyRelationship.name$>() {
        willRead();
        return <$ToManyRelationship.name$>;
    }

    public void addTo<$ToManyRelationship.name.initialCapitalString$>(<$ToManyRelationship.destinationEntity.referenceJavaClassName$> element) {
        willChange();
        <$ToManyRelationship.name$>.addElement(element);
    }

    public void removeFrom<$ToManyRelationship.name.initialCapitalString$>(<$ToManyRelationship.destinationEntity.referenceJavaClassName$> element) {
        willChange();
        <$ToManyRelationship.name$>.removeElement(element);
    }
<$endforeach do$>
}