/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠM ate us z ĠAr mat ys Ċ Ġ* Ċ Ġ* Ġ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 Ġpl . m aken ika . graph lite . impl Ċ Ċ import Ġpl . m aken ika . graph lite .* Ċ import Ġpl . m aken ika . graph lite . sql .* Ċ Ċ internal Ġobject ĠGraph Sql Utils Ġ{ ĊĠĠĠ Ġfun Ġget Element Id ( driver : ĠSql ite Driver , Ġhandle : ĠElement Handle ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdriver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġid , Ġtype ĠFROM ĠElement ĠWHERE Ġhandle Ġ= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( handle . value ) ĊĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Field Id ( driver : ĠSql ite Driver , Ġfield : ĠField < *, Ġ* >, Ġschema Id : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdriver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġid ĠFROM ĠField ĠWHERE Ġschema Id Ġ= Ġ? ĠAND Ġhandle Ġ= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( schema Id , Ġfield . handle . value ) ĊĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Could Ġnot Ġfind Ġfield Ġ$ field Ġfor Ġschema Id Ġ$ schema Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Field Id ( driver : ĠSql ite Driver , Ġfield : ĠField < *, Ġ* >, Ġschema : ĠSchema ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdriver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġid ĠFROM ĠField ĠWHERE Ġschema Id Ġ= Ġ( SELECT Ġid ĠFROM ĠSchema ĠWHERE Ġhandle Ġ= Ġ? ĠAND Ġversion Ġ= Ġ? ĠLIMIT Ġ 1 ) ĠAND Ġhandle Ġ= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( schema . schema Handle . value , Ġschema . schema Version . toString (), Ġfield . handle . value ) ĊĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Could Ġnot Ġfind Ġfield Ġ$ field Ġfor Ġschema Ġ$ schema ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Schema Fields ( driver : ĠSql ite Driver , Ġschema Id : ĠString ): ĠSequence < Field < *, Ġ* >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver . query (" SELECT Ġhandle , Ġtype Ġfrom ĠField ĠWHERE Ġschema Id Ġ= Ġ?", ĠarrayOf ( schema Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ Ġfield Cursor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( field Cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Handle Value Ġ= Ġfield Cursor . getString (" handle ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield TypeCode Ġ= Ġfield Cursor . getString (" type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield : ĠField < Schema , ĠAny > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val ĠfieldType Ġ= ĠFieldType . from Code ( fieldType Code )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFieldType . Blob Ġ-> ĠField Impl < Schema , ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Handle ( field Handle Value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfieldType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFieldType . Geo Ġ-> ĠIndex able Field Impl < Schema , ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Handle ( field Handle Value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfieldType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠIndex able Scalar Field Impl < Schema , ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Handle ( field Handle Value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfieldType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