package Ġat . h ann esm oser . gle am . transforms . generator Ċ Ċ import Ġio . github . ser pro 6 9 . k faker . F aker Ċ import Ġorg . apache . beam . sdk . schemas . Schema Ċ import Ġorg . apache . beam . sdk . schemas . Schema . FieldType Ċ import Ġorg . apache . beam . sdk . schemas . logical types . Enumeration Type Ċ import Ġorg . apache . beam . sdk . values . Row Ċ import Ġorg . joda . time . Instant Ċ Ċ internal Ġconst Ġval ĠA GG REG ATE _ LEN Ġ= Ġ 1 0 Ċ Ċ /** Ċ Ġ* ĠGenerates Ġa Ġvalue Ġfor Ġa Ġgiven Ġfield Ġtype Ċ Ġ*/ Ċ @ Suppress (" UN CHECK ED _ CAST ", Ġ" Return Count ") Ċ internal Ġfun Ġ< T > Ġgenerate Value ( ĊĠ Ġfaker : ĠFaker , ĊĠ Ġtype : ĠFieldType Ċ ): ĠT Ġ{ ĊĠ Ġif Ġ( type . typeName . is Primitive Type ) Ġ{ ĊĠĠĠ Ġreturn Ġgenerate Primitive Value ( faker , Ġtype ) Ġas ĠT ĊĠ Ġ} ĊĊĠ Ġif Ġ( type . typeName . is Collection Type ) Ġ{ ĊĠĠĠ Ġreturn Ġgenerate Collection Value ( faker , Ġtype ) Ġas ĠT ĊĠ Ġ} ĊĊĠ Ġif Ġ( type . typeName . is Composite Type ) Ġ{ ĊĠĠĠ Ġreturn Ġgenerate Composite Value ( faker , Ġtype ) Ġas ĠT ĊĠ Ġ} ĊĊĠ Ġif Ġ( type . typeName . is Logical Type ) Ġ{ ĊĠĠĠ Ġreturn Ġgenerate Logical Type ( faker , Ġtype ) Ġas ĠT ĊĠ Ġ} ĊĊĠ Ġthrow ĠIllegalArgumentException ("${ type . typeName } Ġis Ġnot Ġsupported ") Ċ } Ċ Ċ private Ġfun Ġgenerate Primitive Value ( faker : ĠFaker , Ġtype : ĠSchema . FieldType ) Ġ= ĊĠ Ġwhen Ġ( type . typeName ) Ġ{ ĊĠĠĠ ĠSchema . TypeName . BOOLEAN Ġ-> Ġfaker . random . next Boolean () ĊĠĠĠ ĠSchema . TypeName . BYTE Ġ-> Ġfaker . random . nextInt ( ĊĠĠĠĠĠ ĠByte . MIN _ VALUE . toInt (), ĊĠĠĠĠĠ ĠByte . MAX _ VALUE . toInt () ĊĠĠĠ Ġ). to Byte () ĊĠĠĠ ĠSchema . TypeName . BYTES Ġ-> Ġfaker . artist . names (). toByteArray () ĊĠĠĠ ĠSchema . TypeName . DATETIME Ġ-> ĠInstant . of Epoch Milli ( ĊĠĠĠĠĠ Ġfaker . random . nextInt ( ĊĠĠĠĠĠĠĠ ĠInstant . EPOCH . millis . toInt (), ĊĠĠĠĠĠĠĠ ĠInstant . now (). millis . toInt () ĊĠĠĠĠĠ Ġ). to Long () ĊĠĠĠ Ġ). to DateTime () ĊĠĠĠ ĠSchema . TypeName . DECIMAL Ġ-> Ġfaker . random . next Double (). to BigDecimal () ĊĠĠĠ ĠSchema . TypeName . DOUBLE Ġ-> Ġfaker . random . next Double () ĊĠĠĠ ĠSchema . TypeName . FLOAT Ġ-> Ġfaker . random . next Float () ĊĠĠĠ ĠSchema . TypeName . INT 1 6 Ġ-> Ġfaker . random . nextInt ( ĊĠĠĠĠĠ ĠShort . MIN _ VALUE . toInt (), ĊĠĠĠĠĠ ĠShort . MAX _ VALUE . toInt () ĊĠĠĠ Ġ). to Short () ĊĠĠĠ ĠSchema . TypeName . INT 3 2 Ġ-> Ġfaker . random . nextInt () ĊĠĠĠ ĠSchema . TypeName . INT 6 4 Ġ-> Ġfaker . random . next Long () ĊĠĠĠ ĠSchema . TypeName . STRING Ġ-> Ġfaker . commerce . product Name () ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ("${ type . typeName } Ġis Ġnot Ġa Ġprimitive Ġtype ") ĊĠ Ġ} Ċ Ċ @ Suppress (" IMP LICIT _ CAST _ TO _ ANY ") Ċ private Ġfun Ġgenerate Collection Value ( faker : ĠFaker , Ġtype : ĠSchema . FieldType ) Ġ= ĊĠ Ġwhen Ġ( type . typeName ) Ġ{ ĊĠĠĠ ĠSchema . TypeName . ARRAY Ġ-> Ġ{ ĊĠĠĠĠĠ Ġval Ġlen Ġ= Ġfaker . random . nextInt ( 0 , ĠA GG REG ATE _ LEN Ġ- Ġ 1 ) ĊĠĠĠĠĠ Ġ( 0 .. len ). map Ġ{ Ġfaker . movie . title () Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠSchema . TypeName . ITER ABLE Ġ-> Ġ{ ĊĠĠĠĠĠ Ġval Ġlen Ġ= Ġfaker . random . nextInt ( 0 , ĠA GG REG ATE _ LEN Ġ- Ġ 1 ) ĊĠĠĠĠĠ Ġ( 0 .. len ). map Ġ{ Ġfaker . animal . name () Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠSchema . TypeName . MAP Ġ-> Ġ{ ĊĠĠĠĠĠ Ġval Ġlen Ġ= Ġfaker . random . nextInt ( 0 , ĠA GG REG ATE _ LEN Ġ- Ġ 1 ) ĊĠĠĠĠĠ Ġ( 0 .. len ). associate Ġ{ ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠ Ġfaker . programming Language . name (), ĊĠĠĠĠĠĠĠĠĠ Ġfaker . programming Language . creator () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ("${ type . typeName } Ġis Ġnot Ġa Ġcollection Ġtype ") ĊĠ Ġ} Ċ Ċ private Ġfun Ġgenerate Composite Value ( faker : ĠFaker , Ġtype : ĠSchema . FieldType ) Ġ= ĊĠ Ġwhen Ġ( type . typeName ) Ġ{ ĊĠĠĠ ĠSchema . TypeName . ROW Ġ-> ĠRow . with Schema ( type . row Schema ) ĊĠĠĠĠĠ Ġ. with Field Values ( generate Field Values ( faker , Ġtype . row Schema !! )) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ("${ type . typeName } Ġis Ġnot Ġa Ġcomposite Ġtype ") ĊĠ Ġ} Ċ Ċ @ Suppress (" Unused Private Member ") Ċ private Ġfun Ġgenerate Logical Type ( faker : ĠFaker , Ġtype : ĠFieldType ) Ġ= ĊĠ Ġwhen Ġ( type . typeName ) Ġ{ ĊĠĠĠ ĠSchema . TypeName . LOG ICAL _ TYPE Ġ-> ĠEnumeration Type . create ( ĊĠĠĠĠĠ Ġ" RED ", ĊĠĠĠĠĠ Ġ" GREEN ", ĊĠĠĠĠĠ Ġ" BLUE " ĊĠĠĠ Ġ) ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ("${ type . typeName } Ġis Ġnot Ġa Ġlogical Ġtype ") ĊĠ Ġ} Ċ