SplitTextInputData.scala 1008 Bytes
Newer Older
wang-jinfeng committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
package mobvista.dmp.function

import java.util

import com.googlecode.aviator.runtime.`type`.{AviatorJavaType, AviatorObject}
import com.googlecode.aviator.runtime.function.FunctionUtils

import scala.collection.mutable.ArrayBuffer

class SplitTextInputData extends CommonFunction {
  override def getName = "split_text_input_data"

  override def call(env: util.Map[String, AnyRef], arg1: AviatorObject, arg2 : AviatorObject) = {
    val line = FunctionUtils.getStringValue(arg1, env)
    val indices = FunctionUtils.getStringValue(arg2, env)
    val lineSplits = splitFun(line)
    val buffer = new ArrayBuffer[String]
    splitFun(indices, ",")
      .foreach(index => {
        buffer += lineSplits(index.toInt)
      })
    env.put("array", buffer.toArray)
    new AviatorJavaType("array")
  }

  override def call(env: util.Map[String, AnyRef], arg1: AviatorObject) = {
    val line = FunctionUtils.getStringValue(arg1, env)
    env.put("array", splitFun(line))
    new AviatorJavaType("array")
  }
}