1 /************** MongoFam H Declares Source Code File (.H) **************/
2 /*  Name: jmgfam.h    Version 1.1                                      */
3 /*                                                                     */
4 /*  (C) Copyright to the author Olivier BERTRAND          2017 - 2020  */
5 /*                                                                     */
6 /*  This file contains the JAVA MongoDB access method classes declares */
7 /***********************************************************************/
8 #pragma once
9 
10 /***********************************************************************/
11 /*  Include MongoDB library header files.                       	  	 */
12 /***********************************************************************/
13 #include "block.h"
14 //#include "mongo.h"
15 #include "jmgoconn.h"
16 
17 typedef class JMGFAM *PJMGFAM;
18 typedef class MGODEF *PMGODEF;
19 
20 /***********************************************************************/
21 /*  This is the Java MongoDB Access Method class declaration.          */
22 /***********************************************************************/
23 class DllExport JMGFAM : public DOSFAM {
24 	friend void mongo_init(bool);
25 public:
26 	// Constructor
27 	JMGFAM(PJDEF tdp);
28 #if defined(BSON_SUPPORT)
29 	JMGFAM(PBDEF tdp);
30 #endif   // BSON_SUPPORT
31 	JMGFAM(PJMGFAM txfp);
32 
33 	// Implementation
GetAmType(void)34 	virtual AMT   GetAmType(void) { return TYPE_AM_MGO; }
GetUseTemp(void)35 	virtual bool  GetUseTemp(void) { return false; }
36 	virtual int   GetPos(void);
37 	virtual int   GetNextPos(void);
Duplicate(PGLOBAL g)38 	virtual PTXF  Duplicate(PGLOBAL g) { return (PTXF)new(g) JMGFAM(this); }
SetLrecl(int lrecl)39 	void  SetLrecl(int lrecl) { Lrecl = lrecl; }
40 
41 	// Methods
42 	virtual void  Reset(void);
43 	virtual int   GetFileLength(PGLOBAL g);
44 	virtual int   Cardinality(PGLOBAL g);
45 	virtual int   MaxBlkSize(PGLOBAL g, int s);
AllocateBuffer(PGLOBAL g)46 	virtual bool  AllocateBuffer(PGLOBAL g) { return false; }
47 	virtual int   GetRowID(void);
48 	virtual bool  RecordPos(PGLOBAL g);
49 	virtual bool  SetPos(PGLOBAL g, int recpos);
50 	virtual int   SkipRecord(PGLOBAL g, bool header);
51 	virtual bool  OpenTableFile(PGLOBAL g);
52 	virtual int   ReadBuffer(PGLOBAL g);
53 	virtual int   WriteBuffer(PGLOBAL g);
54 	virtual int   DeleteRecords(PGLOBAL g, int irc);
55 	virtual void  CloseTableFile(PGLOBAL g, bool abort);
56 	virtual void  Rewind(void);
57 
58 protected:
OpenTempFile(PGLOBAL g)59 	virtual bool  OpenTempFile(PGLOBAL g) { return false; }
MoveIntermediateLines(PGLOBAL g,bool * b)60 	virtual bool  MoveIntermediateLines(PGLOBAL g, bool *b) { return false; }
RenameTempFile(PGLOBAL g)61 	virtual int   RenameTempFile(PGLOBAL g) { return RC_OK; }
62 	virtual int   InitDelete(PGLOBAL g, int fpos, int spos);
63 	bool  Init(PGLOBAL g);
64 //bool  MakeCursor(PGLOBAL g);
65 
66 	// Members
67 	JMgoConn  *Jcp;              // Points to a Mongo connection class
68 	JDBCPARM   Ops;              // Additional parameters
69 	PFBLOCK    To_Fbt;           // Pointer to temp file block
70 	MODE       Mode;
71 	PCSZ       Uristr;
72 	PCSZ       Db_name;
73 	PCSZ       Coll_name;
74 	PCSZ       Options;
75 	PCSZ       Filter;
76 	PSZ        Wrapname;
77 	bool       Done;			       // Init done
78 	bool       Pipe;
79 	int        Version;
80 	int        Curpos;           // Cursor position of last fetch
81 }; // end of class JMGFAM
82 
83