/*******************************************************************************
 * Copyright 2Fi Business Solutions Ltd.
 *
 * This code is copyrighted. Under no circumstances should any party, people,
 * or organization should redistribute any portions of this code in any form,
 * either verbatim or through electronic media, to any third parties, unless
 * under explicit written permission by 2Fi Business Solutions Ltd.
 ******************************************************************************/
package com.ffii.core;

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

public interface IBaseEntity<PK extends Serializable> extends Serializable, Cloneable {

	/**
	 * @return the entity id
	 */
	public PK getId();

	/**
	 * Set the entity id
	 *
	 * @param id
	 *            the entity id
	 */
	public void setId(PK id);

	/**
	 * @return hibernate version id
	 */
	public int getVersionId();

	/**
	 * Set the hibernate version id
	 *
	 * @param versionId
	 *            the hibernate version id
	 */
	public void setVersionId(int versionId);

	/**
	 * @return entity's deleted flag
	 */
	public boolean isDeleted();

	/**
	 * Set the entity's deleted flag
	 *
	 * @param deleted
	 *            the entity's deleted flag
	 */
	public void setDeleted(boolean deleted);

	/**
	 * @return created by User ID
	 */
	public Integer getCreatedBy();

	/**
	 * Set the created by User ID
	 *
	 * @param createdBy
	 *            the created by User ID
	 */
	public void setCreatedBy(Integer createdBy);

	/**
	 * @return the last modified by User ID
	 */
	public Integer getModifiedBy();

	/**
	 * Set the last modified by User ID
	 *
	 * @param modifiedBy
	 *            the last modified by User ID
	 */
	public void setModifiedBy(Integer modifiedBy);

	/**
	 * @return created date
	 */
	public Date getCreated();

	/**
	 * Set the created date
	 *
	 * @param created
	 *            the created date
	 */
	public void setCreated(Date created);

	/**
	 * @return the last modified date
	 */
	public Date getModified();

	/**
	 * Set the last modified date
	 *
	 * @param modified
	 *            the last modified date
	 */
	public void setModified(Date modified);

}
