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.
- package/NitroBackgroundGeolocation.podspec +29 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +133 -0
- package/android/src/main/AndroidManifest.xml +65 -0
- package/android/src/main/cpp/cpp-adapter.cpp +11 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ConfigMapper.kt +332 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt +23 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt +66 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocation.kt +538 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocationPackage.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ReactNativeHeadlessTaskRunner.kt +62 -0
- package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +542 -0
- package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
- package/android/src/main/java/com/marianhello/bgloc/Config.java +652 -0
- package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
- package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +168 -0
- package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
- package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +186 -0
- package/android/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
- package/android/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
- package/android/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
- package/android/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
- package/android/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
- package/android/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
- package/android/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
- package/android/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
- package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
- package/android/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +61 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +280 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +586 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +142 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +17 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +760 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +140 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +246 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +233 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
- package/android/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
- package/android/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
- package/android/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
- package/android/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
- package/android/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
- package/android/src/main/java/com/marianhello/utils/Convert.java +56 -0
- package/android/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
- package/android/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
- package/android/src/main/java/org/apache/commons/io/Charsets.java +153 -0
- package/android/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
- package/android/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
- package/android/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
- package/android/src/main/res/values/strings.xml +6 -0
- package/android/src/main/res/xml/authenticator.xml +7 -0
- package/android/src/main/res/xml/syncadapter.xml +9 -0
- package/app.plugin.js +64 -0
- package/ios/NitroBackgroundGeolocation.swift +719 -0
- package/ios/NitroBackgroundGeolocationBootstrap.m +98 -0
- package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
- package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
- package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
- package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
- package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
- package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
- package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
- package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
- package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
- package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
- package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
- package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +62 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +650 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +184 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +523 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.m +308 -0
- package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
- package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
- package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
- package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
- package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +218 -0
- package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
- package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
- package/ios/common/BackgroundGeolocation/Reachability.m +474 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
- package/lib/module/NitroBackgroundGeolocation.nitro.js +172 -0
- package/lib/module/NitroBackgroundGeolocation.nitro.js.map +1 -0
- package/lib/module/headless.js +72 -0
- package/lib/module/headless.js.map +1 -0
- package/lib/module/index.js +60 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts +616 -0
- package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts.map +1 -0
- package/lib/typescript/src/headless.d.ts +40 -0
- package/lib/typescript/src/headless.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +8 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/nitro.json +23 -0
- package/nitrogen/generated/android/c++/JActivity.hpp +61 -0
- package/nitrogen/generated/android/c++/JAuthorizationStatus.hpp +61 -0
- package/nitrogen/generated/android/c++/JBackgroundGeolocationError.hpp +61 -0
- package/nitrogen/generated/android/c++/JConfigureOptions.hpp +179 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_Activity.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_AuthorizationStatus.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_BackgroundGeolocationError.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_Location.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_StationaryLocation.hpp +78 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.cpp +530 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.hpp +90 -0
- package/nitrogen/generated/android/c++/JLocation.hpp +105 -0
- package/nitrogen/generated/android/c++/JLocationAccuracy.hpp +64 -0
- package/nitrogen/generated/android/c++/JLocationOptions.hpp +65 -0
- package/nitrogen/generated/android/c++/JLocationProvider.hpp +61 -0
- package/nitrogen/generated/android/c++/JLogEntry.hpp +73 -0
- package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +67 -0
- package/nitrogen/generated/android/c++/JServiceStatus.hpp +66 -0
- package/nitrogen/generated/android/c++/JStationaryLocation.hpp +109 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.hpp +69 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.cpp +33 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.hpp +77 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Activity.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/AuthorizationStatus.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/BackgroundGeolocationError.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ConfigureOptions.kt +182 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Activity.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_AuthorizationStatus.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_BackgroundGeolocationError.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Location.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_StationaryLocation.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/HybridNitroBackgroundGeolocationSpec.kt +218 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Location.kt +111 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationAccuracy.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationOptions.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationProvider.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LogEntry.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/NativeLogLevel.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ServiceStatus.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/StationaryLocation.kt +116 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_AnyMap.kt +63 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Boolean.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Double.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationAccuracy.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationProvider.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Map_String__String_.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_String.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/nitrobackgroundgeolocationOnLoad.kt +35 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake +88 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle +27 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.cpp +66 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.hpp +34 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb +62 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.cpp +129 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.hpp +911 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Umbrella.hpp +88 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.swift +26 -0
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.hpp +335 -0
- package/nitrogen/generated/ios/swift/Activity.swift +34 -0
- package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
- package/nitrogen/generated/ios/swift/BackgroundGeolocationError.swift +34 -0
- package/nitrogen/generated/ios/swift/ConfigureOptions.swift +1037 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_Activity.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_AuthorizationStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundGeolocationError.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_ConfigureOptions.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_Location.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_ServiceStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_StationaryLocation.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_StationaryLocation_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_Location_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_LogEntry_.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec.swift +82 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec_cxx.swift +675 -0
- package/nitrogen/generated/ios/swift/Location.swift +89 -0
- package/nitrogen/generated/ios/swift/LocationAccuracy.swift +48 -0
- package/nitrogen/generated/ios/swift/LocationOptions.swift +78 -0
- package/nitrogen/generated/ios/swift/LocationProvider.swift +44 -0
- package/nitrogen/generated/ios/swift/LogEntry.swift +49 -0
- package/nitrogen/generated/ios/swift/NativeLogLevel.swift +52 -0
- package/nitrogen/generated/ios/swift/ServiceStatus.swift +39 -0
- package/nitrogen/generated/ios/swift/StationaryLocation.swift +94 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_AnyMap.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Bool.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Dictionary_String__String_.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_LocationAccuracy.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_LocationProvider.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
- package/nitrogen/generated/shared/c++/Activity.hpp +87 -0
- package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +63 -0
- package/nitrogen/generated/shared/c++/BackgroundGeolocationError.hpp +87 -0
- package/nitrogen/generated/shared/c++/ConfigureOptions.hpp +197 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.cpp +48 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.hpp +121 -0
- package/nitrogen/generated/shared/c++/Location.hpp +131 -0
- package/nitrogen/generated/shared/c++/LocationAccuracy.hpp +69 -0
- package/nitrogen/generated/shared/c++/LocationOptions.hpp +91 -0
- package/nitrogen/generated/shared/c++/LocationProvider.hpp +63 -0
- package/nitrogen/generated/shared/c++/LogEntry.hpp +99 -0
- package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +65 -0
- package/nitrogen/generated/shared/c++/ServiceStatus.hpp +92 -0
- package/nitrogen/generated/shared/c++/StationaryLocation.hpp +135 -0
- package/package.json +112 -0
- package/react-native.config.js +10 -0
- package/src/NitroBackgroundGeolocation.nitro.ts +656 -0
- package/src/headless.ts +91 -0
- 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
|
+
}
|