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,13 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data;
|
|
2
|
+
|
|
3
|
+
import java.util.Date;
|
|
4
|
+
import java.util.Collection;
|
|
5
|
+
|
|
6
|
+
import org.json.JSONException;
|
|
7
|
+
|
|
8
|
+
import com.marianhello.bgloc.Config;
|
|
9
|
+
|
|
10
|
+
public interface ConfigurationDAO {
|
|
11
|
+
boolean persistConfiguration(Config config) throws NullPointerException;
|
|
12
|
+
Config retrieveConfiguration() throws JSONException;
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data;
|
|
2
|
+
|
|
3
|
+
import android.content.Context;
|
|
4
|
+
|
|
5
|
+
import com.marianhello.bgloc.data.provider.ContentProviderLocationDAO;
|
|
6
|
+
import com.marianhello.bgloc.data.sqlite.SQLiteLocationDAO;
|
|
7
|
+
import com.marianhello.bgloc.data.sqlite.SQLiteConfigurationDAO;
|
|
8
|
+
|
|
9
|
+
public abstract class DAOFactory {
|
|
10
|
+
public static LocationDAO createLocationDAO(Context context) {
|
|
11
|
+
return new ContentProviderLocationDAO(context);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public static ConfigurationDAO createConfigurationDAO(Context context) {
|
|
15
|
+
return new SQLiteConfigurationDAO(context);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data;
|
|
2
|
+
|
|
3
|
+
import com.marianhello.utils.CloneHelper;
|
|
4
|
+
|
|
5
|
+
import org.json.JSONException;
|
|
6
|
+
import org.json.JSONObject;
|
|
7
|
+
|
|
8
|
+
import java.io.Serializable;
|
|
9
|
+
import java.util.HashMap;
|
|
10
|
+
import java.util.Iterator;
|
|
11
|
+
import java.util.Map;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Created by finch on 9.12.2017.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
public class HashMapLocationTemplate extends AbstractLocationTemplate implements Serializable {
|
|
18
|
+
private HashMap<?, String> mMap;
|
|
19
|
+
private static final long serialVersionUID = 1234L;
|
|
20
|
+
|
|
21
|
+
// copy constructor
|
|
22
|
+
public HashMapLocationTemplate(HashMapLocationTemplate tpl) {
|
|
23
|
+
if (tpl == null || tpl.mMap == null) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
mMap = CloneHelper.deepCopy(tpl.mMap);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public HashMapLocationTemplate(HashMap map) {
|
|
31
|
+
this.mMap = map;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@Override
|
|
35
|
+
public Object locationToJson(BackgroundLocation location) throws JSONException {
|
|
36
|
+
return LocationMapper.map(location).withMap(mMap);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public Iterator iterator() {
|
|
40
|
+
return mMap.entrySet().iterator();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public boolean containsKey(String propName) {
|
|
44
|
+
return mMap.containsKey(propName);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public String get(String key) {
|
|
48
|
+
return mMap.get(key);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Override
|
|
52
|
+
public boolean isEmpty() {
|
|
53
|
+
return mMap == null || mMap.isEmpty();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@Override
|
|
57
|
+
public boolean equals(Object other) {
|
|
58
|
+
if (other == null) return false;
|
|
59
|
+
if (other == this) return true;
|
|
60
|
+
if (!(other instanceof HashMapLocationTemplate)) return false;
|
|
61
|
+
return ((HashMapLocationTemplate) other).mMap.equals(this.mMap);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@Override
|
|
65
|
+
public String toString() {
|
|
66
|
+
if (mMap == null) {
|
|
67
|
+
return "null";
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
JSONObject jObject = new JSONObject(mMap);
|
|
71
|
+
return jObject.toString();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public Map toMap() {
|
|
75
|
+
return mMap;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@Override
|
|
79
|
+
public LocationTemplate clone() {
|
|
80
|
+
return new HashMapLocationTemplate(this);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data;
|
|
2
|
+
|
|
3
|
+
import java.util.Collection;
|
|
4
|
+
|
|
5
|
+
public interface LocationDAO {
|
|
6
|
+
Collection<BackgroundLocation> getAllLocations();
|
|
7
|
+
Collection<BackgroundLocation> getValidLocations();
|
|
8
|
+
Collection<BackgroundLocation> getValidLocationsAndDelete();
|
|
9
|
+
BackgroundLocation getLocationById(long id);
|
|
10
|
+
BackgroundLocation getFirstUnpostedLocation();
|
|
11
|
+
BackgroundLocation getNextUnpostedLocation(long fromId);
|
|
12
|
+
long getUnpostedLocationsCount();
|
|
13
|
+
long getLocationsForSyncCount(long millisSinceLastBatch);
|
|
14
|
+
long persistLocation(BackgroundLocation location);
|
|
15
|
+
long persistLocation(BackgroundLocation location, int maxRows);
|
|
16
|
+
long persistLocationForSync(BackgroundLocation location, int maxRows);
|
|
17
|
+
void updateLocationForSync(long locationId);
|
|
18
|
+
void deleteLocationById(long locationId);
|
|
19
|
+
BackgroundLocation deleteFirstUnpostedLocation();
|
|
20
|
+
int deleteAllLocations();
|
|
21
|
+
int deleteUnpostedLocations();
|
|
22
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data;
|
|
2
|
+
|
|
3
|
+
import org.json.JSONException;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Created by finch on 9.12.2017.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
public interface LocationTemplate {
|
|
10
|
+
Object locationToJson(BackgroundLocation location) throws JSONException;
|
|
11
|
+
boolean isEmpty();
|
|
12
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data;
|
|
2
|
+
|
|
3
|
+
import com.marianhello.utils.Convert;
|
|
4
|
+
|
|
5
|
+
import org.json.JSONArray;
|
|
6
|
+
import org.json.JSONException;
|
|
7
|
+
import org.json.JSONObject;
|
|
8
|
+
import org.json.JSONTokener;
|
|
9
|
+
|
|
10
|
+
import java.util.ArrayList;
|
|
11
|
+
import java.util.HashMap;
|
|
12
|
+
import java.util.Iterator;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Created by finch on 9.12.2017.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
public class LocationTemplateFactory {
|
|
19
|
+
|
|
20
|
+
public static LocationTemplate fromJSON(Object json) throws JSONException {
|
|
21
|
+
if (json instanceof JSONObject) {
|
|
22
|
+
JSONObject jsonObject = (JSONObject) json;
|
|
23
|
+
|
|
24
|
+
return new HashMapLocationTemplate((HashMap) Convert.toMap(jsonObject));
|
|
25
|
+
} else if (json instanceof JSONArray) {
|
|
26
|
+
JSONArray jsonArray = (JSONArray) json;
|
|
27
|
+
|
|
28
|
+
return new ArrayListLocationTemplate((ArrayList) Convert.toList(jsonArray));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public static LocationTemplate fromJSONString(String jsonString) throws JSONException {
|
|
35
|
+
if (jsonString == null) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
Object json = new JSONTokener(jsonString).nextValue();
|
|
39
|
+
return fromJSON(json);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public static LocationTemplate fromHashMap(HashMap template) {
|
|
43
|
+
return new HashMapLocationTemplate(template);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public static LocationTemplate fromArrayList(ArrayList template) {
|
|
47
|
+
return new ArrayListLocationTemplate(template);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public static LocationTemplate getDefault() {
|
|
51
|
+
HashMap attrs = new HashMap<String, String>();
|
|
52
|
+
attrs.put("provider", "@provider");
|
|
53
|
+
attrs.put("locationProvider", "@locationProvider");
|
|
54
|
+
attrs.put("time", "@time");
|
|
55
|
+
attrs.put("latitude", "@latitude");
|
|
56
|
+
attrs.put("longitude", "@longitude");
|
|
57
|
+
attrs.put("accuracy", "@accuracy");
|
|
58
|
+
attrs.put("altitudeAccuracy", "@altitudeAccuracy");
|
|
59
|
+
attrs.put("speed", "@speed");
|
|
60
|
+
attrs.put("altitude", "@altitude");
|
|
61
|
+
attrs.put("bearing", "@bearing");
|
|
62
|
+
attrs.put("radius", "@radius");
|
|
63
|
+
return new HashMapLocationTemplate(attrs);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data;
|
|
2
|
+
|
|
3
|
+
import android.content.Context;
|
|
4
|
+
import androidx.annotation.NonNull;
|
|
5
|
+
import androidx.annotation.Nullable;
|
|
6
|
+
|
|
7
|
+
public interface LocationTransform
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Return a <code>BackgroundLocation</code>, either a new one or the same one after modification.
|
|
11
|
+
* Return <code>null</code> to prevent this location from being committed.
|
|
12
|
+
* @param context
|
|
13
|
+
* @param location - the input location
|
|
14
|
+
* @return the location that you want to actually commit
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
@Nullable
|
|
18
|
+
BackgroundLocation transformLocationBeforeCommit(@NonNull Context context, @NonNull BackgroundLocation location);
|
|
19
|
+
}
|
package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java
ADDED
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
package com.marianhello.bgloc.data.provider;
|
|
2
|
+
|
|
3
|
+
import android.content.ContentProviderOperation;
|
|
4
|
+
import android.content.ContentResolver;
|
|
5
|
+
import android.content.ContentValues;
|
|
6
|
+
import android.content.Context;
|
|
7
|
+
import android.database.Cursor;
|
|
8
|
+
import android.net.Uri;
|
|
9
|
+
import android.text.TextUtils;
|
|
10
|
+
|
|
11
|
+
import com.marianhello.bgloc.ResourceResolver;
|
|
12
|
+
import com.marianhello.bgloc.data.BackgroundLocation;
|
|
13
|
+
import com.marianhello.bgloc.data.LocationDAO;
|
|
14
|
+
import com.marianhello.bgloc.data.sqlite.SQLiteLocationContract;
|
|
15
|
+
import com.marianhello.bgloc.data.sqlite.SQLiteLocationContract.LocationEntry;
|
|
16
|
+
import com.marianhello.logging.LoggerManager;
|
|
17
|
+
|
|
18
|
+
import java.util.ArrayList;
|
|
19
|
+
import java.util.Collection;
|
|
20
|
+
|
|
21
|
+
import ru.andremoniy.sqlbuilder.SqlExpression;
|
|
22
|
+
import ru.andremoniy.sqlbuilder.SqlSelectStatement;
|
|
23
|
+
|
|
24
|
+
public class ContentProviderLocationDAO implements LocationDAO {
|
|
25
|
+
private org.slf4j.Logger logger;
|
|
26
|
+
private ContentResolver mResolver;
|
|
27
|
+
private Uri mContentUri;
|
|
28
|
+
private String mAuthority;
|
|
29
|
+
|
|
30
|
+
public ContentProviderLocationDAO(Context context) {
|
|
31
|
+
logger = LoggerManager.getLogger(ContentProviderLocationDAO.class);
|
|
32
|
+
ResourceResolver resourceResolver = ResourceResolver.newInstance(context);
|
|
33
|
+
mAuthority = resourceResolver.getAuthority();
|
|
34
|
+
mContentUri = LocationContentProvider.getContentUri(mAuthority);
|
|
35
|
+
mResolver = context.getApplicationContext().getContentResolver();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Get locations that match whereClause
|
|
40
|
+
*
|
|
41
|
+
* @param whereClause
|
|
42
|
+
* @param whereArgs
|
|
43
|
+
* @return collection of locations
|
|
44
|
+
*/
|
|
45
|
+
private Collection<BackgroundLocation> getLocations(String whereClause, String[] whereArgs) {
|
|
46
|
+
Collection<BackgroundLocation> locations = new ArrayList<BackgroundLocation>();
|
|
47
|
+
Cursor cursor = null;
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
cursor = mResolver.query(
|
|
51
|
+
mContentUri,
|
|
52
|
+
null,
|
|
53
|
+
whereClause,
|
|
54
|
+
whereArgs,
|
|
55
|
+
LocationEntry.COLUMN_NAME_TIME + " ASC"
|
|
56
|
+
);
|
|
57
|
+
while (cursor.moveToNext()) {
|
|
58
|
+
locations.add(BackgroundLocation.fromCursor(cursor));
|
|
59
|
+
}
|
|
60
|
+
} finally {
|
|
61
|
+
if (cursor != null) {
|
|
62
|
+
cursor.close();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return locations;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@Override
|
|
70
|
+
public Collection<BackgroundLocation> getAllLocations() {
|
|
71
|
+
return getLocations(null, null);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@Override
|
|
75
|
+
public Collection<BackgroundLocation> getValidLocations() {
|
|
76
|
+
String whereClause = LocationEntry.COLUMN_NAME_STATUS + " <> ?";
|
|
77
|
+
String[] whereArgs = { String.valueOf(BackgroundLocation.DELETED) };
|
|
78
|
+
|
|
79
|
+
return getLocations(whereClause, whereArgs);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@Override
|
|
83
|
+
public Collection<BackgroundLocation> getValidLocationsAndDelete() {
|
|
84
|
+
// HM TODO: should be in a transaction but I'm not sure how to implement this...
|
|
85
|
+
Collection<BackgroundLocation> locations = getValidLocations();
|
|
86
|
+
deleteAllLocations();
|
|
87
|
+
return locations;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@Override
|
|
91
|
+
public BackgroundLocation getLocationById(long id) {
|
|
92
|
+
BackgroundLocation location = null;
|
|
93
|
+
|
|
94
|
+
Cursor cursor = null;
|
|
95
|
+
try {
|
|
96
|
+
cursor = mResolver.query(
|
|
97
|
+
LocationContentProvider.buildUriWithId(mAuthority, id),
|
|
98
|
+
null,
|
|
99
|
+
null,
|
|
100
|
+
null,
|
|
101
|
+
null
|
|
102
|
+
);
|
|
103
|
+
while (cursor.moveToNext()) {
|
|
104
|
+
location = BackgroundLocation.fromCursor(cursor);
|
|
105
|
+
if (!cursor.isLast()) {
|
|
106
|
+
throw new RuntimeException("Location " + id + " is not unique");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
} finally {
|
|
110
|
+
if (cursor != null) {
|
|
111
|
+
cursor.close();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return location;
|
|
116
|
+
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
public int getLocationsCount() {
|
|
120
|
+
Cursor cursor = mResolver.query(
|
|
121
|
+
mContentUri,
|
|
122
|
+
null,
|
|
123
|
+
null,
|
|
124
|
+
null,
|
|
125
|
+
""
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
int count = cursor.getCount();
|
|
129
|
+
cursor.close();
|
|
130
|
+
return count;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@Override
|
|
134
|
+
public BackgroundLocation getFirstUnpostedLocation() {
|
|
135
|
+
SqlSelectStatement subsql = new SqlSelectStatement();
|
|
136
|
+
subsql.column(new SqlExpression(String.format("MIN(%s)", LocationEntry._ID)), LocationEntry._ID);
|
|
137
|
+
subsql.from(LocationEntry.TABLE_NAME);
|
|
138
|
+
subsql.where(LocationEntry.COLUMN_NAME_STATUS, SqlExpression.SqlOperatorEqualTo, BackgroundLocation.POST_PENDING);
|
|
139
|
+
subsql.orderBy(LocationEntry.COLUMN_NAME_TIME);
|
|
140
|
+
|
|
141
|
+
String substmt = subsql.statement();
|
|
142
|
+
substmt = com.marianhello.utils.TextUtils.removeLastChar(substmt, ";");
|
|
143
|
+
|
|
144
|
+
BackgroundLocation location = null;
|
|
145
|
+
Cursor cursor = null;
|
|
146
|
+
try {
|
|
147
|
+
cursor = mResolver.query(
|
|
148
|
+
mContentUri,
|
|
149
|
+
null,
|
|
150
|
+
LocationEntry._ID + " = (" + substmt + ")",
|
|
151
|
+
null,
|
|
152
|
+
null
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
while (cursor.moveToNext()) {
|
|
156
|
+
location = BackgroundLocation.fromCursor(cursor);
|
|
157
|
+
if (!cursor.isLast()) {
|
|
158
|
+
throw new RuntimeException("Expected single location");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
} finally {
|
|
162
|
+
if (cursor != null) {
|
|
163
|
+
cursor.close();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return location;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@Override
|
|
171
|
+
public BackgroundLocation getNextUnpostedLocation(long fromId) {
|
|
172
|
+
SqlSelectStatement subsql = new SqlSelectStatement();
|
|
173
|
+
subsql.column(new SqlExpression(String.format("MIN(%s)", LocationEntry._ID)), LocationEntry._ID);
|
|
174
|
+
subsql.from(LocationEntry.TABLE_NAME);
|
|
175
|
+
subsql.where(LocationEntry.COLUMN_NAME_STATUS, SqlExpression.SqlOperatorEqualTo, BackgroundLocation.POST_PENDING);
|
|
176
|
+
subsql.where(LocationEntry._ID, SqlExpression.SqlOperatorNotEqualTo, fromId);
|
|
177
|
+
subsql.orderBy(LocationEntry.COLUMN_NAME_TIME);
|
|
178
|
+
|
|
179
|
+
String substmt = subsql.statement();
|
|
180
|
+
substmt = com.marianhello.utils.TextUtils.removeLastChar(substmt, ";");
|
|
181
|
+
|
|
182
|
+
BackgroundLocation location = null;
|
|
183
|
+
Cursor cursor = null;
|
|
184
|
+
try {
|
|
185
|
+
cursor = mResolver.query(
|
|
186
|
+
mContentUri,
|
|
187
|
+
null,
|
|
188
|
+
LocationEntry._ID + " = (" + substmt + ")",
|
|
189
|
+
null,
|
|
190
|
+
null
|
|
191
|
+
);
|
|
192
|
+
|
|
193
|
+
while (cursor.moveToNext()) {
|
|
194
|
+
location = BackgroundLocation.fromCursor(cursor);
|
|
195
|
+
if (!cursor.isLast()) {
|
|
196
|
+
throw new RuntimeException("Expected single location");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
} finally {
|
|
200
|
+
if (cursor != null) {
|
|
201
|
+
cursor.close();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return location;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
@Override
|
|
209
|
+
public long getUnpostedLocationsCount() {
|
|
210
|
+
String whereClause = SQLiteLocationContract.LocationEntry.COLUMN_NAME_STATUS + " = ?";
|
|
211
|
+
String[] whereArgs = { String.valueOf(BackgroundLocation.POST_PENDING) };
|
|
212
|
+
|
|
213
|
+
Cursor cursor = mResolver.query(
|
|
214
|
+
mContentUri,
|
|
215
|
+
null,
|
|
216
|
+
whereClause,
|
|
217
|
+
whereArgs,
|
|
218
|
+
null);
|
|
219
|
+
|
|
220
|
+
int count = cursor.getCount();
|
|
221
|
+
cursor.close();
|
|
222
|
+
return count;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@Override
|
|
226
|
+
public long getLocationsForSyncCount(long millisSinceLastBatch) {
|
|
227
|
+
String whereClause = TextUtils.join("", new String[]{
|
|
228
|
+
SQLiteLocationContract.LocationEntry.COLUMN_NAME_STATUS + " = ? AND ( ",
|
|
229
|
+
SQLiteLocationContract.LocationEntry.COLUMN_NAME_BATCH_START_MILLIS + " IS NULL OR ",
|
|
230
|
+
SQLiteLocationContract.LocationEntry.COLUMN_NAME_BATCH_START_MILLIS + " < ? )",
|
|
231
|
+
});
|
|
232
|
+
String[] whereArgs = {
|
|
233
|
+
String.valueOf(BackgroundLocation.SYNC_PENDING),
|
|
234
|
+
String.valueOf(millisSinceLastBatch)
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
Cursor cursor = mResolver.query(
|
|
238
|
+
mContentUri,
|
|
239
|
+
null,
|
|
240
|
+
whereClause,
|
|
241
|
+
whereArgs,
|
|
242
|
+
null);
|
|
243
|
+
|
|
244
|
+
int count = cursor.getCount();
|
|
245
|
+
cursor.close();
|
|
246
|
+
return count;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
public Uri getOldestLocationUri() {
|
|
250
|
+
Cursor cursor = null;
|
|
251
|
+
try {
|
|
252
|
+
cursor = mResolver.query(
|
|
253
|
+
mContentUri,
|
|
254
|
+
new String[]{"min(" + LocationEntry._ID + ")"},
|
|
255
|
+
TextUtils.join("", new String[]{
|
|
256
|
+
LocationEntry.COLUMN_NAME_TIME,
|
|
257
|
+
"= (SELECT min(",
|
|
258
|
+
LocationEntry.COLUMN_NAME_TIME,
|
|
259
|
+
") FROM ",
|
|
260
|
+
LocationEntry.TABLE_NAME,
|
|
261
|
+
")"
|
|
262
|
+
}),
|
|
263
|
+
null,
|
|
264
|
+
null
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
cursor.moveToFirst();
|
|
268
|
+
return LocationContentProvider.buildUriWithId(mAuthority, cursor.getLong(0));
|
|
269
|
+
} finally {
|
|
270
|
+
if (cursor != null) {
|
|
271
|
+
cursor.close();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Persist location into database
|
|
278
|
+
*
|
|
279
|
+
* @param location
|
|
280
|
+
* @return rowId or -1 when error occured
|
|
281
|
+
*/
|
|
282
|
+
@Override
|
|
283
|
+
public long persistLocation(BackgroundLocation location) {
|
|
284
|
+
Uri locationUri = mResolver.insert(mContentUri, location.toContentValues());
|
|
285
|
+
return Integer.valueOf(locationUri.getLastPathSegment());
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
@Override
|
|
289
|
+
public long persistLocation(BackgroundLocation location, int maxRows) {
|
|
290
|
+
if (maxRows == 0) {
|
|
291
|
+
return -1;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
long rowCount = getLocationsCount();
|
|
295
|
+
|
|
296
|
+
if (rowCount < maxRows) {
|
|
297
|
+
return persistLocation(location);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
|
|
301
|
+
|
|
302
|
+
// TODO: move this logic as separate action somewhere else
|
|
303
|
+
// TODO: add db vaccum
|
|
304
|
+
if (rowCount > maxRows) {
|
|
305
|
+
// delete some locations to reduce their count to maxRows
|
|
306
|
+
String selection = new StringBuilder()
|
|
307
|
+
.append(LocationEntry._ID)
|
|
308
|
+
.append(" IN (SELECT ").append(LocationEntry._ID)
|
|
309
|
+
.append(" FROM ").append(LocationEntry.TABLE_NAME)
|
|
310
|
+
.append(" ORDER BY ").append(LocationEntry.COLUMN_NAME_TIME)
|
|
311
|
+
.append(" LIMIT ?)")
|
|
312
|
+
.toString();
|
|
313
|
+
|
|
314
|
+
operations.add(
|
|
315
|
+
ContentProviderOperation.newDelete(mContentUri)
|
|
316
|
+
.withSelection(selection, new String[] {(String.valueOf(rowCount - maxRows))})
|
|
317
|
+
.build()
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
operations.add(
|
|
322
|
+
ContentProviderOperation.newUpdate(getOldestLocationUri())
|
|
323
|
+
.withValues(location.toContentValues())
|
|
324
|
+
.build()
|
|
325
|
+
);
|
|
326
|
+
|
|
327
|
+
try {
|
|
328
|
+
mResolver.applyBatch(mAuthority, operations);
|
|
329
|
+
} catch (Exception e) {
|
|
330
|
+
logger.error("Error persisting location (maxRows: {}): {}", maxRows, e.getMessage());
|
|
331
|
+
return -1;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return 0;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
@Override
|
|
338
|
+
public long persistLocationForSync(BackgroundLocation location, int maxRows) {
|
|
339
|
+
Long locationId = location.getLocationId();
|
|
340
|
+
|
|
341
|
+
if (locationId == null) {
|
|
342
|
+
location.setStatus(BackgroundLocation.SYNC_PENDING);
|
|
343
|
+
return persistLocation(location, maxRows);
|
|
344
|
+
} else {
|
|
345
|
+
ContentValues values = new ContentValues();
|
|
346
|
+
values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.SYNC_PENDING);
|
|
347
|
+
|
|
348
|
+
String whereClause = LocationEntry._ID + " = ?";
|
|
349
|
+
String[] whereArgs = { String.valueOf(locationId) };
|
|
350
|
+
|
|
351
|
+
mResolver.update(mContentUri, values, whereClause, whereArgs);
|
|
352
|
+
return locationId;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
@Override
|
|
357
|
+
public void updateLocationForSync(long locationId) {
|
|
358
|
+
ContentValues values = new ContentValues();
|
|
359
|
+
values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.SYNC_PENDING);
|
|
360
|
+
|
|
361
|
+
String whereClause = LocationEntry._ID + " = ?";
|
|
362
|
+
String[] whereArgs = { String.valueOf(locationId) };
|
|
363
|
+
|
|
364
|
+
mResolver.update(mContentUri, values, whereClause, whereArgs);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
@Override
|
|
368
|
+
public void deleteLocationById(long locationId) {
|
|
369
|
+
mResolver.delete(LocationContentProvider.buildUriWithId(mAuthority, locationId), null, null);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
@Override
|
|
373
|
+
public BackgroundLocation deleteFirstUnpostedLocation() {
|
|
374
|
+
BackgroundLocation location = getFirstUnpostedLocation();
|
|
375
|
+
deleteLocationById(location.getLocationId());
|
|
376
|
+
|
|
377
|
+
return location;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
@Override
|
|
381
|
+
public int deleteAllLocations() {
|
|
382
|
+
return mResolver.delete(mContentUri, null, null);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
@Override
|
|
386
|
+
public int deleteUnpostedLocations() {
|
|
387
|
+
ContentValues values = new ContentValues();
|
|
388
|
+
values.put(LocationEntry.COLUMN_NAME_STATUS, BackgroundLocation.SYNC_PENDING);
|
|
389
|
+
|
|
390
|
+
String whereClause = LocationEntry.COLUMN_NAME_STATUS + " = ?";
|
|
391
|
+
String[] whereArgs = { String.valueOf(BackgroundLocation.POST_PENDING) };
|
|
392
|
+
|
|
393
|
+
return mResolver.update(mContentUri, values, whereClause, whereArgs);
|
|
394
|
+
}
|
|
395
|
+
}
|