override def accept()

in scala-repl/src/main/scala/spark/ztools.sc [805:837]


    override def accept(obj: Any): Boolean = obj.isInstanceOf[Dataset[_]]

    override def handle(scalaInfo: ScalaVariableInfo, loopback: Loopback, depth: Int): mutable.Map[String, Any] = {
      val obj = scalaInfo.value
      val df = obj.asInstanceOf[Dataset[_]]


      val schema = df.schema
      val jsonSchemaColumns = schema.fields.map(field => {
        val value = withJsonObject { jsonField =>
          jsonField += "name" -> wrap(field.name, null)
          jsonField += "nullable" -> wrap(field.nullable, null)
          jsonField += "dataType" -> wrap(field.dataType.typeName, null)
        }
        wrap(value, "org.apache.spark.sql.types.StructField")
      }
      )

      val jsonSchema = mutable.Map(
        ResNames.VALUE -> jsonSchemaColumns,
        ResNames.TYPE -> "org.apache.spark.sql.types.StructType",
        ResNames.LENGTH -> jsonSchemaColumns.length
      )

      val dfValue = mutable.Map(
        "schema()" -> jsonSchema,
        "getStorageLevel()" -> wrap(df.storageLevel.toString(), "org.apache.spark.storage.StorageLevel")
      )

      mutable.Map(
        ResNames.VALUE -> dfValue
      )
    }