source: tags/arb_5.1/GENOM_IMPORT/DBwriter.h

Last change on this file was 5853, checked in by westram, 15 years ago
  • followup to [5852] (more to follow)
    • GB_get_error() → GB_await_error() where appropriate (GENOM,GENOM_IMPORT)
    • fixed error handling in several functions
File size: 2.8 KB
Line 
1// ================================================================ //
2//                                                                  //
3//   File      : DBwriter.h                                         //
4//   Purpose   :                                                    //
5//                                                                  //
6//   Coded by Ralf Westram (coder@reallysoft.de) in November 2006   //
7//   Institute of Microbiology (Technical University Munich)        //
8//   http://www.arb-home.de/                                        //
9//                                                                  //
10// ================================================================ //
11#ifndef DBWRITER_H
12#define DBWRITER_H
13
14#ifndef METAINFO_H
15#include "MetaInfo.h"
16#endif
17#ifndef FEATURE_H
18#include "Feature.h"
19#endif
20#ifndef SEQUENCEBUFFER_H
21#include "SequenceBuffer.h"
22#endif
23#ifndef IMPORTER_H
24#include "Importer.h"
25#endif
26#ifndef GENOMEIMPORT_H
27#include "GenomeImport.h"
28#endif
29
30
31#ifndef ARBDB_H
32#include <arbdb.h>
33#endif
34
35class UniqueNameDetector;
36
37class DBerror {
38    // error class used for DB errors
39
40    string err;                 // error message
41
42    void init(const string& msg, GB_ERROR gberror);
43
44public:
45    DBerror();
46    DBerror(const char *msg);
47    DBerror(const string& msg);
48    DBerror(const char *msg, GB_ERROR gberror);
49    DBerror(const string& msg, GB_ERROR gberror);
50
51    const string& getMessage() const { return err; }
52};
53
54typedef map<string, int> NameCounter;
55class Translator;
56
57class DBwriter : public Noncopyable {
58    const char     *ali_name;
59    ImportSession&  session;
60
61    // following data is valid for one organism write :
62    GBDATA      *gb_organism;   // current organism
63    GBDATA      *gb_gene_data;  // current gene data
64    NameCounter  generatedGenes; // helper to create unique gene names (key = name, value = count occurances)
65
66    void testAndRemoveTranslations(Importer& importer); // test and delete translations (if test was ok). warns via Importer
67    void hideUnwantedGenes();
68
69    static Translator *unreserve;
70    static const string& getUnreservedQualifier(const string& qualifier);
71
72public:
73    DBwriter(ImportSession& session_, const char *Ali_name)
74    // : gb_species_data(Gb_species_data)
75        : ali_name(Ali_name)
76        // , UND_species(Und_species)
77        , session(session_)
78        , gb_organism(0)
79        , gb_gene_data(0)
80    {}
81
82    void createOrganism(const string& flatfile, const char *importerTag);
83
84    void writeFeature(const Feature& feature);
85    void writeSequence(const SequenceBuffer& seqData);
86
87    void renumberDuplicateGenes();
88    void finalizeOrganism(const MetaInfo& meta, const References& refs, Importer& importer);
89
90    static void deleteStaticData();
91};
92
93
94#else
95#error DBwriter.h included twice
96#endif // DBWRITER_H
97
98
99
Note: See TracBrowser for help on using the repository browser.