package Ġorg . ot nip . hbase . marshall ing Ċ Ċ import Ġorg . apache . hadoop . hbase . client . Connection Ċ import Ġorg . apache . hadoop . hbase . client . Delete Ċ import Ġorg . apache . hadoop . hbase . client . Table Ċ import Ġkotlin . reflect . K Class Ċ Ċ class ĠReflect Writer < T >( clazz : ĠK Class <* >, Ġconnection : ĠConnection ) Ġ: ĠAuto Closeable Ġ{ ĊĊĠĠĠ Ġval Ġtable : ĠTable ĊĠĠĠ Ġprivate Ġval Ġencoder Ġ= ĠReflect Encoder < T >( clazz ) ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtable Ġ= Ġconnection . getTable ( encoder . tableName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite ( input : ĠT , Ġvar arg Ġfields : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . put ( encoder . encode ( input , Ġnull , Ġ* fields )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Row ( input : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . delete ( Delete ( encoder . encode Row ( input ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Family ( input : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelete Ġ= ĠDelete ( encoder . encode Row ( input )) ĊĠĠĠĠĠĠĠ Ġdelete . add Family ( encoder . family ) ĊĠĠĠĠĠĠĠ Ġtable . delete ( delete ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Columns ( input : ĠT , Ġvar arg Ġfields : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelete Ġ= ĠDelete ( encoder . encode Row ( input )) ĊĠĠĠĠĠĠĠ Ġfields . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete . addColumn ( encoder . family , Ġit . toByteArray ( Charsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtable . delete ( delete ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : Ġ Ġdelete Ġfam lies Ġand Ġcolumns Ċ }