package Ġnet . wu ille min . j ds . datas erver . supplier . sql . util Ċ Ċ import Ġnet . wu ille min . j ds . datas erver . entity . model . DataType Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . sql . Connection Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Local Time Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . time . Zone Offset Ċ Ċ class ĠJ DB CH el per Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġjdbc Helper Ġ= ĠJ DB CH el per () ĊĠĠĠ Ġprivate Ġval Ġconnection Ġ= Ġcreate Database () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Get ĠDataType Ġfrom ĠJDBC `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtype By ColumnName Ġ= Ġconnection . metaData ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Columns ( null , Ġnull , Ġ" TABLE _ TEST ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠresultSet Ġ-> ĠresultSet . getString (" COLUMN _ NAME ") Ġto Ġjdbc Helper . get DataType From Jdbc Type ( resultSet . getInt (" DATA _ TYPE ")) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult 1 Ġ= Ġtype By ColumnName . entries . map Ġ{ Ġentry Ġ-> Ġentry . key . toLowerCase () Ġto Ġentry . value Ġ}. toMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . LONG , Ġresult 1 [" id "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . STRING , Ġresult 1 [" string 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . LONG , Ġresult 1 [" int 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . DOUBLE , Ġresult 1 [" float 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . BOOLEAN , Ġresult 1 [" bool 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . DATE , Ġresult 1 [" date 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . TIME , Ġresult 1 [" time 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( DataType . DATE _ TIME , Ġresult 1 [" datetime 1 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Convert ĠResultSet Ġto ĠMap `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġfull Ġquery ĊĠĠĠĠĠĠĠ Ġval ĠresultSet Ġ= Ġconnection . createStatement (). executeQuery (" SELECT Ġ* ĠFROM Ġtable _ test ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠresultSet . map Ġ{ Ġjdbc Helper . convert ResultSet ( it , ĠZone Offset . UTC . normalized ()) Ġ}. toList () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult 1 Ġ= Ġresults [ 0 ]. entries . map Ġ{ Ġentry Ġ-> Ġentry . key . toLowerCase () Ġto Ġentry . value Ġ}. toMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 8 , Ġresults [ 0 ]. size ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 1 L , Ġresult 1 [" id "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (" bbbb ", Ġresult 1 [" string 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 2 L , Ġresult 1 [" int 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 1 . 5 , Ġresult 1 [" float 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( true , Ġresult 1 [" bool 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( LocalDate . parse (" 2 0 1 8 - 1 2 - 2 5 "), Ġresult 1 [" date 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( Local Time . parse (" 1 3 : 0 0 : 0 0 "), Ġresult 1 [" time 1 "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( Offset DateTime . parse (" 2 0 1 8 - 1 2 - 2 5 T 1 3 : 0 0 : 0 0 Z "), Ġresult 1 [" datetime 1 "]) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult 2 Ġ= Ġresults [ 1 ]. entries . map Ġ{ Ġentry Ġ-> Ġentry . key . toLowerCase () Ġto Ġentry . value Ġ}. toMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 1 , Ġresults [ 1 ]. size ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 2 L , Ġresult 2 [" id "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Database (): ĠConnection Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠDriver Manager . getConnection (" jdbc : h 2 : mem :") ĊĊĠĠĠĠĠĠĠ Ġval Ġstmt Drop Ġ= Ġconnection . createStatement () ĊĠĠĠĠĠĠĠ Ġstmt Drop . execute (" DROP ĠTABLE ĠIF ĠEXISTS Ġtable _ test ") ĊĠĠĠĠĠĠĠ Ġstmt Drop . close () ĊĊĠĠĠĠĠĠĠ Ġval Ġstmt Create Ġ= Ġconnection . createStatement () ĊĠĠĠĠĠĠĠ Ġstmt Create . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE Ġtable _ test ( Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ĠINTEGER , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" string 1 ĠVARCHAR , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" int 1 ĠINTEGER , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" float 1 ĠFLOAT , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" bool 1 ĠBOOLEAN , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" date 1 ĠDATE , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" time 1 ĠTIME , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" datetime 1 ĠTIMESTAMP ĠWITH ĠTIME ĠZ ONE Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ") ") ĊĠĠĠĠĠĠĠ Ġstmt Create . close () ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert Query Ġ= Ġ" INSERT ĠINTO Ġtable _ test ( id , Ġstring 1 , Ġint 1 , Ġfloat 1 , Ġbool 1 , Ġdate 1 , Ġtime 1 , Ġdatetime 1 ) ĠVALUES Ġ( ?, Ġ?, Ġ?, Ġ?, Ġ?, Ġ?, Ġ?, Ġ? )" ĊĊĠĠĠĠĠĠĠ Ġvar Ġidx Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġstmt Insert 1 Ġ= Ġconnection . prepareStatement ( insert Query ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx ++, Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx ++, Ġ" bbbb ") ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx ++, Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx ++, Ġ 1 . 5 ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx ++, Ġtrue ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx ++, ĠLocalDate . parse (" 2 0 1 8 - 1 2 - 2 5 ")) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx ++, ĠLocal Time . parse (" 1 3 : 0 0 : 0 0 ")) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . set Object ( idx , ĠOffset DateTime . parse (" 2 0 1 8 - 1 2 - 2 5 T 1 3 : 0 0 : 0 0 Z ")) ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . execute () ĊĠĠĠĠĠĠĠ Ġstmt Insert 1 . close () ĊĊĠĠĠĠĠĠĠ Ġidx Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġstmt Insert 2 Ġ= Ġconnection . prepareStatement ( insert Query ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx ++, Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx ++, Ġnull ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx ++, Ġnull ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx ++, Ġnull ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx ++, Ġnull ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx ++, Ġnull ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx ++, Ġnull ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . set Object ( idx , Ġnull ) ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . execute () ĊĠĠĠĠĠĠĠ Ġstmt Insert 2 . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġconnection ĊĠĠĠ Ġ} Ċ }