src/main/java/org/embulk/input/datastore/DatastoreInputPlugin.kt in embulk-input-datastore-0.0.4 vs src/main/java/org/embulk/input/datastore/DatastoreInputPlugin.kt in embulk-input-datastore-0.1.0
- old
+ new
@@ -9,16 +9,18 @@
import org.embulk.config.TaskSource
import org.embulk.spi.*
import org.embulk.spi.type.Types
import org.msgpack.value.ValueFactory
import java.io.FileInputStream
+import java.util.Base64
-class DatastoreInputPlugin : InputPlugin {
+class DatastoreInputPlugin(doLogging: Boolean = true) : InputPlugin {
// number of run() method calls
private val TASK_COUNT = 1
- private val logger = Exec.getLogger(javaClass)
+ private val logger = if (doLogging) { Exec.getLogger(javaClass) } else { null }
+ private val b64encoder = Base64.getEncoder()
override fun transaction(config: ConfigSource,
control: InputPlugin.Control): ConfigDiff {
val task: PluginTask = config.loadConfig(PluginTask::class.java)
@@ -57,14 +59,14 @@
val datastore = createDatastoreClient(task)
val col = pageBuilder.schema.getColumn(0)
datastore.run(query)
.forEach { entity ->
- logger.debug(entity.toString())
+ logger?.debug(entity.toString())
val json = entityToJsonObject(entity)
- logger.debug(json)
+ logger?.debug(json)
pageBuilder.setJson(col, ValueFactory.newString(json))
pageBuilder.addRecord()
}
@@ -132,21 +134,21 @@
* e.g.) '"name":"value"'
*
*/
private fun valueToField(dsValue: Value<Any>): String? {
return when (dsValue.type) {
- ValueType.BLOB -> (dsValue.get() as ByteArray).toString()
+ ValueType.BLOB -> "\"${b64encoder.encodeToString((dsValue.get() as Blob).toByteArray())}\""
ValueType.BOOLEAN -> (dsValue.get() as Boolean).toString()
ValueType.DOUBLE -> (dsValue.get() as Double).toString()
ValueType.ENTITY -> entityToJsonObject(dsValue.get() as FullEntity<*>)
ValueType.KEY -> (dsValue.get() as Key).toString()
ValueType.LAT_LNG -> (dsValue.get() as LatLngValue).toString()
ValueType.LIST -> listToJsonArray(dsValue.get() as List<*>)
ValueType.LONG -> (dsValue.get() as Long).toString()
ValueType.NULL -> "null"
ValueType.RAW_VALUE -> (dsValue.get() as RawValue).toString()
ValueType.STRING -> "\"${dsValue.get() as String}\""
- ValueType.TIMESTAMP -> (dsValue.get() as Timestamp).toString()
+ ValueType.TIMESTAMP -> "\"${dsValue.get() as Timestamp}\""
else -> null // NOTE: unexpected or unsupported type
}
}
}