All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pl.touk.nussknacker.engine.management.sample.source.LiteCsvSource.scala Maven / Gradle / Ivy

package pl.touk.nussknacker.engine.management.sample.source

import io.circe.Json
import pl.touk.nussknacker.engine.api.process.{SourceTestSupport, TestDataGenerator}
import pl.touk.nussknacker.engine.api.test.{TestData, TestRecord, TestRecordParser}
import pl.touk.nussknacker.engine.api.{CirceUtil, Context, NodeId, VariableConstants}
import pl.touk.nussknacker.engine.lite.api.utils.sources.BaseLiteSource
import pl.touk.nussknacker.engine.management.sample.dto.CsvRecord

class LiteCsvSource(override val nodeId: NodeId)
    extends BaseLiteSource[CsvRecord]
    with SourceTestSupport[CsvRecord]
    with TestDataGenerator {

  override def transform(record: CsvRecord): Context =
    Context(contextIdGenerator.nextContextId())
      .withVariable(VariableConstants.InputVariableName, record)

  override def generateTestData(size: Int): TestData = TestData(
    List(
      TestRecord(Json.fromString("record1|field2")),
      TestRecord(Json.fromString("record2|field3")),
    )
  )

  override def testRecordParser: TestRecordParser[CsvRecord] = (testRecords: List[TestRecord]) =>
    testRecords.map { testRecord =>
      CsvRecord(CirceUtil.decodeJsonUnsafe[String](testRecord.json).split("\\|").toList)
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy