Github user xubo245 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2899#discussion_r241627031
--- Diff: store/CSDK/src/CarbonWriter.cpp ---
@@ -58,6 +58,35 @@ void CarbonWriter::outputPath(char *path) {
carbonWriterBuilderObject =
jniEnv->CallObjectMethodA(carbonWriterBuilderObject, methodID, args);
}
+void CarbonWriter::sortBy(int argc, char **argv) {
+ if (argc < 0) {
+ throw std::runtime_error("argc parameter can't be negative.");
+ }
+ if (argv == NULL) {
+ throw std::runtime_error("argv parameter can't be NULL.");
+ }
+ checkBuilder();
+ jclass carbonReaderBuilderClass =
jniEnv->GetObjectClass(carbonWriterBuilderObject);
+ jmethodID methodID = jniEnv->GetMethodID(carbonReaderBuilderClass,
"sortBy",
+
"([Ljava/lang/String;)Lorg/apache/carbondata/sdk/file/CarbonWriterBuilder;");
+ if (methodID == NULL) {
+ throw std::runtime_error("Can't find the method in java: sortBy");
+ }
+ jclass objectArrayClass = jniEnv->FindClass("Ljava/lang/String;");
+ if (objectArrayClass == NULL) {
+ throw std::runtime_error("Can't find the class in java:
java/lang/String");
+ }
+ jobjectArray array = jniEnv->NewObjectArray(argc, objectArrayClass,
NULL);
+ for (int i = 0; i < argc; ++i) {
+ jstring value = jniEnv->NewStringUTF(argv[i]);
+ jniEnv->SetObjectArrayElement(array, i, value);
+ }
+
+ jvalue args[1];
+ args[0].l = array;
+ carbonWriterBuilderObject =
jniEnv->CallObjectMethodA(carbonWriterBuilderObject, methodID, args);
--- End diff --
sortBy in CPP is void, but sortBy in Java isn't void, we should change the
carbonWriterBuilderObject in class
---