/*******************************************************************************
* Copyright (c) 2004, 2010 BREDEX GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* BREDEX GmbH - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jubula.client.core.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.OrderColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.persistence.Version;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jubula.client.core.i18n.Messages;
import org.eclipse.osgi.util.NLS;
import org.eclipse.persistence.annotations.BatchFetch;
import org.eclipse.persistence.annotations.BatchFetchType;
import org.eclipse.persistence.annotations.Index;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author BREDEX GmbH
* @created 22.01.2010
*/
@Entity
@Table(name = "TESTRESULT")
class TestResultPO implements ITestResultPO {
/** standard logging */
private static Logger log = LoggerFactory.getLogger(TestResultPO.class);
/** Persistence (JPA / EclipseLink) OID */
private transient Long m_id = null;
/** Persistence (JPA / EclipseLink) version id */
private transient Integer m_version = null;
/** testresult summary id*/
private Long m_testResultSummaryId;
/** keyword type */
private int m_internalKeywordType;
/** keyword type string representation*/
private String m_keywordType;
/** keyword name */
private String m_keywordName;
/** keyword comment */
private String m_keywordComment;
/** keyword guid */
private String m_keywordGuid;
/** keyword status */
private int m_internalKeywordStatus;
/** keyword status string representation*/
private String m_keywordStatus;
/** keyword level */
private int m_keywordLevel;
/** keyword sequence */
private int m_keywordSequence;
/** timestamp */
private Date m_timestamp;
/** component name guid of cap*/
private String m_componentNameGuid;
/** component name of cap */
private String m_componentName;
/** internal component type of cap */
private String m_internalComponentType;
/** component type of cap */
private String m_componentType;
/** internal action name of cap */
private String m_internalActionName;
/** action name of cap */
private String m_actionName;
/** parameter details of cap */
private List<IParameterDetailsPO> m_parameterList =
new ArrayList<IParameterDetailsPO>();
/** status type */
private String m_statusType;
/** status description */
private String m_statusDescription;
/** status operator */
private String m_statusOperator;
/** expected value */
private String m_expectedValue;
/** actual value */
private String m_actualValue;
/** parent keyword id */
private Long m_parentKeywordID;
/** the image data */
private byte[] m_imageData;
/** the task Id of the result node */
private String m_taskId;
/**
* the boolean value to decide wether a TestCase
* should be handeled as a TestSuite in JUnit
*/
private boolean m_isJUnitTestSuite;
/**
* <code>m_omHeuristicEquivalence</code>
*/
private double m_omHeuristicEquivalence = -1.0d;
/**
* <code>m_noOfSimiliarComponents</code>
*/
private int m_noOfSimilarComponents = -1;
/** additional details for a testresultNode */
private List<ITestResultAdditionPO> m_additions =
new ArrayList<ITestResultAdditionPO>(2);
/**
* only for Persistence (JPA / EclipseLink)
*/
TestResultPO() {
//default
}
/**
* @param parameterList List of IParameterDetailsPO
* only for Persistence (JPA / EclipseLink)
*/
TestResultPO(List<IParameterDetailsPO> parameterList) {
m_parameterList = parameterList;
}
/**
*
* only for Persistence (JPA / EclipseLink)
* @return Returns the id.
*/
@Id
@GeneratedValue
@Column(name = "ID")
public Long getId() {
return m_id;
}
/**
* only for Persistence (JPA / EclipseLink)
* @param id The id to set.
*/
void setId(Long id) {
m_id = id;
}
/**
*
* {@inheritDoc}
*/
@Version
@Column(name = "INTERNAL_VERSION")
public Integer getVersion() {
return m_version;
}
/**
* @param version version
*/
@SuppressWarnings("unused")
private void setVersion(Integer version) {
m_version = version;
}
/**
*
* @return the m_testResultSummaryId
*/
@Basic
@Column(name = "INTERNAL_TESTRUN_ID")
@Index(name = "PI_TESTRUN_ID")
public Long getInternalTestResultSummaryID() {
return m_testResultSummaryId;
}
/**
* @param testResultSummaryId the testResultSummaryId to set
*/
public void setInternalTestResultSummaryID(Long testResultSummaryId) {
m_testResultSummaryId = testResultSummaryId;
}
/**
*
* @return the internalKeywordType
*/
@Basic
@Column(name = "INTERNAL_KEYWORD_TYPE", nullable = false)
public int getInternalKeywordType() {
return m_internalKeywordType;
}
/**
* @param internalKeywordType the internalKeywordType to set
*/
public void setInternalKeywordType(int internalKeywordType) {
m_internalKeywordType = internalKeywordType;
}
/**
*
* @return the keywordTypeString
*/
@Basic
@Column(name = "KEYWORD_TYPE", length = IPersistentObject.MAX_STRING_LENGTH)
public String getKeywordType() {
return m_keywordType;
}
/**
* @param keywordType the keywordType to set
*/
public void setKeywordType(String keywordType) {
m_keywordType = keywordType;
}
/**
*
* @return the keywordName
*/
@Basic
@Column(name = "KEYWORD_NAME",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getKeywordName() {
return m_keywordName;
}
/**
* @param keywordName the keywordName to set
*/
public void setKeywordName(String keywordName) {
m_keywordName = keywordName;
}
/**
*
* @return the keywordComment
*/
@Basic
@Column(
name = "KEYWORD_COMMENT",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getKeywordComment() {
return m_keywordComment;
}
/**
* @param keywordComment the keywordComment to set
*/
public void setKeywordComment(String keywordComment) {
m_keywordComment = keywordComment;
}
/**
*
* @return the keywordGuid
*/
@Basic
@Column(name = "INTERNAL_KEYWORD_GUID")
public String getInternalKeywordGuid() {
return m_keywordGuid;
}
/**
* @param keywordGuid the keywordGuid to set
*/
public void setInternalKeywordGuid(String keywordGuid) {
m_keywordGuid = keywordGuid;
}
/**
*
* @return the keywordStatus
*/
@Basic
@Column(name = "INTERNAL_KEYWORD_STATUS", nullable = false)
public int getInternalKeywordStatus() {
return m_internalKeywordStatus;
}
/**
* @param keywordStatus the keywordStatus to set
*/
public void setInternalKeywordStatus(int keywordStatus) {
m_internalKeywordStatus = keywordStatus;
}
/**
*
* @return the keywordStatus
*/
@Basic
@Column(
name = "KEYWORD_STATUS",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getKeywordStatus() {
return m_keywordStatus;
}
/**
* @param keywordStatus the keywordStatus to set
*/
public void setKeywordStatus(String keywordStatus) {
m_keywordStatus = keywordStatus;
}
/**
*
* @return the keywordLevel
*/
@Basic
@Column(name = "KEYWORD_LEVEL", nullable = false)
public int getKeywordLevel() {
return m_keywordLevel;
}
/**
* @param keywordLevel the keywordLevel to set
*/
public void setKeywordLevel(int keywordLevel) {
m_keywordLevel = keywordLevel;
}
/**
*
* @return the keywordSequence
*/
@Basic
@Column(name = "KEYWORD_SEQUENCE", nullable = false)
public int getKeywordSequence() {
return m_keywordSequence;
}
/**
* @param keywordSequence the keywordSequence to set
*/
public void setKeywordSequence(int keywordSequence) {
m_keywordSequence = keywordSequence;
}
/**
*
* @return the timestamp
*/
@Basic
@Column(name = "TIMESTAMP")
@Temporal(value = TemporalType.TIMESTAMP)
public Date getTimestamp() {
return m_timestamp;
}
/**
* @param timestamp the timestamp to set
*/
public void setTimestamp(Date timestamp) {
m_timestamp = timestamp;
}
/**
*
* @return the componentNameGuid
*/
@Basic
@Column(name = "INTERNAL_COMPONENT_NAME")
public String getInternalComponentNameGuid() {
return m_componentNameGuid;
}
/**
* @param componentNameGuid the componentNameGuid to set
*/
public void setInternalComponentNameGuid(String componentNameGuid) {
m_componentNameGuid = componentNameGuid;
}
/**
*
* @return the componentName
*/
@Basic
@Column(
name = "COMPONENT_NAME",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getComponentName() {
return m_componentName;
}
/**
* @param componentName the componentName to set
*/
public void setComponentName(String componentName) {
m_componentName = componentName;
}
/**
*
* @return the internalComponentType
*/
@Basic
@Column(
name = "INTERNAL_COMPONENT_TYPE",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getInternalComponentType() {
return m_internalComponentType;
}
/**
* @param internalComponentType the internalComponentType to set
*/
public void setInternalComponentType(String internalComponentType) {
m_internalComponentType = internalComponentType;
}
/**
*
* @return the componentType
*/
@Basic
@Column(
name = "COMPONENT_TYPE",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getComponentType() {
return m_componentType;
}
/**
* @param componentType the componentType to set
*/
public void setComponentType(String componentType) {
m_componentType = componentType;
}
/**
*
* @return the internalActionName
*/
@Basic
@Column(
name = "INTERNAL_ACTION_NAME",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getInternalActionName() {
return m_internalActionName;
}
/**
* @param internalActionName the internalActionName to set
*/
public void setInternalActionName(String internalActionName) {
m_internalActionName = internalActionName;
}
/**
*
* @return the actionName
*/
@Basic
@Column(
name = "ACTION_NAME",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getActionName() {
return m_actionName;
}
/**
* @param actionName the actionName to set
*/
public void setActionName(String actionName) {
m_actionName = actionName;
}
/**
* adds a parameter to the parameter list
* @param parameter IParameterDetailsPO
*/
public void addParameter(IParameterDetailsPO parameter) {
getHbmParameterList().add(parameter);
}
/**
*
* Access method for the m_nodeList property.
* only to use for Persistence (JPA / EclipseLink)
*
* @return the current value of the m_parameterList property
*/
@OneToMany(cascade = CascadeType.ALL,
targetEntity = ParameterDetailsPO.class,
fetch = FetchType.LAZY)
@OrderColumn(name = "IDX")
@JoinColumn(name = "FK_TESTRESULT")
@BatchFetch (size = 1000, value = BatchFetchType.IN)
List<IParameterDetailsPO> getHbmParameterList() {
return m_parameterList;
}
/**
* @param parameterList The parameterList to set.
*/
void setHbmParameterList(List<IParameterDetailsPO> parameterList) {
m_parameterList = parameterList;
}
/**
* @return the unmodifiable node list.
*/
@Transient
public List<IParameterDetailsPO> getUnmodifiableParameterList() {
return Collections.unmodifiableList(getHbmParameterList());
}
/**
*
* @return the statusType
*/
@Basic
@Column(
name = "STATUS_TYPE",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getStatusType() {
return m_statusType;
}
/**
* @param statusType the statusType to set
*/
public void setStatusType(String statusType) {
m_statusType = statusType;
}
/**
*
* @return the statusDescription
*/
@Basic
@Column(
name = "STATUS_DESCRIPTION",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getStatusDescription() {
return m_statusDescription;
}
/**
* @param statusDescription the statusDescription to set
*/
public void setStatusDescription(String statusDescription) {
if (statusDescription != null && statusDescription.length() > 1000) {
log.error(NLS.bind(
Messages.LongerThanExpected,
new Object[]{1000}) + statusDescription);
}
m_statusDescription = StringUtils.abbreviate(statusDescription, 1000);
}
/**
*
* @return the statusOperator
*/
@Basic
@Column(
name = "STATUS_OPERATOR",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getStatusOperator() {
return m_statusOperator;
}
/**
* @param statusOperator the statusOperator to set
*/
public void setStatusOperator(String statusOperator) {
m_statusOperator = statusOperator;
}
/**
*
* @return the expectedValue
*/
@Basic
@Column(
name = "STATUS_EXPECTED_VALUE",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getExpectedValue() {
return m_expectedValue;
}
/**
* @param expectedValue the expectedValue to set
*/
public void setExpectedValue(String expectedValue) {
m_expectedValue = expectedValue;
}
/**
*
* @return the actualValue
*/
@Basic
@Column(
name = "STATUS_ACTUAL_VALUE",
length = IPersistentObject.MAX_STRING_LENGTH)
public String getActualValue() {
return m_actualValue;
}
/**
* @param actualValue the actualValue to set
*/
public void setActualValue(String actualValue) {
m_actualValue = actualValue;
}
/**
*
* @return the parentKeywordID
*/
@Basic
@Column(name = "INTERNAL_PARENT_KEYWORD_ID")
public Long getInternalParentKeywordID() {
return m_parentKeywordID;
}
/**
* @param parentKeywordID the parentKeywordID to set
*/
public void setInternalParentKeywordID(Long parentKeywordID) {
m_parentKeywordID = parentKeywordID;
}
/**
* @param image the image to set
*/
public void setImage(byte[] image) {
m_imageData = image;
}
/**
* @return the image
*/
@Basic
@Lob
@Column(name = "SCREENSHOT")
public byte[] getImage() {
return m_imageData;
}
/**
* @param omHeuristicEquivalence the omHeuristicEquivalence to set
*/
public void setOmHeuristicEquivalence(double omHeuristicEquivalence) {
m_omHeuristicEquivalence = omHeuristicEquivalence;
}
/**
* @return the omHeuristicEquivalence
*/
@Basic
@Column(name = "OM_HEURISTIC_EQUIVALENCE",
nullable = false,
precision = 10,
scale = 5)
public double getOmHeuristicEquivalence() {
return m_omHeuristicEquivalence;
}
/**
* @param noOfSimilarComponents the noOfSimilarComponents to set
*/
public void setNoOfSimilarComponents(int noOfSimilarComponents) {
m_noOfSimilarComponents = noOfSimilarComponents;
}
/**
* @return the noOfSimilarComponents
*/
@Basic
@Column(name = "OM_NO_SIMILAR_COMPONENTS", nullable = false)
public int getNoOfSimilarComponents() {
return m_noOfSimilarComponents;
}
/**
* gets the value of the taskId property
*
* @return the taskId of the node
*/
@Basic
@Column(name = "TASK_ID", length = IPersistentObject.MAX_STRING_LENGTH)
public String getTaskId() {
return m_taskId;
}
/**
* For Persistence (JPA / EclipseLink) only
* Sets the value of the taskId property. If the length of
* the trimmed new taskId string is zero, the taskId property
* is set to null.
*
* @param taskId
* the new value of the taskId property
*/
public void setTaskId(String taskId) {
String newTaskId = taskId;
if (newTaskId != null) {
newTaskId = newTaskId.trim();
if (newTaskId.length() == 0) {
newTaskId = null;
}
}
m_taskId = newTaskId;
}
/**
*
* @return Returns the list of @link {@link ITestResultAdditionPO}.
*/
@OneToMany(cascade = CascadeType.ALL,
targetEntity = TestResultAdditionPO.class,
fetch = FetchType.EAGER)
@BatchFetch (size = 1000, value = BatchFetchType.IN)
@JoinColumn(name = "FK_TESTRESULT", unique = false)
public List<ITestResultAdditionPO> getTestResultAdditions() {
return m_additions;
}
/**
*
* @param additions test{@link ITestResultAdditionPO}
*/
private void setTestResultAdditions(List<ITestResultAdditionPO> additions) {
m_additions = additions;
}
/**
* this method adds additional information to the {@link TestResultPO}
* @param addition a Instance of {@link ITestResultAdditionPO}
*/
public void addAdditon(ITestResultAdditionPO addition) {
m_additions.add(addition);
}
@Override
public void setIsJUnitSuite(boolean isJUnitTestSuite) {
if (!isJUnitTestSuite) {
for (ITestResultAdditionPO iTestResultAdditionPO : m_additions) {
if (iTestResultAdditionPO.getType().
equals(ITestResultAdditionPO.TYPE.JUNIT_TEST_SUITE)) {
m_additions.remove(iTestResultAdditionPO);
}
}
} else if (isJUnitTestSuite) {
for (ITestResultAdditionPO iTestResultAdditionPO : m_additions) {
if (iTestResultAdditionPO.getType().
equals(ITestResultAdditionPO.TYPE.JUNIT_TEST_SUITE)) {
m_additions.remove(iTestResultAdditionPO);
}
}
m_additions.add(new TestResultAdditionPO(isJUnitTestSuite));
}
}
/**
* @return wether the testcase is to be treated as a JUnitTestsuite
*/
@Transient
public boolean getIsJUnitSuite() {
for (ITestResultAdditionPO iTestResultAdditionPO : m_additions) {
if (iTestResultAdditionPO.getType().
equals(ITestResultAdditionPO.TYPE.JUNIT_TEST_SUITE)) {
return (boolean)iTestResultAdditionPO.getData();
}
}
return false;
}
}