package Ġcom . dok ide vs . ph older . data Ċ Ċ import Ġandroidx . annotation . Keep Ċ import Ġandroidx . room .* Ċ import Ġjava . util .* Ċ Ċ /* --- ĠFile Action Ġ--- */ Ċ @ Keep Ċ @ Entity ( tableName Ġ= Ġ" File Action ", Ġprimary Keys Ġ= Ġ[" parent Path ", Ġ" fileName ", Ġ" extension "], Ġindices Ġ= Ġ[( Index (" time ")) ]) Ċ class ĠFile Action ( ĊĠĠĠ Ġparent Path : ĠString , ĊĠĠĠ ĠfileName : ĠString , ĊĠĠĠ Ġextension : ĠString , ĊĠĠĠ Ġdate Taken : ĠLong Ġ= Ġ 0 , ĊĠĠĠ Ġduration : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġlat : ĠDouble Ġ= Ġ 0 . 0 , ĊĠĠĠ Ġlng : ĠDouble Ġ= Ġ 0 . 0 , ĊĠĠĠ Ġexist : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġvar Ġaction : ĠInt Ġ= ĠACTION _ NONE , ĊĠĠĠ Ġvar Ġtime : ĠLong Ġ= Ġ 0 Ċ ) Ġ: ĠFile Tag ( ĊĠĠĠ Ġparent Path , ĊĠĠĠ ĠfileName , ĊĠĠĠ Ġextension , ĊĠĠĠ Ġ- 1 L , Ġ// Ġmedia Store Id Ġis Ġalways Ġinvalid Ġfor Ġfile Action ĊĠĠĠ Ġdate Taken , ĊĠĠĠ Ġduration , ĊĠĠĠ Ġlat , ĊĠĠĠ Ġlng , ĊĠĠĠ Ġexist Ċ ) Ġ{ ĊĊĠĠĠ Ġ/* Ġsecondary Ġconstructors Ġ*/ ĊĠĠĠ Ġ@ Ignore ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġfile Tag : ĠFile Tag , ĊĠĠĠĠĠĠĠ Ġaction : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġtime : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġfile Tag . parent Path , ĊĠĠĠĠĠĠĠ Ġfile Tag . fileName , ĊĠĠĠĠĠĠĠ Ġfile Tag . extension , ĊĠĠĠĠĠĠĠ Ġfile Tag . date Taken , ĊĠĠĠĠĠĠĠ Ġfile Tag . duration , ĊĠĠĠĠĠĠĠ Ġfile Tag . lat , ĊĠĠĠĠĠĠĠ Ġfile Tag . lng , ĊĠĠĠĠĠĠĠ Ġfile Tag . exist , ĊĠĠĠĠĠĠĠ Ġaction , ĊĠĠĠĠĠĠĠ Ġtime ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/* Ġcompanion Ġobject Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/* Ġactions Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ NONE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ ADD Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ DELETE Ġ= Ġ 2 ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġto File Tag ĊĠĠĠ Ġfun Ġto File Tag (): ĠFile Tag Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile Tag ( parent Path , ĠfileName , Ġextension , Ġ- 1 L , Ġdate Taken , Ġduration , Ġlat , Ġlng , Ġexist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġget Action String ĊĠĠĠ Ġprivate Ġfun Ġget Action String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ NONE Ġ-> Ġ" ACTION _ NONE " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ ADD Ġ-> Ġ" ACTION _ ADD " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ DELETE Ġ-> Ġ" ACTION _ DELETE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" NOT ĠIMP LEMENT ED " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠtoString ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" File Action (" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" filePath =' ${ get FilePath ()} ', Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" media Store Id =$ media Store Id , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" date Taken =' ${ Ph older Tag Util . millis To DateTime ( date Taken )} ', Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" duration =$ duration , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lat Lng = ($ lat ,$ lng ), Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exist =$ exist , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action =' ${ getAction String ()} ', Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" time =$ time )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġequals ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġother Ġas ĠFile Action ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġconsider ĠfilePath Ġand Ġaction Ġas Ġunique Ġidentifier ĊĠĠĠĠĠĠĠ Ġif Ġ( get FilePath () Ġ!= Ġother . get FilePath ()) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= Ġother . action ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠhashCode ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġconsider ĠfilePath Ġand Ġaction Ġas Ġunique Ġidentifier ĊĠĠĠĠĠĠĠ Ġreturn ĠObjects . hash ( get FilePath (), Ġaction ) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ /* --- ĠFile Action Dao Ġ--- */ Ċ @ Dao Ċ abstract Ġclass ĠFile Action Dao Ġ{ ĊĊĠĠĠ Ġ// ĠgetAll ĊĠĠĠ Ġfun ĠgetAll (): ĠList < File Action > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ getAll () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġget ĊĠĠĠ Ġfun Ġget ( filePath : ĠString ): ĠFile Action ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP holder Tag Util . getParent Path ( filePath ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP holder Tag Util . get FileName ( filePath ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP holder Tag Util . getExtension ( filePath ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġupdate ĊĠĠĠ Ġfun Ġupdate ( file Actions : ĠList < File Action >): ĠList < Long > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ update ( file Actions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġdelete ĊĠĠĠ Ġfun Ġdelete ( file Actions : ĠList < File Action >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ delete ( file Actions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġdelete ĊĠĠĠ Ġfun Ġdelete ( file Action : ĠFile Action ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ delete ( file Action ) Ġ> Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠFile Action ĠORDER ĠBY Ġtime ĠASC ") ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġ_ getAll (): ĠList < File Action > ĊĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM ĠFile Action Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġparent Path Ġlike Ġ: parent Path ĠAND ĠfileName Ġ= Ġ: fileName ĠAND Ġextension Ġ= Ġ: extension Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LIMIT Ġ 1 " ĊĠĠĠ Ġ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġ_ get ( parent Path : ĠString , ĠfileName : ĠString , Ġextension : ĠString ): ĠFile Action ? ĊĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġ_ update ( file Actions : ĠList < File Action >): ĠList < Long > ĊĊĠĠĠ Ġ@ Delete ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġ_ delete ( file Actions : ĠList < File Action >): ĠInt ĊĊĠĠĠ Ġ@ Delete ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġ_ delete ( file Action : ĠFile Action ): ĠInt Ċ Ċ } Ċ