package org.msh.tb.entities;

import org.msh.etbm.commons.transactionlog.Operation;
import org.msh.etbm.commons.transactionlog.mapping.PropertyLog;
import org.msh.tb.entities.enums.CultureResult;
import org.msh.tb.entities.enums.SampleType;

import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import java.io.Serializable;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name="examculture")
public class ExamCulture extends LaboratoryExam implements Serializable {
	private static final long serialVersionUID = 1470269499087718301L;

	@PropertyLog(operations={Operation.NEW, Operation.DELETE})
	private CultureResult result;

	@PropertyLog(operations={Operation.NEW})
	private Integer numberOfColonies;

	private SampleType sampleType;

    @Override
    public ExamResult getExamResult() {
        if (result == null) {
            return ExamResult.UNDEFINED;
        }

        if (result.isNegative()) {
            return ExamResult.NEGATIVE;
        }

        if (result.isPositive()) {
            return ExamResult.POSITIVE;
        }

        return ExamResult.UNDEFINED;
    }

    public CultureResult getResult() {
		return result;
	}

	public void setResult(CultureResult result) {
		this.result = result;
	}

	/**
	 * @return the numberOfColonies
	 */
	public Integer getNumberOfColonies() {
		return numberOfColonies;
	}

	/**
	 * @param numberOfColonies the numberOfColonies to set
	 */
	public void setNumberOfColonies(Integer numberOfColonies) {
		this.numberOfColonies = numberOfColonies;
	}


	/**
	 * @return the sampleType
	 */
	public SampleType getSampleType() {
		return sampleType;
	}

	/**
	 * @param sampleType the sampleType to set
	 */
	public void setSampleType(SampleType sampleType) {
		this.sampleType = sampleType;
	}
}
