00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef FEATUREDATA_H
00016 #define FEATUREDATA_H
00017
00018 #include <db_cxx.h>
00019
00020 #include <qcstring.h>
00021 #include <qvaluelist.h>
00022 #include <qdom.h>
00023 #include "generaldata.h"
00024
00025 #include "trappertypes.h"
00026 #include "trdb.h"
00027 #include "featuregui.h"
00028 #include "trappervector.h"
00029 #include <vector>
00030 #include "featureinfo.h"
00031 #include <iosfwd>
00032
00033 class QDataStream;
00034 class QString;
00035
00036
00037
00038
00039
00040
00041
00042
00043 class FeatureData : public GeneralData
00044 {
00045 public:
00046 FeatureData( db_recno_t readRecno = 0, TR_DNA startPos = 0, TR_DNA endPos = 0);
00047 virtual ~FeatureData();
00048 virtual void readDom( QDomElement & elem );
00049 virtual void writeDom( QDomElement & elem );
00050 TrDb::IndexMap getIndexMap();
00051 TR_DNA startPos() { return s.startPos; }
00052 TR_DNA endPos() { return s.endPos; }
00053 void setStartPos( TR_DNA startPos ) { s.startPos = startPos; }
00054 void setEndPos( TR_DNA endPos ) { s.endPos = endPos; }
00055 void setReadRecno( db_recno_t readRecno ) { s.readRecno = readRecno; }
00056 FeatureGui * gui();
00057 FeatureInfo* info();
00058
00059 static int getSeqRecNo(Db * , const Dbt * , const Dbt *pdata, Dbt *skey);
00060 static int bt_compare_seqRecNo(DB * db, const DBT *dbt1, const DBT *dbt2);
00061 virtual void readStream( QDataStream & str );
00062 virtual void writeStream( QDataStream & str );
00063 virtual void readAttributes( const QXmlAttributes& attr );
00064 virtual void writeXml( ostream& stream );
00065 virtual void print_debug_info();
00066
00067
00068 protected:
00069 virtual FeatureGui * makeGui() = 0;
00070 virtual FeatureInfo* makeInfo();
00071
00072
00073
00074
00075
00076
00077
00078
00079 struct StorageData
00080 {
00081 TR_DNA startPos;
00082 TR_DNA endPos;
00083 db_recno_t readRecno;
00084 };
00085 StorageData s;
00086 FeatureGui * m_gui;
00087
00088 FeatureInfo* m_info;
00089
00090 };
00091
00092
00093
00094 class DnpData : public FeatureData
00095 {
00096 public:
00097 DnpData( ) : FeatureData(), dnpID(-1)
00098 {}
00099 DnpData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00100 void readDom( QDomElement & elem );
00101 std::string uniqueName() { return std::string("DnpData"); }
00102 TrDb::IndexMap getIndexMap() { return FeatureData::getIndexMap(); }
00103 virtual ~DnpData()
00104 {}
00105 void readStream( QDataStream & str );
00106 void writeStream( QDataStream & str );
00107 void writeDom( QDomElement & elem );
00108 void readAttributes( const QXmlAttributes& attr );
00109 void writeXml( ostream& stream );
00110 void set_dnpID(int id);
00111 int get_dnpID();
00112 void set_dnp_type(int t);
00113 int get_dnp_type();
00114
00115 protected:
00116 FeatureGui * makeGui() { return new DnpGui( this ); }
00117 FeatureInfo * makeInfo() { return new DnpInfo( this ); }
00118 int dnpID;
00119 int type;
00120 };
00121
00122
00123
00124
00125
00126 class DnaStrData : public FeatureData
00127 {
00128 public:
00129 DnaStrData( ) : FeatureData()
00130 {}
00131 DnaStrData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00132 std::string uniqueName() { return std::string("DnaStrData"); }
00133 virtual ~DnaStrData();
00134 void readStream( QDataStream & str );
00135 void writeStream( QDataStream & str );
00136 void writeDom( QDomElement & elem );
00137 void readDom( QDomElement & elem );
00138 void readAttributes( const QXmlAttributes& attr );
00139 void writeXml( ostream& stream );
00140 TrapperVector<char> dnaVector;
00141 protected:
00142 FeatureGui * makeGui() { return new DnaStrGui(this); }
00143 FeatureInfo * makeInfo() { return new DnaStrInfo(this); }
00144 };
00145
00146
00147 class ChromatData : public FeatureData
00148 {
00149 public:
00150 ChromatData() : FeatureData(), cagt_vec(4)
00151 {}
00152 ChromatData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00153 std::string uniqueName() { return std::string("ChromatData"); }
00154 virtual ~ChromatData()
00155 {}
00156 void readStream( QDataStream & str );
00157 void writeStream( QDataStream & str );
00158 void writeDom( QDomElement & elem );
00159 void readDom( QDomElement & elem );
00160 void readAttributes( const QXmlAttributes& attr );
00161 void writeXml( ostream& stream );
00162
00163 std::vector<TrapperVector<Q_UINT32> > cagt_vec;
00164 TrapperVector<Q_UINT32> phd_vec;
00165 TrapperVector<Q_UINT32> gap_vec;
00166
00167 protected:
00168 FeatureGui * makeGui() { return new ChromatGui(this); }
00169
00170 };
00171
00172
00173
00174
00175
00176 class QualityData : public FeatureData
00177 {
00178 public:
00179 QualityData() : FeatureData()
00180 {
00181
00182 }
00183 QualityData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos, int );
00184 std::string uniqueName()
00185 {
00186 return std::string("QualityData");
00187 }
00188 virtual ~QualityData()
00189 {}
00190
00191 int quality(int pos) { return qualityVector.stlVector()[pos]; }
00192 void readStream( QDataStream & str );
00193 void writeStream( QDataStream & str );
00194 void writeDom( QDomElement & elem );
00195 void readDom( QDomElement & elem );
00196 void readAttributes( const QXmlAttributes& attr );
00197 void writeXml( ostream& stream );
00198
00199 TrapperVector<Q_UINT32> qualityVector;
00200
00201 protected:
00202 FeatureGui * makeGui() { return new QualityGui(this); }
00203 FeatureInfo * makeInfo() { return new QualityInfo(this); }
00204
00205 };
00206
00207 #endif