summaryrefslogtreecommitdiffstats
path: root/storage/connect/jmgoconn.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/jmgoconn.h')
-rw-r--r--storage/connect/jmgoconn.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/storage/connect/jmgoconn.h b/storage/connect/jmgoconn.h
new file mode 100644
index 00000000..9fed1907
--- /dev/null
+++ b/storage/connect/jmgoconn.h
@@ -0,0 +1,116 @@
+/***********************************************************************/
+/* JMgoConn.h : header file for the MongoDB connection classes. */
+/***********************************************************************/
+
+/***********************************************************************/
+/* Java interface. */
+/***********************************************************************/
+#include "javaconn.h"
+
+// Java connection to a MongoDB data source
+class TDBJMG;
+class JMGCOL;
+
+/***********************************************************************/
+/* Include MongoDB library header files. */
+/***********************************************************************/
+typedef class JNCOL *PJNCOL;
+typedef class MGODEF *PMGODEF;
+typedef class TDBJMG *PTDBJMG;
+typedef class JMGCOL *PJMGCOL;
+
+typedef struct JKCOL {
+ JKCOL *Next;
+ PJNCOL Jncolp;
+ PCOL Colp;
+ char *Key;
+ int N;
+ bool Array;
+} *PJKC;
+
+/***********************************************************************/
+/* Used when inserting values in a MongoDB collection. */
+/***********************************************************************/
+class JNCOL : public BLOCK {
+public:
+ // Constructor
+//JNCOL(bool ar) { Klist = NULL; Array = ar; }
+ JNCOL(void) { Klist = NULL; }
+
+ // Methods
+ void AddCol(PGLOBAL g, PCOL colp, PSZ jp);
+
+ //Members
+ PJKC Klist;
+}; // end of JNCOL;
+
+/***********************************************************************/
+/* JMgoConn class. */
+/***********************************************************************/
+class JMgoConn : public JAVAConn {
+ friend class TDBJMG;
+ friend class JMGDISC;
+ //friend class TDBXJDC;
+ //friend PQRYRES GetColumnInfo(PGLOBAL, char*&, char *, int, PVBLK&);
+private:
+ JMgoConn(); // Standard (unused) constructor
+
+public:
+ // Constructor
+ JMgoConn(PGLOBAL g, PCSZ collname, PCSZ wrapper);
+
+ // Implementation
+public:
+ virtual void AddJars(PSTRG jpop, char sep);
+ virtual bool Connect(PJPARM sop);
+ virtual bool MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, PCSZ filter, bool pipe);
+// PQRYRES AllocateResult(PGLOBAL g, TDBEXT *tdbp, int n);
+
+ // Attributes
+public:
+// virtual int GetMaxValue(int infotype);
+
+public:
+ // Operations
+ virtual int Fetch(int pos = 0);
+ virtual PSZ GetColumnValue(PSZ name);
+
+ int CollSize(PGLOBAL g);
+ bool FindCollection(PCSZ query, PCSZ proj);
+ bool AggregateCollection(PCSZ pipeline);
+ void MakeColumnGroups(PGLOBAL g, PTDB tdbp);
+ bool GetMethodId(PGLOBAL g, MODE mode);
+ jobject MakeObject(PGLOBAL g, PCOL colp, bool& error);
+ jobject MakeDoc(PGLOBAL g, PJNCOL jcp);
+ int DocWrite(PGLOBAL g, PCSZ line);
+ int DocUpdate(PGLOBAL g, PTDB tdbp);
+ int DocDelete(PGLOBAL g, bool all);
+ bool Rewind(void);
+ PSZ GetDocument(void);
+ bool Stringify(PCOL colp);
+
+protected:
+ // Members
+ PCSZ CollName; // The collation name
+ jmethodID gcollid; // The GetCollection method ID
+ jmethodID countid; // The GetCollSize method ID
+ jmethodID fcollid; // The FindColl method ID
+ jmethodID acollid; // The AggregateColl method ID
+ jmethodID readid; // The ReadNext method ID
+ jmethodID fetchid; // The Fetch method ID
+ jmethodID rewindid; // The Rewind method ID
+ jmethodID getdocid; // The GetDoc method ID
+ jmethodID objfldid; // The ObjectField method ID
+ jmethodID mkdocid; // The MakeDocument method ID
+ jmethodID mkbsonid; // The MakeBson method ID
+ jmethodID docaddid; // The DocAdd method ID
+ jmethodID mkarid; // The MakeArray method ID
+ jmethodID araddid; // The ArrayAdd method ID
+ jmethodID insertid; // The CollInsert method ID
+ jmethodID updateid; // The CollUpdate method ID
+ jmethodID deleteid; // The CollDelete method ID
+ PJNCOL Fpc; // To JNCOL classes
+ int m_Fetch;
+ int m_Ncol;
+ int m_Version; // Java driver version (2 or 3)
+}; // end of JMgoConn class definition