/* * Copyright (c) 2012. The Genome Analysis Centre, Norwich, UK * MISO project contacts: Robert Davey, Mario Caccamo @ TGAC * ********************************************************************* * * This file is part of MISO. * * MISO is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MISO 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MISO. If not, see <http://www.gnu.org/licenses/>. * * ********************************************************************* */ package uk.ac.bbsrc.tgac.miso.core.data; import com.eaglegenomics.simlims.core.Note; //import com.fasterxml.jackson.annotation.*; //import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.codehaus.jackson.annotate.JsonBackReference; import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.annotate.JsonManagedReference; import org.codehaus.jackson.annotate.JsonTypeInfo; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.w3c.dom.Document; import uk.ac.bbsrc.tgac.miso.core.exception.MalformedLibraryException; import uk.ac.bbsrc.tgac.miso.core.exception.MalformedSampleQcException; import uk.ac.bbsrc.tgac.miso.core.security.SecurableByProfile; import java.util.Collection; import java.util.Date; /** * A Sample contains information about the original material upon which a sequencing experiment is to be based. * <p/> * Samples can be used in any number of sequencing {@link Experiment}s in the form of a {@link Library} that * is processed further into pooled {@link Dilution}s. Samples can be described further by a scientific name which, when * enabled, will be checked against the NCBI Taxonomy database. * <p/> * Sample properties are specified mainly by the SRA schema requirements, e.g. they have a * Sample type string based on an SRA enumeration. * * @author Rob Davey * @since 0.0.2 */ @JsonSerialize(typing = JsonSerialize.Typing.STATIC, include = JsonSerialize.Inclusion.NON_NULL) //@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id") @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include= JsonTypeInfo.As.PROPERTY, property="@class") @JsonIgnoreProperties({"securityProfile","submissionDocument"}) @PrintableBarcode public interface Sample extends SecurableByProfile, Submittable<Document>, Barcodable, Locatable, Reportable, Comparable, Deletable, Plateable { /** Field UNSAVED_ID */ public static final Long UNSAVED_ID = 0L; /** Field PREFIX */ public static final String PREFIX = "SAM"; /** * Returns the sampleId of this Sample object. * * @return Long sampleId. */ @Deprecated public Long getSampleId(); /** * Sets the sampleId of this Sample object. * * @param sampleId sampleId. */ @Deprecated public void setSampleId(Long sampleId); public void setId(long id); /** * Returns the accession of this Sample object. * * @return String accession. */ public String getAccession(); /** * Sets the accession of this Sample object. * * @param accession accession. */ public void setAccession(String accession); /** * Sets the name of this Sample object. * * @param name name. */ public void setName(String name); /** * Returns the description of this Sample object. * * @return String description. */ public String getDescription(); /** * Sets the description of this Sample object. * * @param description description. */ public void setDescription(String description); /** * Returns the scientificName of this Sample object. This should ideally match a taxon name of a species in the NCBI Taxonomy database. * * @return String scientificName. */ public String getScientificName(); /** * Sets the scientificName of this Sample object. This should ideally match a taxon name of a species in the NCBI Taxonomy database. * * @param scientificName scientificName. */ public void setScientificName(String scientificName); /** * Returns the taxonIdentifier of this Sample object. This should ideally match a taxon ID of a strain in the NCBI Taxonomy database. * * @return String taxonIdentifier. */ public String getTaxonIdentifier(); /** * Sets the taxonIdentifier of this Sample object. This should ideally match a taxon ID of a strain in the NCBI Taxonomy database. * * @param taxonIdentifier taxonIdentifier. */ public void setTaxonIdentifier(String taxonIdentifier); /** * Returns the alias of this Sample object. * * @return String alias. */ public String getAlias(); /** * Sets the alias of this Sample object. * * @param alias alias. */ public void setAlias(String alias); /** * Returns the project of this Sample object. * * @return Project project. */ //@JsonBackReference(value="project") public Project getProject(); /** * Sets the project of this Sample object. * * @param project project. */ public void setProject(Project project); /** * Sets the notes of this Sample object. * * @param notes notes. */ public void setNotes(Collection<Note> notes); /** * Adds a Note to the Set of notes of this Sample object. * * @param note Note. */ public void addNote(Note note); /** * Returns the notes of this Sample object. * * @return Collection<Note> notes. */ public Collection<Note> getNotes(); /** * Adds a Library that has been prepared from this Sample * * @param library of type Library * @throws MalformedLibraryException when the Library added is not valid */ public void addLibrary(Library library) throws MalformedLibraryException; /** * Returns the libraries prepared from this Sample object. * * @return Collection<Library> libraries. */ //@JsonManagedReference public Collection<Library> getLibraries(); /** * Registers that a SampleQC has been carried out on this Library * * @param sampleQc of type SampleQC * @throws MalformedSampleQcException when the SampleQC registered is not valid */ public void addQc(SampleQC sampleQc) throws MalformedSampleQcException; /** * Returns the sampleType of this Sample object. * * @return String sampleType. */ public String getSampleType(); /** * Sets the sampleType of this Sample object. * * @param string sampleType. */ public void setSampleType(String string); /** * Returns the receivedDate of this Sample object. * * @return Date receivedDate. */ public Date getReceivedDate(); /** * Sets the receivedDate of this Sample object. * * @param date receivedDate. */ public void setReceivedDate(Date date); /** * Returns the qcPassed of this Sample object. * * @return Boolean qcPassed. */ public Boolean getQcPassed(); /** * Sets the qcPassed attribute of this Sample object. This should be true when a suitable QC has been carried out that passes a given result. * * @param qcPassed qcPassed. */ public void setQcPassed(Boolean qcPassed); /** * Returns the sampleQCs carried out on this Sample object. * * @return Collection<SampleQC> sampleQCs. */ //@JsonManagedReference(value="sampleqcs") public Collection<SampleQC> getSampleQCs(); /** * Registers a collection of QCs to this Sample object. * * @param qcs qcs. */ void setQCs(Collection<SampleQC> qcs); Date getLastUpdated(); void setLastUpdated(Date lastUpdated); }