react-native-nitro-background-geolocation 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/NitroBackgroundGeolocation.podspec +29 -0
  2. package/android/CMakeLists.txt +24 -0
  3. package/android/build.gradle +133 -0
  4. package/android/src/main/AndroidManifest.xml +65 -0
  5. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  6. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ConfigMapper.kt +332 -0
  7. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt +23 -0
  8. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt +66 -0
  9. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocation.kt +538 -0
  10. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocationPackage.kt +22 -0
  11. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ReactNativeHeadlessTaskRunner.kt +62 -0
  12. package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +542 -0
  13. package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
  14. package/android/src/main/java/com/marianhello/bgloc/Config.java +652 -0
  15. package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
  16. package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +168 -0
  17. package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
  18. package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
  19. package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
  20. package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +186 -0
  21. package/android/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
  22. package/android/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
  23. package/android/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
  24. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
  25. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
  26. package/android/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
  27. package/android/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
  28. package/android/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
  29. package/android/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
  30. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
  31. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
  32. package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
  33. package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
  34. package/android/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
  35. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
  36. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
  37. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
  38. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
  39. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
  40. package/android/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
  41. package/android/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
  42. package/android/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
  43. package/android/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +61 -0
  44. package/android/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
  45. package/android/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
  46. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
  47. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
  48. package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
  49. package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +280 -0
  50. package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +586 -0
  51. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
  52. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
  53. package/android/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
  54. package/android/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +142 -0
  55. package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +17 -0
  56. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +760 -0
  57. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
  58. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
  59. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
  60. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +140 -0
  61. package/android/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
  62. package/android/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
  63. package/android/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
  64. package/android/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +246 -0
  65. package/android/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
  66. package/android/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +233 -0
  67. package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
  68. package/android/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
  69. package/android/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
  70. package/android/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
  71. package/android/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
  72. package/android/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
  73. package/android/src/main/java/com/marianhello/utils/Convert.java +56 -0
  74. package/android/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
  75. package/android/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
  76. package/android/src/main/java/org/apache/commons/io/Charsets.java +153 -0
  77. package/android/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
  78. package/android/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
  79. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
  80. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
  81. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
  82. package/android/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
  83. package/android/src/main/res/values/strings.xml +6 -0
  84. package/android/src/main/res/xml/authenticator.xml +7 -0
  85. package/android/src/main/res/xml/syncadapter.xml +9 -0
  86. package/app.plugin.js +64 -0
  87. package/ios/NitroBackgroundGeolocation.swift +719 -0
  88. package/ios/NitroBackgroundGeolocationBootstrap.m +98 -0
  89. package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
  90. package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
  91. package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
  92. package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
  93. package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
  94. package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
  95. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
  96. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
  97. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
  98. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
  99. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
  100. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
  101. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
  102. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
  103. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
  104. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
  105. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
  106. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
  107. package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
  108. package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
  109. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
  110. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
  111. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +62 -0
  112. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +650 -0
  113. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
  114. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +184 -0
  115. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
  116. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
  117. package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
  118. package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
  119. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
  120. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
  121. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
  122. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +523 -0
  123. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
  124. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
  125. package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
  126. package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
  127. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
  128. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
  129. package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
  130. package/ios/common/BackgroundGeolocation/MAURLocationManager.m +308 -0
  131. package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
  132. package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
  133. package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
  134. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
  135. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +218 -0
  136. package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
  137. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
  138. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
  139. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
  140. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
  141. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
  142. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
  143. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
  144. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
  145. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
  146. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
  147. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
  148. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
  149. package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
  150. package/ios/common/BackgroundGeolocation/Reachability.m +474 -0
  151. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
  152. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
  153. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
  154. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
  155. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
  156. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
  157. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
  158. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
  159. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
  160. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
  161. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
  162. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
  163. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
  164. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
  165. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
  166. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
  167. package/lib/module/NitroBackgroundGeolocation.nitro.js +172 -0
  168. package/lib/module/NitroBackgroundGeolocation.nitro.js.map +1 -0
  169. package/lib/module/headless.js +72 -0
  170. package/lib/module/headless.js.map +1 -0
  171. package/lib/module/index.js +60 -0
  172. package/lib/module/index.js.map +1 -0
  173. package/lib/module/package.json +1 -0
  174. package/lib/typescript/package.json +1 -0
  175. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts +616 -0
  176. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts.map +1 -0
  177. package/lib/typescript/src/headless.d.ts +40 -0
  178. package/lib/typescript/src/headless.d.ts.map +1 -0
  179. package/lib/typescript/src/index.d.ts +8 -0
  180. package/lib/typescript/src/index.d.ts.map +1 -0
  181. package/nitro.json +23 -0
  182. package/nitrogen/generated/android/c++/JActivity.hpp +61 -0
  183. package/nitrogen/generated/android/c++/JAuthorizationStatus.hpp +61 -0
  184. package/nitrogen/generated/android/c++/JBackgroundGeolocationError.hpp +61 -0
  185. package/nitrogen/generated/android/c++/JConfigureOptions.hpp +179 -0
  186. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  187. package/nitrogen/generated/android/c++/JFunc_void_Activity.hpp +78 -0
  188. package/nitrogen/generated/android/c++/JFunc_void_AuthorizationStatus.hpp +77 -0
  189. package/nitrogen/generated/android/c++/JFunc_void_BackgroundGeolocationError.hpp +78 -0
  190. package/nitrogen/generated/android/c++/JFunc_void_Location.hpp +78 -0
  191. package/nitrogen/generated/android/c++/JFunc_void_StationaryLocation.hpp +78 -0
  192. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.cpp +530 -0
  193. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.hpp +90 -0
  194. package/nitrogen/generated/android/c++/JLocation.hpp +105 -0
  195. package/nitrogen/generated/android/c++/JLocationAccuracy.hpp +64 -0
  196. package/nitrogen/generated/android/c++/JLocationOptions.hpp +65 -0
  197. package/nitrogen/generated/android/c++/JLocationProvider.hpp +61 -0
  198. package/nitrogen/generated/android/c++/JLogEntry.hpp +73 -0
  199. package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +67 -0
  200. package/nitrogen/generated/android/c++/JServiceStatus.hpp +66 -0
  201. package/nitrogen/generated/android/c++/JStationaryLocation.hpp +109 -0
  202. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.cpp +26 -0
  203. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.hpp +71 -0
  204. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.cpp +26 -0
  205. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.hpp +69 -0
  206. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  207. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  208. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.cpp +26 -0
  209. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.hpp +71 -0
  210. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.cpp +26 -0
  211. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.hpp +71 -0
  212. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.cpp +33 -0
  213. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.hpp +77 -0
  214. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  215. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  216. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Activity.kt +56 -0
  217. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/AuthorizationStatus.kt +24 -0
  218. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/BackgroundGeolocationError.kt +56 -0
  219. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ConfigureOptions.kt +182 -0
  220. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void.kt +80 -0
  221. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Activity.kt +80 -0
  222. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_AuthorizationStatus.kt +80 -0
  223. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_BackgroundGeolocationError.kt +80 -0
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Location.kt +80 -0
  225. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_StationaryLocation.kt +80 -0
  226. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/HybridNitroBackgroundGeolocationSpec.kt +218 -0
  227. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Location.kt +111 -0
  228. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationAccuracy.kt +25 -0
  229. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationOptions.kt +61 -0
  230. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationProvider.kt +24 -0
  231. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LogEntry.kt +71 -0
  232. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/NativeLogLevel.kt +26 -0
  233. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ServiceStatus.kt +61 -0
  234. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/StationaryLocation.kt +116 -0
  235. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_AnyMap.kt +63 -0
  236. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Boolean.kt +62 -0
  237. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Double.kt +62 -0
  238. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationAccuracy.kt +62 -0
  239. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationProvider.kt +62 -0
  240. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Map_String__String_.kt +62 -0
  241. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_String.kt +62 -0
  242. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/nitrobackgroundgeolocationOnLoad.kt +35 -0
  243. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake +88 -0
  244. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle +27 -0
  245. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.cpp +66 -0
  246. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.hpp +34 -0
  247. package/nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb +62 -0
  248. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.cpp +129 -0
  249. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.hpp +911 -0
  250. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Umbrella.hpp +88 -0
  251. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.mm +33 -0
  252. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.swift +26 -0
  253. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.cpp +11 -0
  254. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.hpp +335 -0
  255. package/nitrogen/generated/ios/swift/Activity.swift +34 -0
  256. package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
  257. package/nitrogen/generated/ios/swift/BackgroundGeolocationError.swift +34 -0
  258. package/nitrogen/generated/ios/swift/ConfigureOptions.swift +1037 -0
  259. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  260. package/nitrogen/generated/ios/swift/Func_void_Activity.swift +46 -0
  261. package/nitrogen/generated/ios/swift/Func_void_AuthorizationStatus.swift +46 -0
  262. package/nitrogen/generated/ios/swift/Func_void_BackgroundGeolocationError.swift +46 -0
  263. package/nitrogen/generated/ios/swift/Func_void_ConfigureOptions.swift +46 -0
  264. package/nitrogen/generated/ios/swift/Func_void_Location.swift +46 -0
  265. package/nitrogen/generated/ios/swift/Func_void_ServiceStatus.swift +46 -0
  266. package/nitrogen/generated/ios/swift/Func_void_StationaryLocation.swift +46 -0
  267. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  268. package/nitrogen/generated/ios/swift/Func_void_std__optional_StationaryLocation_.swift +46 -0
  269. package/nitrogen/generated/ios/swift/Func_void_std__vector_Location_.swift +46 -0
  270. package/nitrogen/generated/ios/swift/Func_void_std__vector_LogEntry_.swift +46 -0
  271. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec.swift +82 -0
  272. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec_cxx.swift +675 -0
  273. package/nitrogen/generated/ios/swift/Location.swift +89 -0
  274. package/nitrogen/generated/ios/swift/LocationAccuracy.swift +48 -0
  275. package/nitrogen/generated/ios/swift/LocationOptions.swift +78 -0
  276. package/nitrogen/generated/ios/swift/LocationProvider.swift +44 -0
  277. package/nitrogen/generated/ios/swift/LogEntry.swift +49 -0
  278. package/nitrogen/generated/ios/swift/NativeLogLevel.swift +52 -0
  279. package/nitrogen/generated/ios/swift/ServiceStatus.swift +39 -0
  280. package/nitrogen/generated/ios/swift/StationaryLocation.swift +94 -0
  281. package/nitrogen/generated/ios/swift/Variant_NullType_AnyMap.swift +30 -0
  282. package/nitrogen/generated/ios/swift/Variant_NullType_Bool.swift +30 -0
  283. package/nitrogen/generated/ios/swift/Variant_NullType_Dictionary_String__String_.swift +30 -0
  284. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
  285. package/nitrogen/generated/ios/swift/Variant_NullType_LocationAccuracy.swift +30 -0
  286. package/nitrogen/generated/ios/swift/Variant_NullType_LocationProvider.swift +30 -0
  287. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
  288. package/nitrogen/generated/shared/c++/Activity.hpp +87 -0
  289. package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +63 -0
  290. package/nitrogen/generated/shared/c++/BackgroundGeolocationError.hpp +87 -0
  291. package/nitrogen/generated/shared/c++/ConfigureOptions.hpp +197 -0
  292. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.cpp +48 -0
  293. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.hpp +121 -0
  294. package/nitrogen/generated/shared/c++/Location.hpp +131 -0
  295. package/nitrogen/generated/shared/c++/LocationAccuracy.hpp +69 -0
  296. package/nitrogen/generated/shared/c++/LocationOptions.hpp +91 -0
  297. package/nitrogen/generated/shared/c++/LocationProvider.hpp +63 -0
  298. package/nitrogen/generated/shared/c++/LogEntry.hpp +99 -0
  299. package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +65 -0
  300. package/nitrogen/generated/shared/c++/ServiceStatus.hpp +92 -0
  301. package/nitrogen/generated/shared/c++/StationaryLocation.hpp +135 -0
  302. package/package.json +112 -0
  303. package/react-native.config.js +10 -0
  304. package/src/NitroBackgroundGeolocation.nitro.ts +656 -0
  305. package/src/headless.ts +91 -0
  306. package/src/index.tsx +100 -0
@@ -0,0 +1,506 @@
1
+ package com.marianhello.bgloc.data.sqlite;
2
+
3
+ import android.content.ContentValues;
4
+ import android.content.Context;
5
+ import android.database.Cursor;
6
+ import android.database.DatabaseUtils;
7
+ import android.database.sqlite.SQLiteDatabase;
8
+ import android.text.TextUtils;
9
+
10
+ import com.marianhello.bgloc.data.BackgroundLocation;
11
+ import com.marianhello.bgloc.data.LocationDAO;
12
+ import com.marianhello.bgloc.data.sqlite.SQLiteLocationContract.LocationEntry;
13
+ import ru.andremoniy.sqlbuilder.SqlExpression;
14
+ import ru.andremoniy.sqlbuilder.SqlSelectStatement;
15
+
16
+ import java.util.ArrayList;
17
+ import java.util.Collection;
18
+
19
+ public class SQLiteLocationDAO implements LocationDAO {
20
+ private SQLiteDatabase db;
21
+
22
+ public SQLiteLocationDAO(Context context) {
23
+ SQLiteOpenHelper helper = SQLiteOpenHelper.getHelper(context);
24
+ this.db = helper.getWritableDatabase();
25
+ }
26
+
27
+ public SQLiteLocationDAO(SQLiteDatabase db) {
28
+ this.db = db;
29
+ }
30
+
31
+ /**
32
+ * Get all locations that match whereClause
33
+ *
34
+ * @param whereClause
35
+ * @param whereArgs
36
+ * @return collection of locations
37
+ */
38
+ private Collection<BackgroundLocation> getLocations(String whereClause, String[] whereArgs) {
39
+ Collection<BackgroundLocation> locations = new ArrayList<BackgroundLocation>();
40
+
41
+ String[] columns = queryColumns();
42
+ String groupBy = null;
43
+ String having = null;
44
+ String orderBy = LocationEntry.COLUMN_NAME_TIME + " ASC";
45
+ Cursor cursor = null;
46
+
47
+ try {
48
+ cursor = db.query(
49
+ LocationEntry.TABLE_NAME, // The table to query
50
+ columns, // The columns to return
51
+ whereClause, // The columns for the WHERE clause
52
+ whereArgs, // The values for the WHERE clause
53
+ groupBy, // don't group the rows
54
+ having, // don't filter by row groups
55
+ orderBy // The sort order
56
+ );
57
+ while (cursor.moveToNext()) {
58
+ locations.add(hydrate(cursor));
59
+ }
60
+ } finally {
61
+ if (cursor != null) {
62
+ cursor.close();
63
+ }
64
+ }
65
+
66
+ return locations;
67
+ }
68
+ public Collection<BackgroundLocation> getAllLocations() {
69
+ return getLocations(null, null);
70
+ }
71
+
72
+ public Collection<BackgroundLocation> getValidLocations() {
73
+ String whereClause = LocationEntry.COLUMN_NAME_STATUS + " <> ?";
74
+ String[] whereArgs = { String.valueOf(BackgroundLocation.DELETED) };
75
+
76
+ return getLocations(whereClause, whereArgs);
77
+ }
78
+
79
+ public Collection<BackgroundLocation> getValidLocationsAndDelete() {
80
+ db.beginTransactionNonExclusive();
81
+ Collection<BackgroundLocation> locations = getValidLocations();
82
+ deleteAllLocations();
83
+ db.setTransactionSuccessful();
84
+ db.endTransaction();
85
+ return locations;
86
+ }
87
+
88
+ public BackgroundLocation getLocationById(long id) {
89
+ String[] columns = queryColumns();
90
+ String whereClause = LocationEntry._ID + " = ?";
91
+ String[] whereArgs = { String.valueOf(id) };
92
+
93
+ BackgroundLocation location = null;
94
+ Cursor cursor = null;
95
+ try {
96
+ cursor = db.query(
97
+ LocationEntry.TABLE_NAME, // The table to query
98
+ columns, // The columns to return
99
+ whereClause, // The columns for the WHERE clause
100
+ whereArgs, // The values for the WHERE clause
101
+ null, // don't group the rows
102
+ null, // don't filter by row groups
103
+ null // The sort order
104
+ );
105
+ while (cursor.moveToNext()) {
106
+ location = hydrate(cursor);
107
+ if (!cursor.isLast()) {
108
+ throw new RuntimeException("Location " + id + " is not unique");
109
+ }
110
+ }
111
+ } finally {
112
+ if (cursor != null) {
113
+ cursor.close();
114
+ }
115
+ }
116
+
117
+ return location;
118
+ }
119
+
120
+ public BackgroundLocation getFirstUnpostedLocation() {
121
+ SqlSelectStatement subsql = new SqlSelectStatement();
122
+ subsql.column(new SqlExpression(String.format("MIN(%s)", LocationEntry._ID)), LocationEntry._ID);
123
+ subsql.from(LocationEntry.TABLE_NAME);
124
+ subsql.where(LocationEntry.COLUMN_NAME_STATUS, SqlExpression.SqlOperatorEqualTo, BackgroundLocation.POST_PENDING);
125
+ subsql.orderBy(LocationEntry.COLUMN_NAME_TIME);
126
+
127
+ SqlSelectStatement sql = new SqlSelectStatement();
128
+ sql.columns(queryColumns());
129
+ sql.from(LocationEntry.TABLE_NAME);
130
+ sql.where(LocationEntry._ID, SqlExpression.SqlOperatorEqualTo, subsql);
131
+
132
+ BackgroundLocation location = null;
133
+ Cursor cursor = null;
134
+ try {
135
+ cursor = db.rawQuery(sql.statement(), new String[]{});
136
+ while (cursor.moveToNext()) {
137
+ location = hydrate(cursor);
138
+ if (!cursor.isLast()) {
139
+ throw new RuntimeException("Expected single location");
140
+ }
141
+ }
142
+ } finally {
143
+ if (cursor != null) {
144
+ cursor.close();
145
+ }
146
+ }
147
+
148
+ return location;
149
+ }
150
+
151
+ public BackgroundLocation getNextUnpostedLocation(long fromId) {
152
+ SqlSelectStatement subsql = new SqlSelectStatement();
153
+ subsql.column(new SqlExpression(String.format("MIN(%s)", LocationEntry._ID)), LocationEntry._ID);
154
+ subsql.from(LocationEntry.TABLE_NAME);
155
+ subsql.where(LocationEntry.COLUMN_NAME_STATUS, SqlExpression.SqlOperatorEqualTo, BackgroundLocation.POST_PENDING);
156
+ subsql.where(LocationEntry._ID, SqlExpression.SqlOperatorNotEqualTo, fromId);
157
+ subsql.orderBy(LocationEntry.COLUMN_NAME_TIME);
158
+
159
+ SqlSelectStatement sql = new SqlSelectStatement();
160
+ sql.columns(queryColumns());
161
+ sql.from(LocationEntry.TABLE_NAME);
162
+ sql.where(LocationEntry._ID, SqlExpression.SqlOperatorEqualTo, subsql);
163
+
164
+ BackgroundLocation location = null;
165
+ Cursor cursor = null;
166
+ try {
167
+ cursor = db.rawQuery(sql.statement(), new String[]{});
168
+ while (cursor.moveToNext()) {
169
+ location = hydrate(cursor);
170
+ if (!cursor.isLast()) {
171
+ throw new RuntimeException("Expected single location");
172
+ }
173
+ }
174
+ } finally {
175
+ if (cursor != null) {
176
+ cursor.close();
177
+ }
178
+ }
179
+
180
+ return location;
181
+ }
182
+
183
+ public long getUnpostedLocationsCount() {
184
+ String whereClause = SQLiteLocationContract.LocationEntry.COLUMN_NAME_STATUS + " = ?";
185
+ String[] whereArgs = { String.valueOf(BackgroundLocation.POST_PENDING) };
186
+
187
+ return DatabaseUtils.queryNumEntries(db, LocationEntry.TABLE_NAME, whereClause, whereArgs);
188
+ }
189
+
190
+ public long getLocationsForSyncCount(long millisSinceLastBatch) {
191
+ String whereClause = TextUtils.join("", new String[]{
192
+ SQLiteLocationContract.LocationEntry.COLUMN_NAME_STATUS + " = ? AND ( ",
193
+ SQLiteLocationContract.LocationEntry.COLUMN_NAME_BATCH_START_MILLIS + " IS NULL OR ",
194
+ SQLiteLocationContract.LocationEntry.COLUMN_NAME_BATCH_START_MILLIS + " < ? )",
195
+ });
196
+ String[] whereArgs = {
197
+ String.valueOf(BackgroundLocation.SYNC_PENDING),
198
+ String.valueOf(millisSinceLastBatch)
199
+ };
200
+
201
+ return DatabaseUtils.queryNumEntries(db, LocationEntry.TABLE_NAME, whereClause, whereArgs);
202
+ }
203
+
204
+ /**
205
+ * Persist location into database
206
+ *
207
+ * @param location
208
+ * @return rowId or -1 when error occured
209
+ */
210
+ public long persistLocation(BackgroundLocation location) {
211
+ ContentValues values = getContentValues(location);
212
+ long rowId = db.insertOrThrow(LocationEntry.TABLE_NAME, LocationEntry.COLUMN_NAME_NULLABLE, values);
213
+
214
+ return rowId;
215
+ }
216
+
217
+ /**
218
+ * Persist location into database with maximum row limit
219
+ *
220
+ * Method will ensure that there will be no more records than maxRows.
221
+ * Instead old records will be replaced with newer ones.
222
+ * If maxRows will change in time, method will delete excess records and vacuum table.
223
+ *
224
+ * @param location
225
+ * @param maxRows
226
+ * @return rowId or -1 when error occured
227
+ */
228
+ public long persistLocation(BackgroundLocation location, int maxRows) {
229
+ if (maxRows == 0) {
230
+ return -1;
231
+ }
232
+
233
+ String sql = null;
234
+ Boolean shouldVacuum = false;
235
+
236
+ long rowCount = DatabaseUtils.queryNumEntries(db, LocationEntry.TABLE_NAME);
237
+
238
+ if (rowCount < maxRows) {
239
+ ContentValues values = getContentValues(location);
240
+ return db.insertOrThrow(LocationEntry.TABLE_NAME, LocationEntry.COLUMN_NAME_NULLABLE, values);
241
+ }
242
+
243
+ db.beginTransactionNonExclusive();
244
+
245
+ if (rowCount > maxRows) {
246
+ sql = new StringBuilder("DELETE FROM ")
247
+ .append(LocationEntry.TABLE_NAME)
248
+ .append(" WHERE ").append(LocationEntry._ID)
249
+ .append(" IN (SELECT ").append(LocationEntry._ID)
250
+ .append(" FROM ").append(LocationEntry.TABLE_NAME)
251
+ .append(" ORDER BY ").append(LocationEntry.COLUMN_NAME_TIME)
252
+ .append(" LIMIT ?)")
253
+ .toString();
254
+ db.execSQL(sql, new Object[] {(rowCount - maxRows)});
255
+ shouldVacuum = true;
256
+ }
257
+
258
+ // get oldest location id to be overwritten
259
+ Cursor cursor = null;
260
+ long locationId;
261
+ try {
262
+ cursor = db.query(
263
+ LocationEntry.TABLE_NAME,
264
+ new String[] { "min(" + LocationEntry._ID + ")" },
265
+ TextUtils.join("", new String[]{
266
+ LocationEntry.COLUMN_NAME_TIME,
267
+ "= (SELECT min(",
268
+ LocationEntry.COLUMN_NAME_TIME,
269
+ ") FROM ",
270
+ LocationEntry.TABLE_NAME,
271
+ ")"
272
+ }),
273
+ null, null, null, null);
274
+ cursor.moveToFirst();
275
+ locationId = cursor.getLong(0);
276
+ } finally {
277
+ if (cursor != null) {
278
+ cursor.close();
279
+ }
280
+ }
281
+
282
+ sql = new StringBuilder("UPDATE ")
283
+ .append(LocationEntry.TABLE_NAME).append(" SET ")
284
+ .append(LocationEntry.COLUMN_NAME_PROVIDER).append("= ?,")
285
+ .append(LocationEntry.COLUMN_NAME_TIME).append("= ?,")
286
+ .append(LocationEntry.COLUMN_NAME_ACCURACY).append("= ?,")
287
+ .append(LocationEntry.COLUMN_NAME_VERTICAL_ACCURACY).append("= ?,")
288
+ .append(LocationEntry.COLUMN_NAME_SPEED).append("= ?,")
289
+ .append(LocationEntry.COLUMN_NAME_BEARING).append("= ?,")
290
+ .append(LocationEntry.COLUMN_NAME_ALTITUDE).append("= ?,")
291
+ .append(LocationEntry.COLUMN_NAME_RADIUS).append("= ?,")
292
+ .append(LocationEntry.COLUMN_NAME_LATITUDE).append("= ?,")
293
+ .append(LocationEntry.COLUMN_NAME_LONGITUDE).append("= ?,")
294
+ .append(LocationEntry.COLUMN_NAME_HAS_ACCURACY).append("= ?,")
295
+ .append(LocationEntry.COLUMN_NAME_HAS_VERTICAL_ACCURACY).append("= ?,")
296
+ .append(LocationEntry.COLUMN_NAME_HAS_SPEED).append("= ?,")
297
+ .append(LocationEntry.COLUMN_NAME_HAS_BEARING).append("= ?,")
298
+ .append(LocationEntry.COLUMN_NAME_HAS_ALTITUDE).append("= ?,")
299
+ .append(LocationEntry.COLUMN_NAME_HAS_RADIUS).append("= ?,")
300
+ .append(LocationEntry.COLUMN_NAME_LOCATION_PROVIDER).append("= ?,")
301
+ .append(LocationEntry.COLUMN_NAME_BATCH_START_MILLIS).append("= ?,")
302
+ .append(LocationEntry.COLUMN_NAME_STATUS).append("= ?,")
303
+ .append(LocationEntry.COLUMN_NAME_MOCK_FLAGS).append("= ?")
304
+ .append(" WHERE ").append(LocationEntry._ID)
305
+ .append("= ?")
306
+ .toString();
307
+ db.execSQL(sql, new Object[] {
308
+ location.getProvider(),
309
+ location.getTime(),
310
+ location.getAccuracy(),
311
+ location.getVerticalAccuracy(),
312
+ location.getSpeed(),
313
+ location.getBearing(),
314
+ location.getAltitude(),
315
+ location.getRadius(),
316
+ location.getLatitude(),
317
+ location.getLongitude(),
318
+ location.hasAccuracy() ? 1 : 0,
319
+ location.hasVerticalAccuracy() ? 1 : 0,
320
+ location.hasSpeed() ? 1 : 0,
321
+ location.hasBearing() ? 1 : 0,
322
+ location.hasAltitude() ? 1 : 0,
323
+ location.hasRadius() ? 1 : 0,
324
+ location.getLocationProvider(),
325
+ location.getBatchStartMillis(),
326
+ location.getStatus(),
327
+ location.getMockFlags(),
328
+ locationId
329
+ });
330
+
331
+ db.setTransactionSuccessful();
332
+ db.endTransaction();
333
+
334
+ if (shouldVacuum) { db.execSQL("VACUUM"); }
335
+
336
+ return locationId;
337
+ }
338
+
339
+ /**
340
+ * Delete location by given locationId
341
+ *
342
+ * Note: location is not actually deleted only flagged as non valid
343
+ * @param locationId
344
+ */
345
+ public void deleteLocationById(long locationId) {
346
+ if (locationId < 0) {
347
+ return;
348
+ }
349
+
350
+ ContentValues values = new ContentValues();
351
+ values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.DELETED);
352
+
353
+ String whereClause = LocationEntry._ID + " = ?";
354
+ String[] whereArgs = { String.valueOf(locationId) };
355
+
356
+ db.update(LocationEntry.TABLE_NAME, values, whereClause, whereArgs);
357
+ }
358
+
359
+ public BackgroundLocation deleteFirstUnpostedLocation() {
360
+ BackgroundLocation location = getFirstUnpostedLocation();
361
+ deleteLocationById(location.getLocationId());
362
+
363
+ return location;
364
+ }
365
+
366
+ public long persistLocationForSync(BackgroundLocation location, int maxRows) {
367
+ Long locationId = location.getLocationId();
368
+
369
+ if (locationId == null) {
370
+ location.setStatus(BackgroundLocation.SYNC_PENDING);
371
+ return persistLocation(location, maxRows);
372
+ } else {
373
+ ContentValues values = new ContentValues();
374
+ values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.SYNC_PENDING);
375
+
376
+ String whereClause = LocationEntry._ID + " = ?";
377
+ String[] whereArgs = { String.valueOf(locationId) };
378
+
379
+ db.update(LocationEntry.TABLE_NAME, values, whereClause, whereArgs);
380
+ return locationId;
381
+ }
382
+ }
383
+
384
+ public void updateLocationForSync(long locationId) {
385
+ ContentValues values = new ContentValues();
386
+ values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.SYNC_PENDING);
387
+
388
+ String whereClause = LocationEntry._ID + " = ?";
389
+ String[] whereArgs = { String.valueOf(locationId) };
390
+
391
+ db.update(LocationEntry.TABLE_NAME, values, whereClause, whereArgs);
392
+ }
393
+
394
+ /**
395
+ * Delete all locations
396
+ *
397
+ * Note: location are not actually deleted only flagged as non valid
398
+ */
399
+ public int deleteAllLocations() {
400
+ ContentValues values = new ContentValues();
401
+ values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.DELETED);
402
+
403
+ return db.update(LocationEntry.TABLE_NAME, values, null, null);
404
+ }
405
+
406
+ /**
407
+ * Delete all locations that are in post location queue
408
+ *
409
+ * Note: Instead of deleting, location status is changed so they can be still synced
410
+ */
411
+ public int deleteUnpostedLocations() {
412
+ ContentValues values = new ContentValues();
413
+ values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.SYNC_PENDING);
414
+
415
+ String whereClause = LocationEntry.COLUMN_NAME_STATUS + " = ?";
416
+ String[] whereArgs = { String.valueOf(BackgroundLocation.POST_PENDING) };
417
+
418
+ return db.update(LocationEntry.TABLE_NAME, values, whereClause, whereArgs);
419
+ }
420
+
421
+ private BackgroundLocation hydrate(Cursor c) {
422
+ BackgroundLocation l = new BackgroundLocation(c.getString(c.getColumnIndex(LocationEntry.COLUMN_NAME_PROVIDER)));
423
+ l.setTime(c.getLong(c.getColumnIndex(LocationEntry.COLUMN_NAME_TIME)));
424
+ if (c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_HAS_ACCURACY)) == 1) {
425
+ l.setAccuracy(c.getFloat(c.getColumnIndex(LocationEntry.COLUMN_NAME_ACCURACY)));
426
+ }
427
+ if (c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_HAS_VERTICAL_ACCURACY)) == 1) {
428
+ l.setVerticalAccuracy(c.getFloat(c.getColumnIndex(LocationEntry.COLUMN_NAME_VERTICAL_ACCURACY)));
429
+ }
430
+ if (c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_HAS_SPEED)) == 1) {
431
+ l.setSpeed(c.getFloat(c.getColumnIndex(LocationEntry.COLUMN_NAME_SPEED)));
432
+ }
433
+ if (c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_HAS_BEARING)) == 1) {
434
+ l.setBearing(c.getFloat(c.getColumnIndex(LocationEntry.COLUMN_NAME_BEARING)));
435
+ }
436
+ if (c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_HAS_ALTITUDE)) == 1) {
437
+ l.setAltitude(c.getDouble(c.getColumnIndex(LocationEntry.COLUMN_NAME_ALTITUDE)));
438
+ }
439
+ if (c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_HAS_RADIUS)) == 1) {
440
+ l.setRadius(c.getFloat(c.getColumnIndex(LocationEntry.COLUMN_NAME_RADIUS)));
441
+ }
442
+ l.setLatitude(c.getDouble(c.getColumnIndex(LocationEntry.COLUMN_NAME_LATITUDE)));
443
+ l.setLongitude(c.getDouble(c.getColumnIndex(LocationEntry.COLUMN_NAME_LONGITUDE)));
444
+ l.setLocationProvider(c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_LOCATION_PROVIDER)));
445
+ l.setBatchStartMillis(c.getLong(c.getColumnIndex(LocationEntry.COLUMN_NAME_BATCH_START_MILLIS)));
446
+ l.setStatus(c.getInt(c.getColumnIndex(LocationEntry.COLUMN_NAME_STATUS)));
447
+ l.setLocationId(c.getLong(c.getColumnIndex(LocationEntry._ID)));
448
+ l.setMockFlags(c.getInt((c.getColumnIndex(LocationEntry.COLUMN_NAME_MOCK_FLAGS))));
449
+
450
+ return l;
451
+ }
452
+
453
+ private ContentValues getContentValues(BackgroundLocation l) {
454
+ ContentValues values = new ContentValues();
455
+ values.put(LocationEntry.COLUMN_NAME_PROVIDER, l.getProvider());
456
+ values.put(LocationEntry.COLUMN_NAME_TIME, l.getTime());
457
+ values.put(LocationEntry.COLUMN_NAME_ACCURACY, l.getAccuracy());
458
+ values.put(LocationEntry.COLUMN_NAME_VERTICAL_ACCURACY, l.getVerticalAccuracy());
459
+ values.put(LocationEntry.COLUMN_NAME_SPEED, l.getSpeed());
460
+ values.put(LocationEntry.COLUMN_NAME_BEARING, l.getBearing());
461
+ values.put(LocationEntry.COLUMN_NAME_ALTITUDE, l.getAltitude());
462
+ values.put(LocationEntry.COLUMN_NAME_RADIUS, l.getRadius());
463
+ values.put(LocationEntry.COLUMN_NAME_LATITUDE, l.getLatitude());
464
+ values.put(LocationEntry.COLUMN_NAME_LONGITUDE, l.getLongitude());
465
+ values.put(LocationEntry.COLUMN_NAME_HAS_ACCURACY, l.hasAccuracy() ? 1 : 0);
466
+ values.put(LocationEntry.COLUMN_NAME_HAS_VERTICAL_ACCURACY, l.hasVerticalAccuracy() ? 1 : 0);
467
+ values.put(LocationEntry.COLUMN_NAME_HAS_SPEED, l.hasSpeed() ? 1 : 0);
468
+ values.put(LocationEntry.COLUMN_NAME_HAS_BEARING, l.hasBearing() ? 1 : 0);
469
+ values.put(LocationEntry.COLUMN_NAME_HAS_ALTITUDE, l.hasAltitude() ? 1 : 0);
470
+ values.put(LocationEntry.COLUMN_NAME_HAS_RADIUS, l.hasRadius() ? 1 : 0);
471
+ values.put(LocationEntry.COLUMN_NAME_LOCATION_PROVIDER, l.getLocationProvider());
472
+ values.put(LocationEntry.COLUMN_NAME_STATUS, l.getStatus());
473
+ values.put(LocationEntry.COLUMN_NAME_BATCH_START_MILLIS, l.getBatchStartMillis());
474
+ values.put(LocationEntry.COLUMN_NAME_MOCK_FLAGS, l.getMockFlags());
475
+
476
+ return values;
477
+ }
478
+
479
+ private String[] queryColumns() {
480
+ String[] columns = {
481
+ LocationEntry._ID,
482
+ LocationEntry.COLUMN_NAME_PROVIDER,
483
+ LocationEntry.COLUMN_NAME_TIME,
484
+ LocationEntry.COLUMN_NAME_ACCURACY,
485
+ LocationEntry.COLUMN_NAME_VERTICAL_ACCURACY,
486
+ LocationEntry.COLUMN_NAME_SPEED,
487
+ LocationEntry.COLUMN_NAME_BEARING,
488
+ LocationEntry.COLUMN_NAME_ALTITUDE,
489
+ LocationEntry.COLUMN_NAME_RADIUS,
490
+ LocationEntry.COLUMN_NAME_LATITUDE,
491
+ LocationEntry.COLUMN_NAME_LONGITUDE,
492
+ LocationEntry.COLUMN_NAME_HAS_ACCURACY,
493
+ LocationEntry.COLUMN_NAME_HAS_VERTICAL_ACCURACY,
494
+ LocationEntry.COLUMN_NAME_HAS_SPEED,
495
+ LocationEntry.COLUMN_NAME_HAS_BEARING,
496
+ LocationEntry.COLUMN_NAME_HAS_ALTITUDE,
497
+ LocationEntry.COLUMN_NAME_HAS_RADIUS,
498
+ LocationEntry.COLUMN_NAME_LOCATION_PROVIDER,
499
+ LocationEntry.COLUMN_NAME_STATUS,
500
+ LocationEntry.COLUMN_NAME_BATCH_START_MILLIS,
501
+ LocationEntry.COLUMN_NAME_MOCK_FLAGS
502
+ };
503
+
504
+ return columns;
505
+ }
506
+ }
@@ -0,0 +1,151 @@
1
+ package com.marianhello.bgloc.data.sqlite;
2
+
3
+
4
+ import android.content.Context;
5
+ import android.database.SQLException;
6
+ import android.database.sqlite.SQLiteDatabase;
7
+ import android.util.Log;
8
+
9
+ import com.marianhello.bgloc.data.sqlite.SQLiteLocationContract.LocationEntry;
10
+ import com.marianhello.bgloc.data.sqlite.SQLiteConfigurationContract.ConfigurationEntry;
11
+
12
+ import java.util.ArrayList;
13
+
14
+ import static com.marianhello.bgloc.data.sqlite.SQLiteConfigurationContract.ConfigurationEntry.SQL_CREATE_CONFIG_TABLE;
15
+ import static com.marianhello.bgloc.data.sqlite.SQLiteConfigurationContract.ConfigurationEntry.SQL_DROP_CONFIG_TABLE;
16
+ import static com.marianhello.bgloc.data.sqlite.SQLiteLocationContract.LocationEntry.SQL_CREATE_LOCATION_TABLE;
17
+ import static com.marianhello.bgloc.data.sqlite.SQLiteLocationContract.LocationEntry.SQL_CREATE_LOCATION_TABLE_BATCH_ID_IDX;
18
+ import static com.marianhello.bgloc.data.sqlite.SQLiteLocationContract.LocationEntry.SQL_CREATE_LOCATION_TABLE_TIME_IDX;
19
+ import static com.marianhello.bgloc.data.sqlite.SQLiteLocationContract.LocationEntry.SQL_DROP_LOCATION_TABLE;
20
+
21
+ public class SQLiteOpenHelper extends android.database.sqlite.SQLiteOpenHelper {
22
+ private static final String TAG = SQLiteOpenHelper.class.getName();
23
+ public static final String SQLITE_DATABASE_NAME = "cordova_bg_geolocation.db";
24
+ public static final int DATABASE_VERSION = 16;
25
+
26
+ public static final String TEXT_TYPE = " TEXT";
27
+ public static final String INTEGER_TYPE = " INTEGER";
28
+ public static final String REAL_TYPE = " REAL";
29
+ public static final String COMMA_SEP = ",";
30
+
31
+ private static SQLiteOpenHelper instance;
32
+
33
+ /**
34
+ * Get SqliteOpenHelper instance (singleton)
35
+ *
36
+ * Use the application context, which will ensure that you
37
+ * don't accidentally leak an Activity's context.
38
+ * See this article for more information: http://bit.ly/6LRzfx
39
+ *
40
+ * @param context
41
+ * @return
42
+ */
43
+ public static synchronized SQLiteOpenHelper getHelper(Context context) {
44
+ if (instance == null)
45
+ instance = new SQLiteOpenHelper(context.getApplicationContext());
46
+
47
+ return instance;
48
+ }
49
+
50
+ /**
51
+ * Constructor
52
+ *
53
+ * NOTE: Intended to use only for testing purposes.
54
+ * Use factory method getHelper instead.
55
+ *
56
+ * @param context
57
+ */
58
+ public SQLiteOpenHelper(Context context) {
59
+ super(context, SQLITE_DATABASE_NAME, null, DATABASE_VERSION);
60
+ }
61
+
62
+ @Override
63
+ public void onCreate(SQLiteDatabase db) {
64
+ Log.d(TAG, "Creating db: " + this.getDatabaseName());
65
+ execAndLogSql(db, SQL_CREATE_LOCATION_TABLE);
66
+ execAndLogSql(db, SQL_CREATE_CONFIG_TABLE);
67
+ execAndLogSql(db, SQL_CREATE_LOCATION_TABLE_TIME_IDX);
68
+ execAndLogSql(db, SQL_CREATE_LOCATION_TABLE_BATCH_ID_IDX);
69
+ }
70
+
71
+ @Override
72
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
73
+ Log.d(this.getClass().getName(), "Upgrading database oldVersion: " + oldVersion + " newVersion: " + newVersion);
74
+
75
+ ArrayList<String> alterSql = new ArrayList<String>();
76
+ switch (oldVersion) {
77
+ case 10:
78
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
79
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_STATUS + INTEGER_TYPE);
80
+ alterSql.add(SQL_CREATE_LOCATION_TABLE_TIME_IDX);
81
+ alterSql.add(SQL_DROP_CONFIG_TABLE);
82
+ alterSql.add(SQL_CREATE_CONFIG_TABLE);
83
+ case 11:
84
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
85
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_RADIUS + REAL_TYPE);
86
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
87
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_HAS_ACCURACY + INTEGER_TYPE);
88
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
89
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_HAS_SPEED + INTEGER_TYPE);
90
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
91
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_HAS_BEARING + INTEGER_TYPE);
92
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
93
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_HAS_ALTITUDE + INTEGER_TYPE);
94
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
95
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_HAS_RADIUS + INTEGER_TYPE);
96
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
97
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_BATCH_START_MILLIS + INTEGER_TYPE);
98
+ alterSql.add(SQL_CREATE_LOCATION_TABLE_BATCH_ID_IDX);
99
+ alterSql.add("UPDATE " + LocationEntry.TABLE_NAME +
100
+ " SET " + LocationEntry.COLUMN_NAME_HAS_ACCURACY + "= 1," +
101
+ LocationEntry.COLUMN_NAME_HAS_SPEED + "= 1," +
102
+ LocationEntry.COLUMN_NAME_HAS_BEARING + "= 1," +
103
+ LocationEntry.COLUMN_NAME_HAS_ALTITUDE + "= 1," +
104
+ LocationEntry.COLUMN_NAME_HAS_RADIUS + "= 1"
105
+ );
106
+ case 12:
107
+ alterSql.add("ALTER TABLE " + ConfigurationEntry.TABLE_NAME +
108
+ " ADD COLUMN " + ConfigurationEntry.COLUMN_NAME_TEMPLATE + TEXT_TYPE);
109
+ case 13:
110
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
111
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_MOCK_FLAGS + INTEGER_TYPE);
112
+ case 14:
113
+ alterSql.add("ALTER TABLE " + ConfigurationEntry.TABLE_NAME +
114
+ " ADD COLUMN " + ConfigurationEntry.COLUMN_NAME_NOTIFICATIONS_ENABLED + INTEGER_TYPE);
115
+ case 15:
116
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
117
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_VERTICAL_ACCURACY + REAL_TYPE);
118
+ alterSql.add("ALTER TABLE " + LocationEntry.TABLE_NAME +
119
+ " ADD COLUMN " + LocationEntry.COLUMN_NAME_HAS_VERTICAL_ACCURACY + INTEGER_TYPE);
120
+ alterSql.add("UPDATE " + LocationEntry.TABLE_NAME +
121
+ " SET " + LocationEntry.COLUMN_NAME_VERTICAL_ACCURACY + "= -1," +
122
+ LocationEntry.COLUMN_NAME_HAS_VERTICAL_ACCURACY + "= 0");
123
+
124
+ break; // DO NOT FORGET TO MOVE DOWN BREAK ON DB UPGRADE!!!
125
+ default:
126
+ onDowngrade(db, 0, 0);
127
+ return;
128
+ }
129
+
130
+ for (String sql : alterSql) {
131
+ execAndLogSql(db, sql);
132
+ }
133
+ }
134
+
135
+ @Override
136
+ public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
137
+ // we don't support db downgrade yet, instead we drop table and start over
138
+ execAndLogSql(db, SQL_DROP_LOCATION_TABLE);
139
+ execAndLogSql(db, SQL_DROP_CONFIG_TABLE);
140
+ onCreate(db);
141
+ }
142
+
143
+ public void execAndLogSql(SQLiteDatabase db, String sql) {
144
+ Log.d(TAG, sql);
145
+ try {
146
+ db.execSQL(sql);
147
+ } catch (SQLException e) {
148
+ Log.e(TAG, "Error executing sql: " + e.getMessage());
149
+ }
150
+ }
151
+ }
@@ -0,0 +1,15 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ import android.content.Context;
4
+
5
+ public abstract class AbstractTaskRunner implements TaskRunner {
6
+ protected Context mContext;
7
+
8
+ public AbstractTaskRunner() {}
9
+
10
+ public abstract void runTask(Task task);
11
+
12
+ public void setContext(Context context) {
13
+ mContext = context;
14
+ }
15
+ }