package org.appfuse.model;

import java.util.Date;

/**
 * Education class
 *
 * This class is used to represent a User's Education
 * on their resume
 *
 * <p>
 * <a href="Education.java.html"><i>View Source</i></a>
 * </p>
 *
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 * @version $Revision: 1.1 $ $Date: 2004/03/31 13:04:16 $
 *
 * @struts.form include-all="true" extends="BaseForm"
 * @hibernate.class table="education"
 */

public class Education extends BaseObject {

    private Long id;
    private Long resumeId;
    private String name;
    private String location;
    private Long degreeId;
    private Degree degree;
    private String state;
    private String country;
    private Date completionDate;
    private String comments;

    /**
     * Returns the id.
     * @return Long
     * 
     * @hibernate.id column="id" 
     *  generator-class="increment" unsaved-value="null"
     */
    public Long getId() {
        return id;
    }

    /**
     * Returns the name.
     * @return String
     *
     * @struts.validator type="required" msgkey="errors.required"
     * @hibernate.property column="name"  not-null="true"
     */
    public String getName() {
        return name;
    }

    /**
     * Returns the location.
     * @return String
     *  
     * @struts.validator type="required" msgkey="errors.required"
     * @hibernate.property column="location" not-null="true"
     */
    public String getLocation() {
        return location;
    }

    /**
     * Returns the parent resume.
     * @return String resumeId
     * 
     * @hibernate.property column="resume_id" not-null="true"
     */
    public Long getResumeId() {
        return resumeId;
    }
    
    /**
     * Returns the state.
     * @return String
     * 
     * @struts.validator type="required" msgkey="errors.required"
     * @hibernate.property column="state" not-null="true"
     */
    public String getState() {
        return state;
    }
    
    /**
     * @return Returns the country.
     * @struts.validator type="required" msgkey="errors.required"
     * @hibernate.property column="country" not-null="true"
     */
    public String getCountry() {
        return country;
    }
    
    
    /**
     * @struts.validator type="date" msgkey="errors.date"
     * @struts.validator-var name="datePatternStrict" value="MM/dd/yyyy"
     * @hibernate.property column="completion_date"
     * @return Returns the completionDate.
     */
    public Date getCompletionDate() {
        return completionDate;
    }
    
    /**
     * @return Returns the comments.
     * @hibernate.property column="comments" length="2000"
     */
    public String getComments() {
        return comments;
    }

    /**
     * Sets the location.
     * @param location The location to set
     */
    public void setLocation(String location) {
        this.location = location;
    }

    /**
     * Sets the id.
     * @param id The id to set
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * Sets the name.
     * @param name The name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Sets the resumeId.
     * @param resumeId The resumeId to set
     */
    public void setResumeId(Long resumeId) {
        this.resumeId = resumeId;
    }

    /**
     * Returns the degreeId.
     * @return Long
     * 
     * @hibernate.property column="degree_id"
     */
    public Long getDegreeId() {
        return degreeId;
    }

    /**
     * Sets the degreeId.
     * @param degreeId The degreeId to set
     */
    public void setDegreeId(Long degreeId) {
        this.degreeId = degreeId;
    }

    /**
     * Sets the state.
     * @param state The state to set
     */
    public void setState(String state) {
        this.state = state;
    }

    /**
     * @param comments The comments to set.
     */
    public void setComments(String comments) {
        this.comments = comments;
    }

    /**
     * @param completionDate The completionDate to set.
     */
    public void setCompletionDate(Date completionDate) {
        this.completionDate = completionDate;
    }


    /**
     * @param country The country to set.
     */
    public void setCountry(String country) {
        this.country = country;
    }
    
    /**
     * @return Returns the degree.
     * 
     * Returns the degree for this object
     * @hibernate.many-to-one
     *  insert="false" update="false" cascade="none" column="degree_id"
     *  outer-join="true"
     * @return a populated degree object (based on the degreeId)
     */
    public Degree getDegree() {
        return degree;
    }
    /**
     * @param degree The degree to set.
     */
    public void setDegree(Degree degree) {
        this.degree = degree;
    }

}