package Ġcom . ki y os uke . sql it lin . db . core . adapter Ċ Ċ import Ġcom . ki y os uke . sql it lin . db . core . Sql it lin Ċ import Ġcom . ki y os uke . sql it lin . db . core . support . Support SQLite Statement Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ /** Ċ Ġ* Ġ ç´° ãģĭ ãģĦ åįĺ ä½į ãģ§ ãģ® åīĬéĻ¤ ãĤĦ æĽ´æĸ° ãģ« ä½¿çĶ¨ Ċ Ġ*/ Ċ abstract Ġclass ĠShared SQLite Statement ( private Ġval Ġdatabase : ĠSql it lin ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlock Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġprivate Ġvar Ġstmt : ĠSupport SQLite Statement ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġcreate Query (): ĠString ĊĊĠĠĠ Ġprivate Ġfun Ġassert MainThread () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . assert MainThread () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate New Statement (): ĠSupport SQLite Statement Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġcreate Query () ĊĠĠĠĠĠĠĠ Ġreturn Ġdatabase . compile Statement ( query ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Stmt ( can Use Cached : ĠBoolean ): ĠSupport SQLite Statement Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstmt : ĠSupport SQLite Statement ĊĠĠĠĠĠĠĠ Ġif Ġ( can Use Cached ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . stmt Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . stmt Ġ= Ġcreate New Statement () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstmt Ġ= Ġrequire NotNull ( this . stmt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stmt Ġ== Ġnull " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstmt Ġ= Ġcreate New Statement () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstmt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġacquire (): ĠSupport SQLite Statement Ġ{ ĊĠĠĠĠĠĠĠ Ġassert MainThread () ĊĠĠĠĠĠĠĠ Ġreturn Ġget Stmt ( lock . compare AndSet ( false , Ġtrue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrelease ( statement : ĠSupport SQLite Statement ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( statement Ġ== Ġthis . stmt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlock . set ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }