// ĠCopyright Ġ 2 0 2 1 ĠSt rix py rr Ċ // Ċ // ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ // Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ // ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ // Ċ // ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ // Ċ // ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ // Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ // ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ // ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ // Ġlimitations Ġunder Ġthe ĠLicense . Ċ package Ġst rix py rr . e agle eye . data . sources . ingest Ċ Ċ import Ġcom . github . do y aaaa aken . kotlin csv . dsl . context . Csv Reader Context Ċ import Ġu y . kl utter . core . common . with Ċ import Ġjava . io . InputStream Ċ import Ġjava . nio . file . Path Ċ import Ġjava . time . Instant Ċ import Ġkotlin . io . path . Experimental Path Api Ċ import Ġkotlin . io . path . extension Ċ import Ġkotlin . io . path . inputStream Ċ Ċ open Ġclass ĠCsv Ingest Aggregator ( Ċ ĉ @ Jvm Field Ġprotected Ġval Ġsettings : ĠCsv Settings Ġ= ĠCsv Settings . ccd Settings Ċ ) Ġ: ĠI Ingest Aggregator < Instant , ĠO hl cv > Ċ { Ċ ĉ override Ġfun Ġis Supported ( format : ĠString ) Ġ= Ċĉ ĉ format Ġ== Ġ" csv " Ġ|| Ġformat Ġ== Ġ" tsv " ĊĉĊ ĉ protected Ġfun Ġcreate Context ( is Tab Separ ated : ĠBoolean Ġ= Ġfalse ) Ġ= Ċĉ ĉ Csv Reader Context () Ġwith Ċĉ ĉ { Ċĉĉ ĉ if Ġ( is Tab Separ ated ) Ċĉĉĉ ĉ delimiter Ġ= Ġ'\ t ' Ċĉ ĉ } ĊĉĊ ĉ @ Opt In ( Experimental Path Api :: class ) Ċ ĉ override Ġsuspend Ġfun Ġingest ( path : ĠPath , Ġmap : ĠMutable Map < Instant , Ġin ĠO hl cv >) Ġ= Ċĉ ĉ ingest ( path . inputStream (), Ġmap , Ġis Tab Separ ated Ġ= Ġpath . extension Ġ== Ġ" tsv ") ĊĉĊ ĉ override Ġsuspend Ġfun Ġingest ( stream : ĠInputStream , Ġmap : ĠMutable Map < Instant , Ġin ĠO hl cv >) Ġ= Ċĉ ĉ ingest ( stream , Ġmap , Ġis Tab Separ ated Ġ= Ġfalse ) ĊĉĊ ĉ protected Ġsuspend Ġfun Ġingest ( Ċĉ ĉ stream : ĠInputStream , Ċĉ ĉ map : ĠMutable Map < Instant , Ġin ĠO hl cv >, Ċĉ ĉ is Tab Separ ated : ĠBoolean Ċ ĉ ) Ġ= Ġcreate Context ( is Tab Separ ated ) Ċĉĉ ĉ . ingest Csv ( stream , Ġmap , Ġsettings ) Ċ }