@josuelmm/cordova-background-geolocation 2.3.5
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/.npmignore +23 -0
- package/CHANGELOG.md +787 -0
- package/CONTRIBUTORS.md +15 -0
- package/HISTORY.md +734 -0
- package/LICENSE +191 -0
- package/README.md +125 -0
- package/RELEASE.MD +5 -0
- package/android/CDVBackgroundGeolocation/src/main/AndroidManifest.xml +23 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/HandlerWrapper.java +18 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JavaScriptInterface.java +22 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsEvaluator.java +133 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsFunctionCallFormatter.java +37 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/WebViewWrapper.java +71 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/CallJavaResultInterface.java +8 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/HandlerWrapperInterface.java +5 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsCallback.java +10 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsEvaluatorInterface.java +18 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/WebViewWrapperInterface.java +14 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/ConfigMapper.java +148 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/PluginRegistry.java +25 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/headless/JsEvaluatorTaskRunner.java +53 -0
- package/android/CDVBackgroundGeolocation/src/main/java/com/tenforwardconsulting/bgloc/cordova/BackgroundGeolocationPlugin.java +603 -0
- package/android/CDVBackgroundGeolocation/src/main/res/values/strings.xml +4 -0
- package/android/CDVBackgroundGeolocation/src/test/java/com/marianhello/ConfigMapperTest.java +208 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/BackgroundGeolocationFacadeTest.java +45 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/BatchManagerTest.java +570 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/ConfigTest.java +76 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/ContentProviderLocationDAOTest.java +437 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/DBLogReaderTest.java +95 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationContentProviderTest.java +159 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceProxyTest.java +161 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceTest.java +247 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteConfigurationDAOTest.java +200 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOTest.java +457 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOThreadTest.java +96 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteOpenHelperTest.java +225 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/TestPluginDelegate.java +46 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/TestResourceResolver.java +14 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/MockLocationProvider.java +50 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/TestLocationProviderFactory.java +17 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/sqlite/SQLiteOpenHelper10.java +92 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/test/LocationProviderTestCase.java +107 -0
- package/android/common/src/androidTest/java/com/marianhello/bgloc/test/TestConstants.java +5 -0
- package/android/common/src/main/AndroidManifest.xml +72 -0
- package/android/common/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +523 -0
- package/android/common/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
- package/android/common/src/main/java/com/marianhello/bgloc/Config.java +652 -0
- package/android/common/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
- package/android/common/src/main/java/com/marianhello/bgloc/HttpPostService.java +224 -0
- package/android/common/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
- package/android/common/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
- package/android/common/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
- package/android/common/src/main/java/com/marianhello/bgloc/PostLocationTask.java +188 -0
- package/android/common/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
- package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +60 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
- package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
- package/android/common/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
- package/android/common/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +282 -0
- package/android/common/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +610 -0
- package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
- package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
- package/android/common/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
- package/android/common/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +145 -0
- package/android/common/src/main/java/com/marianhello/bgloc/service/LocationService.java +16 -0
- package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +749 -0
- package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
- package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
- package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
- package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +130 -0
- package/android/common/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
- package/android/common/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
- package/android/common/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
- package/android/common/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +278 -0
- package/android/common/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
- package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +249 -0
- package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
- package/android/common/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
- package/android/common/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
- package/android/common/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
- package/android/common/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
- package/android/common/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
- package/android/common/src/main/java/com/marianhello/utils/Convert.java +56 -0
- package/android/common/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
- package/android/common/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
- package/android/common/src/main/java/org/apache/commons/io/Charsets.java +153 -0
- package/android/common/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
- package/android/common/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
- package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
- package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
- package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
- package/android/common/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
- package/android/common/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/android/common/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/android/common/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/android/common/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/android/common/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/android/common/src/main/res/values/strings.xml +4 -0
- package/android/common/src/main/res/xml/authenticator.xml +7 -0
- package/android/common/src/main/res/xml/syncadapter.xml +9 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ArrayListLocationTemplateTest.java +82 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/BackgroundLocationTest.java +128 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ConfigTest.java +191 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/DBLogReaderTest.java +37 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HashMapLocationTemplateTest.java +216 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HttpPostServiceTest.java +223 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/LocationTemplateFactoryTest.java +50 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/PostLocationTaskTest.java +180 -0
- package/android/common/src/test/java/com/marianhello/backgroundgeolocation/TestHelper.java +16 -0
- package/android/dependencies.gradle +13 -0
- package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.h +41 -0
- package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.m +526 -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 +60 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +638 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +185 -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 +514 -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 +287 -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 +250 -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 +475 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/CHANGELOG.md +2 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/LICENSE +21 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/README.md +135 -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/README.md +170 -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/ios/common/BackgroundGeolocation.xcodeproj/project.pbxproj +760 -0
- package/ios/common/BackgroundGeolocationTests/Info.plist +24 -0
- package/ios/common/BackgroundGeolocationTests/MAURBackgroundLocationTest.m +185 -0
- package/ios/common/BackgroundGeolocationTests/MAURConfigTest.m +161 -0
- package/ios/common/BackgroundGeolocationTests/MAURGeolocationOpenHelperTest.m +102 -0
- package/ios/common/BackgroundGeolocationTests/MAURLocationTest.m +216 -0
- package/ios/common/BackgroundGeolocationTests/MAURLocationUploaderTest.m +55 -0
- package/ios/common/BackgroundGeolocationTests/MAURLogReaderTest.m +43 -0
- package/ios/common/BackgroundGeolocationTests/MAURSQLiteConfigurationDAOTest.m +102 -0
- package/ios/common/BackgroundGeolocationTests/MAURSQLiteHelperTest.m +41 -0
- package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOTests.m +240 -0
- package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOThreadTest.m +84 -0
- package/ios/common/BackgroundGeolocationTests/MAURSQLiteOpenHelperTest.m +144 -0
- package/ios/common/CONTRIBUTORS.md +10 -0
- package/ios/common/LICENSE +191 -0
- package/ios/common/README.md +7 -0
- package/ios/common/scripts/xcode-refactor.js +184 -0
- package/package.json +44 -0
- package/plugin.xml +355 -0
- package/www/BackgroundGeolocation.d.ts +910 -0
- package/www/BackgroundGeolocation.js +247 -0
- package/www/radio.js +177 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MAURSQLiteConfigurationDAO.m
|
|
3
|
+
// BackgroundGeolocation
|
|
4
|
+
//
|
|
5
|
+
// Created by Marian Hello on 01/12/2017.
|
|
6
|
+
// Copyright © 2017 mauron85. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <sqlite3.h>
|
|
10
|
+
#import <CoreLocation/CoreLocation.h>
|
|
11
|
+
#import "MAURSQLiteHelper.h"
|
|
12
|
+
#import "MAURGeolocationOpenHelper.h"
|
|
13
|
+
#import "MAURSQLiteConfigurationDAO.h"
|
|
14
|
+
#import "MAURConfigurationContract.h"
|
|
15
|
+
#import "MAURConfig.h"
|
|
16
|
+
|
|
17
|
+
@implementation MAURSQLiteConfigurationDAO {
|
|
18
|
+
FMDatabaseQueue* queue;
|
|
19
|
+
MAURGeolocationOpenHelper *helper;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
#pragma mark Singleton Methods
|
|
23
|
+
|
|
24
|
+
+ (instancetype) sharedInstance
|
|
25
|
+
{
|
|
26
|
+
static MAURSQLiteConfigurationDAO *instance = nil;
|
|
27
|
+
static dispatch_once_t onceToken;
|
|
28
|
+
dispatch_once(&onceToken, ^{
|
|
29
|
+
instance = [[self alloc] init];
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
return instance;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
- (id) init {
|
|
36
|
+
if (self = [super init]) {
|
|
37
|
+
helper = [[MAURGeolocationOpenHelper alloc] init];
|
|
38
|
+
queue = [helper getWritableDatabase];
|
|
39
|
+
}
|
|
40
|
+
return self;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
- (BOOL) persistConfiguration:(MAURConfig*)config
|
|
44
|
+
{
|
|
45
|
+
__block BOOL success = NO;
|
|
46
|
+
|
|
47
|
+
NSError *error = nil;
|
|
48
|
+
|
|
49
|
+
NSString *httpHeadersString = [config getHttpHeadersAsString:&error];
|
|
50
|
+
if (error != nil) {
|
|
51
|
+
NSLog(@"Http headers serialization error: %@", error);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
NSString *templateString = [config getTemplateAsString:&error];
|
|
56
|
+
if (error != nil) {
|
|
57
|
+
NSLog(@"Template serialization error: %@", error);
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
NSString *sql = @"INSERT OR REPLACE INTO " @CC_TABLE_NAME @" ("
|
|
62
|
+
@CC_COLUMN_NAME_ID
|
|
63
|
+
@COMMA_SEP @CC_COLUMN_NAME_RADIUS
|
|
64
|
+
@COMMA_SEP @CC_COLUMN_NAME_DISTANCE_FILTER
|
|
65
|
+
@COMMA_SEP @CC_COLUMN_NAME_DESIRED_ACCURACY
|
|
66
|
+
@COMMA_SEP @CC_COLUMN_NAME_DEBUG
|
|
67
|
+
@COMMA_SEP @CC_COLUMN_NAME_ACTIVITY_TYPE
|
|
68
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_TITLE
|
|
69
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_TEXT
|
|
70
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_ICON_LARGE
|
|
71
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_ICON_SMALL
|
|
72
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_COLOR
|
|
73
|
+
@COMMA_SEP @CC_COLUMN_NAME_STOP_TERMINATE
|
|
74
|
+
@COMMA_SEP @CC_COLUMN_NAME_START_BOOT
|
|
75
|
+
@COMMA_SEP @CC_COLUMN_NAME_START_FOREGROUND
|
|
76
|
+
@COMMA_SEP @CC_COLUMN_NAME_STOP_ON_STILL
|
|
77
|
+
@COMMA_SEP @CC_COLUMN_NAME_LOCATION_PROVIDER
|
|
78
|
+
@COMMA_SEP @CC_COLUMN_NAME_INTERVAL
|
|
79
|
+
@COMMA_SEP @CC_COLUMN_NAME_FASTEST_INTERVAL
|
|
80
|
+
@COMMA_SEP @CC_COLUMN_NAME_ACTIVITIES_INTERVAL
|
|
81
|
+
@COMMA_SEP @CC_COLUMN_NAME_URL
|
|
82
|
+
@COMMA_SEP @CC_COLUMN_NAME_SYNC_URL
|
|
83
|
+
@COMMA_SEP @CC_COLUMN_NAME_SYNC_THRESHOLD
|
|
84
|
+
@COMMA_SEP @CC_COLUMN_NAME_HEADERS
|
|
85
|
+
@COMMA_SEP @CC_COLUMN_NAME_SAVE_BATTERY
|
|
86
|
+
@COMMA_SEP @CC_COLUMN_NAME_MAX_LOCATIONS
|
|
87
|
+
@COMMA_SEP @CC_COLUMN_NAME_PAUSE_LOCATION_UPDATES
|
|
88
|
+
@COMMA_SEP @CC_COLUMN_NAME_TEMPLATE
|
|
89
|
+
@COMMA_SEP @CC_COLUMN_NAME_LAST_UPDATED_AT
|
|
90
|
+
@") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,DateTime('now'))";
|
|
91
|
+
|
|
92
|
+
[queue inDatabase:^(FMDatabase *database) {
|
|
93
|
+
success = [database executeUpdate:sql,
|
|
94
|
+
@(1), // config id
|
|
95
|
+
[config hasStationaryRadius] ? config.stationaryRadius : @CC_COLUMN_NAME_NULLABLE,
|
|
96
|
+
[config hasDistanceFilter] ? config.distanceFilter : @CC_COLUMN_NAME_NULLABLE,
|
|
97
|
+
[config hasDesiredAccuracy] ? config.desiredAccuracy : @CC_COLUMN_NAME_NULLABLE,
|
|
98
|
+
[config hasDebug] ? config._debug : @CC_COLUMN_NAME_NULLABLE,
|
|
99
|
+
[config hasActivityType] ? config.activityType : @CC_COLUMN_NAME_NULLABLE,
|
|
100
|
+
[NSNull null], // unsupported notificationTitle
|
|
101
|
+
[NSNull null], // unsupported notificationText
|
|
102
|
+
[NSNull null], // unsupported notificationIconLarge
|
|
103
|
+
[NSNull null], // unsupported notificationIconSmall
|
|
104
|
+
[NSNull null], // unsupported notificationIconColor
|
|
105
|
+
[config hasStopOnTerminate] ? config._stopOnTerminate : @CC_COLUMN_NAME_NULLABLE,
|
|
106
|
+
[NSNull null], // unsupported startOnBoot,
|
|
107
|
+
[NSNull null], // unsupported startForeground
|
|
108
|
+
[NSNull null], // unsupported stopOnStillActivity
|
|
109
|
+
[config hasLocationProvider] ? config.locationProvider : @CC_COLUMN_NAME_NULLABLE,
|
|
110
|
+
[NSNull null], // unsupported interval
|
|
111
|
+
[NSNull null], // unsupported fastestInterval
|
|
112
|
+
[config hasActivitiesInterval] ? config.activitiesInterval : @CC_COLUMN_NAME_NULLABLE,
|
|
113
|
+
[config hasUrl] ? config.url : @CC_COLUMN_NAME_NULLABLE,
|
|
114
|
+
[config hasSyncUrl] ? config.syncUrl : @CC_COLUMN_NAME_NULLABLE,
|
|
115
|
+
[config hasSyncThreshold] ? config.syncThreshold : @CC_COLUMN_NAME_NULLABLE,
|
|
116
|
+
(httpHeadersString != nil) ? httpHeadersString : @CC_COLUMN_NAME_NULLABLE,
|
|
117
|
+
[config hasSaveBatteryOnBackground] ? config._saveBatteryOnBackground : @CC_COLUMN_NAME_NULLABLE,
|
|
118
|
+
[config hasMaxLocations] ? config.maxLocations : @CC_COLUMN_NAME_NULLABLE,
|
|
119
|
+
[config hasPauseLocationUpdates] ? config._pauseLocationUpdates : @CC_COLUMN_NAME_NULLABLE,
|
|
120
|
+
(templateString != nil) ? templateString : @CC_COLUMN_NAME_NULLABLE
|
|
121
|
+
];
|
|
122
|
+
|
|
123
|
+
if (success) {
|
|
124
|
+
NSLog(@"Configuration persisted succesfuly");
|
|
125
|
+
} else {
|
|
126
|
+
NSLog(@"Persisting configuration has failed code: %d: message: %@", [database lastErrorCode], [database lastErrorMessage]);
|
|
127
|
+
}
|
|
128
|
+
}];
|
|
129
|
+
|
|
130
|
+
return success;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
- (MAURConfig*) retrieveConfiguration
|
|
134
|
+
{
|
|
135
|
+
__block MAURConfig *config = nil;
|
|
136
|
+
|
|
137
|
+
NSString *sql = @"SELECT "
|
|
138
|
+
CC_COLUMN_NAME_ID
|
|
139
|
+
@COMMA_SEP @CC_COLUMN_NAME_RADIUS
|
|
140
|
+
@COMMA_SEP @CC_COLUMN_NAME_DISTANCE_FILTER
|
|
141
|
+
@COMMA_SEP @CC_COLUMN_NAME_DESIRED_ACCURACY
|
|
142
|
+
@COMMA_SEP @CC_COLUMN_NAME_DEBUG
|
|
143
|
+
@COMMA_SEP @CC_COLUMN_NAME_ACTIVITY_TYPE
|
|
144
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_TITLE
|
|
145
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_TEXT
|
|
146
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_ICON_LARGE
|
|
147
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_ICON_SMALL
|
|
148
|
+
@COMMA_SEP @CC_COLUMN_NAME_NOTIF_COLOR
|
|
149
|
+
@COMMA_SEP @CC_COLUMN_NAME_STOP_TERMINATE
|
|
150
|
+
@COMMA_SEP @CC_COLUMN_NAME_START_BOOT
|
|
151
|
+
@COMMA_SEP @CC_COLUMN_NAME_START_FOREGROUND
|
|
152
|
+
@COMMA_SEP @CC_COLUMN_NAME_STOP_ON_STILL
|
|
153
|
+
@COMMA_SEP @CC_COLUMN_NAME_LOCATION_PROVIDER
|
|
154
|
+
@COMMA_SEP @CC_COLUMN_NAME_INTERVAL
|
|
155
|
+
@COMMA_SEP @CC_COLUMN_NAME_FASTEST_INTERVAL
|
|
156
|
+
@COMMA_SEP @CC_COLUMN_NAME_ACTIVITIES_INTERVAL
|
|
157
|
+
@COMMA_SEP @CC_COLUMN_NAME_URL
|
|
158
|
+
@COMMA_SEP @CC_COLUMN_NAME_SYNC_URL
|
|
159
|
+
@COMMA_SEP @CC_COLUMN_NAME_SYNC_THRESHOLD
|
|
160
|
+
@COMMA_SEP @CC_COLUMN_NAME_HEADERS
|
|
161
|
+
@COMMA_SEP @CC_COLUMN_NAME_SAVE_BATTERY
|
|
162
|
+
@COMMA_SEP @CC_COLUMN_NAME_MAX_LOCATIONS
|
|
163
|
+
@COMMA_SEP @CC_COLUMN_NAME_PAUSE_LOCATION_UPDATES
|
|
164
|
+
@COMMA_SEP @CC_COLUMN_NAME_TEMPLATE
|
|
165
|
+
@" FROM " @CC_TABLE_NAME @" WHERE " @CC_COLUMN_NAME_ID @" = 1";
|
|
166
|
+
|
|
167
|
+
[queue inDatabase:^(FMDatabase *database) {
|
|
168
|
+
FMResultSet *rs = [database executeQuery:sql];
|
|
169
|
+
while([rs next]) {
|
|
170
|
+
config = [[MAURConfig alloc] init];
|
|
171
|
+
if ([self isNonNull:rs columnIndex:1]) {
|
|
172
|
+
config.stationaryRadius = [NSNumber numberWithInt:[rs intForColumnIndex:1]];
|
|
173
|
+
}
|
|
174
|
+
if ([self isNonNull:rs columnIndex:2]) {
|
|
175
|
+
config.distanceFilter = [NSNumber numberWithInt:[rs intForColumnIndex:2]];
|
|
176
|
+
}
|
|
177
|
+
if ([self isNonNull:rs columnIndex:3]) {
|
|
178
|
+
config.desiredAccuracy = [NSNumber numberWithInt:[rs intForColumnIndex:3]];
|
|
179
|
+
}
|
|
180
|
+
if ([self isNonNull:rs columnIndex:4]) {
|
|
181
|
+
config._debug = [NSNumber numberWithBool:[rs intForColumnIndex:4] == 1 ? YES : NO];
|
|
182
|
+
}
|
|
183
|
+
if ([self isNonNull:rs columnIndex:5]) {
|
|
184
|
+
config.activityType = [rs stringForColumnIndex:5];
|
|
185
|
+
}
|
|
186
|
+
if ([self isNonNull:rs columnIndex:11]) {
|
|
187
|
+
config._stopOnTerminate = [NSNumber numberWithBool:[rs intForColumnIndex:11] == 1 ? YES : NO];
|
|
188
|
+
}
|
|
189
|
+
if ([self isNonNull:rs columnIndex:15]) {
|
|
190
|
+
config.locationProvider = [NSNumber numberWithInt:[rs intForColumnIndex:15]];
|
|
191
|
+
}
|
|
192
|
+
if ([self isNonNull:rs columnIndex:18]) {
|
|
193
|
+
config.activitiesInterval = [NSNumber numberWithInt:[rs intForColumnIndex:18]];
|
|
194
|
+
}
|
|
195
|
+
if ([self isNonNull:rs columnIndex:19]) {
|
|
196
|
+
config.url = [rs stringForColumnIndex:19];
|
|
197
|
+
}
|
|
198
|
+
if ([self isNonNull:rs columnIndex:20]) {
|
|
199
|
+
config.syncUrl = [rs stringForColumnIndex:20];
|
|
200
|
+
}
|
|
201
|
+
if ([self isNonNull:rs columnIndex:21]) {
|
|
202
|
+
config.syncThreshold = [NSNumber numberWithInt:[rs intForColumnIndex:21]];
|
|
203
|
+
}
|
|
204
|
+
if ([self isNonNull:rs columnIndex:22]) {
|
|
205
|
+
NSString *httpHeadersString = [rs stringForColumnIndex:22];
|
|
206
|
+
if (httpHeadersString != nil) {
|
|
207
|
+
NSData *jsonHttpHeaders = [httpHeadersString dataUsingEncoding:NSUTF8StringEncoding];
|
|
208
|
+
config.httpHeaders = [NSJSONSerialization JSONObjectWithData:jsonHttpHeaders options:0 error:nil];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if ([self isNonNull:rs columnIndex:23]) {
|
|
212
|
+
config._saveBatteryOnBackground = [NSNumber numberWithBool:[rs intForColumnIndex:23] == 1 ? YES : NO];
|
|
213
|
+
}
|
|
214
|
+
if ([self isNonNull:rs columnIndex:24]) {
|
|
215
|
+
config.maxLocations = [NSNumber numberWithInt:[rs intForColumnIndex:24]];
|
|
216
|
+
}
|
|
217
|
+
if ([self isNonNull:rs columnIndex:25]) {
|
|
218
|
+
config._pauseLocationUpdates = [NSNumber numberWithBool:[rs intForColumnIndex:25] == 1 ? YES : NO];
|
|
219
|
+
}
|
|
220
|
+
if ([self isNonNull:rs columnIndex:26]) {
|
|
221
|
+
NSString *templateAsString = [rs stringForColumnIndex:26];
|
|
222
|
+
if (templateAsString != nil) {
|
|
223
|
+
NSData *jsonTemplate = [templateAsString dataUsingEncoding:NSUTF8StringEncoding];
|
|
224
|
+
config._template = [NSJSONSerialization JSONObjectWithData:jsonTemplate options:0 error:nil];
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
[rs close];
|
|
230
|
+
}];
|
|
231
|
+
|
|
232
|
+
return config;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
- (BOOL) clearDatabase
|
|
236
|
+
{
|
|
237
|
+
__block BOOL success;
|
|
238
|
+
|
|
239
|
+
[queue inDatabase:^(FMDatabase *database) {
|
|
240
|
+
NSString *sql = [NSString stringWithFormat: @"DELETE FROM %@", @CC_TABLE_NAME];
|
|
241
|
+
if (![database executeStatements:sql]) {
|
|
242
|
+
NSLog(@"%@ failed code: %d: message: %@", sql, [database lastErrorCode], [database lastErrorMessage]);
|
|
243
|
+
success = NO;
|
|
244
|
+
} else {
|
|
245
|
+
success = YES;
|
|
246
|
+
}
|
|
247
|
+
}];
|
|
248
|
+
|
|
249
|
+
return success;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
- (NSString*) getDatabaseName
|
|
253
|
+
{
|
|
254
|
+
return [helper getDatabaseName];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
- (NSString*) getDatabasePath
|
|
258
|
+
{
|
|
259
|
+
return [helper getDatabasePath];
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
- (BOOL) isNonNull:(FMResultSet*)resultSet columnIndex:(int)index
|
|
263
|
+
{
|
|
264
|
+
if (![[resultSet stringForColumnIndex:index] isEqualToString:@CC_COLUMN_NAME_NULLABLE]) {
|
|
265
|
+
return YES;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return NO;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
- (void) dealloc {
|
|
272
|
+
[helper close];
|
|
273
|
+
[queue close];
|
|
274
|
+
helper = nil;
|
|
275
|
+
queue = nil;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
@end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MAURSQLiteHelper.h
|
|
3
|
+
// BackgroundGeolocation
|
|
4
|
+
//
|
|
5
|
+
// Created by Marian Hello on 23/06/16.
|
|
6
|
+
// Copyright © 2016 mauron85. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef MAURSQLiteHelper_h
|
|
10
|
+
#define MAURSQLiteHelper_h
|
|
11
|
+
|
|
12
|
+
#import <Foundation/Foundation.h>
|
|
13
|
+
|
|
14
|
+
#define COMMA_SEP ","
|
|
15
|
+
#define SPACE_SEP " "
|
|
16
|
+
#define EQ_BIND "= ?"
|
|
17
|
+
|
|
18
|
+
static NSString * const Domain = @"SQLiteHelper";
|
|
19
|
+
|
|
20
|
+
typedef NS_ENUM(NSInteger, SQLType) {
|
|
21
|
+
kReal = 0, kInteger = 1, kText = 2, kDateTime = 3
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@interface SQLColumnType : NSObject
|
|
26
|
+
{
|
|
27
|
+
@protected enum SQLType type;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@property enum SQLType type;
|
|
32
|
+
+ (SQLColumnType*) sqlColumnWithType:(SQLType)type;
|
|
33
|
+
- (NSString*) asString;
|
|
34
|
+
@end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@interface SQLPrimaryKeyColumnType : SQLColumnType
|
|
38
|
+
+ (SQLColumnType*) sqlColumnWithType:(SQLType)type;
|
|
39
|
+
- (NSString*) asString;
|
|
40
|
+
@end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@interface SQLPrimaryKeyAutoIncColumnType : SQLColumnType
|
|
44
|
+
+ (SQLColumnType*) sqlColumnWithType:(SQLType)type;
|
|
45
|
+
- (NSString*) asString;
|
|
46
|
+
@end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
typedef NSArray<NSDictionary<NSString*, SQLColumnType*>*> SQLColumns;
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@interface MAURSQLiteHelper : NSObject
|
|
53
|
+
+ (NSString*) createTableSqlStatement:(NSString*)tableName columns:(SQLColumns*)columns;
|
|
54
|
+
@end
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
#endif /* MAURSQLiteHelper_h */
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MAURSQLiteHelper.m
|
|
3
|
+
// BackgroundGeolocation
|
|
4
|
+
//
|
|
5
|
+
// Created by Marian Hello on 23/06/16.
|
|
6
|
+
// Copyright © 2016 mauron85. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import "MAURSQLiteHelper.h"
|
|
11
|
+
|
|
12
|
+
@implementation SQLColumnType
|
|
13
|
+
|
|
14
|
+
@synthesize type;
|
|
15
|
+
|
|
16
|
+
+ (SQLColumnType*) sqlColumnWithType:(SQLType)type
|
|
17
|
+
{
|
|
18
|
+
SQLColumnType *instance = [[SQLColumnType alloc] init];
|
|
19
|
+
instance.type = type;
|
|
20
|
+
return instance;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
- (NSString*) asString
|
|
24
|
+
{
|
|
25
|
+
switch (type) {
|
|
26
|
+
case kReal:
|
|
27
|
+
return @"REAL";
|
|
28
|
+
case kText:
|
|
29
|
+
return @"TEXT";
|
|
30
|
+
case kInteger:
|
|
31
|
+
return @"INTEGER";
|
|
32
|
+
case kDateTime:
|
|
33
|
+
return @"DATETIME";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
@end
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@implementation SQLPrimaryKeyColumnType : SQLColumnType
|
|
40
|
+
+ (SQLColumnType*) sqlColumnWithType:(SQLType)type
|
|
41
|
+
{
|
|
42
|
+
SQLPrimaryKeyAutoIncColumnType *instance = [[SQLPrimaryKeyAutoIncColumnType alloc] init];
|
|
43
|
+
instance.type = type;
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
- (NSString*) asString
|
|
48
|
+
{
|
|
49
|
+
return [NSString stringWithFormat:@"%@ PRIMARY KEY", [super asString]];
|
|
50
|
+
}
|
|
51
|
+
@end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@implementation SQLPrimaryKeyAutoIncColumnType : SQLColumnType
|
|
55
|
+
+ (SQLColumnType*) sqlColumnWithType:(SQLType)type
|
|
56
|
+
{
|
|
57
|
+
SQLPrimaryKeyAutoIncColumnType *instance = [[SQLPrimaryKeyAutoIncColumnType alloc] init];
|
|
58
|
+
instance.type = type;
|
|
59
|
+
return instance;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
- (NSString*) asString
|
|
63
|
+
{
|
|
64
|
+
return [NSString stringWithFormat:@"%@ PRIMARY KEY AUTOINCREMENT", [super asString]];
|
|
65
|
+
}
|
|
66
|
+
@end
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@implementation MAURSQLiteHelper
|
|
70
|
+
|
|
71
|
+
+ (NSString*) createTableSqlStatement:(NSString*)tableName columns:(SQLColumns*)columns
|
|
72
|
+
{
|
|
73
|
+
NSMutableArray *sql = [NSMutableArray arrayWithObject: @"CREATE TABLE IF NOT EXISTS"];
|
|
74
|
+
[sql addObjectsFromArray: @[tableName, @"("]];
|
|
75
|
+
NSEnumerator *enumerator = [columns objectEnumerator];
|
|
76
|
+
id column = [enumerator nextObject];
|
|
77
|
+
while (nil != column) {
|
|
78
|
+
NSString *columnName = [column objectForKey: @"name"];
|
|
79
|
+
SQLColumnType *columnType = [column objectForKey: @"type"];
|
|
80
|
+
id nextColumn = [enumerator nextObject];
|
|
81
|
+
if (nil != nextColumn) {
|
|
82
|
+
[sql addObjectsFromArray: @[columnName, [columnType asString], @COMMA_SEP]];
|
|
83
|
+
} else {
|
|
84
|
+
[sql addObjectsFromArray: @[columnName, [columnType asString]]];
|
|
85
|
+
}
|
|
86
|
+
column = nextColumn;
|
|
87
|
+
}
|
|
88
|
+
[sql addObject: @");"];
|
|
89
|
+
|
|
90
|
+
return [sql componentsJoinedByString: @SPACE_SEP];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MAURSQLiteLocationDAO.h
|
|
3
|
+
// BackgroundGeolocation
|
|
4
|
+
//
|
|
5
|
+
// Created by Marian Hello on 10/06/16.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#ifndef MAURSQLiteLocationDAO_h
|
|
9
|
+
#define MAURSQLiteLocationDAO_h
|
|
10
|
+
|
|
11
|
+
#import <Foundation/Foundation.h>
|
|
12
|
+
#import "FMDB.h"
|
|
13
|
+
#import "MAURLocation.h"
|
|
14
|
+
|
|
15
|
+
@class Location;
|
|
16
|
+
|
|
17
|
+
@interface MAURSQLiteLocationDAO : NSObject
|
|
18
|
+
|
|
19
|
+
+ (instancetype) sharedInstance;
|
|
20
|
+
- (id) init NS_UNAVAILABLE;
|
|
21
|
+
- (NSArray<MAURLocation*>*) getAllLocations;
|
|
22
|
+
- (NSArray<MAURLocation*>*) getLocationsForSync;
|
|
23
|
+
- (NSArray<MAURLocation*>*) getValidLocations;
|
|
24
|
+
- (NSNumber*) getLocationsForSyncCount;
|
|
25
|
+
- (NSNumber*) persistLocation:(MAURLocation*)location;
|
|
26
|
+
- (NSNumber*) persistLocation:(MAURLocation*)location limitRows:(NSInteger)maxRows;
|
|
27
|
+
- (BOOL) deleteLocation:(NSNumber*)locationId error:(NSError * __autoreleasing *)outError;
|
|
28
|
+
- (BOOL) deleteAllLocations:(NSError * __autoreleasing *)outError;
|
|
29
|
+
- (BOOL) clearDatabase;
|
|
30
|
+
- (NSString*) getDatabaseName;
|
|
31
|
+
- (NSString*) getDatabasePath;
|
|
32
|
+
// private
|
|
33
|
+
- (NSString*) getLocationSelectString;
|
|
34
|
+
- (MAURLocation*) convertToLocation:(FMResultSet*)rs;
|
|
35
|
+
|
|
36
|
+
@end
|
|
37
|
+
|
|
38
|
+
#endif /* MAURSQLiteLocationDAO_h */
|