package com.k_int.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.OneToMany;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;


import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.MapKey;
import javax.persistence.OneToMany;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.annotations.Cascade;

/**
 *  A business entity class representing specific revision of a term.
 *  
 *  @author Ian Ibbotson
 *  @since 1.0
 */
@Entity
@Table(name = "TEST_RESOURCE")
public class ResourceHDO {
  
  public static Log log = LogFactory.getLog(ResourceHDO.class);

  private Long id = null;
  private Set<TagHDO> tags = new HashSet<TagHDO>();

  public ResourceHDO() {
  }

  @Id
  @Column(name = "ID")
  @GeneratedValue(strategy = GenerationType.AUTO)
  public Long getId() {
    return id;
  }

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

  @ManyToMany(cascade = CascadeType.ALL)
  @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
  @JoinColumn(name="TEST_RESOURCE_FK")
  @JoinTable(name="TEST_RESOURCE_TAGS")
  public Set<TagHDO> getTags() {
    return tags;
  }

  public void setTags(Set<TagHDO> tags) {
    this.tags = tags;
  }
}
