/**
* TestCube is an enterprise Test management tool.
* Copyright (C) 2011 JatakaSource Ltd.
*
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* TestCube is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with TestCube. If not, see <http://www.gnu.org/licenses/>.
*/
package org.jatakasource.testcube.model.testcase;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.Index;
import org.hibernate.annotations.Type;
import org.jatakasource.testcube.model.product.Category;
import org.jatakasource.testcube.model.security.User;
import org.jatakasource.testcube.model.testplan.TestPlan;
@Entity
@Table(name = "CUB_TESTCASES", uniqueConstraints = { @UniqueConstraint(name = "UC_NAME_TESTPLAN", columnNames = { TestCase.FIELD_NAME, TestCase.COLUMN_TESTPLAN }) })
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class TestCase extends TestCasePojo {
private static final long serialVersionUID = -7757273990577559594L;
public static final String COLUMN_TESTPLAN = "testplan_id";
public static final String FIELD_TESTPLAN = "testPlan";
public static final String FIELD_TESTPLAN_ALIAS = "tp";
public static final String FIELD_CATEGORY = "category";
public static final String FIELD_CATEGORY_ALIAS = "ca";
private static final String[][] UNIQUE_CONSTRAINTS = new String[][] { new String[] { TestCase.FIELD_NAME, TestCase.FIELD_TESTPLAN } };
@Id
@SequenceGenerator(name = "CUB_TESTCASES_SEQ", sequenceName = "CUB_TESTCASES_SEQ", initialValue = 0)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "CUB_TESTCASES_SEQ")
@Override
public Long getId() {
return super.getId();
}
@Override
public void setId(Long id) {
super.setId(id);
}
@Override
@Column(length = FIELD_NAME_LENGTH, nullable = false)
@Index(name = "IDX_NAME")
public String getName() {
return super.getName();
}
@Override
public void setName(String name) {
super.setName(name);
}
@Override
@Column(length = FIELD_DESC_LENGTH, nullable = false)
@Index(name = "IDX_DESCRIPTION")
public String getDescription() {
return super.getDescription();
}
@Override
public void setDescription(String description) {
super.setDescription(description);
}
@Override
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@Fetch(FetchMode.SELECT)
@ForeignKey(name = "FK_TESTCASES_TESTPLAN")
@Index(name = "IDX_TESTCASES_TESTPLAN")
public TestPlan getTestPlan() {
return (TestPlan) super.getTestPlan();
}
public void setTestPlan(TestPlan testPlan) {
super.setTestPlan(testPlan);
}
@Override
@Column(updatable = false)
@Temporal(TemporalType.TIMESTAMP)
public Date getCreatedDate() {
return super.getCreatedDate();
}
@Override
public void setCreatedDate(Date createdDate) {
super.setCreatedDate(createdDate);
}
@Override
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@ForeignKey(name = "FK_ASSIGNEE_USERS")
@Index(name = "IDX_ASSIGNEE_USERS")
public User getAssignee() {
return (User) super.getAssignee();
}
public void setAssignee(User assignee) {
super.setAssignee(assignee);
}
@Override
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(updatable = false)
@Fetch(FetchMode.SELECT)
@ForeignKey(name = "FK_CREATEDBY_USERS")
@Index(name = "IDX_CREATEDBY_USERS")
public User getCreatedBy() {
return (User) super.getCreatedBy();
}
public void setCreatedBy(User createdBy) {
super.setCreatedBy(createdBy);
}
@Override
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@ForeignKey(name = "FK_TESTCASES_PRIORITY")
@Index(name = "IDX_TESTCASES_PRIORITY")
public CasePriority getPriority() {
return (CasePriority) super.getPriority();
}
public void setPriority(CasePriority priority) {
super.setPriority(priority);
}
@Override
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@ForeignKey(name = "FK_TESTCASES_CATEGORY")
@Index(name = "IDX_TESTCASES_CATEGORY")
public Category getCategory() {
return (Category) super.getCategory();
}
public void setCategory(Category category) {
super.setCategory(category);
}
@Override
@Column(length = 4)
public String getEstimatedTime() {
return super.getEstimatedTime();
}
@Override
public void setEstimatedTime(String estimatedTime) {
super.setEstimatedTime(estimatedTime);
}
@Override
@Column(length = FIELD_DESC_LENGTH)
public String getBugs() {
return super.getBugs();
}
@Override
public void setBugs(String bugs) {
super.setBugs(bugs);
}
@Override
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@Fetch(FetchMode.SELECT)
@ForeignKey(name = "FK_TESTCASES_STATUS")
@Index(name = "IDX_TESTCASES_STATUS")
public CaseStatus getStatus() {
return (CaseStatus) super.getStatus();
}
public void setStatus(CaseStatus status) {
super.setStatus(status);
}
@Override
@Column(length = FIELD_DESC_LENGTH)
public String getLabels() {
return super.getLabels();
}
@Override
public void setLabels(String labels) {
super.setLabels(labels);
}
@Override
@Column(length = FIELD_DESC_LENGTH)
public String getRequirements() {
return super.getRequirements();
}
@Override
public void setRequirements(String requirements) {
super.setRequirements(requirements);
}
@Lob
@Column
@Type(type = "org.hibernate.type.StringClobType")
@Override
public String getSetup() {
return super.getSetup();
}
@Override
public void setSetup(String setup) {
super.setSetup(setup);
}
@Lob
@Column
@Type(type = "org.hibernate.type.StringClobType")
@Override
public String getAction() {
return super.getAction();
}
@Override
public void setAction(String action) {
super.setAction(action);
}
@Lob
@Type(type = "org.hibernate.type.StringClobType")
@Column
@Override
public String getExpected() {
return super.getExpected();
}
@Override
public void setExpected(String expected) {
super.setExpected(expected);
}
@Override
@SuppressWarnings("unchecked")
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "CUB_TESTCASES_ATTACHMENTS")
@Fetch(FetchMode.SELECT)
public List<CaseAttachment> getAttachments() {
return super.getAttachments();
}
@Override
public <T extends CaseAttachmentPojo> void setAttachments(List<T> attachments) {
super.setAttachments(attachments);
}
@Override
public String[][] uniqueConstraints() {
return UNIQUE_CONSTRAINTS;
}
}