CARMA C++
PDB_BSON_Convert.h
1 /*
2  * CARMA Project Database BSON <-> CORBA Conversion
3  */
4 
5 #ifndef PDB_BSON_CONVERT_H
6 #define PDB_BSON_CONVERT_H
7 
8 #include <carma/observertools/ProjectDatabaseManager.h>
9 
10 #include <mongo/client/dbclient.h>
11 #include <mongo/bson/bsonobj.h>
12 
13 #include <string>
14 #include <vector>
15 
16 namespace carma {
17 namespace observertools {
18 
19 // Convert BSON object types to CORBA object types
20 std::vector<Project> convertBSONProjects(const std::vector<mongo::BSONObj> &objects);
21 std::vector<Obsblock> convertBSONObsblocks(const std::vector<mongo::BSONObj> &objects);
22 std::vector<SubObsblock> convertBSONSubObsblocks(const std::vector<mongo::BSONObj> &objects);
23 std::vector<Trial> convertBSONTrials(const std::vector<mongo::BSONObj> &objects);
24 
25 // Convert CORBA object types to BSON object types
26 std::vector<mongo::BSONObj> convertCORBAProjects(const std::vector<Project> &objects);
27 std::vector<mongo::BSONObj> convertCORBAObsblocks(const std::vector<Obsblock> &objects);
28 std::vector<mongo::BSONObj> convertCORBASubObsblocks(const std::vector<SubObsblock> &objects);
29 std::vector<mongo::BSONObj> convertCORBATrials(const std::vector<Trial> &objects);
30 
31 // Structure to help with merge
32 struct CORBA_Object_Merge {
33  std::vector<Project> projects;
34  std::vector<Obsblock> obsblocks;
35  std::vector<SubObsblock> subobsblocks;
36  std::vector<Trial> trials;
37 };
38 
39 // Merge a group of many CORBA Objects into a vector of many Projects
40 std::vector<Project> mergeCORBAObjects(const CORBA_Object_Merge &merge);
41 
42 // Split a vector of many Projects into a group of many CORBA Objects
43 CORBA_Object_Merge splitCORBAObjects(const std::vector<Project> &projects);
44 
45 } // namespace carma::observertools
46 } // namespace carma
47 
48 #endif /* PDB_BSON_CONVERT_H */
49 
50 /* vim: set ts=8 sts=8 sw=8 noet tw=92: */