net.sourceforge.seqware.pipeline.plugins.batchmetadatainjection.SampleInfo.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.seqware.pipeline.plugins.batchmetadatainjection.SampleInfo.java

Source

/*
 * Copyright (C) 2013 SeqWare
 *
 * This program 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.
 *
 * This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package net.sourceforge.seqware.pipeline.plugins.batchmetadatainjection;

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import net.sourceforge.seqware.common.metadata.Metadata;
import net.sourceforge.seqware.common.model.IUSAttribute;
import net.sourceforge.seqware.common.model.Organism;
import net.sourceforge.seqware.common.model.SampleAttribute;
import org.apache.commons.lang.StringUtils;

/**
 *
 * @author mtaschuk
 */
public class SampleInfo implements Comparable<SampleInfo> {

    private String blank = "";
    //sample required
    private String projectCode = blank;
    private String individualNumber = blank;
    private String name = blank;
    private String tissueType = blank;
    private String tissueOrigin = blank;
    //    private String templateType = blank;
    private String librarySizeCode;
    private String organismId;
    private String librarySourceTemplateType;
    private String parentSample = blank;
    //required: determine pairedEnd from libraryType
    private String libraryType = blank;
    private Boolean pairedEnd;
    //sample optional
    private String tissuePreparation = blank;
    private String targetedResequencing = blank;
    private String sampleDescription;
    //ius    
    private String barcode = blank;
    private String iusName;
    private String iusDescription;
    private boolean iusSkip = false;
    private Set<TagValueUnit> sampleAttributes;
    private Set<TagValueUnit> iusAttributes;

    public String getIndividualNumber() {
        return individualNumber;
    }

