@josuelmm/capacitor-background-geolocation 1.0.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/JosuelmmCapacitorBackgroundGeolocation.podspec +34 -0
- package/LICENSE +17 -0
- package/NOTICE.md +32 -0
- package/Package.swift +45 -0
- package/README.md +402 -0
- package/android/build.gradle +79 -0
- package/android/proguard-rules.pro +1 -0
- package/android/src/main/AndroidManifest.xml +83 -0
- package/android/src/main/java/com/evgenii/jsevaluator/HandlerWrapper.java +18 -0
- package/android/src/main/java/com/evgenii/jsevaluator/JavaScriptInterface.java +22 -0
- package/android/src/main/java/com/evgenii/jsevaluator/JsEvaluator.java +133 -0
- package/android/src/main/java/com/evgenii/jsevaluator/JsFunctionCallFormatter.java +37 -0
- package/android/src/main/java/com/evgenii/jsevaluator/WebViewWrapper.java +71 -0
- package/android/src/main/java/com/evgenii/jsevaluator/interfaces/CallJavaResultInterface.java +8 -0
- package/android/src/main/java/com/evgenii/jsevaluator/interfaces/HandlerWrapperInterface.java +5 -0
- package/android/src/main/java/com/evgenii/jsevaluator/interfaces/JsCallback.java +10 -0
- package/android/src/main/java/com/evgenii/jsevaluator/interfaces/JsEvaluatorInterface.java +18 -0
- package/android/src/main/java/com/evgenii/jsevaluator/interfaces/WebViewWrapperInterface.java +14 -0
- package/android/src/main/java/com/josuelmm/capacitor/backgroundgeolocation/BackgroundGeolocationPlugin.java +898 -0
- package/android/src/main/java/com/josuelmm/capacitor/backgroundgeolocation/ConfigMapper.java +303 -0
- package/android/src/main/java/com/josuelmm/capacitor/backgroundgeolocation/HeadlessTaskRegistry.java +34 -0
- package/android/src/main/java/com/josuelmm/capacitor/backgroundgeolocation/JsEvaluatorTaskRunner.java +63 -0
- package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +699 -0
- package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +103 -0
- package/android/src/main/java/com/marianhello/bgloc/Config.java +1155 -0
- package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
- package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +362 -0
- package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +45 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
- package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +238 -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 +1088 -0
- package/android/src/main/java/com/marianhello/bgloc/data/ConfigJsonMapper.java +211 -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 +27 -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 +71 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
- package/android/src/main/java/com/marianhello/bgloc/data/SessionLocationDAO.java +18 -0
- package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +406 -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 +94 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +227 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +122 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +550 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +189 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteSessionContract.java +74 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteSessionLocationDAO.java +169 -0
- package/android/src/main/java/com/marianhello/bgloc/driving/DrivingEventsDetector.java +265 -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 +60 -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/http/UrlTemplateResolver.java +115 -0
- package/android/src/main/java/com/marianhello/bgloc/oem/BatteryOemHelper.java +214 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +218 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +385 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +685 -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 +175 -0
- package/android/src/main/java/com/marianhello/bgloc/sensor/SensorFusionDetector.java +199 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +16 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +1531 -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 +156 -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 +311 -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 +301 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
- package/android/src/main/java/com/marianhello/logging/DBLogReader.java +208 -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/mipmap-hdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/android/src/main/res/values/strings.xml +15 -0
- package/android/src/main/res/xml/authenticator.xml +7 -0
- package/android/src/main/res/xml/syncadapter.xml +9 -0
- package/dist/esm/definitions.d.ts +1052 -0
- package/dist/esm/definitions.js +142 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +23 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +92 -0
- package/dist/esm/web.js +242 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +415 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +418 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Sources/BackgroundGeolocationPlugin/BackgroundGeolocationPlugin-Bridging-Header.h +18 -0
- package/ios/Sources/BackgroundGeolocationPlugin/BackgroundGeolocationPlugin.m +52 -0
- package/ios/Sources/BackgroundGeolocationPlugin/BackgroundGeolocationPlugin.swift +750 -0
- package/ios/Tests/BackgroundGeolocationPluginTests/BackgroundGeolocationPluginTests.swift +12 -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 +340 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +88 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +1193 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +46 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +283 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.h +99 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.m +636 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +53 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +54 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +550 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +124 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.h +73 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.m +392 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.h +38 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.m +39 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.m +305 -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 +53 -0
- package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +367 -0
- package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +138 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +335 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +52 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +520 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
- package/ios/common/BackgroundGeolocation/MAURSensorFusionDetector.h +41 -0
- package/ios/common/BackgroundGeolocation/MAURSensorFusionDetector.m +137 -0
- package/ios/common/BackgroundGeolocation/MAURSessionLocationContract.h +29 -0
- package/ios/common/BackgroundGeolocation/MAURSessionLocationContract.m +31 -0
- package/ios/common/BackgroundGeolocation/MAURSessionLocationDAO.h +25 -0
- package/ios/common/BackgroundGeolocation/MAURSessionLocationDAO.m +153 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
- package/ios/common/BackgroundGeolocation/MAURUrlTemplateResolver.h +31 -0
- package/ios/common/BackgroundGeolocation/MAURUrlTemplateResolver.m +107 -0
- package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
- package/ios/common/BackgroundGeolocation/Reachability.m +475 -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/module.modulemap +16 -0
- package/package.json +82 -0
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Java port of Objective-C SQL Query Builder
|
|
3
|
+
*
|
|
4
|
+
* https://github.com/ziminji/objective-c-sql-query-builder
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at:
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
package ru.andremoniy.sqlbuilder;
|
|
20
|
+
|
|
21
|
+
import java.text.DateFormat;
|
|
22
|
+
import java.text.SimpleDateFormat;
|
|
23
|
+
import java.util.Date;
|
|
24
|
+
|
|
25
|
+
public class SqlExpression {
|
|
26
|
+
public static final String NULL = "NULL";
|
|
27
|
+
|
|
28
|
+
// Block Statement Tokens
|
|
29
|
+
public static final String SqlEnclosureOpeningBrace = "(";
|
|
30
|
+
public static final String SqlEnclosureClosingBrace = ")";
|
|
31
|
+
|
|
32
|
+
// Connectors
|
|
33
|
+
public static final String SqlConnectorAnd = "AND";
|
|
34
|
+
public static final String SqlConnectorOr = "OR";
|
|
35
|
+
|
|
36
|
+
// Join Types -- http://sqlite.org/syntaxdiagrams.html#join-op
|
|
37
|
+
public static final String SqlJoinTypeCross = "CROSS";
|
|
38
|
+
public static final String SqlJoinTypeInner = "INNER";
|
|
39
|
+
public static final String SqlJoinTypeLeft = "LEFT";
|
|
40
|
+
public static final String SqlJoinTypeLeftOuter = "LEFT OUTER";
|
|
41
|
+
public static final String SqlJoinTypeNatural = "NATURAL";
|
|
42
|
+
public static final String SqlJoinTypeNaturalCross = "NATURAL CROSS";
|
|
43
|
+
public static final String SqlJoinTypeNaturalInner = "NATURAL INNER";
|
|
44
|
+
public static final String SqlJoinTypeNaturalLeft = "NATURAL LEFT";
|
|
45
|
+
public static final String SqlJoinTypeNaturalLeftOuter = "NATURAL LEFT OUTER";
|
|
46
|
+
public static final String SqlJoinTypeNone = "";
|
|
47
|
+
|
|
48
|
+
// Expressions -- http://zetcode.com/databases/sqlitetutorial/expressions/
|
|
49
|
+
// Arithmetic Operators
|
|
50
|
+
public static final String SqlOperatorAdd = "+";
|
|
51
|
+
public static final String SqlOperatorSubtract = "-";
|
|
52
|
+
public static final String SqlOperatorMultiply = "*";
|
|
53
|
+
public static final String SqlOperatorDivide = "/";
|
|
54
|
+
public static final String SqlOperatorMod = "%";
|
|
55
|
+
|
|
56
|
+
// Boolean Operators
|
|
57
|
+
public static final String SqlOperatorAnd = "AND";
|
|
58
|
+
public static final String SqlOperatorOr = "OR";
|
|
59
|
+
public static final String SqlOperatorNot = "NOT";
|
|
60
|
+
|
|
61
|
+
// Relational Operators
|
|
62
|
+
public static final String SqlOperatorLessThan = "<";
|
|
63
|
+
public static final String SqlOperatorLessThanOrEqualTo = "<=";
|
|
64
|
+
public static final String SqlOperatorGreaterThan = ">";
|
|
65
|
+
public static final String SqlOperatorGreaterThanOrEqualTo = ">=";
|
|
66
|
+
public static final String SqlOperatorEqualTo = "=";
|
|
67
|
+
public static final String SqlOperatorNotEqualTo = "<>";
|
|
68
|
+
|
|
69
|
+
// Bitwise Operators
|
|
70
|
+
public static final String SqlOperatorBitwiseAnd = "&";
|
|
71
|
+
public static final String SqlOperatorBitwiseOr = "|";
|
|
72
|
+
public static final String SqlOperatorBitwiseShiftLeft = "<<";
|
|
73
|
+
public static final String SqlOperatorBitwiseShiftRight = ">>";
|
|
74
|
+
public static final String SqlOperatorBitwiseNegation = "~";
|
|
75
|
+
|
|
76
|
+
// Additional Operators
|
|
77
|
+
public static final String SqlOperatorConcatenate = "||";
|
|
78
|
+
public static final String SqlOperatorIn = "IN";
|
|
79
|
+
public static final String SqlOperatorNotIn = "NOT IN";
|
|
80
|
+
public static final String SqlOperatorIs = "IS";
|
|
81
|
+
public static final String SqlOperatorIsNot = "IS NOT";
|
|
82
|
+
public static final String SqlOperatorLike = "LIKE";
|
|
83
|
+
public static final String SqlOperatorNotLike = "NOT LIKE";
|
|
84
|
+
public static final String SqlOperatorGlob = "GLOB";
|
|
85
|
+
public static final String SqlOperatorNotGlob = "NOT GLOB";
|
|
86
|
+
public static final String SqlOperatorBetween = "BETWEEN";
|
|
87
|
+
public static final String SqlOperatorNotBetween = "NOT BETWEEN";
|
|
88
|
+
|
|
89
|
+
// Set Operators
|
|
90
|
+
public static final String SqlOperatorExcept = "EXCEPT";
|
|
91
|
+
public static final String SqlOperatorIntersect = "INTERSECT";
|
|
92
|
+
public static final String SqlOperatorUnion = "UNION";
|
|
93
|
+
public static final String SqlOperatorUnionAll = "UNION ALL";
|
|
94
|
+
|
|
95
|
+
// Show Types
|
|
96
|
+
public static final String SqlShowTypeAll = "ALL";
|
|
97
|
+
public static final String SqlShowTypePermanent = "PERMANENT";
|
|
98
|
+
public static final String SqlShowTypeTemporary = "TEMPORARY";
|
|
99
|
+
|
|
100
|
+
// Order Operators (for Nulls)
|
|
101
|
+
public static final String SqlNullsFirst = "FIRST";
|
|
102
|
+
public static final String SqlNullsLast = "LAST";
|
|
103
|
+
|
|
104
|
+
// Default Values -- http://forums.realsoftware.com/viewtopic.php?f=3&t=35179
|
|
105
|
+
public static final String SqlDefaultValueIsAutoIncremented = "PRIMARY KEY AUTOINCREMENT NOT NULL";
|
|
106
|
+
public static final String SqlDefaultValueIsNull = "DEFAULT NULL";
|
|
107
|
+
public static final String SqlDefaultValueIsNotNull = "NOT NULL";
|
|
108
|
+
public static final String SqlDefaultValueIsCurrentDate = "DEFAULT CURRENT_DATE";
|
|
109
|
+
public static final String SqlDefaultValueIsCurrentDateTime = "DEFAULT (datetime('now','localtime'))";
|
|
110
|
+
public static final String SqlDefaultValueIsCurrentTime = "DEFAULT CURRENT_TIME";
|
|
111
|
+
public static final String SqlDefaultValueIsCurrentTimestamp = "DEFAULT CURRENT_TIMESTAMP";
|
|
112
|
+
|
|
113
|
+
// Declared Datetype -- http://www.sqlite.org/datatype3.html
|
|
114
|
+
public static final String SqlDataTypeBigInt = "BIGINT";
|
|
115
|
+
public static final String SqlDataTypeBlob = "BLOB";
|
|
116
|
+
public static final String SqlDataTypeBoolean = "BOOLEAN";
|
|
117
|
+
public static final String SqlDataTypeClob = "CLOB";
|
|
118
|
+
public static final String SqlDataTypeDate = "DATE";
|
|
119
|
+
public static final String SqlDataTypeDateTime = "DATETIME";
|
|
120
|
+
public static final String SqlDataTypeDouble = "DOUBLE";
|
|
121
|
+
public static final String SqlDataTypeDoublePrecision = "DOUBLE PRECISION";
|
|
122
|
+
public static final String SqlDataTypeFloat = "FLOAT";
|
|
123
|
+
public static final String SqlDataTypeInt = "INT";
|
|
124
|
+
public static final String SqlDataTypeInt2 = "INT2";
|
|
125
|
+
public static final String SqlDataTypeInt8 = "INT8";
|
|
126
|
+
public static final String SqlDataTypeInteger = "INTEGER";
|
|
127
|
+
public static final String SqlDataTypeMediumInt = "MEDIUMINT";
|
|
128
|
+
public static final String SqlDataTypeNumeric = "NUMERIC";
|
|
129
|
+
public static final String SqlDataTypeReal = "REAL";
|
|
130
|
+
public static final String SqlDataTypeSmallInt = "SMALLINT";
|
|
131
|
+
public static final String SqlDataTypeText = "TEXT";
|
|
132
|
+
public static final String SqlDataTypeTimestamp = "TIMESTAMP";
|
|
133
|
+
public static final String SqlDataTypeTinyInt = "TINYINT";
|
|
134
|
+
public static final String SqlDataTypeUnsignedBigInt = "UNSIGNED BIG INT";
|
|
135
|
+
public static final String SqlDataTypeVariant = "VARIANT";
|
|
136
|
+
|
|
137
|
+
static String SqlDefaultValue(Object value) {
|
|
138
|
+
throw new UnsupportedOperationException();
|
|
139
|
+
};
|
|
140
|
+
static String SqlDataTypeChar(long x) {
|
|
141
|
+
throw new UnsupportedOperationException();
|
|
142
|
+
}
|
|
143
|
+
static String SqlDataTypeCharacter(long x) {
|
|
144
|
+
throw new UnsupportedOperationException();
|
|
145
|
+
}
|
|
146
|
+
static String SqlDataTypeDecimal(long x, long y) {
|
|
147
|
+
throw new UnsupportedOperationException();
|
|
148
|
+
}
|
|
149
|
+
static String SqlDataTypeNativeCharacter(long x) {
|
|
150
|
+
throw new UnsupportedOperationException();
|
|
151
|
+
}
|
|
152
|
+
static String SqlDataTypeNChar(long x) {
|
|
153
|
+
throw new UnsupportedOperationException();
|
|
154
|
+
}
|
|
155
|
+
static String SqlDataTypeNVarChar(long x) {
|
|
156
|
+
throw new UnsupportedOperationException();
|
|
157
|
+
}
|
|
158
|
+
static String SqlDataTypeVarChar(long x) {
|
|
159
|
+
throw new UnsupportedOperationException();
|
|
160
|
+
}
|
|
161
|
+
static String SqlDataTypeVaryingCharacter(long x) {
|
|
162
|
+
throw new UnsupportedOperationException();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
static Object SqlDefaultValue = null;
|
|
166
|
+
static Integer SqlDataTypeChar = 0;
|
|
167
|
+
static Integer SqlDataTypeCharacter = 0;
|
|
168
|
+
static Integer SqlDataTypeDecimal = 0;
|
|
169
|
+
static Integer SqlDataTypeNativeCharacter = 0;
|
|
170
|
+
static Integer SqlDataTypeNChar = 0;
|
|
171
|
+
static Integer SqlDataTypeNVarChar = 0;
|
|
172
|
+
static Integer SqlDataTypeVarChar = 0;
|
|
173
|
+
static Integer SqlDataTypeVaryingCharacter = 0;
|
|
174
|
+
|
|
175
|
+
protected String _expression = null;
|
|
176
|
+
|
|
177
|
+
public SqlExpression() {
|
|
178
|
+
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/*!
|
|
182
|
+
@method initWithSqlExpression:
|
|
183
|
+
@discussion This method initialize the class with the specified SQL expression.
|
|
184
|
+
@param sql The SQL expression to be wrapped.
|
|
185
|
+
@return An instance of this class.
|
|
186
|
+
@updated 2012-03-14
|
|
187
|
+
*/
|
|
188
|
+
public SqlExpression(String sql) {
|
|
189
|
+
this();
|
|
190
|
+
_expression = sql;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/*!
|
|
194
|
+
@method expression
|
|
195
|
+
@discussion This method returns the wrapped SQL expression.
|
|
196
|
+
@return The wrapped SQL expression.
|
|
197
|
+
@updated 2012-03-14
|
|
198
|
+
*/
|
|
199
|
+
public String expression() {
|
|
200
|
+
return _expression;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/*!
|
|
204
|
+
@method sql:
|
|
205
|
+
@discussion This method will wrap the SQL expression.
|
|
206
|
+
@param sql The SQL expression to be wrapped
|
|
207
|
+
@return The wrapped SQL expression.
|
|
208
|
+
@updated 2012-03-17
|
|
209
|
+
*/
|
|
210
|
+
public static SqlExpression sql(String sql) {
|
|
211
|
+
return new SqlExpression(sql);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/*!
|
|
215
|
+
@method prepareConnector:
|
|
216
|
+
@discussion This method will prepare an alias for an SQL statement.
|
|
217
|
+
@param token The token to be prepared.
|
|
218
|
+
@return The prepared token.
|
|
219
|
+
@updated 2012-03-24
|
|
220
|
+
*/
|
|
221
|
+
public static String prepareAlias(String token) {
|
|
222
|
+
String pattern = "(?i)[^a-z0-9_ ]";
|
|
223
|
+
if (token != null) {
|
|
224
|
+
token = token.replaceAll(pattern, "");
|
|
225
|
+
token = token.replaceAll("[\\n\\r\\s]+", ""); //trim whitespaceAndNewlineCharacterSet
|
|
226
|
+
token = String.format("[%s]", token);
|
|
227
|
+
}
|
|
228
|
+
return token;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/*!
|
|
232
|
+
@method prepareConnector:
|
|
233
|
+
@discussion This method will prepare a connector for an SQL statement.
|
|
234
|
+
@param token The token to be prepared.
|
|
235
|
+
@return The prepared token.
|
|
236
|
+
@updated 2012-03-18
|
|
237
|
+
*/
|
|
238
|
+
public static String prepareConnector(String token) {
|
|
239
|
+
if (token != null) {
|
|
240
|
+
if (token.matches("^(and|or)?i$")) {
|
|
241
|
+
throw new IllegalArgumentException("Invalid connector token provided");
|
|
242
|
+
}
|
|
243
|
+
token = token.toUpperCase();
|
|
244
|
+
}
|
|
245
|
+
return token;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/*!
|
|
249
|
+
@method prepareEnclosure:
|
|
250
|
+
@discussion This method will prepare an enclosure character for an SQL statement.
|
|
251
|
+
@param token The token to be prepared.
|
|
252
|
+
@return The prepared token.
|
|
253
|
+
@updated 2011-06-25
|
|
254
|
+
*/
|
|
255
|
+
public static String prepareEnclosure(String token) {
|
|
256
|
+
if (!(SqlEnclosureOpeningBrace.equals(token) || SqlEnclosureClosingBrace.equals(token))) {
|
|
257
|
+
throw new IllegalArgumentException("Invalid enclosure token provided");
|
|
258
|
+
}
|
|
259
|
+
return token;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/*!
|
|
263
|
+
@method prepareIdentifier:
|
|
264
|
+
@discussion This method will prepare an identifier for an SQL statement.
|
|
265
|
+
@param identifier The identifier to be prepared.
|
|
266
|
+
@return The prepared identifier.
|
|
267
|
+
@updated 2012-03-19
|
|
268
|
+
*/
|
|
269
|
+
public static String prepareIdentifier(Object identifier) {
|
|
270
|
+
if (identifier instanceof String) {
|
|
271
|
+
StringBuilder buffer = new StringBuilder();
|
|
272
|
+
String[] tokens = ((String)identifier).split("\\.");
|
|
273
|
+
int length = tokens.length;
|
|
274
|
+
String pattern = "(?i)[^a-z0-9_ ]";
|
|
275
|
+
for (int index = 0; index < length; index++) {
|
|
276
|
+
if (index > 0) {
|
|
277
|
+
buffer.append(".");
|
|
278
|
+
}
|
|
279
|
+
String token = tokens[index];
|
|
280
|
+
if (token.matches("^\\\\s*\\\\*\\\\s*$\"")) {
|
|
281
|
+
buffer.append("*");
|
|
282
|
+
} else {
|
|
283
|
+
token = token.replaceAll(pattern, "");
|
|
284
|
+
token = token.replaceAll("[\\n\\r\\s]+", ""); //trim whitespaceAndNewlineCharacterSet
|
|
285
|
+
buffer.append(String.format("[%s]", token));
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return buffer.toString();
|
|
289
|
+
} else if (identifier instanceof SqlExpression) {
|
|
290
|
+
return ((SqlExpression)identifier).expression();
|
|
291
|
+
|
|
292
|
+
} else if (identifier instanceof SqlStatement) {
|
|
293
|
+
String statement = ((SqlStatement) identifier).statement();
|
|
294
|
+
statement = statement.substring(0, statement.length() - 1);
|
|
295
|
+
statement = String.format("(%s)", statement);
|
|
296
|
+
return statement;
|
|
297
|
+
}
|
|
298
|
+
throw new IllegalArgumentException(String.format("Unable to prepare identifier. '%s'", identifier));
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/*!
|
|
302
|
+
@method prepareJoinType:
|
|
303
|
+
@discussion This method will prepare a join type token for an SQL statement.
|
|
304
|
+
@param token The token to be prepared.
|
|
305
|
+
@return The prepared token.
|
|
306
|
+
@updated 2012-03-18
|
|
307
|
+
*/
|
|
308
|
+
public static String prepareJoinType(String token) {
|
|
309
|
+
throw new UnsupportedOperationException();
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/*!
|
|
313
|
+
@method prepareOperator:type
|
|
314
|
+
@discussion This method will prepare an operator for an SQL statement.
|
|
315
|
+
@param operator The operator to be prepared.
|
|
316
|
+
@param type The type of operator.
|
|
317
|
+
@return The prepared operator.
|
|
318
|
+
@updated 2012-03-18
|
|
319
|
+
*/
|
|
320
|
+
public static String prepareOperator(String operator, String type) {
|
|
321
|
+
throw new UnsupportedOperationException();
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/*!
|
|
325
|
+
@method prepareSortOrder:
|
|
326
|
+
@discussion This method will prepare a sort order token for an SQL statement.
|
|
327
|
+
@param descending This will determine whether the token represents a descending tkoen
|
|
328
|
+
or an ascending token.
|
|
329
|
+
@return The prepared sort order token.
|
|
330
|
+
@updated 2011-07-02
|
|
331
|
+
*/
|
|
332
|
+
public static String prepareSortOrder(boolean descending) {
|
|
333
|
+
return descending ? "DESC" : "ASC";
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/*!
|
|
337
|
+
@method prepareSortWeight:
|
|
338
|
+
@discussion This method will prepare the sort weight for an SQL statement.
|
|
339
|
+
@param weight This indicates how nulls are to be weighed when comparing with non-nulls.
|
|
340
|
+
@return The prepared sort weight.
|
|
341
|
+
@updated 2011-11-06
|
|
342
|
+
*/
|
|
343
|
+
public static String prepareSortWeight(String weight) {
|
|
344
|
+
if (weight != null) {
|
|
345
|
+
if (!weight.matches("^(first|last)?i$")) {
|
|
346
|
+
throw new IllegalArgumentException("Invalid weight token provided.");
|
|
347
|
+
}
|
|
348
|
+
return weight.toUpperCase();
|
|
349
|
+
}
|
|
350
|
+
return "DEFAULT";
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/*!
|
|
354
|
+
@method prepareValue:
|
|
355
|
+
@discussion This method will prepare a value for an SQL statement.
|
|
356
|
+
@param value The value to be prepared.
|
|
357
|
+
@return The prepared value.
|
|
358
|
+
@updated 2012-03-08
|
|
359
|
+
@see http://www.sqlite.org/c3ref/mprintf.html
|
|
360
|
+
@see http://codingrecipes.com/objective-c-a-function-for-escaping-values-before-inserting-into-sqlite
|
|
361
|
+
@see http://wiki.sa-mp.com/wiki/Escaping_Strings_SQLite
|
|
362
|
+
*/
|
|
363
|
+
public static String prepareValue(Object value) {
|
|
364
|
+
if (value == null || SqlExpression.NULL.equals(value)) {
|
|
365
|
+
return "NULL";
|
|
366
|
+
} else if (value.getClass().isArray()) {
|
|
367
|
+
StringBuilder buffer = new StringBuilder();
|
|
368
|
+
buffer.append("(");
|
|
369
|
+
for (int i = 0; i < ((Object[])value).length; i++) {
|
|
370
|
+
if (i > 0) {
|
|
371
|
+
buffer.append(", ");
|
|
372
|
+
}
|
|
373
|
+
buffer.append(prepareValue(((Object[])value)[i]));
|
|
374
|
+
}
|
|
375
|
+
buffer.append(")");
|
|
376
|
+
return buffer.toString();
|
|
377
|
+
} else if (value instanceof Number) {
|
|
378
|
+
// TODO: maybe use %d and %f for integers and floats...
|
|
379
|
+
return String.format("%s", value);
|
|
380
|
+
} else if (value instanceof String) {
|
|
381
|
+
// TODO: maybe use sqlite3_mprintf
|
|
382
|
+
String escapedValue = String.format("'%s'", value);
|
|
383
|
+
return escapedValue;
|
|
384
|
+
} else if (value instanceof Date) {
|
|
385
|
+
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
386
|
+
return String.format("'%s'", df.format((Date)value));
|
|
387
|
+
} else if (value instanceof SqlExpression) {
|
|
388
|
+
return ((SqlExpression)value).expression();
|
|
389
|
+
} else if (value instanceof SqlSelectStatement) {
|
|
390
|
+
String statement = ((SqlSelectStatement)value).statement();
|
|
391
|
+
statement = statement.substring(0, statement.length() - 1);
|
|
392
|
+
statement = String.format("(%s)", statement);
|
|
393
|
+
return statement;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
throw new IllegalArgumentException(String.format("Unable to prepare value. '%s'", value));
|
|
397
|
+
}
|
|
398
|
+
}
|