package Ġcom . github . spe ky . core . table Ċ Ċ import Ġcom . github . spe ky . core . Lens Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . sql . Time Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Local Time Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠSet Ġof Ġmethods Ġthat Ġcould Ġdefine Ġ[ Column ]. Ċ Ġ*/ Ċ @ Suppress (" EXPOSE D _ SUPER _ CLASS ") Ċ abstract Ġclass ĠColumn Definition < T > Ġinternal Ġconstructor () Ġ: ĠColumn Pool < T >() Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Small Int ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġshort ( columnName : ĠString , Ġlens : ĠLens < Short , ĠT >): ĠColumn < T , ĠShort , ĠSql Value . Short > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Small Int , ĠSql Value . Short . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Integer ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġint ( columnName : ĠString , Ġlens : ĠLens < Int , ĠT >): ĠColumn < T , ĠInt , ĠSql Value . Int > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Integer , ĠSql Value . Int . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Big int ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġbigint ( columnName : ĠString , Ġlens : ĠLens < Long , ĠT >): ĠColumn < T , ĠLong , ĠSql Value . Big int > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Big int , ĠSql Value . Big int . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Float ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġfloat ( columnName : ĠString , Ġlens : ĠLens < Float , ĠT >): ĠColumn < T , ĠFloat , ĠSql Value . Float > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Float , ĠSql Value . Float . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Real ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġreal ( columnName : ĠString , Ġlens : ĠLens < Double , ĠT >): ĠColumn < T , ĠDouble , ĠSql Value . Real > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Real , ĠSql Value . Real . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Double ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġdouble ( columnName : ĠString , Ġlens : ĠLens < Double , ĠT >): ĠColumn < T , ĠDouble , ĠSql Value . Double > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Double , ĠSql Value . Double . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Numeric ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġnumeric ( columnName : ĠString , Ġlens : ĠLens < Double , ĠT >): ĠColumn < T , ĠDouble , ĠSql Value . Numeric > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Numeric , ĠSql Value . Numeric . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Decimal ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġdecimal ( ĊĠĠĠ ĠcolumnName : ĠString , ĊĠĠĠ Ġlens : ĠLens < BigDecimal , ĠT > ĊĠ Ġ): ĠColumn < T , ĠBigDecimal , ĠSql Value . Decimal > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Decimal , ĠSql Value . Decimal . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . V arch ar ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġvarchar ( columnName : ĠString , Ġlens : ĠLens < String , ĠT >): ĠColumn < T , ĠString , ĠSql Value . V arch ar > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . V arch ar , ĠSql Value . V arch ar . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Long V arch ar ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġtext ( columnName : ĠString , Ġlens : ĠLens < String , ĠT >): ĠColumn < T , ĠString , ĠSql Value . Text > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Long V arch ar , ĠSql Value . Text . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Date ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġdate ( columnName : ĠString , Ġlens : ĠLens < Date , ĠT >): ĠColumn < T , ĠDate , ĠSql Value . Date > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Date , ĠSql Value . Date . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Time ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġtime ( columnName : ĠString , Ġlens : ĠLens < Time , ĠT >): ĠColumn < T , ĠTime , ĠSql Value . Time > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Time , ĠSql Value . Time . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Timestamp ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġtimestamp ( ĊĠĠĠ ĠcolumnName : ĠString , ĊĠĠĠ Ġlens : ĠLens < Instant , ĠT > ĊĠ Ġ): ĠColumn < T , ĠInstant , ĠSql Value . Timestamp > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Timestamp , ĠSql Value . Timestamp . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Binary ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġbinary ( columnName : ĠString , Ġlens : ĠLens < ByteArray , ĠT >): ĠColumn < T , ĠByteArray , ĠSql Value . Binary > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Binary , ĠSql Value . Binary . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Other ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġuuid ( columnName : ĠString , Ġlens : ĠLens < UUID , ĠT >): ĠColumn < T , ĠUUID , ĠSql Value . UUID > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Other , ĠSql Value . UUID . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Array ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġarray ( ĊĠĠĠ ĠcolumnName : ĠString , ĊĠĠĠ Ġlens : ĠLens < Array < out ĠAny >, ĠT > ĊĠ Ġ): ĠColumn < T , ĠArray < out ĠAny >, ĠSql Value . Array > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Array , ĠSql Value . Array . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Blob ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġblob ( columnName : ĠString , Ġlens : ĠLens < ByteArray , ĠT >): ĠColumn < T , ĠByteArray , ĠSql Value . Blob > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Blob , ĠSql Value . Blob . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Boolean ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġboolean ( columnName : ĠString , Ġlens : ĠLens < Boolean , ĠT >): ĠColumn < T , ĠBoolean , ĠSql Value . Boolean > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Boolean , ĠSql Value . Boolean . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Time With TimeZone ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġtime z ( columnName : ĠString , Ġlens : ĠLens < Local Time , ĠT >): ĠColumn < T , ĠLocal Time , ĠSql Value . Time z > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Time With TimeZone , ĠSql Value . Time z . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġtype Ġ[ Sql Type . Timestamp With TimeZone ]. ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġtimestamp z ( ĊĠĠĠ ĠcolumnName : ĠString , ĊĠĠĠ Ġlens : ĠLens < LocalDateTime , ĠT > ĊĠ Ġ): ĠColumn < T , ĠLocalDateTime , ĠSql Value . Timestamp z > Ġ= ĊĠĠĠ Ġcolumn ( columnName , Ġlens , ĠSql Type . Timestamp With TimeZone , ĠSql Value . Timestamp z . transformer ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġnew Ġ[ Column ] Ġof Ġcustom Ġtype . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param ĠcolumnName Ġname Ġof Ġcolumn ĊĠĠ Ġ* Ġ@ param Ġlens Ġ[ Lens ] Ġthat Ġpoints Ġto Ġproperty ĊĠĠ Ġ* Ġ@ param Ġtransformer Ġ[ Value Transformer ] Ġfor Ġtransform ing Ġvalue Ġfrom / to Ġsql Ġvalue ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ columnName ] Ġregistered Ġbefore ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< R , ĠS Ġ: ĠSql Value > Ġcustom ( ĊĠĠĠ ĠcolumnName : ĠString , ĊĠĠĠ Ġlens : ĠLens < R , ĠT >, ĊĠĠĠ Ġtransformer : ĠValue Transformer < R , ĠS > ĊĠ Ġ): ĠColumn < T , ĠR , ĠS > Ġ= ĠColumn ( columnName , Ġlens , ĠSql Type . V arch ar , Ġtransformer ) ĊĊĠ Ġ@ Suppress (" Long Parameter List ") ĊĠ Ġprivate Ġfun Ġ< R , ĠS Ġ: ĠSql Value > Ġcolumn ( ĊĠĠĠ ĠcolumnName : ĠString , ĊĠĠĠ Ġlens : ĠLens < R , ĠT >, ĊĠĠĠ Ġsql Type : ĠSql Type , ĊĠĠĠ Ġtransformer : ĠValue Transformer < R , ĠS > ĊĠ Ġ): ĠColumn < T , ĠR , ĠS > Ġ= ĠColumn ( columnName , Ġlens , Ġsql Type , Ġtransformer ) ĊĠĠĠ Ġ. apply Ġ{ Ġregister Column ( this ) Ġ} Ċ } Ċ