Github user xubo245 commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2738#discussion_r220833721 --- Diff: store/CSDK/CarbonReader.cpp --- @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "CarbonReader.h" +#include <jni.h> + +jobject CarbonReader::builder(JNIEnv *env, char *path, char *tableName) { + + jniEnv = env; + jclass carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); + jmethodID carbonReaderBuilderID = env->GetStaticMethodID(carbonReaderClass, "builder", + "(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/carbondata/sdk/file/CarbonReaderBuilder;"); + jstring jpath = env->NewStringUTF(path); + jstring jtableName = env->NewStringUTF(tableName); + jvalue args[2]; + args[0].l = jpath; + args[1].l = jtableName; + carbonReaderBuilderObject = env->CallStaticObjectMethodA(carbonReaderClass, carbonReaderBuilderID, args); + return carbonReaderBuilderObject; +} + +jobject CarbonReader::projection(int argc, char *argv[]) { + jclass carbonReaderBuilderClass = jniEnv->GetObjectClass(carbonReaderBuilderObject); + jmethodID buildID = jniEnv->GetMethodID(carbonReaderBuilderClass, "projection", + "([Ljava/lang/String;)Lorg/apache/carbondata/sdk/file/CarbonReaderBuilder;"); + jclass objectArrayClass = jniEnv->FindClass("Ljava/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; + carbonReaderBuilderObject = jniEnv->CallObjectMethodA(carbonReaderBuilderObject, buildID, args); + return carbonReaderBuilderObject; +} + +jobject CarbonReader::withHadoopConf(int argc, char *argv[]) { --- End diff -- OK, I added api:config(char *key, char *value)
---