package org.appfuse.model;

import java.io.Serializable;
import java.util.Date;


/**
 * This class is used to represent a resume's work experience.
 *
 * <p>
 * <a href="Experience.java.html"><i>View Source</i></a>
 * </p>
 *
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 * @version $Revision: 1.2 $ $Date: 2004/04/02 04:09:14 $
 *
 * @struts.form include-all="true" extends="BaseForm"
 * @hibernate.class table="experience"
 */
public class Experience extends BaseObject implements Serializable {
    //~ Instance fields ========================================================

    private Long id;
    private Long resumeId;
    private String organizationName;
    private String location;
    private String title;
    private Date startDate;
    private Date endDate;
    private String description;

    //~ Methods ================================================================

    public void setId(Long id) {
        this.id = id;
    }

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

    /**
     * @return Returns the resumeId.
     * @hibernate.property column="resume_id"
     */
    public Long getResumeId() {
        return resumeId;
    }

    /**
     * Returns the organizationName description.
     * @return String
     *
     * @struts.validator type="required"
     * @hibernate.property column="organization_name"
     */
    public String getOrganizationName() {
        return this.organizationName;
    }

    /**
     * @return Returns the location.
     * @struts.validator type="required"
     * @hibernate.property column="location" length="100"
     */
    public String getLocation() {
        return location;
    }

    /**
     * @return Returns the title.
     * @struts.validator type="required"
     * @hibernate.property column="title" length="50" not-null="true"
     */
    public String getTitle() {
        return title;
    }

    /**
     * @return Returns the startDate.
     * @struts.validator type="required"
     * @struts.validator type="date"
     * @struts.validator-var name="datePatternStrict" value="MM/dd/yyyy"
     * @hibernate.property column="start_date" not-null="true"
     */
    public Date getStartDate() {
        return startDate;
    }

    /**
     * @return Returns the endDate.
     * @struts.validator type="required"
     * @struts.validator type="date"
     * @struts.validator-var name="datePatternStrict" value="MM/dd/yyyy"
     * @hibernate.property column="end_date" not-null="true"
     */
    public Date getEndDate() {
        return endDate;
    }

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

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

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

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

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

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

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

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