/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġdz iko ys k Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . repos il ite . settings Ċ Ċ import Ġcom . repos il ite . settings . Local Configuration . MySql Database Settings Ċ import Ġcom . repos il ite . settings . Local Configuration . SQLite Database Settings Ċ import Ġcom . repos il ite . shared . extensions . load Command Based Configuration Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . transactions . Transaction Manager Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Path Ċ import Ġjava . sql . Connection . TRANSACTION _ SERIAL IZ ABLE Ċ Ċ internal Ġobject ĠDatabase Source Factory Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Connection ( working Directory : ĠPath , Ġdatabase Configuration : ĠString ): ĠDatabase Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Configuration . startsWith (" sqlite ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġload Command Based Configuration ( SQLite Database Settings (), Ġdatabase Configuration ). configuration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( settings . temporary ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemporary Database Ġ= ĠFile . create TempFile (" repos il ite - database ", Ġ". db ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporary Database . delete On Exit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase . connect (" jdbc : sqlite :${ temporary Database . absolute Path }", Ġ" org . sqlite . JDBC ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase . connect (" jdbc : sqlite :${ working Directory . resolve ( settings . fileName )} ", Ġ" org . sqlite . JDBC ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Manager . manager . default Isolation Level Ġ= ĠTRAN SACTION _ SERIAL IZ ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Configuration . startsWith (" mysql ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġload Command Based Configuration ( MySql Database Settings (), Ġdatabase Configuration ). configuration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase . connect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" jdbc : mysql ://${ settings . host }/${ settings . database }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdriver Ġ= Ġ" com . mysql . cj . jdbc . Driver ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= Ġsettings . user , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġsettings . password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unknown Ġdatabase : Ġ$ database Configuration ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }