00001 //Copyright (C) 2007 Erik Arner, erik.arner@gmail.com 00002 00003 #ifndef READMETADATA_H 00004 #define READMETADATA_H 00005 00006 #include <db_cxx.h> 00007 00008 // #include <qcstring.h> 00009 // #include <qvaluelist.h> 00010 #include "generaldata.h" 00011 00012 #include "trappertypes.h" 00013 #include "trdb.h" 00014 // #include "featuregui.h" 00015 #include "trappervector.h" 00016 // #include <vector> 00017 #include "featureinfo.h" 00018 // #include <iosfwd> 00019 00020 class QDataStream; 00021 class QString; 00022 00023 /** \brief Provides non-spatial attributes to a read. 00024 * Holds its corresponding read index (recno). 00025 */ 00026 00027 class ReadMetaData : public FeatureData 00028 { 00029 public: 00030 ReadMetaData( db_recno_t rec = 0) : FeatureData(rec), beginGood_(0), endGood_(0) {} 00031 ReadMetaData( const ReadMetaData& other ); 00032 virtual ~ReadMetaData(); 00033 00034 virtual void print_debug_info(); 00035 00036 virtual void readStream( QDataStream & str ); 00037 virtual void writeStream( QDataStream & str ); 00038 00039 virtual void readAttributes( const QXmlAttributes& attr ); 00040 virtual void writeXml( ostream& stream ); 00041 00042 TrDb::IndexMap getIndexMap(); 00043 //Associate functions for secondary indices 00044 static int getName(Db *dbp, const Dbt *pkey, const Dbt *pdata, Dbt *skey); 00045 //Compare functions for secondary indices 00046 static int bt_compare_name( DB * db, const DBT *dbt1, const DBT *dbt2); 00047 00048 // FeatureInfo* info(); 00049 std::string uniqueName() { return std::string("ReadMetaData"); } 00050 00051 void setName( const std::string& n ) { name_ = n; } 00052 void setMate( const std::string& m ) { mate_ = m; } 00053 void setMateLength( const std::size_t& l ) { matelen_ = l; } 00054 void setStrand( const std::string& m ) { strand_ = m; } 00055 void setBeginGood( TR_DNA index ) { beginGood_ = index; } 00056 void setEndGood( TR_DNA index ) { endGood_ = index; } 00057 00058 std::string name() { return name_; } 00059 std::string mate() { return mate_; } 00060 std::size_t mateLength() { return matelen_; } 00061 std::string strand() { return strand_; } 00062 TR_DNA beginGood() { return beginGood_; } 00063 TR_DNA endGood() { return endGood_; } 00064 00065 00066 00067 00068 protected: 00069 // virtual FeatureInfo* makeInfo(); 00070 00071 db_recno_t readRecno; 00072 00073 FeatureInfo* m_info; 00074 std::string name_; 00075 std::string mate_; 00076 std::size_t matelen_; 00077 std::string strand_; 00078 TR_DNA beginGood_; 00079 TR_DNA endGood_; 00080 public: 00081 TrapperVector<double> tc_vec; 00082 00083 }; 00084 #endif READMETADATA_H