    public void setIndividualNumber(String individualNumber) {
        this.individualNumber = individualNumber;
    }

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectName) {
        this.projectCode = projectName;
    }

    /**
     * Get the value of iusSkip
     *
     * @return the value of iusSkip
     */
    public boolean getIusSkip() {
        return iusSkip;
    }

    /**
     * Set the value of iusSkip
     *
     * @param iusSkip new value of iusSkip
     */
    public void setIusSkip(boolean iusSkip) {
        this.iusSkip = iusSkip;
    }

    /**
     * Get the value of iusDescription
     *
     * @return the value of iusDescription
     */
    public String getIusDescription() {
        return iusDescription;
    }

    /**
     * Set the value of iusDescription
     *
     * @param iusDescription new value of iusDescription
     */
    public void setIusDescription(String iusDescription) {
        this.iusDescription = iusDescription;
    }

    /**
     * Get the value of iusName
     *
     * @return the value of iusName
     */
    public String getIusName() {
        return iusName;
    }

    /**
     * Set the value of iusName
     *
     * @param iusName new value of iusName
     */
    public void setIusName(String iusName) {
        this.iusName = iusName;
    }

    /**
     * Get the value of sampleDescription
     *
     * @return the value of sampleDescription
     */
    public String getSampleDescription() {
        return sampleDescription;
    }

    /**
     * Set the value of sampleDescription
     *
     * @param sampleDescription new value of sampleDescription
     */
    public void setSampleDescription(String sampleDescription) {
        this.sampleDescription = sampleDescription;
    }

    /**
     * Get the value of librarySourceTemplateType
     *
     * @return the value of librarySourceTemplateType
     */
    public String getLibrarySourceTemplateType() {
        return librarySourceTemplateType;
    }

    /**
     * Set the value of librarySourceTemplateType sets the
     * 'geo_library_source_template_type' attribute.
     *
     * @param librarySourceTemplateType new value of librarySourceTemplateType
     */
    public void setLibrarySourceTemplateType(String librarySourceTemplateType) {
        setSampleAttribute("geo_library_source_template_type", librarySourceTemplateType);
        this.librarySourceTemplateType = librarySourceTemplateType;
    }

    public String getLibrarySizeCode() {
        return librarySizeCode;
    }

    /**
     * Sets the library size code and sets the 'geo_library_size_code'
     * attribute.
     *
     * @param librarySizeCode
     */
    public void setLibrarySizeCode(String librarySizeCode) {
        setSampleAttribute("geo_library_size_code", String.valueOf(librarySizeCode));
        this.librarySizeCode = librarySizeCode;
    }

    public String getLibraryType() {
        return libraryType;
    }

    /**
     * Sets the library type and sets the 'geo_library_type' attribute .
     *
     * @param libraryType
     */
    public void setLibraryType(String libraryType) {
        setSampleAttribute("geo_library_type", String.valueOf(libraryType));
        this.libraryType = libraryType;
    }

    public String getOrganismId() {
        return organismId;
    }

    /**
     * Sets the organismId, as long as the organism id is over 0.
     *
     * @param organismId
     */
    public void setOrganismId(int organismId) {
        if (organismId > 0) {
            this.organismId = String.valueOf(organismId);
        }
    }

    public Boolean getPairedEnd() {
        return pairedEnd;
    }

    public void setPairedEnd(Boolean pairedEnd) {
        this.pairedEnd = pairedEnd;
    }

    /**
     * Get the value of iusAttributes
     *
     * @return the value of iusAttributes
     */
    public Set<TagValueUnit> getIusAttributes() {
        if (iusAttributes == null) {
            iusAttributes = new HashSet<TagValueUnit>();
        }
        return iusAttributes;
    }

    /**
     * Adds a new ius attribute if the tag does not exist for this ius, or
     * changes the value of an existing ius attribute.
     *
     * @param tag the key of the attribute
     * @param value the value of the attribute
     */
    public void setIusAttribute(String tag, String value) {
        TagValueUnit sa = null;
        //look for the existing attribute
        for (TagValueUnit s : getIusAttributes()) {
            if (s.getTag().equals(tag.trim())) {
                sa = s;
                break;
            }
        }
        //if we are unsetting the sample attribute, remove it from the list.
        if (value == null && sa != null) {
            getIusAttributes().remove(sa);
            return;
        }
        //create a new one if it doesn't exist
        if (sa == null) {
            sa = new TagValueUnit();
            getIusAttributes().add(sa);
        }
        sa.setTag(tag.trim());
        sa.setValue(value.trim());
    }

    /**
     * Set the value of iusAttributes
     *
     * @param iusAttributes new value of iusAttributes
     */
    public void setIusAttributes(Set<TagValueUnit> iusAttributes) {
        this.iusAttributes = iusAttributes;
    }

    /**
     * Get the value of sampleAttributes
     *
     * @return the value of sampleAttributes
     */
    public Set<TagValueUnit> getSampleAttributes() {
        if (sampleAttributes == null) {
            sampleAttributes = new HashSet<TagValueUnit>();
        }
        return sampleAttributes;
    }

    /**
     * Adds a new sample attribute if the tag does not exist for this sample, or
     * changes the value of an existing sample attribute.
     *
     * @param tag the key of the attribute
     * @param value the value of the attribute
     */
    public void setSampleAttribute(String tag, String value) {
        TagValueUnit sa = null;
        //look for the existing attribute
        for (TagValueUnit s : getSampleAttributes()) {
            if (s.getTag().equals(tag.trim())) {
                sa = s;
                break;
            }
        }
        //if we are unsetting the sample attribute, remove it from the list.
        if (value == null) {
            if (sa != null) {
                getSampleAttributes().remove(sa);
            }
            return;
        }
        if (sa == null) {
            sa = new TagValueUnit();
            getSampleAttributes().add(sa);
        }
        sa.setTag(tag.trim());
        sa.setValue(value.trim());
    }

    /**
     * Set the value of sampleAttributes
     *
     * @param sampleAttributes new value of sampleAttributes
     */
    public void setSampleAttributes(Set<TagValueUnit> sampleAttributes) {
        this.sampleAttributes = sampleAttributes;
    }

    public SampleInfo() {
    }

    /**
     * Get the value of parentSample
     *
     * @return the value of parentSample
     */
    public String getParentSample() {
        return new StringBuilder().append(projectCode).append("_").append(individualNumber).toString();
    }

    //    /**
    //     * Set the value of parentSample
    //     *
    //     * @param parentSample new value of parentSample
    //     */
    //    public void setParentSample(String parentSample) {
    //        this.parentSample = parentSample;
    //    }
    /**
     * Get the value of barcode
     *
     * @return the value of barcode
     */
    public String getBarcode() {
        return barcode;
    }

    /**
     * Set the value of barcode
     *
     * @param barcode new value of barcode
     */
    public void setBarcode(String barcode) {
        this.barcode = barcode;
    }

    /**
     * Get the value of targetedResequencing
     *
     * @return the value of targetedResequencing
     */
    public String getTargetedResequencing() {
        return targetedResequencing;
    }

    /**
     * Set the value of targetedResequencing and sets the
     * 'geo_targeted_resequencing' attribute.
     *
     * @param targetedResequencing new value of targetedResequencing
     */
    public void setTargetedResequencing(String targetedResequencing) {
        setSampleAttribute("geo_targeted_resequencing", targetedResequencing);
        this.targetedResequencing = targetedResequencing;
    }

    /**
     * Get the value of tissuePreparation
     *
     * @return the value of tissuePreparation
     */
    public String getTissuePreparation() {
        return tissuePreparation;
    }

    /**
     * Set the value of tissuePreparation, and sets the 'geo_tissue_preparation'
     * attribute.
     *
     * @param tissuePreparation new value of tissuePreparation
     */
    public void setTissuePreparation(String tissuePreparation) {
        setSampleAttribute("geo_tissue_preparation", tissuePreparation);
        this.tissuePreparation = tissuePreparation;
    }

    /**
     * Get the value of tissueOrigin
     *
     * @return the value of tissueOrigin
     */
    public String getTissueOrigin() {
        return tissueOrigin;
    }

    /**
     * Set the value of tissueOrigin and sets the 'geo_tissue_origin' attribute.
     *
     * @param tissueOrigin new value of tissueOrigin
     */
    public void setTissueOrigin(String tissueOrigin) {
        setSampleAttribute("geo_tissue_origin", tissueOrigin);
        this.tissueOrigin = tissueOrigin;
    }

    /**
     * Get the value of tissueType
     *
     * @return the value of tissueType
     */
    public String getTissueType() {
        return tissueType;
    }

    /**
     * Set the value of tissueType and sets the 'geo_tissue_type' attribute.
     *
     * @param tissueType new value of tissueType
     */
    public void setTissueType(String tissueType) {
        setSampleAttribute("geo_tissue_type", tissueType);
        this.tissueType = tissueType;
    }

    /**
     * Get the value of name
     *
     * @return the value of name
     */
    public String getName() {
        return name;
    }

    /**
     * Set the value of name
     *
     * @param name new value of name
     */
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "SampleInfo{" + "projectCode=" + projectCode + "\n\t individualNumber=" + individualNumber
                + "\n\t name=" + name + "\n\t tissueType=" + tissueType + "\n\t tissueOrigin=" + tissueOrigin
                + "\n\t librarySizeCode=" + librarySizeCode + "\n\t organismId=" + organismId
                + "\n\t librarySourceTemplateType=" + librarySourceTemplateType + "\n\t parentSample="
                + parentSample + "\n\t libraryType=" + libraryType + "\n\t pairedEnd=" + pairedEnd
                + "\n\t tissuePreparation=" + tissuePreparation + "\n\t targetedResequencing="
                + targetedResequencing + "\n\t sampleDescription=" + sampleDescription + "\n\t barcode=" + barcode
                + "\n\t iusName=" + iusName + "\n\t iusDescription=" + iusDescription + "\n\t iusSkip=" + iusSkip
                + "\n\t sampleAttributes=" + sampleAttributes + "\n\t iusAttributes=" + iusAttributes + '}';
    }

    public void print(Appendable writer, Metadata metadata) throws IOException {
        String organism = "<null>";
        if (organismId != null && !organismId.trim().isEmpty() && StringUtils.isNumeric(organismId)) {
            for (Organism st : metadata.getOrganisms()) {
                if (st.getOrganismId().equals(Integer.parseInt(organismId))) {
                    organism = st.getName();
                }
            }
        }

        writer.append("\n\t\tSampleInfo {");
        writer.append("\n\t\t\t projectCode=" + projectCode);
        writer.append("\n\t\t\t individualNumber=" + individualNumber);
        writer.append("\n\t\t\t sampleName=" + name);
        writer.append("\n\t\t\t sampleDescription=" + sampleDescription);
        writer.append("\n\t\t\t barcode=" + barcode);
        writer.append("\n\t\t\t barcodeName=" + iusName);
        writer.append("\n\t\t\t barcodeDescription=" + iusDescription);
        writer.append("\n\t\t\t tissueType=" + tissueType);
        writer.append("\n\t\t\t tissueOrigin=" + tissueOrigin);
        writer.append("\n\t\t\t tissuePreparation=" + tissuePreparation);
        writer.append("\n\t\t\t librarySizeCode=" + librarySizeCode);
        writer.append("\n\t\t\t organism=" + organism);
        writer.append("\n\t\t\t librarySourceTemplateType=" + librarySourceTemplateType);
        writer.append("\n\t\t\t libraryType=" + libraryType);
        writer.append("\n\t\t\t pairedEnd=" + pairedEnd);
        writer.append("\n\t\t\t targetedResequencing=" + targetedResequencing);
        writer.append("\n\t\t\t skipBarcode=" + iusSkip);

        writer.append("\n\t\t}");
    }

    @Override
    public int compareTo(SampleInfo otherSample) {
        int i = Integer.parseInt(this.barcode) - Integer.parseInt(otherSample.getBarcode());
        if (i != 0) {
            return i;
        }
        i = this.projectCode.compareTo(otherSample.projectCode);
        if (i != 0) {
            return i;
        }
        i = this.iusName.compareTo(otherSample.iusName);
        if (i != 0) {
            return i;
        }
        i = this.iusDescription.compareTo(otherSample.iusDescription);
        return i;
    }
}