package mobvista.dmp.function
import java.util
import com.googlecode.aviator.runtime.`type`.{AviatorJavaType, AviatorObject}
import com.googlecode.aviator.runtime.function.FunctionUtils
import org.apache.spark.sql.Row
import scala.collection.mutable.ArrayBuffer
class SplitORCInputData extends CommonFunction {
override def getName = "split_orc_input_data"
override def call(env: util.Map[String, AnyRef], arg1: AviatorObject, arg2 : AviatorObject) = {
val row = FunctionUtils.getJavaObject(arg1, env).asInstanceOf[Row]
val indices = FunctionUtils.getStringValue(arg2, env)
val buffer = new ArrayBuffer[String]
splitFun(indices, ",")
.foreach(index => {
buffer += row.getString(index.toInt)
})
env.put("array", buffer.toArray)
new AviatorJavaType("array")
}
override def call(env: util.Map[String, AnyRef], arg1: AviatorObject) = {
val row = FunctionUtils.getJavaObject(arg1, env).asInstanceOf[Row]
val buffer = new ArrayBuffer[String]
for (i <- 0 until row.size) {
buffer += row.getString(i)
}
env.put("array", buffer.toArray)
new AviatorJavaType("array")
}
}