/* * Eoulsan development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public License version 2.1 or * later and CeCILL-C. This should be distributed with the code. * If you do not have a copy, see: * * http://www.gnu.org/licenses/lgpl-2.1.txt * http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt * * Copyright for this code is held jointly by the Genomic platform * of the Institut de Biologie de l'École normale supérieure and * the individual authors. These should be listed in @author doc * comments. * * For more information on the Eoulsan project and its aims, * or to join the Eoulsan Google group, visit the home page * at: * * http://outils.genomique.biologie.ens.fr/eoulsan * */ package fr.ens.biologie.genomique.eoulsan.data; import java.util.Set; import fr.ens.biologie.genomique.eoulsan.bio.FastqFormat; import fr.ens.biologie.genomique.eoulsan.design.Sample; import fr.ens.biologie.genomique.eoulsan.design.SampleMetadata; /** * This interface define metadata of data objects. * @since 2.0 * @author Laurent Jourdren */ public interface DataMetadata { String PAIRED_END_KEY = "pairedend"; String FASTQ_FORMAT_KEY = SampleMetadata.FASTQ_FORMAT_KEY; String SAMPLE_ID_KEY = Sample.SAMPLE_ID_FIELD; String SAMPLE_NAME_KEY = Sample.SAMPLE_NAME_FIELD; String SAMPLE_NUMBER_KEY = Sample.SAMPLE_NUMBER_FIELD; // // Low level methods // /** * Get the value of metadata entry. * @param key the key * @return the value related to key or null if the key does not exists */ String get(String key); /** * Set a metadata entry. * @param key the key * @param value the value */ void set(String key, String value); /** * Test if a key exists. * @param key the key to test * @return true if the key exists */ boolean containsKey(String key); /** * Remove a entry. * @param key the key of the entry to remove * @return true if the entry has been removed */ boolean removeKey(String key); /** * The the entries of the metadata with the entries of another metadata * object. * @param metadata the entries to add */ void set(DataMetadata metadata); /** * Clear the entries of the object. */ void clear(); /** * Get the keys of the entries. * @return a set with the keys of the entries */ Set<String> keySet(); // // Predefined methods for common entries // /** * Test if the data is paired end data. * @return true if the data is paired end data */ boolean isPairedEnd(); /** * Set single-end/paired-end data type. * @param pairedEnd true if data is paired-end data */ void setPairedEnd(boolean pairedEnd); /** * Get the FastqFormat. If value not set, the default format is fastq-sanger. * @return the fastq format */ FastqFormat getFastqFormat(); /** * Get the FastqFormat. * @param defaultValue the default value * @return the fastq format */ FastqFormat getFastqFormat(FastqFormat defaultValue); /** * Set the FASTQ format of the data. * @param fastqFormat the FASTQ format */ void setFastqFormat(FastqFormat fastqFormat); /** * Get the sample name related to the data. * @return a String with the sample name related to the data */ String getSampleName(); /** * Set the sample name related to the data. * @param sampleName the sample name */ void setSampleName(String sampleName); /** * Get the sample id related to the data. * @return the sample id or null if the value is not set */ String getSampleId(); /** * Set the sample id related to the data * @param sampleId the sample id */ void setSampleId(String sampleId); /** * Get the sample number related to the data. * @return the sample number or -1 if the value is not set */ int getSampleNumber(); /** * Set the sample number related to the data * @param sampleNumber the sample number */ void setSampleNumber(int sampleNumber); }