// ** This file was generated with DemFGen (vers:12/15/2010)

package gen;

import edu.neu.ccs.demeterf.lib.*;
import edu.neu.ccs.demeterf.*;





/** Representation of Task */
public class Task extends Work{
    protected final EnglishDescription description;

    /** Construct a(n) Task Instance */
    public Task(EnglishDescription description, Option<Duration> d, Option<SlackTime> slackTime, TeamName assigned, WorkName workName){
        super(d, slackTime, assigned, workName);
        this.description = description;
    }
    /** Is the given object Equal to this Task? */
    public boolean equals(Object o){
        if(!(o instanceof Task))return false;
        if(o == this)return true;
        Task oo = (Task)o;
        return (((Object)description).equals(oo.description))&&(((Object)d).equals(oo.d))&&(((Object)slackTime).equals(oo.slackTime))&&(((Object)assigned).equals(oo.assigned))&&(((Object)workName).equals(oo.workName));
    }
    /** Parse an instance of Task from the given String */
    public static Task parse(String inpt) throws gen.ParseException{
        return new gen.TheParser(new java.io.StringReader(inpt)).parse_Task();
    }
    /** Parse an instance of Task from the given Stream */
    public static Task parse(java.io.InputStream inpt) throws gen.ParseException{
        return new gen.TheParser(inpt).parse_Task();
    }
    /** Parse an instance of Task from the given Reader */
    public static Task parse(java.io.Reader inpt) throws gen.ParseException{
        return new gen.TheParser(inpt).parse_Task();
    }

    /** Field Class for Task.description */
    public static class description extends edu.neu.ccs.demeterf.Fields.any{}

    /** DGP method from Class Display */
    public String display(){ return gen.Display.DisplayM(this); }
    /** DGP method from Class Print */
    public String print(){ return gen.Print.PrintM(this); }
    /** DGP method from Class ToStr */
    public String toStr(){ return gen.ToStr.ToStrM(this); }
    /** Updater for field Task.description */
    public Task updateDescription(EnglishDescription _description){
        return new Task(_description, d, slackTime, assigned, workName);
    }
    /** Updater for field Task.d */
    public Task updateD(Option<Duration> _d){
        return new Task(description, _d, slackTime, assigned, workName);
    }
    /** Updater for field Task.slackTime */
    public Task updateSlackTime(Option<SlackTime> _slackTime){
        return new Task(description, d, _slackTime, assigned, workName);
    }
    /** Updater for field Task.assigned */
    public Task updateAssigned(TeamName _assigned){
        return new Task(description, d, slackTime, _assigned, workName);
    }
    /** Updater for field Task.workName */
    public Task updateWorkName(WorkName _workName){
        return new Task(description, d, slackTime, assigned, _workName);
    }
    /** Getter for field Task.description */
    public EnglishDescription getDescription(){ return description; }
    /** Getter for field Task.d */
    public Option<Duration> getD(){ return d; }
    /** Getter for field Task.slackTime */
    public Option<SlackTime> getSlackTime(){ return slackTime; }
    /** Getter for field Task.assigned */
    public TeamName getAssigned(){ return assigned; }
    /** Getter for field Task.workName */
    public WorkName getWorkName(){ return workName; }

}