/*
 *
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 *
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations under
 * the License.
 *
 * The Original Code is jRelationalFramework.
 *
 * The Initial Developer of the Original Code is is.com.
 * Portions created by is.com are Copyright (C) 2000 is.com.
 * All Rights Reserved.
 *
 * Contributor(s): Jonathan Carlson (joncrlsn@users.sf.net)
 * Contributor(s): ____________________________________
 *
 * Alternatively, the contents of this file may be used under the terms of
 * the GNU General Public License (the "GPL") or the GNU Lesser General
 * Public license (the "LGPL"), in which case the provisions of the GPL or
 * LGPL are applicable instead of those above.  If you wish to allow use of
 * your version of this file only under the terms of either the GPL or LGPL
 * and not to allow others to use your version of this file under the MPL,
 * indicate your decision by deleting the provisions above and replace them
 * with the notice and other provisions required by either the GPL or LGPL
 * License.  If you do not delete the provisions above, a recipient may use
 * your version of this file under either the MPL or GPL or LGPL License.
 *
 */
package videoStore;


import com.is.jrf.PersistentObject;

import java.sql.Timestamp;


/**
 *  Instances of this class represent a customer to video relationship.
 */
public class Rental
    extends PersistentObject
  {

  /* === Fields in the Rental Table === */
  private Integer   i_customerId = null;
  private Integer   i_videoId = null;

  /* === Fields joined from other tables === */
  private String   i_videoTitle = null;
  private String   i_customerName = null;
  private String   i_mediaName = null;
  private String   i_genreName = null;

  /**  ToDo: convert this to java.util.Date */
  private Timestamp i_dateDue = null;

  public Rental()
    {
    super();
    }


  /**
   * Construct a brand new Rental object that is ready to be inserted into
   * the database.
   *
   * @param customer a value of type 'Customer'
   * @param video a value of type 'Video'
   */
  public Rental(Customer customer, Video video)
    {
    super();
    i_customerId = customer.getId();
    i_videoId = video.getId();
    }


  public Integer getCustomerId()
    {
    return i_customerId;
    }
  public void setCustomerId(Integer customerId)
    {
    i_customerId = customerId;
    this.markModifiedPersistentState();
    }
  public void setCustomer(Customer customer)
    {
    this.setCustomerName(customer.getName());
    this.setCustomerId(customer.getId());
    }


  public Integer getVideoId()
    {
    return i_videoId;
    }
  public void setVideoId(Integer videoId)
    {
    i_videoId = videoId;
    this.markModifiedPersistentState();
    }
  public void setVideo(Video video)
    {
    this.setVideoTitle(video.getTitle());
    this.setVideoId(video.getId());
    }


  public Timestamp getDateDue()
    {
    return i_dateDue;
    }
  public void setDateDue(Timestamp dateDue)
    {
    i_dateDue = dateDue;
    }


  public String getVideoTitle()
    {
    return i_videoTitle;
    }
  public void setVideoTitle(String title)
    {
    i_videoTitle = title;
    // Joined columns should not change the persistent state.
    // this.markModifiedPersistentState();
    }


  public String getMediaName()
    {
    return i_mediaName;
    }
  public void setMediaName(String mediaName)
    {
    i_mediaName = mediaName;
    // Joined columns should not change the persistent state.
    // this.markModifiedPersistentState();
    }


  public String getGenreName()
    {
    return i_genreName;
    }
  public void setGenreName(String genreName)
    {
    i_genreName = genreName;
    // Joined columns should not change the persistent state.
    // this.markModifiedPersistentState();
    }


  public String getCustomerName()
    {
    return i_customerName;
    }
  public void setCustomerName(String customerName)
    {
    i_customerName = customerName;
    // Joined columns should not change the persistent state.
    // this.markModifiedPersistentState();
    }


  public String toString()
    {
    return super.toString() + "[" + i_customerId + "," + i_videoId  + "]";
    }

  }