Xpace
store_j.h
Go to the documentation of this file.
1 
2 /**************************************************************
3  **
4  ** @file data/store/java/store_j.h
5  **
6  ** Copyright (C) 2012 Xpace, LLC. All rights reserved
7  **
8  ** www.xpace.net
9  **
10  **************************************************************/
11 
12 #ifndef XPACE_STORE_J_H
13 #define XPACE_STORE_J_H
14 
15 #include "base/datetime.h"
16 #include "data/store/store.h"
17 
18 #include "base/java/types_j.h"
19 
20 PassJNI<jintArray> convert_pass
21  (JNIEnv* jniEnv,
22  const Xpace::Store::Location& val);
23 
24 // C++ caller for Java Store_Sink - used in several places
25 namespace Xpace
26 {
27  class JavaStoreSink : public Store::Sink
28  {
29  public:
31  (JNIEnv* jnienv,
32  jobject jsink);
33 
34  virtual bool setCount
35  (uint64 docs) override
36  {
37  return !!env->CallBooleanMethod(jsink, set_count, convert_pass(env, docs).get());
38  }
39 
40  virtual int64 start
41  (uint64 doc) override
42  {
43  return env->CallLongMethod(jsink, start_doc, convert_pass(env, doc).get());
44  }
45 
46  // ------------------------------ by Location -------------
47 
48  virtual bool set
49  (const Store::Location& loc,
50  int64 value) override
51  {
52  return !!env->CallBooleanMethod(jsink, set_loc_int64, convert_pass(env, loc).get(), convert_pass(env, value).get());
53  }
54 
55  virtual bool set
56  (const Store::Location& loc,
57  const Xpace::DecimalFloat& value) override
58  {
59  return !!env->CallBooleanMethod(jsink, set_loc_float, convert_pass(env, loc).get(), convert_pass(env, value.getMantissa()).get(), convert_pass(env, value.getDecimals()).get());
60  }
61 
62  virtual bool set
63  (const Store::Location& loc,
64  const Xpace::String8& value) override
65  {
66  return !!env->CallBooleanMethod(jsink, set_loc_string, convert_pass(env, loc).get(), convert_pass(env, value).get());
67  }
68 
69  virtual bool set
70  (const Store::Location& loc,
71  const Xpace::String16& value) override
72  {
73  return !!env->CallBooleanMethod(jsink, set_loc_string, convert_pass(env, loc).get(), convert_pass(env, value).get());
74  }
75 
76  virtual bool set
77  (const Store::Location& loc,
78  const Xpace::BytesRef& value) override
79  {
80  return !!env->CallBooleanMethod(jsink, set_loc_bytes, convert_pass(env, loc).get(), convert_pass(env, value).get());
81  }
82 
83  virtual bool set
84  (const Store::Location& loc,
85  const Xpace::DateTime& value)
86  {
87  Xpace::Date date(value.getDate());
88  Xpace::Time time(value.getTime());
89 
90  return !!env->CallBooleanMethod(jsink, set_loc_dateTime, convert_pass(env, loc).get(),
91  convert_pass(env, date.getYear()).get(), convert_pass(env, date.getMonth()).get(), convert_pass(env, date.getDay()).get(),
92  convert_pass(env, time.getHour()).get(), convert_pass(env, time.getMinute()).get(),
93  convert_pass(env, time.getSecond()).get(), convert_pass(env, time.getMillisecond()).get());
94  }
95 
96  // ------------------------------ by Child Name -----------
97 
98  virtual bool set
99  (const String8& child,
100  int64 value) override
101  {
102  return !!env->CallBooleanMethod(jsink, set_name_int64, convert_pass(env, child).get(), convert_pass(env, value).get());
103  }
104 
105  virtual bool set
106  (const String8& child,
107  const Xpace::DecimalFloat& value) override
108  {
109  return !!env->CallBooleanMethod(jsink, set_name_float, convert_pass(env, child).get(), convert_pass(env, value.getMantissa()).get(), convert_pass(env, value.getDecimals()).get());
110  }
111 
112  virtual bool set
113  (const String8& child,
114  const Xpace::String8& value) override
115  {
116  return !!env->CallBooleanMethod(jsink, set_name_string, convert_pass(env, child).get(), convert_pass(env, value).get());
117  }
118 
119  virtual bool set
120  (const String8& child,
121  const Xpace::String16& value) override
122  {
123  return !!env->CallBooleanMethod(jsink, set_name_string, convert_pass(env, child).get(), convert_pass(env, value).get());
124  }
125 
126  virtual bool set
127  (const String8& child,
128  const Xpace::BytesRef& value) override
129  {
130  return !!env->CallBooleanMethod(jsink, set_name_bytes, convert_pass(env, child).get(), convert_pass(env, value).get());
131  }
132 
133  virtual bool set
134  (const String8& child,
135  const Xpace::DateTime& value)
136  {
137  Xpace::Date date(value.getDate());
138  Xpace::Time time(value.getTime());
139 
140  return !!env->CallBooleanMethod(jsink, set_name_dateTime, convert_pass(env, child).get(),
141  convert_pass(env, date.getYear()).get(), convert_pass(env, date.getMonth()).get(), convert_pass(env, date.getDay()).get(),
142  convert_pass(env, time.getHour()).get(), convert_pass(env, time.getMinute()).get(),
143  convert_pass(env, time.getSecond()).get(), convert_pass(env, time.getMillisecond()).get());
144  }
145 
146  // ------------------------------ by Child Name -----------
147 
148  virtual bool set
149  (int child,
150  int64 value) override
151  {
152  return !!env->CallBooleanMethod(jsink, set_num_int64, convert_pass(env, child).get(), convert_pass(env, value).get());
153  }
154 
155  virtual bool set
156  (int child,
157  const Xpace::DecimalFloat& value) override
158  {
159  return !!env->CallBooleanMethod(jsink, set_num_float, convert_pass(env, child).get(), convert_pass(env, value.getMantissa()).get(), convert_pass(env, value.getDecimals()).get());
160  }
161 
162  virtual bool set
163  (int child,
164  const Xpace::String8& value) override
165  {
166  return !!env->CallBooleanMethod(jsink, set_num_string, convert_pass(env, child).get(), convert_pass(env, value).get());
167  }
168 
169  virtual bool set
170  (int child,
171  const Xpace::String16& value) override
172  {
173  return !!env->CallBooleanMethod(jsink, set_num_string, convert_pass(env, child).get(), convert_pass(env, value).get());
174  }
175 
176  virtual bool set
177  (int child,
178  const Xpace::BytesRef& value) override
179  {
180  return !!env->CallBooleanMethod(jsink, set_num_bytes, convert_pass(env, child).get(), convert_pass(env, value).get());
181  }
182 
183  virtual bool set
184  (int child,
185  const Xpace::DateTime& value)
186  {
187  Xpace::Date date(value.getDate());
188  Xpace::Time time(value.getTime());
189 
190  return !!env->CallBooleanMethod(jsink, set_num_dateTime, convert_pass(env, child).get(),
191  convert_pass(env, date.getYear()).get(), convert_pass(env, date.getMonth()).get(), convert_pass(env, date.getDay()).get(),
192  convert_pass(env, time.getHour()).get(), convert_pass(env, time.getMinute()).get(),
193  convert_pass(env, time.getSecond()).get(), convert_pass(env, time.getMillisecond()).get());
194  }
195 
196  // ------------------------------ close -------------------
197 
198  virtual void close
199  () override
200  {
201  env->CallVoidMethod(jsink, do_close);
202  }
203 
204  private:
205  JNIEnv* env;
206  jobject jsink;
207 
208  jmethodID set_count;
209  jmethodID start_doc;
210 
211  // by Location
212  jmethodID set_loc_int64;
213  jmethodID set_loc_float;
214  jmethodID set_loc_string;
215  jmethodID set_loc_bytes;
216  jmethodID set_loc_dateTime;
217 
218  // by child name
219  jmethodID set_name_int64;
220  jmethodID set_name_float;
221  jmethodID set_name_string;
222  jmethodID set_name_bytes;
223  jmethodID set_name_dateTime;
224 
225  // by child num
226  jmethodID set_num_int64;
227  jmethodID set_num_float;
228  jmethodID set_num_string;
229  jmethodID set_num_bytes;
230  jmethodID set_num_dateTime;
231 
232  jmethodID do_close;
233  };
234 }
235 
236 #endif
A write-only, forward (by document) cursor into a Store.
Definition: store.h:79
virtual void close() override
We&#39;re finshed with this Sink.
Definition: store_j.h:199
PassJNI< jintArray > convert_pass(JNIEnv *jniEnv, const Xpace::Store::Location &val)
virtual bool setCount(uint64 docs) override
Inform the Sink how many documents/records/rows to expect.
Definition: store_j.h:35
A low-level const data holder.
Definition: types.h:165
A floatimg-point number with explicit mantissa and decimals TODO: normalize.
Definition: decimalfloat.h:33
Copyright (C) 2012 Xpace, LLC.
unsigned long long uint64
Definition: types.h:87
JavaStoreSink(JNIEnv *jnienv, jobject jsink)
uint int64 value
Definition: table_c.h:159
long long int64
Definition: types.h:86
virtual int64 start(uint64 doc) override
Begin a new document/record/row, committing current one (if any)
Definition: store_j.h:41
Xpace project main namespace
Definition: datetime.h:18
std::vector< uint > Location
A location within a source.
Definition: store.h:64

current as of Wed Jun 10 2026 12:00:05