libdballe 9.13
explorer.h
1#ifndef DBALLE_DB_EXPLORER_H
2#define DBALLE_DB_EXPLORER_H
3
4#include <dballe/core/query.h>
5#include <dballe/db/db.h>
6#include <dballe/db/summary.h>
7#include <map>
8#include <set>
9#include <vector>
10
11namespace dballe {
12namespace db {
13
14template <typename Station> class BaseExplorer
15{
16protected:
18 std::shared_ptr<dballe::db::BaseSummary<Station>> _global_summary;
19
22
24 std::shared_ptr<dballe::db::BaseSummary<Station>> _active_summary;
25
27 void commit();
28
31
32public:
33 class Update
34 {
35 protected:
36 BaseExplorer<Station>* explorer = nullptr;
37
38 Update(BaseExplorer<Station>* explorer);
39
40 public:
41 Update();
42 Update(const Update&) = delete;
43 Update(Update&&);
44 ~Update();
45
46 Update& operator=(const Update&) = delete;
47 Update& operator=(Update&&);
48
51
54
57
60 template <typename OStation>
61 void add_explorer(const BaseExplorer<OStation>& explorer);
62
64 void add_message(const dballe::Message& message,
65 bool station_data = true, bool data = true);
66
69 const std::vector<std::shared_ptr<dballe::Message>>& messages,
70 bool station_data = true, bool data = true);
71
72 void commit();
73
74 friend class BaseExplorer<Station>;
75 };
76
77 BaseExplorer();
78 BaseExplorer(const std::string& pathname);
79 BaseExplorer(const BaseExplorer&) = delete;
80 BaseExplorer(BaseExplorer&&) = delete;
81 ~BaseExplorer();
82 BaseExplorer& operator=(const BaseExplorer&) = delete;
83 BaseExplorer& operator=(BaseExplorer&&) = delete;
84
86 const dballe::Query& get_filter() const;
87
91 void set_filter(const dballe::Query& query);
92
98 Update rebuild();
99
103 Update update();
104
107
110
112 void to_json(core::JSONWriter& writer) const;
113};
114
118typedef BaseExplorer<dballe::Station> Explorer;
119
123typedef BaseExplorer<dballe::DBStation> DBExplorer;
124
125extern template class BaseExplorer<dballe::Station>;
128extern template class BaseExplorer<dballe::DBStation>;
130 const BaseExplorer<Station>&);
131
132} // namespace db
133} // namespace dballe
134#endif
Cursor iterating over summary entries.
Definition cursor.h:99
A bulletin that has been decoded and physically interpreted.
Definition message.h:29
Query used to filter DB-All.e data.
Definition query.h:17
JSON serializer.
Definition json.h:30
void add_messages(const std::vector< std::shared_ptr< dballe::Message > > &messages, bool station_data=true, bool data=true)
Merge the contents of a vector of messages.
void add_explorer(const BaseExplorer< OStation > &explorer)
Merge the currently selected contents of another explorer into this one.
void add_message(const dballe::Message &message, bool station_data=true, bool data=true)
Merge the contents of a message.
void add_json(core::json::Stream &in)
Load the explorer contents from JSON.
void add_db(dballe::db::Transaction &tr)
Merge summary data from a database.
void add_cursor(dballe::CursorSummary &cur)
Merge summary data from a database.
Definition explorer.h:15
std::shared_ptr< dballe::db::BaseSummary< Station > > _active_summary
Definition explorer.h:24
void set_filter(const dballe::Query &query)
Set a new filter, updating all browsing data.
void to_json(core::JSONWriter &writer) const
Export the explorer to JSON.
Update rebuild()
Throw away all cached data and rebuild the explorer from scratch.
std::shared_ptr< dballe::db::BaseSummary< Station > > _global_summary
Definition explorer.h:18
void update_active_summary()
Regenerate _active_summary based on filter.
dballe::core::Query filter
Definition explorer.h:21
const dballe::db::BaseSummary< Station > & global_summary() const
Get a reference to the global summary.
void commit()
Commit changes to disk.
const dballe::Query & get_filter() const
Get the current filter.
Update update()
Merge new data into the explorer.
const dballe::db::BaseSummary< Station > & active_summary() const
Get a reference to the summary for the current filter.
High level objects for working with DB-All.e DB summaries.
Definition summary.h:71
Definition db/db.h:156
Functions used to connect to DB-All.e and insert, query and delete data.
Station information.
Definition types.h:879
Standard dballe::Query implementation.
Definition core/query.h:36
Definition json.h:163