diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/checksums/checksums.lock" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/checksums/checksums.lock"
new file mode 100644
index 0000000000000000000000000000000000000000..23b230d9db456f3f3cb98cca6de2acc8a92ce021
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/checksums/checksums.lock" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/dependencies-accessors/dependencies-accessors.lock" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/dependencies-accessors/dependencies-accessors.lock"
new file mode 100644
index 0000000000000000000000000000000000000000..a56d9ddc7bd6f6df715fa960327840da64468880
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/dependencies-accessors/dependencies-accessors.lock" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/dependencies-accessors/gc.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/dependencies-accessors/gc.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/executionHistory/executionHistory.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/executionHistory/executionHistory.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..7cb2e39073426700d63aa8790d539eda437c7d3b
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/executionHistory/executionHistory.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/executionHistory/executionHistory.lock" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/executionHistory/executionHistory.lock"
new file mode 100644
index 0000000000000000000000000000000000000000..d1fd24de7fff10b947016b1b760992bef7125738
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/executionHistory/executionHistory.lock" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileChanges/last-build.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileChanges/last-build.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileChanges/last-build.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/fileHashes.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/fileHashes.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..767c349605f811a61be026e79a7614614c20719b
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/fileHashes.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/fileHashes.lock" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/fileHashes.lock"
new file mode 100644
index 0000000000000000000000000000000000000000..7487d9a839557819c69496a852d10d29580f3163
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/fileHashes.lock" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/resourceHashesCache.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/resourceHashesCache.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..b6a0b38c3a4c12b3b08cd9f1102be06f6f421ac3
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/fileHashes/resourceHashesCache.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/gc.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/7.3/gc.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/buildOutputCleanup.lock" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/buildOutputCleanup.lock"
new file mode 100644
index 0000000000000000000000000000000000000000..b97b5a085d0d48381558dd51757e42e1e72abcdd
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/buildOutputCleanup.lock" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/cache.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/cache.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..659fd0356cb3abdd551f678dcc7d16cc2548713f
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/cache.properties"
@@ -0,0 +1,2 @@
+#Tue Sep 27 17:50:58 CST 2022
+gradle.version=7.3
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/outputFiles.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/outputFiles.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..be49aeaf52ab60ad0b406e569cef17031f9295d8
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/buildOutputCleanup/outputFiles.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/file-system.probe" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/file-system.probe"
new file mode 100644
index 0000000000000000000000000000000000000000..a2c6986ec1fdf74a7ef806f311c1c5f1ab85cff8
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/file-system.probe" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/vcs-1/gc.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.gradle/vcs-1/gc.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..26d33521af10bcc7fd8cea344038eaaeb78d0ef5
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/.gitignore"
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/caches/build_file_checksums.ser" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/caches/build_file_checksums.ser"
new file mode 100644
index 0000000000000000000000000000000000000000..e9d0c077edb37b8979ac9bb96e35cd8d7882bc12
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/caches/build_file_checksums.ser" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/compiler.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/compiler.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..fb7f4a8a465d42b4a0390d464b83b99e8465bba7
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/compiler.xml"
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/gradle.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/gradle.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..6a43f0a654c13668588506b256278f8119c52f55
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/gradle.xml"
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/jarRepositories.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/jarRepositories.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..19e238eaa31f512cfc1e8641964227098d1eb8bb
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/jarRepositories.xml"
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__hamcrest_core_1_3.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__hamcrest_core_1_3.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..a3cab89d0eec56ae6a05e16182bfaa8315b2a84f
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__hamcrest_core_1_3.xml"
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__junit_4_13_1.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__junit_4_13_1.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..5a0e00af12cd4b5c2ccf8be02b70f3b5cb4dbc51
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__junit_4_13_1.xml"
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__runner_2_0_0_200_har.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__runner_2_0_0_200_har.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..22949ae761c8a8d1b133978ebca2213d6d259923
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/libraries/Gradle__runner_2_0_0_200_har.xml"
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/misc.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/misc.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..58918f50335428f2efb3af4d621f9f405ed659d4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/misc.xml"
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..0a98608932a6ea3af04ed1e70c738bd80a46839e
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules.xml"
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules/AnimationDemo.iml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules/AnimationDemo.iml"
new file mode 100644
index 0000000000000000000000000000000000000000..336f727d0ce823556606d4fee3ed1146572a0512
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules/AnimationDemo.iml"
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules/entry/entry.iml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules/entry/entry.iml"
new file mode 100644
index 0000000000000000000000000000000000000000..132755272082e2620948b8150861e42066f3d1a9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/modules/entry/entry.iml"
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/vcs.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/vcs.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..6c0b8635858dc7ad44b93df54b762707ce49eefc
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/.idea/vcs.xml"
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/LICENSE" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/LICENSE"
new file mode 100644
index 0000000000000000000000000000000000000000..7c357dc828cf7d8c783f10ed6bb1bac8a1e903c1
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/LICENSE"
@@ -0,0 +1,78 @@
+ Copyright (c) 2021 Huawei Device Co., Ltd.
+
+ Licensed under the Apache License,Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+Apache License, Version 2.0
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+1.You must give any other recipients of the Work or Derivative Works a copy of this License; and
+2.You must cause any modified files to carry prominent notices stating that You changed the files; and
+3.You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+4.If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/README.md" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/README.md"
new file mode 100644
index 0000000000000000000000000000000000000000..226f125817dc0cee281965811b92082b91a970f8
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/README.md"
@@ -0,0 +1,47 @@
+# AnimationDemo
+简介
+• 此demo使用的是通用动画样式,我们通过一个简单的样例,实现了平移、旋转、缩放以及透明度变化的效果。
+
+安装要求
+• 安装DevEco Studio
+• 设置DevEco Studio开发环境。DevEco Studio开发环境需要连接到网络,以确保该正常使用。可以根据以下两种情况配置开发环境:
+ 1.如果您可以直接访问Internet,则只需下载HarmonyOS SDK
+ 2.如果网络无法直接访问Internet,则可以通过代理服务器进行访问
+• 生成密钥并申请证书
+
+用户指南
+• 下载此项目
+• 打开HUAWEI DevEco Studio,单击File> Open选择此Codelab
+• 单击Build> Build App(s)/Hap(s)>Build Debug Hap(s)以编译hap软件包
+• 单击Run> Run 'entry'以运行hap包
+
+注意
+• 您可以选择在模拟器或真机上运行hap软件包。
+• 如果在真机上运行它,则需要在项目的File> Project Structure> Modules> Signing Configs中配置签名和证书信息。
+
+许可
+请参阅LICENSE文件以获得更多信息。
+
+What is it?
+This demo uses the general animation style. We use a simple example to implement translation, rotation, scaling, and transparency changes.
+
+Installation requirements
+• Install DevEco Studio
+• Set up the DevEco Studio development environment.The DevEco Studio development environment needs to depend on the network environment. It needs to be connected to the network to ensure the normal use of the tool.The development environment can be configured according to the following two situations
+ 1.If you can directly access the Internet, just download the HarmonyOS SDK
+ 2.If the network cannot access the Internet directly, it can be accessed through a proxy server
+• Generate secret key and apply for certificate
+
+User guide
+• Download this Project
+• Open HUAWEI DevEco Studio, click File> Open> Then select and open this Project
+• Click Build> Build App(s)/Hap(s)>Build Debug Hap(s) to compile the hap package
+• Click Run> Run 'entry' to run the hap package
+
+Note
+• You can choose to run the hap package on the simulator or the phone.
+• If you run it on the phone, you need to configure the signature and certificate information in the project's File> Project Structure> Modules> Signing Configs.
+
+Licensing
+Please see LICENSE for more info.
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/RELEASE-NOTES.MD" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/RELEASE-NOTES.MD"
new file mode 100644
index 0000000000000000000000000000000000000000..9087a1482627f316280b762b6c5adc73c0d438d1
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/RELEASE-NOTES.MD"
@@ -0,0 +1 @@
+1.0.0.1 Initial version
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..b77bc230c69465f68a5e0828e2df40fc0d985cc0
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/build.gradle"
@@ -0,0 +1,33 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
+
+//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510
+ohos {
+ compileSdkVersion 6
+}
+
+buildscript {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ }
+ dependencies {
+ classpath 'com.huawei.ohos:hap:3.0.5.2'
+ classpath 'com.huawei.ohos:decctest:1.2.7.2'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/build/outputs/hap/debug/phone/entry-debug-rich-unsigned.hap" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/build/outputs/hap/debug/phone/entry-debug-rich-unsigned.hap"
new file mode 100644
index 0000000000000000000000000000000000000000..47b37584ae8ff3c40f46aaef515dde5d398553b9
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/build/outputs/hap/debug/phone/entry-debug-rich-unsigned.hap" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..88477de839e62080c93f83d9e042900aa7b1140c
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build.gradle"
@@ -0,0 +1,26 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510
+ohos {
+ compileSdkVersion 6
+ defaultConfig {
+ compatibleSdkVersion 6
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+ testImplementation 'junit:junit:4.13.1'
+ ohosTestImplementation 'com.huawei.ohos.testkit:runner:2.0.0.200'
+}
+decc {
+ supportType = ['html', 'xml']
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/buildConfig/debug/com/huawei/codelab/BuildConfig.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/buildConfig/debug/com/huawei/codelab/BuildConfig.java"
new file mode 100644
index 0000000000000000000000000000000000000000..519a096cc9d638f0470fd0eebdb2e9121619f8c8
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/buildConfig/debug/com/huawei/codelab/BuildConfig.java"
@@ -0,0 +1,14 @@
+/**
+ * Automatically generated file. DO NOT MODIFY
+ */
+package com.huawei.codelab;
+
+public final class BuildConfig {
+ public static final boolean DEBUG = Boolean.parseBoolean("true");
+ public static final String PACKAGE_NAME = "com.huawei.codelab";
+ public static final String BUILD_TYPE = "debug";
+ public static final int COMPILE_SDK_VERSION = 6;
+ public static final int VERSION_CODE = 1000000;
+ public static final String VERSION_NAME = "1.0.0";
+ public static final String BUNDLE_NAME = "com.huawei.codelab";
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/R.jar" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/R.jar"
new file mode 100644
index 0000000000000000000000000000000000000000..dc0885acc8916a24e5441f665fb21980c527db9f
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/R.jar" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/classes/com/huawei/codelab/ResourceTable.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/classes/com/huawei/codelab/ResourceTable.class"
new file mode 100644
index 0000000000000000000000000000000000000000..d82ae69e7e15120daa6006c6d0af50fe3f0d9b7a
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/classes/com/huawei/codelab/ResourceTable.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/com/huawei/codelab/ResourceTable.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/com/huawei/codelab/ResourceTable.java"
new file mode 100644
index 0000000000000000000000000000000000000000..578300cc6af74f8e1d89517a54fc95ba12a58f46
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/generated/source/r/debug/com/huawei/codelab/ResourceTable.java"
@@ -0,0 +1,14 @@
+/*
+ * Copyright(c) Huawei Technologies Co., Ltd. 2019 - 2020. All rights reserved.
+ * Description: This header was automatically generated by restool from the resource data it found.
+ * It provides resource index information for applications, and should not be modified by hand.
+ */
+
+package com.huawei.codelab;
+
+public final class ResourceTable {
+ public static final int Media_icon = 0x1000002;
+
+ public static final int String_entry_MainAbility = 0x1000000;
+ public static final int String_mainability_description = 0x1000001;
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classFiles" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classFiles"
new file mode 100644
index 0000000000000000000000000000000000000000..39d03a922f1c5ca78f54cbd41f308829568f9b01
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classFiles"
@@ -0,0 +1,4 @@
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\javac\debug\classes\com\huawei\codelab\BuildConfig.class
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\javac\debug\classes\com\huawei\codelab\MainAbility.class
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\javac\debug\classes\com\huawei\codelab\MyApplication.class
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\javac\debug\classes\com\huawei\codelab\ResourceTable.class
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/BuildConfig.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/BuildConfig.class"
new file mode 100644
index 0000000000000000000000000000000000000000..f63287afe673e4a479ab2a549cfbc4449fff994b
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/BuildConfig.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/MainAbility.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/MainAbility.class"
new file mode 100644
index 0000000000000000000000000000000000000000..abd946f7ca10e7d461c687d8d3d4b1c8f7bba3a2
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/MainAbility.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/MyApplication.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/MyApplication.class"
new file mode 100644
index 0000000000000000000000000000000000000000..46b141ebb6870b09bf6a692f2bbd0cb6f69df33c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/MyApplication.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/ResourceTable.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/ResourceTable.class"
new file mode 100644
index 0000000000000000000000000000000000000000..d82ae69e7e15120daa6006c6d0af50fe3f0d9b7a
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/javac/debug/classes/com/huawei/codelab/ResourceTable.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/jsManifest/default/manifest.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/jsManifest/default/manifest.json"
new file mode 100644
index 0000000000000000000000000000000000000000..e043c1cc5d606383d2aa5d55b91ceff4df449ed4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/jsManifest/default/manifest.json"
@@ -0,0 +1,17 @@
+{
+ "appID": "com.huawei.codelab",
+ "appName": "$string:entry_MainAbility",
+ "versionName": "1.0.0",
+ "versionCode": 1000000,
+ "minPlatformVersion": 6,
+ "pages": [
+ "pages/index/index"
+ ],
+ "deviceType": [
+ "phone"
+ ],
+ "window": {
+ "autoDesignWidth": true,
+ "designWidth": 720
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/jsResources/base/media/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/jsResources/base/media/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/jsResources/base/media/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/app.js" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/app.js"
new file mode 100644
index 0000000000000000000000000000000000000000..41b8f38acf8b2a5f92e3d894004ac60bdce50cd3
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/app.js"
@@ -0,0 +1,189 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js?entry");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js?entry":
+/*!******************************************************************************************!*\
+ !*** f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js?entry ***!
+ \******************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $app_script$ = __webpack_require__(/*! !../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/script.js!../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/babel-loader?presets[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/preset-env&plugins[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/plugin-transform-modules-commonjs&comments=false!../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/resource-reference-script.js!../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/manifest-loader.js?path=f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js!./app.js */ "./lib/script.js!./node_modules/babel-loader/lib/index.js?presets[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\preset-env&plugins[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\plugin-transform-modules-commonjs&comments=false!./lib/resource-reference-script.js!./lib/manifest-loader.js?path=f:\\Dome\\git_dome\\ETS\\codelabs\\AnimationDemo\\entry\\src\\main\\js\\default\\app.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js")
+
+ $app_define$('@app-application/app', [], function($app_require$, $app_exports$, $app_module$) {
+
+ $app_script$($app_module$, $app_exports$, $app_require$)
+ if ($app_exports$.__esModule && $app_exports$.default) {
+ $app_module$.exports = $app_exports$.default
+ }
+
+ })
+ $app_bootstrap$('@app-application/app',undefined,undefined)
+
+/***/ }),
+
+/***/ "./lib/manifest-plugin.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/build/intermediates/js/debug/jsManifest/default/manifest.json":
+/*!***********************************************************************************************************************************************************************************************************!*\
+ !*** f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/manifest-plugin.js!f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/build/intermediates/js/debug/jsManifest/default/manifest.json ***!
+ \***********************************************************************************************************************************************************************************************************/
+/*! exports provided: appID, appName, versionName, versionCode, minPlatformVersion, pages, deviceType, window, default */
+/***/ (function(module) {
+
+module.exports = JSON.parse("{\"appID\":\"com.huawei.codelab\",\"appName\":\"$string:entry_MainAbility\",\"versionName\":\"1.0.0\",\"versionCode\":1000000,\"minPlatformVersion\":6,\"pages\":[\"pages/index/index\"],\"deviceType\":[\"phone\"],\"window\":{\"autoDesignWidth\":true,\"designWidth\":720}}");
+
+/***/ }),
+
+/***/ "./lib/script.js!./node_modules/babel-loader/lib/index.js?presets[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\preset-env&plugins[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\plugin-transform-modules-commonjs&comments=false!./lib/resource-reference-script.js!./lib/manifest-loader.js?path=f:\\Dome\\git_dome\\ETS\\codelabs\\AnimationDemo\\entry\\src\\main\\js\\default\\app.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js":
+/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/script.js!f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/babel-loader/lib?presets[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/preset-env&plugins[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/plugin-transform-modules-commonjs&comments=false!f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/resource-reference-script.js!f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/manifest-loader.js?path=f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js!f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js ***!
+ \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = function(module, exports, $app_require$){"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+var _default = {
+ onCreate: function onCreate() {
+ console.info('AceApplication onCreate');
+ },
+ onDestroy: function onDestroy() {
+ console.info('AceApplication onDestroy');
+ }
+};
+exports["default"] = _default;
+;
+(exports["default"] || module.exports).manifest = __webpack_require__(/*! !../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/manifest-plugin.js!../../../../build/intermediates/js/debug/jsManifest/default/manifest.json */ "./lib/manifest-plugin.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/build/intermediates/js/debug/jsManifest/default/manifest.json");
+
+function requireModule(moduleName) {
+ const systemList = ['system.router', 'system.app', 'system.prompt', 'system.configuration',
+ 'system.image', 'system.device', 'system.mediaquery', 'ohos.animator', 'system.grid', 'system.resource']
+ var target = ''
+ if (systemList.includes(moduleName.replace('@', ''))) {
+ target = $app_require$('@app-module/' + moduleName.substring(1));
+ return target;
+ }
+ var shortName = moduleName.replace(/@[^.]+.([^.]+)/, '$1');
+ if (typeof ohosplugin !== 'undefined' && /@ohos/.test(moduleName)) {
+ target = ohosplugin;
+ for (let key of shortName.split('.')) {
+ target = target[key];
+ if(!target) {
+ break;
+ }
+ }
+ if (typeof target !== 'undefined') {
+ return target;
+ }
+ }
+ if (typeof systemplugin !== 'undefined') {
+ target = systemplugin;
+ for (let key of shortName.split('.')) {
+ target = target[key];
+ if(!target) {
+ break;
+ }
+ }
+ if (typeof target !== 'undefined') {
+ return target;
+ }
+ }
+ target = requireNapi(shortName);
+ return target;
+}
+}
+/* generated by ace-loader */
+
+
+/***/ })
+
+/******/ });
+//# sourceMappingURL=app.js.map
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/app.js.map" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/app.js.map"
new file mode 100644
index 0000000000000000000000000000000000000000..61599cf440a8e330c894be8f4e1df9e7bf168b5e
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/app.js.map"
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js?64d2","webpack:///f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/app.js"],"names":["onCreate","console","info","onDestroy","exports","module","manifest","require"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA,mBAAmB,mBAAO,CAAC,w0CAA6yB;;AAEx0B;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP,iE;;;;;;;;;;;;;;;;;;;;;;;;;;;;eCKe;AACbA,UADa,sBACF;AACTC,WAAO,CAACC,IAAR,CAAa,yBAAb;AACD,GAHY;AAIbC,WAJa,uBAID;AACVF,WAAO,CAACC,IAAR,CAAa,0BAAb;AACD;AANY,C;;AAQf;AAAC,CAACE,OAAO,WAAP,IAAmBC,MAAM,CAACD,OAA3B,EAAoCE,QAApC,GAA+CC,mBAAO,CAAC,0VAAD,CAAtD","file":"./app.js","sourceRoot":""}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/common/images/cat.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/common/images/cat.png"
new file mode 100644
index 0000000000000000000000000000000000000000..0776613aeac149df3b36d0fb2929f80edfd85543
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/common/images/cat.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/i18n/en-US.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/i18n/en-US.json"
new file mode 100644
index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/i18n/en-US.json"
@@ -0,0 +1,6 @@
+{
+ "strings": {
+ "hello": "Hello",
+ "world": "World"
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/i18n/zh-CN.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/i18n/zh-CN.json"
new file mode 100644
index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/i18n/zh-CN.json"
@@ -0,0 +1,6 @@
+{
+ "strings": {
+ "hello": "您好",
+ "world": "世界"
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/manifest.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/manifest.json"
new file mode 100644
index 0000000000000000000000000000000000000000..e043c1cc5d606383d2aa5d55b91ceff4df449ed4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/manifest.json"
@@ -0,0 +1,17 @@
+{
+ "appID": "com.huawei.codelab",
+ "appName": "$string:entry_MainAbility",
+ "versionName": "1.0.0",
+ "versionCode": 1000000,
+ "minPlatformVersion": 6,
+ "pages": [
+ "pages/index/index"
+ ],
+ "deviceType": [
+ "phone"
+ ],
+ "window": {
+ "autoDesignWidth": true,
+ "designWidth": 720
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/pages/index/index.js" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/pages/index/index.js"
new file mode 100644
index 0000000000000000000000000000000000000000..63a714ebf04c7ba8180a423e2a42452d75b51920
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/pages/index/index.js"
@@ -0,0 +1,435 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml?entry");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml?entry":
+/*!*********************************************************************************************************!*\
+ !*** f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml?entry ***!
+ \*********************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $app_template$ = __webpack_require__(/*! !../../../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/json.js!../../../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/template.js!./index.hml */ "./lib/json.js!./lib/template.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml")
+var $app_style$ = __webpack_require__(/*! !../../../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/json.js!../../../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/style.js!./index.css */ "./lib/json.js!./lib/style.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.css")
+var $app_script$ = __webpack_require__(/*! !../../../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/script.js!../../../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/babel-loader?presets[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/preset-env&plugins[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/plugin-transform-modules-commonjs&comments=false!../../../../../../../../../../../../HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/resource-reference-script.js!./index.js */ "./lib/script.js!./node_modules/babel-loader/lib/index.js?presets[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\preset-env&plugins[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\plugin-transform-modules-commonjs&comments=false!./lib/resource-reference-script.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.js")
+
+$app_define$('@app-component/index', [], function($app_require$, $app_exports$, $app_module$) {
+
+$app_script$($app_module$, $app_exports$, $app_require$)
+if ($app_exports$.__esModule && $app_exports$.default) {
+$app_module$.exports = $app_exports$.default
+}
+
+$app_module$.exports.template = $app_template$
+
+$app_module$.exports.style = $app_style$
+
+})
+$app_bootstrap$('@app-component/index',undefined,undefined)
+
+/***/ }),
+
+/***/ "./lib/json.js!./lib/style.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.css":
+/*!******************************************************************************************************************************************************************************************************************************************************!*\
+ !*** f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/json.js!f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/style.js!f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.css ***!
+ \******************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = {
+ ".container": {
+ "width": "100%",
+ "backgroundColor": "#F8FCF5",
+ "flexDirection": "column",
+ "justifyContent": "center",
+ "alignItems": "center"
+ },
+ ".img": {
+ "marginTop": "10px",
+ "height": "100px",
+ "width": "100px",
+ "animationTimingFunction": "ease",
+ "animationDuration": "2s",
+ "animationDelay": "0s",
+ "animationFillMode": "forwards",
+ "animationIterationCount": -1
+ },
+ ".text": {
+ "fontSize": "20px"
+ },
+ ".img-translate": {
+ "animationName": "translateAnim"
+ },
+ ".img-rotate": {
+ "animationName": "rotateAnim"
+ },
+ ".img-rotateY": {
+ "animationName": "rotateYAnim"
+ },
+ ".img-scale": {
+ "animationName": "scaleAnim"
+ },
+ ".img-mixes": {
+ "animationName": "mixesAnim"
+ },
+ ".img-opacity": {
+ "animationName": "opacityAnim"
+ },
+ "@KEYFRAMES": {
+ "translateAnim": [
+ {
+ "transform": "{\"translate\":\"-100px\"}",
+ "time": 0
+ },
+ {
+ "transform": "{\"translate\":\"100px\"}",
+ "time": 100
+ }
+ ],
+ "rotateAnim": [
+ {
+ "transform": "{\"rotate\":\"0deg\"}",
+ "time": 0
+ },
+ {
+ "transform": "{\"rotate\":\"360deg\"}",
+ "time": 100
+ }
+ ],
+ "rotateYAnim": [
+ {
+ "transform": "{\"rotateY\":\"0deg\"}",
+ "time": 0
+ },
+ {
+ "transform": "{\"rotateY\":\"360deg\"}",
+ "time": 100
+ }
+ ],
+ "scaleAnim": [
+ {
+ "transform": "{\"scale\":\"0\"}",
+ "time": 0
+ },
+ {
+ "transform": "{\"scale\":\"1.2\"}",
+ "time": 100
+ }
+ ],
+ "opacityAnim": [
+ {
+ "opacity": 0,
+ "time": 0
+ },
+ {
+ "opacity": 1,
+ "time": 100
+ }
+ ]
+ }
+}
+
+/***/ }),
+
+/***/ "./lib/json.js!./lib/template.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml":
+/*!*********************************************************************************************************************************************************************************************************************************************************!*\
+ !*** f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/json.js!f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/template.js!f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml ***!
+ \*********************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = {
+ "attr": {
+ "debugLine": "pages/index/index:14",
+ "className": "container"
+ },
+ "type": "div",
+ "classList": [
+ "container"
+ ],
+ "children": [
+ {
+ "attr": {
+ "debugLine": "pages/index/index:15",
+ "className": "img img-translate",
+ "src": "/common/images/cat.png"
+ },
+ "type": "image",
+ "classList": [
+ "img",
+ "img-translate"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:16",
+ "className": "text",
+ "value": "translate"
+ },
+ "type": "text",
+ "classList": [
+ "text"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:17",
+ "className": "img img-rotate",
+ "src": "/common/images/cat.png"
+ },
+ "type": "image",
+ "classList": [
+ "img",
+ "img-rotate"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:18",
+ "className": "text",
+ "value": "rotate"
+ },
+ "type": "text",
+ "classList": [
+ "text"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:19",
+ "className": "img img-rotateY",
+ "src": "/common/images/cat.png"
+ },
+ "type": "image",
+ "classList": [
+ "img",
+ "img-rotateY"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:20",
+ "className": "text",
+ "value": "rotateY"
+ },
+ "type": "text",
+ "classList": [
+ "text"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:21",
+ "className": "img img-scale",
+ "src": "/common/images/cat.png"
+ },
+ "type": "image",
+ "classList": [
+ "img",
+ "img-scale"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:22",
+ "className": "text",
+ "value": "scale"
+ },
+ "type": "text",
+ "classList": [
+ "text"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:23",
+ "className": "img img-opacity",
+ "src": "/common/images/cat.png"
+ },
+ "type": "image",
+ "classList": [
+ "img",
+ "img-opacity"
+ ]
+ },
+ {
+ "attr": {
+ "debugLine": "pages/index/index:24",
+ "className": "text",
+ "value": "opacity"
+ },
+ "type": "text",
+ "classList": [
+ "text"
+ ]
+ }
+ ]
+}
+
+/***/ }),
+
+/***/ "./lib/script.js!./node_modules/babel-loader/lib/index.js?presets[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\preset-env&plugins[]=F:\\HarmonyOS\\HarmonyOs SDK\\js\\2.2.0.3\\build-tools\\ace-loader\\node_modules\\@babel\\plugin-transform-modules-commonjs&comments=false!./lib/resource-reference-script.js!../../../../../../Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.js":
+/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/script.js!f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/babel-loader/lib?presets[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/preset-env&plugins[]=F:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/node_modules/@babel/plugin-transform-modules-commonjs&comments=false!f:/HarmonyOS/HarmonyOs SDK/js/2.2.0.3/build-tools/ace-loader/lib/resource-reference-script.js!f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.js ***!
+ \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function(module, exports, $app_require$){"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+var _default = {};
+exports["default"] = _default;
+
+function requireModule(moduleName) {
+ const systemList = ['system.router', 'system.app', 'system.prompt', 'system.configuration',
+ 'system.image', 'system.device', 'system.mediaquery', 'ohos.animator', 'system.grid', 'system.resource']
+ var target = ''
+ if (systemList.includes(moduleName.replace('@', ''))) {
+ target = $app_require$('@app-module/' + moduleName.substring(1));
+ return target;
+ }
+ var shortName = moduleName.replace(/@[^.]+.([^.]+)/, '$1');
+ if (typeof ohosplugin !== 'undefined' && /@ohos/.test(moduleName)) {
+ target = ohosplugin;
+ for (let key of shortName.split('.')) {
+ target = target[key];
+ if(!target) {
+ break;
+ }
+ }
+ if (typeof target !== 'undefined') {
+ return target;
+ }
+ }
+ if (typeof systemplugin !== 'undefined') {
+ target = systemplugin;
+ for (let key of shortName.split('.')) {
+ target = target[key];
+ if(!target) {
+ break;
+ }
+ }
+ if (typeof target !== 'undefined') {
+ return target;
+ }
+ }
+ target = requireNapi(shortName);
+ return target;
+}
+
+var moduleOwn = exports.default || module.exports;
+var accessors = ['public', 'protected', 'private'];
+if (moduleOwn.data && accessors.some(function (acc) {
+ return moduleOwn[acc];
+ })) {
+ throw new Error('For VM objects, attribute data must not coexist with public, protected, or private. Please replace data with public.');
+} else if (!moduleOwn.data) {
+ moduleOwn.data = {};
+ moduleOwn._descriptor = {};
+ accessors.forEach(function(acc) {
+ var accType = typeof moduleOwn[acc];
+ if (accType === 'object') {
+ moduleOwn.data = Object.assign(moduleOwn.data, moduleOwn[acc]);
+ for (var name in moduleOwn[acc]) {
+ moduleOwn._descriptor[name] = {access : acc};
+ }
+ } else if (accType === 'function') {
+ console.warn('For VM objects, attribute ' + acc + ' value must not be a function. Change the value to an object.');
+ }
+ });
+}}
+/* generated by ace-loader */
+
+
+/***/ })
+
+/******/ });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/pages/index/index.js.map" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/pages/index/index.js.map"
new file mode 100644
index 0000000000000000000000000000000000000000..db04a10e9215f8824399c3181623cbf54a641eff
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/js/debug/normal/rich/assets/js/default/pages/index/index.js.map"
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml","webpack:///f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.css","webpack:///f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.hml?9283","webpack:///f:/Dome/git_dome/ETS/codelabs/AnimationDemo/entry/src/main/js/default/pages/index/index.js"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA,qBAAqB,mBAAO,CAAC,wXAAuO;AACpQ,kBAAkB,mBAAO,CAAC,kXAAoO;AAC9P,mBAAmB,mBAAO,CAAC,mjCAAqnB;;AAEhpB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;AACD,2D;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA,OAAO;AACP;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA,OAAO;AACP;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA,OAAO;AACP;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA,OAAO;AACP;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;AC3FA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;;;;;;eC/Ge,E","file":"./pages/index/index.js","sourceRoot":""}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/merge_profile/debug/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/merge_profile/debug/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..4016d8989eef06d2ea9bf38cef8687109b452cc5
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/merge_profile/debug/config.json"
@@ -0,0 +1,67 @@
+{
+ "app": {
+ "bundleName": "com.huawei.codelab",
+ "vendor": "huawei",
+ "apiVersion": {
+ "compatible": 6,
+ "target": 6,
+ "releaseType": "Release"
+ },
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ }
+ },
+ "deviceConfig": {
+ "default": {
+ "debug": true
+ }
+ },
+ "module": {
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry",
+ "installationFree": true
+ },
+ "abilities": [
+ {
+ "name": "com.huawei.codelab.MainAbility",
+ "description": "$string:mainability_description",
+ "icon": "$media:icon",
+ "label": "$string:entry_MainAbility",
+ "type": "page",
+ "launchType": "standard",
+ "skills": [
+ {
+ "actions": [
+ "action.system.home"
+ ],
+ "entities": [
+ "entity.system.home"
+ ]
+ }
+ ],
+ "homeAbility": true
+ }
+ ],
+ "js": [
+ {
+ "name": "default",
+ "pages": [
+ "pages/index/index"
+ ],
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": true
+ }
+ }
+ ],
+ "mainAbility": "com.huawei.codelab.MainAbility",
+ "package": "com.huawei.codelab"
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/merge_res/debug/merge_res_file.index" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/merge_res/debug/merge_res_file.index"
new file mode 100644
index 0000000000000000000000000000000000000000..a0370b3af29bb52544336851bbb164799f7de257
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/merge_res/debug/merge_res_file.index"
@@ -0,0 +1 @@
+"F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\src\main"
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/original_res/debug/res/drawable/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/original_res/debug/res/drawable/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/original_res/debug/res/drawable/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/original_res/debug/res/values/strings.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/original_res/debug/res/values/strings.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..99859de2a114f5ddba31f0d4401f49320182ba96
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/original_res/debug/res/values/strings.xml"
@@ -0,0 +1,5 @@
+
+
+ "entry_MainAbility"
+ "JS_Empty Ability"
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/process_profile/debug/normal/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/process_profile/debug/normal/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..c88aca4716bbbeb65f6bc9a964e8f9b7ef7a2b13
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/process_profile/debug/normal/config.json"
@@ -0,0 +1,67 @@
+{
+ "app": {
+ "apiVersion": {
+ "compatible": 6,
+ "releaseType": "Release",
+ "target": 6
+ },
+ "vendor": "huawei",
+ "bundleName": "com.huawei.codelab",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ }
+ },
+ "deviceConfig": {
+ "default": {
+ "debug": true
+ }
+ },
+ "module": {
+ "deviceType": [
+ "phone"
+ ],
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "name": "com.huawei.codelab.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:entry_MainAbility",
+ "type": "page",
+ "launchType": "standard",
+ "homeAbility": true
+ }
+ ],
+ "mainAbility": "com.huawei.codelab.MainAbility",
+ "distro": {
+ "moduleType": "entry",
+ "installationFree": true,
+ "deliveryWithInstall": true,
+ "moduleName": "entry"
+ },
+ "package": "com.huawei.codelab",
+ "name": ".MyApplication",
+ "js": [
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": true
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/R.txt" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/R.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..373f3c3f65c9f17065ddc0348a0ae2d570609b8b
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/R.txt"
@@ -0,0 +1,3 @@
+media icon 0x1000002
+string entry_MainAbility 0x1000000
+string mainability_description 0x1000001
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..c1efda4e95e3d9a5b6f4194e8b3c77900bfd35b8
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/config.json"
@@ -0,0 +1,70 @@
+{
+ "app": {
+ "apiVersion": {
+ "compatible": 6,
+ "releaseType": "Release",
+ "target": 6
+ },
+ "vendor": "huawei",
+ "bundleName": "com.huawei.codelab",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ }
+ },
+ "deviceConfig": {
+ "default": {
+ "debug": true
+ }
+ },
+ "module": {
+ "abilities": [
+ {
+ "iconId": 16777218,
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "descriptionId": 16777217,
+ "labelId": 16777216,
+ "icon": "$media:icon",
+ "name": "com.huawei.codelab.MainAbility",
+ "description": "$string:mainability_description",
+ "label": "$string:entry_MainAbility",
+ "type": "page",
+ "homeAbility": true,
+ "launchType": "standard"
+ }
+ ],
+ "deviceType": [
+ "phone"
+ ],
+ "mainAbility": "com.huawei.codelab.MainAbility",
+ "distro": {
+ "moduleType": "entry",
+ "installationFree": true,
+ "deliveryWithInstall": true,
+ "moduleName": "entry"
+ },
+ "package": "com.huawei.codelab",
+ "name": ".MyApplication",
+ "js": [
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": true
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources.index" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources.index"
new file mode 100644
index 0000000000000000000000000000000000000000..2ada6f40f66f9cd5817550392e3b463a1f329e8e
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources.index" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/attributes.key" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/attributes.key"
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/attributes.key" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/constants.key" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/constants.key"
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/constants.key" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/contents.key" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/contents.key"
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/contents.key" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..8966a1e3de00956d251d5c1497aa251ea7b5c49f
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/nodes.key" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/nodes.key"
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/res/debug/normal/rich/resources/base/media/nodes.key" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classFiles" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classFiles"
new file mode 100644
index 0000000000000000000000000000000000000000..be4df5265113e6dd670080b8e31300239bb7f73d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classFiles"
@@ -0,0 +1,5 @@
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\shell\debug\build\javac\classes\com\huawei\codelab\MainAbilityShellActivity.class
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\shell\debug\build\javac\classes\com\huawei\codelab\R$drawable.class
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\shell\debug\build\javac\classes\com\huawei\codelab\R$string.class
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\shell\debug\build\javac\classes\com\huawei\codelab\R.class
+F:\Dome\git_dome\ETS\codelabs\AnimationDemo\entry\build\intermediates\shell\debug\build\javac\classes\com\huawei\codelab\ShellMyApplication.class
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/MainAbilityShellActivity.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/MainAbilityShellActivity.class"
new file mode 100644
index 0000000000000000000000000000000000000000..ca3d13dc56f3e8e0fd0103abf62c5cab56436e97
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/MainAbilityShellActivity.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R$drawable.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R$drawable.class"
new file mode 100644
index 0000000000000000000000000000000000000000..0092e63e592f1ed474283627e64ddb1fcb5149c1
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R$drawable.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R$string.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R$string.class"
new file mode 100644
index 0000000000000000000000000000000000000000..7d5c721ce1f473f692555cea97cc633fdc9f3b87
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R$string.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R.class"
new file mode 100644
index 0000000000000000000000000000000000000000..4e9256c61660f8c539140ef49af9b555e0668c51
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/R.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/ShellMyApplication.class" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/ShellMyApplication.class"
new file mode 100644
index 0000000000000000000000000000000000000000..0a61dab0c726b5eae52f2ae4d18c1ab6c52886f4
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/javac/classes/com/huawei/codelab/ShellMyApplication.class" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/mergedManifest/normal/AndroidManifest.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/mergedManifest/normal/AndroidManifest.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..2184f416004c45c1c66eec4fe32c982689f86083
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/mergedManifest/normal/AndroidManifest.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry.zip" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry.zip"
new file mode 100644
index 0000000000000000000000000000000000000000..958e3b1dad6bf763b452f725a8ebc122ba571567
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry.zip" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/AndroidManifest.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/AndroidManifest.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..e2b6ac4890598cfc903a25120666878f87c2a189
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/AndroidManifest.xml" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/res/drawable/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/res/drawable/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..d912df1fc7eb485da25b48d0c8d7e59652484b90
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/res/drawable/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/resources.arsc" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/resources.arsc"
new file mode 100644
index 0000000000000000000000000000000000000000..8cfabd2701a9ba1ac0762f0cb2213d879fc22a24
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/cut_entry/resources.arsc" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry.zip" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry.zip"
new file mode 100644
index 0000000000000000000000000000000000000000..9dfad0488f57d5d801295a283899f3fe09cffa56
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry.zip" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/AndroidManifest.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/AndroidManifest.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..db2bbcb80f3e9402f8614f4aa4b1e26492bb8d57
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/AndroidManifest.xml" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/res/drawable/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/res/drawable/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..d912df1fc7eb485da25b48d0c8d7e59652484b90
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/res/drawable/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/resources.arsc" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/resources.arsc"
new file mode 100644
index 0000000000000000000000000000000000000000..8cfabd2701a9ba1ac0762f0cb2213d879fc22a24
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/entry/resources.arsc" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/r/com/huawei/codelab/R.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/r/com/huawei/codelab/R.java"
new file mode 100644
index 0000000000000000000000000000000000000000..913e066e46a667ba1550fba9846d1d55ae4c4bb8
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/r/com/huawei/codelab/R.java"
@@ -0,0 +1,18 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package com.huawei.codelab;
+
+public final class R {
+ public static final class drawable {
+ public static final int icon=0x7f010000;
+ }
+ public static final class string {
+ public static final int entry_MainAbility=0x7f020000;
+ public static final int mainability_description=0x7f020001;
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/res.zip" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/res.zip"
new file mode 100644
index 0000000000000000000000000000000000000000..140abad7bd9e01b3756cdbb46f76036dc8f6f6c2
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/res/normal/res.zip" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/simplifyManifest/normal/AndroidManifest.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/simplifyManifest/normal/AndroidManifest.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..2fec72cae25f5e3c0445c231d392d35718ccfa83
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/simplifyManifest/normal/AndroidManifest.xml"
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/transformClasses/dalvik/classes.dex" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/transformClasses/dalvik/classes.dex"
new file mode 100644
index 0000000000000000000000000000000000000000..dba9993195bd8e4b393dc76012b0d15048372694
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/build/transformClasses/dalvik/classes.dex" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/AndroidManifest.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/AndroidManifest.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..db19b1fa182741622646ecd349f79766c914f6e8
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/AndroidManifest.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/java/com/huawei/codelab/MainAbilityShellActivity.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/java/com/huawei/codelab/MainAbilityShellActivity.java"
new file mode 100644
index 0000000000000000000000000000000000000000..e4ae822db3322e553dc74b281884b9c1debcfe2b
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/java/com/huawei/codelab/MainAbilityShellActivity.java"
@@ -0,0 +1,11 @@
+package com.huawei.codelab;
+
+import android.os.Bundle;
+import ohos.abilityshell.AbilityShellActivity;
+
+public class MainAbilityShellActivity extends AbilityShellActivity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/java/com/huawei/codelab/ShellMyApplication.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/java/com/huawei/codelab/ShellMyApplication.java"
new file mode 100644
index 0000000000000000000000000000000000000000..827810f268fa0eb133ff0ff3038d07c016af4f72
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/java/com/huawei/codelab/ShellMyApplication.java"
@@ -0,0 +1,10 @@
+package com.huawei.codelab;
+
+import ohos.ace.ability.AceApplication;
+
+public class ShellMyApplication extends AceApplication {
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/res/drawable/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/res/drawable/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/res/drawable/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/res/values/strings.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/res/values/strings.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..7435042bfa080c8b0441d4f7186068efe00e8b6a
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell/debug/src/main/res/values/strings.xml"
@@ -0,0 +1,6 @@
+
+
+
+ "entry_MainAbility"
+ "JS_Empty Ability"
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/cut/entry_debug_unsigned_cut_entry.apk" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/cut/entry_debug_unsigned_cut_entry.apk"
new file mode 100644
index 0000000000000000000000000000000000000000..9064314b1137d4f5d86ec0c5f914ff18e57ed688
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/cut/entry_debug_unsigned_cut_entry.apk" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/entry/entry_debug_signed_entry.apk" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/entry/entry_debug_signed_entry.apk"
new file mode 100644
index 0000000000000000000000000000000000000000..6cca703afab70a4b92282cc780cd68c8febc6a45
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/entry/entry_debug_signed_entry.apk" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/entry/entry_debug_unsigned_entry.apk" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/entry/entry_debug_unsigned_entry.apk"
new file mode 100644
index 0000000000000000000000000000000000000000..142c20ca81386781470726f5cf50288e6bfd347c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/shell_output/debug/entry/entry_debug_unsigned_entry.apk" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/transformClasses/debug/dalvik/classes.dex" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/transformClasses/debug/dalvik/classes.dex"
new file mode 100644
index 0000000000000000000000000000000000000000..74f19c944a3ab1aaf08dbc58b5c8185acfd3503b
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/intermediates/transformClasses/debug/dalvik/classes.dex" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/entry-debug-rich-unsigned.hap" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/entry-debug-rich-unsigned.hap"
new file mode 100644
index 0000000000000000000000000000000000000000..47b37584ae8ff3c40f46aaef515dde5d398553b9
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/entry-debug-rich-unsigned.hap" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/hapInfo.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/hapInfo.json"
new file mode 100644
index 0000000000000000000000000000000000000000..ee950bf7d0845e23b89a8617fdb8c8e1f52c8ef2
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/hapInfo.json"
@@ -0,0 +1,6 @@
+[
+ {
+ "hapPath": "entry-debug-rich-unsigned.hap",
+ "device": "phone"
+ }
+]
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/pack.info" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/pack.info"
new file mode 100644
index 0000000000000000000000000000000000000000..4b1fa44ac3a759a506c9f13eabc3877240452d1f
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/outputs/hap/debug/pack.info"
@@ -0,0 +1,47 @@
+{
+ "summary": {
+ "app": {
+ "bundleName": "com.huawei.codelab",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ }
+ },
+ "modules": [
+ {
+ "mainAbility": "com.huawei.codelab.MainAbility",
+ "deviceType": [
+ "phone"
+ ],
+ "abilities": [
+ {
+ "visible": true,
+ "name": "com.huawei.codelab.MainAbility",
+ "label": "$string:entry_MainAbility"
+ }
+ ],
+ "distro": {
+ "moduleType": "entry",
+ "installationFree": true,
+ "deliveryWithInstall": true,
+ "moduleName": "entry"
+ },
+ "apiVersion": {
+ "compatible": 6,
+ "releaseType": "Release",
+ "target": 6
+ }
+ }
+ ]
+ },
+ "packages": [
+ {
+ "deviceType": [
+ "phone"
+ ],
+ "moduleType": "entry",
+ "deliveryWithInstall": true,
+ "name": "entry-debug-rich-unsigned"
+ }
+ ]
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..f968e76e67b5c35fbf7a45a6a5bbb1811d7a10a7
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugRFile/previous-compilation-data.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugRFile/previous-compilation-data.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..70c5fe738672cf614d6b0eb407bb74b2608ca5e6
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugRFile/previous-compilation-data.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugShellJavaWithJavac/previous-compilation-data.bin" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugShellJavaWithJavac/previous-compilation-data.bin"
new file mode 100644
index 0000000000000000000000000000000000000000..ccb3c38cce40ed1923b2195375870580f34f1d48
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/compileDebugShellJavaWithJavac/previous-compilation-data.bin" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/packageDebugRClass/MANIFEST.MF" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/packageDebugRClass/MANIFEST.MF"
new file mode 100644
index 0000000000000000000000000000000000000000..59499bce4a2bd51cba227b7c00fcf745b19c95a4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/build/tmp/packageDebugRClass/MANIFEST.MF"
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/package.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/package.json"
new file mode 100644
index 0000000000000000000000000000000000000000..0967ef424bce6791893e9a57bb952f80fd536e93
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/package.json"
@@ -0,0 +1 @@
+{}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/proguard-rules.pro" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/proguard-rules.pro"
new file mode 100644
index 0000000000000000000000000000000000000000..f7666e47561d514b2a76d5a7dfbb43ede86da92a
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/proguard-rules.pro"
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..dcd3b9daf8d4224dabc681cceb30fc5dd52d8108
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/config.json"
@@ -0,0 +1,57 @@
+{
+ "app": {
+ "bundleName": "com.huawei.codelab",
+ "vendor": "huawei",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.huawei.codelab",
+ "name": ".MyApplication",
+ "mainAbility": "com.huawei.codelab.MainAbility",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry",
+ "installationFree": true
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "name": "com.huawei.codelab.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:entry_MainAbility",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ],
+ "js": [
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": true
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/java/com/huawei/codelab/MainAbility.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/java/com/huawei/codelab/MainAbility.java"
new file mode 100644
index 0000000000000000000000000000000000000000..dc322f31e26af610b5dc38d763fb0499fc5768bd
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/java/com/huawei/codelab/MainAbility.java"
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License,Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.huawei.codelab;
+
+import ohos.aafwk.content.Intent;
+import ohos.ace.ability.AceAbility;
+
+/**
+ * MainAbility
+ *
+ * @since 2021-08-13
+ */
+public class MainAbility extends AceAbility {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/java/com/huawei/codelab/MyApplication.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/java/com/huawei/codelab/MyApplication.java"
new file mode 100644
index 0000000000000000000000000000000000000000..187dc063c4a35a429e2be829805292c21a510910
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/java/com/huawei/codelab/MyApplication.java"
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License,Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.huawei.codelab;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+/**
+ * MyApplication
+ *
+ * @since 2021-08-13
+ */
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/app.js" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/app.js"
new file mode 100644
index 0000000000000000000000000000000000000000..b6ace9fa8c02f05c988f27c74b5552bfc26dac95
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/app.js"
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License,Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+ onCreate() {
+ console.info('AceApplication onCreate');
+ },
+ onDestroy() {
+ console.info('AceApplication onDestroy');
+ }
+};
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/common/images/cat.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/common/images/cat.png"
new file mode 100644
index 0000000000000000000000000000000000000000..0776613aeac149df3b36d0fb2929f80edfd85543
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/common/images/cat.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/i18n/en-US.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/i18n/en-US.json"
new file mode 100644
index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/i18n/en-US.json"
@@ -0,0 +1,6 @@
+{
+ "strings": {
+ "hello": "Hello",
+ "world": "World"
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/i18n/zh-CN.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/i18n/zh-CN.json"
new file mode 100644
index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/i18n/zh-CN.json"
@@ -0,0 +1,6 @@
+{
+ "strings": {
+ "hello": "您好",
+ "world": "世界"
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.css" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.css"
new file mode 100644
index 0000000000000000000000000000000000000000..dae9fda3cceb6223fd3c586851c2aee6c332a898
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.css"
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License,Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.container {
+ width: 100%;
+ background-color: #F8FCF5;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.img {
+ margin-top: 10px;
+ height: 100px;
+ width: 100px;
+ animation-timing-function: ease;
+ animation-duration: 2s;
+ animation-delay: 0s;
+ animation-fill-mode: forwards;
+ animation-iteration-count: infinite;
+}
+
+.text {
+ font-size: 20px;
+}
+
+.img-translate {
+ animation-name: translateAnim;
+}
+
+.img-rotate {
+ animation-name: rotateAnim;
+}
+
+.img-rotateY {
+ animation-name: rotateYAnim;
+}
+
+.img-scale {
+ animation-name: scaleAnim;
+}
+
+.img-mixes {
+ animation-name: mixesAnim;
+}
+
+.img-opacity {
+ animation-name: opacityAnim;
+}
+
+/*从-100px平移到100px*/
+@keyframes translateAnim {
+ from {
+ transform: translate(-100px);
+ }
+
+ to {
+ transform: translate(100px);
+ }
+}
+
+/*从0°旋转到360°*/
+@keyframes rotateAnim {
+ from {
+ transform: rotate(0deg);
+ }
+
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+/*沿Y轴旋转,从0°旋转到360°*/
+@keyframes rotateYAnim {
+ from {
+ transform: rotateY(0deg);
+ }
+
+ to {
+ transform: rotateY(360deg);
+ }
+}
+
+/*从0倍缩放到1.2倍大小*/
+@keyframes scaleAnim {
+ from {
+ transform: scale(0);
+ }
+
+ to {
+ transform: scale(1.2);
+ }
+}
+
+/*不透明度值从0变化到1*/
+@keyframes opacityAnim {
+ from {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1;
+ }
+}
+
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.hml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.hml"
new file mode 100644
index 0000000000000000000000000000000000000000..0cef0f1c9f7af94237fb319af366bafa964465c5
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.hml"
@@ -0,0 +1,25 @@
+
+
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.js" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.js"
new file mode 100644
index 0000000000000000000000000000000000000000..c89a4e391f4a1ea4cd60dce468d20d61ec781ca7
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/js/default/pages/index/index.js"
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License,Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/resources/base/element/string.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/resources/base/element/string.json"
new file mode 100644
index 0000000000000000000000000000000000000000..0bae6bd40f7360d5d818998221b199d3ec0f69c0
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/resources/base/element/string.json"
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "entry_MainAbility",
+ "value": "entry_MainAbility"
+ },
+ {
+ "name": "mainability_description",
+ "value": "JS_Empty Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/resources/base/media/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/resources/base/media/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/entry/src/main/resources/base/media/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/gradle/wrapper/gradle-wrapper.jar" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/gradle/wrapper/gradle-wrapper.jar"
new file mode 100644
index 0000000000000000000000000000000000000000..490fda8577df6c95960ba7077c43220e5bb2c0d9
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/gradle/wrapper/gradle-wrapper.jar" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/gradle/wrapper/gradle-wrapper.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/gradle/wrapper/gradle-wrapper.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..f59159e865d4b59feb1b8c44b001f62fc5d58df4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/gradle/wrapper/gradle-wrapper.properties"
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/local.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/local.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..5d3e545b2e443bf2372a3ac7f35de5644a43f2d5
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/local.properties"
@@ -0,0 +1,12 @@
+## This file is automatically generated by DevEco Studio.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+#
+# Location of the SDK. This is only used by Gradle.
+# For customization when using a Version Control System, please read the
+# header note.
+#Tue Sep 27 17:50:53 CST 2022
+nodejs.dir=F\:\\HarmonyOS\\DevEco Studio 3.0.0.800\\tools\\nodejs
+hwsdk.dir=F\:\\HarmonyOS\\HarmonyOs SDK
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/settings.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/settings.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..4773db73233a570c2d0c01a22e75321acfbf7a07
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/Animation/settings.gradle"
@@ -0,0 +1 @@
+include ':entry'
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..c5986840b05025a898d4ea39abbc0fbf237b6270
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.gitignore"
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+upload.gradle
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..26d33521af10bcc7fd8cea344038eaaeb78d0ef5
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/.gitignore"
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/compiler.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/compiler.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..fb7f4a8a465d42b4a0390d464b83b99e8465bba7
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/compiler.xml"
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/gradle.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/gradle.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..758b11ade7646f48142015e6309f37e36d25e1c6
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/gradle.xml"
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/jarRepositories.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/jarRepositories.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..1dfcd020d2b2774ad414ac5c0acc344e9b9479b4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/jarRepositories.xml"
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/misc.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/misc.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..58918f50335428f2efb3af4d621f9f405ed659d4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/misc.xml"
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/vcs.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/vcs.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/.idea/vcs.xml"
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/README.OPENSOURCE" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/README.OPENSOURCE"
new file mode 100644
index 0000000000000000000000000000000000000000..4b18f570a1293b84fdb240506837ae604d50ab2c
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/README.OPENSOURCE"
@@ -0,0 +1,10 @@
+[
+ {
+ "Name": " BadgeView ",
+ "License": "BadgeView is available under the MIT license",
+ "License File": "README",
+ "Version Number": "1.1.1",
+ "Upstream URL": "https://github.com/AlexLiuSheng/BadgeView/archive/master.zip",
+ "Description": "BadgeView is a message Reminder View"
+ }
+]
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/README.md" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/README.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d5ebd98a24ca872083c228d7d087eb895afa11ab
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/README.md"
@@ -0,0 +1,78 @@
+# BadgeView
+
+BadgeView是个消息提醒小红点,可以修改红点样式
+
+## 演示
+|设置滑动背景颜色 |
+|:---:|
+||
+
+## 主要特征
+ * 支持修改提醒中数字是否显示
+ * 支持修改提醒红点的样式
+ * 支持修改提醒的颜色,大小
+
+## entry运行要求
+ 通过DevEco studio,并下载openHarmonySDK
+ 将项目中的build.gradle文件中dependencies→classpath版本改为对应的版本(即你的IDE新建项目中所用的版本)
+
+ ## 集成
+
+ ```
+方式一:
+通过library生成har包,添加har包到libs文件夹内
+在entry的gradle内添加如下代码
+implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+
+方式二:
+allprojects{
+ repositories{
+ mavenCentral()
+ }
+}
+implementation 'io.openharmony.tpc.thirdlib:badgeview:1.0.3'
+ ```
+
+BadgeView使用说明:
+* 简单使用
+```
+BadgeFactory.createDot(this).setBadgeCount(20).bind(imageView);
+BadgeFactory.createCircle(this).setBadgeCount(20).bind(imageView);
+BadgeFactory.createRectangle(this).setBadgeCount(20).bind(imageView);
+BadgeFactory.createOval(this).setBadgeCount(20).bind(imageView);
+BadgeFactory.createSquare(this).setBadgeCount(20).bind(imageView);
+BadgeFactory.createRoundRect(this).setBadgeCount(20).bind(imageView);
+```
+* 扩展使用
+```
+BadgeFactory.create(this)
+.setTextColor(Color.White)
+.setWidthAndHeight(25,25)
+.setBadgeBackground(Color.Red)
+.setTextSize(10)
+.setBadgeGravity(Gravity.Right|Gravity.Top)
+.setBadgeCount(20)
+.setShape(BadgeView.SHAPE_CIRCLE)
+.setSpace(10,10)
+.bind(view);
+```
+
+## License
+```
+ Copyright 2016 AllenLiu.
+
+ Licensed to the Apache Software Foundation (ASF) under one or more contributor
+ license agreements. See the NOTICE file distributed with this work for
+ additional information regarding copyright ownership. The ASF licenses this
+ file to you under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License. You may obtain a copy of
+ the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ License for the specific language governing permissions and limitations under
+ the License.
+```
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..dd704258e69d0eb519a25f67353834c3f98524a3
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/build.gradle"
@@ -0,0 +1,48 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
+
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+}
+
+buildscript {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.huawei.ohos:hap:3.0.5.2'
+ classpath 'com.huawei.ohos:decctest:1.2.7.2'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+
+ jcenter()
+ }
+}
+rootProject.ext {
+ DEFAULT_GROUP_ID = "io.openharmony.tpc.thirdlib"
+ DEFAULT_ARTIFACT_ID = "BadgeView"
+ DEFAULT_VERSION = "1.0.3"
+ DEFAULT_GITEE_URL = "https://gitee.com/openharmony-tpc/" + rootProject.ext.DEFAULT_ARTIFACT_ID
+ HPM_NAME = "@opensource/" + rootProject.ext.DEFAULT_ARTIFACT_ID
+ HPM_DESCRIPTION = "a badgeview base on ohos"
+ HPM_TAG = "UI"
+ HPM_KEYWORDS = 'badgeview'
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/changelog.md" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/changelog.md"
new file mode 100644
index 0000000000000000000000000000000000000000..47cfa40aedb53deb268479541483aa8a708a851e
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/changelog.md"
@@ -0,0 +1,4 @@
+# 版本修改
+* 版本1.0.2修改
+
+实现了原三方库中的在视图上添加各种样式的圆点的功能
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..796b96d1c402326528b4ba3c12ee9d92d0e212e9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/.gitignore"
@@ -0,0 +1 @@
+/build
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..4e0987672ac0a0cddb2a483aab301f024115c610
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/build.gradle"
@@ -0,0 +1,18 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+ implementation project(':library')
+ testCompile'junit:junit:4.12'
+ ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100'
+}
+decc {
+ supportType = ['html','xml']
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..d3e2d48445e38047bfbefed9168f846cbe6407d8
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/config.json"
@@ -0,0 +1,48 @@
+{
+ "app": {
+ "bundleName": "com.allenliu.app",
+ "vendor": "allenliu",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 5,
+ "target": 5
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.allenliu.app",
+ "name": ".BadgeViewApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.allenliu.app.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$ohos:string:id_text_font_family_medium",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/BadgeViewApplication.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/BadgeViewApplication.java"
new file mode 100644
index 0000000000000000000000000000000000000000..109bd2479a4b3268a09eaa92bdca66598a1623a0
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/BadgeViewApplication.java"
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.allenliu.app;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+/**
+ * 程序入口application
+ */
+public class BadgeViewApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/MainAbility.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/MainAbility.java"
new file mode 100644
index 0000000000000000000000000000000000000000..29610b01be2f3d9372b03b3808907269dc389edf
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/MainAbility.java"
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.allenliu.app;
+
+import com.allenliu.app.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+/**
+ * 程序入口ability
+ */
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/slice/MainAbilitySlice.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/slice/MainAbilitySlice.java"
new file mode 100644
index 0000000000000000000000000000000000000000..cbcc3a357b423cce2034c8802d052179b3f0f851
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/java/com/allenliu/app/slice/MainAbilitySlice.java"
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.allenliu.app.slice;
+
+import com.allenliu.app.ResourceTable;
+import com.allenliu.badgeview.BadgeFactory;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Image;
+import ohos.agp.utils.Color;
+
+/**
+ * 程序入口展示页面
+ */
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ Image image1 = (Image) findComponentById(ResourceTable.Id_iv1);
+ Image image2 = (Image) findComponentById(ResourceTable.Id_iv2);
+ Image image3 = (Image) findComponentById(ResourceTable.Id_iv3);
+ Image image4 = (Image) findComponentById(ResourceTable.Id_iv4);
+ Image image5 = (Image) findComponentById(ResourceTable.Id_iv5);
+ Image image6 = (Image) findComponentById(ResourceTable.Id_iv6);
+ BadgeFactory.createDot(this).setBadgeCount(20).bind(image1);
+ BadgeFactory.createCircle(this).setBadgeCount(20).bind(image2);
+ BadgeFactory.createRectangle(this).setBadgeCount(20).bind(image3);
+ BadgeFactory.createOval(this).setBadgeCount(20).bind(image4);
+ BadgeFactory.createSquare(this).setBadgeCount(20).bind(image5);
+ BadgeFactory.create(this).setTextColor(Color.RED.getValue()).setTextSize(10).setWidthAndHeight(20,20).setBadgeCount(20).setBadgeBackground(Color.GREEN.getValue()).bind(image6);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/element/string.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/element/string.json"
new file mode 100644
index 0000000000000000000000000000000000000000..9eb1acfea90d271a6a2dde6f5c60f874fb40f788
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/element/string.json"
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "SwipRxjava"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/graphic/background_ability_main.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/graphic/background_ability_main.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..23806b21f51837924cd70e02f7c4a49f68ccd012
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/graphic/background_ability_main.xml"
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/layout/ability_main.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/layout/ability_main.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..a9c90a3b4724b6441f5a52e5fcf786bbc6006820
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/layout/ability_main.xml"
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/media/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/media/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/main/resources/base/media/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/ohosTest/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/ohosTest/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..c992f28af14133ce86d1c55a1acdddb8d2eb825b
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/ohosTest/config.json"
@@ -0,0 +1,40 @@
+{
+ "app": {
+ "bundleName": "com.allenliu.app",
+ "vendor": "allenliu",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 4,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.allenliu.app",
+ "name": "testModule",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry_test",
+ "moduleType": "feature"
+ },
+ "abilities": [
+ {
+ "name": "decc.testkit.runner.EntryAbility",
+ "description": "Test Entry Ability",
+ "icon": "$media:icon",
+ "label": "TestAbility",
+ "launchType": "standard",
+ "orientation": "landscape",
+ "visible": true,
+ "type": "page"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/ohosTest/java/com/allenliu/app/ExampleOhosTest.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/ohosTest/java/com/allenliu/app/ExampleOhosTest.java"
new file mode 100644
index 0000000000000000000000000000000000000000..5ad5253da0ba091d2b710d3f5102466fdf6cdecc
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/ohosTest/java/com/allenliu/app/ExampleOhosTest.java"
@@ -0,0 +1,14 @@
+package com.allenliu.app;
+
+import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ExampleOhosTest {
+ @Test
+ public void testBundleName() {
+ final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName();
+ assertEquals("com.allenliu.app", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/test/java/com/allenliu/app/ExampleTest.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/test/java/com/allenliu/app/ExampleTest.java"
new file mode 100644
index 0000000000000000000000000000000000000000..2ad3f8ea38c8964b9c2f7694af8002b1c6e07234
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/entry/src/test/java/com/allenliu/app/ExampleTest.java"
@@ -0,0 +1,9 @@
+package com.allenliu.app;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..0daf1830fbdef07e50a44d74210c8c82f1b66278
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle.properties"
@@ -0,0 +1,10 @@
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle/wrapper/gradle-wrapper.jar" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle/wrapper/gradle-wrapper.jar"
new file mode 100644
index 0000000000000000000000000000000000000000..490fda8577df6c95960ba7077c43220e5bb2c0d9
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle/wrapper/gradle-wrapper.jar" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle/wrapper/gradle-wrapper.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle/wrapper/gradle-wrapper.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..6623300bebd011bc5f7991f4f9c389e2f67b14ac
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradle/wrapper/gradle-wrapper.properties"
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradlew" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradlew"
new file mode 100644
index 0000000000000000000000000000000000000000..2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradlew"
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradlew.bat" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradlew.bat"
new file mode 100644
index 0000000000000000000000000000000000000000..62bd9b9ccefea2b65ae41e5d9a545e2021b90a1d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/gradlew.bat"
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..796b96d1c402326528b4ba3c12ee9d92d0e212e9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/.gitignore"
@@ -0,0 +1 @@
+/build
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..bac4a1b7f950c43435cae5ac9c338e437413f392
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/build.gradle"
@@ -0,0 +1,13 @@
+apply plugin: 'com.huawei.ohos.library'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ testCompile'junit:junit:4.12'
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..26e2a81a013378db66cadd8d0c42348dc3c5d392
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/config.json"
@@ -0,0 +1,27 @@
+{
+ "app": {
+ "bundleName": "com.allenliu.app",
+ "vendor": "allenliu",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 5,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.allenliu.badgeview",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "library",
+ "moduleType": "har"
+ }
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/java/com/allenliu/badgeview/BadgeFactory.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/java/com/allenliu/badgeview/BadgeFactory.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c7b52aebe5920bf9de7feb57e915f0763ca27a3a
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/java/com/allenliu/badgeview/BadgeFactory.java"
@@ -0,0 +1,33 @@
+package com.allenliu.badgeview;
+
+
+import ohos.agp.utils.LayoutAlignment;
+import ohos.app.Context;
+
+/**
+ * Created by Allen Liu on 2016/7/15.
+ */
+public class BadgeFactory {
+ public static BadgeView createDot(Context context){
+ return new BadgeView(context).setWidthAndHeight(10,10).setTextSize(0).setBadgeGravity(LayoutAlignment.RIGHT| LayoutAlignment.TOP).setShape(BadgeView.SHAPE_CIRCLE);
+ }
+ public static BadgeView createCircle(Context context){
+ return new BadgeView(context).setWidthAndHeight(20,20).setTextSize(12).setBadgeGravity(LayoutAlignment.RIGHT| LayoutAlignment.TOP).setShape(BadgeView.SHAPE_CIRCLE);
+ }
+ public static BadgeView createRectangle(Context context){
+ return new BadgeView(context).setWidthAndHeight(25,20).setTextSize(12).setBadgeGravity(LayoutAlignment.RIGHT| LayoutAlignment.TOP).setShape(BadgeView.SHAPE_RECTANGLE);
+ }
+ public static BadgeView createOval(Context context){
+ return new BadgeView(context).setWidthAndHeight(25,20).setTextSize(12).setBadgeGravity(LayoutAlignment.RIGHT| LayoutAlignment.TOP).setShape(BadgeView.SHAPE_OVAL);
+ }
+ public static BadgeView createSquare(Context context){
+ return new BadgeView(context).setWidthAndHeight(20,20).setTextSize(12).setBadgeGravity(LayoutAlignment.RIGHT| LayoutAlignment.TOP).setShape(BadgeView.SHAPE_SQUARE);
+ }
+ public static BadgeView createRoundRect(Context context){
+ return new BadgeView(context).setWidthAndHeight(25,20).setTextSize(12).setBadgeGravity(LayoutAlignment.RIGHT| LayoutAlignment.TOP).setShape(BadgeView.SHAPTE_ROUND_RECTANGLE);
+ }
+ public static BadgeView create(Context context){
+ return new BadgeView(context);
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/java/com/allenliu/badgeview/BadgeView.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/java/com/allenliu/badgeview/BadgeView.java"
new file mode 100644
index 0000000000000000000000000000000000000000..20032f7d184eb46e12c7b04e9f8689b0cfc09ce1
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/java/com/allenliu/badgeview/BadgeView.java"
@@ -0,0 +1,330 @@
+package com.allenliu.badgeview;
+
+
+import ohos.agp.components.AttrSet;
+import ohos.agp.components.Component;
+import ohos.agp.components.ComponentContainer;
+import ohos.agp.components.StackLayout;
+import ohos.agp.render.Canvas;
+import ohos.agp.render.Paint;
+import ohos.agp.utils.Color;
+import ohos.agp.utils.LayoutAlignment;
+import ohos.agp.utils.RectFloat;
+import ohos.agp.utils.TextAlignment;
+import ohos.agp.window.service.Display;
+import ohos.agp.window.service.DisplayManager;
+import ohos.app.Context;
+
+import java.util.Optional;
+
+
+public class BadgeView extends Component implements Component.DrawTask {
+
+ public static final int SHAPE_CIRCLE = 1;
+ public static final int SHAPE_RECTANGLE = 2;
+ public static final int SHAPE_OVAL = 3;
+ public static final int SHAPTE_ROUND_RECTANGLE = 4;
+ public static final int SHAPE_SQUARE = 5;
+ private Paint numberPaint;
+ private Paint backgroundPaint;
+ private int currentShape = SHAPE_CIRCLE;
+ private int defaultTextColor = Color.WHITE.getValue();
+ private int defaultTextSize;
+ private int defaultBackgroundColor = Color.RED.getValue();
+ private String showText = "";
+ private int badgeGravity = LayoutAlignment.RIGHT | LayoutAlignment.TOP;
+ private int leftMargin = 0;
+ private int topMargin = 0;
+ private int bottomMargin = 0;
+ private int rightMargin = 0;
+ private boolean hasBind=false;
+ private int horiontalSpace=0;
+ private int verticalSpace=0;
+ public BadgeView(Context context) {
+ super(context);
+ init(context);
+ }
+ public BadgeView(Context context, AttrSet attrs) {
+ super(context, attrs);
+ init(context);
+ }
+ public BadgeView(Context context, AttrSet attrs, String defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init(context);
+ }
+ private void init(Context context) {
+ defaultTextSize = dip2px(context, 1);
+ numberPaint = new Paint();
+ numberPaint.setAntiAlias(true);
+ numberPaint.setColor(new Color(defaultTextColor));
+ numberPaint.setStyle(Paint.Style.FILL_STYLE);
+ numberPaint.setTextSize(defaultTextSize);
+ numberPaint.setTextAlign(TextAlignment.CENTER);
+ backgroundPaint = new Paint();
+ backgroundPaint.setAntiAlias(true);
+ backgroundPaint.setColor(new Color(defaultBackgroundColor));
+ backgroundPaint.setStyle(Paint.Style.FILL_STYLE);
+ StackLayout.LayoutConfig params = new StackLayout.LayoutConfig(StackLayout.LayoutConfig.MATCH_CONTENT, StackLayout.LayoutConfig.MATCH_CONTENT);
+ params.alignment = badgeGravity;
+ setLayoutConfig(params);
+ addDrawTask(this);
+ }
+
+ @Override
+ public void onDraw(Component component, Canvas canvas) {
+ RectFloat rectF = new RectFloat(0, 0, getWidth(), getHeight());
+ Paint.FontMetrics fontMetrics = numberPaint.getFontMetrics();
+ float textH = fontMetrics.descent - fontMetrics.ascent;
+ switch (currentShape) {
+ case SHAPE_CIRCLE:
+ canvas.drawCircle(getWidth() / 2f, getHeight() / 2f, getWidth() / 2, backgroundPaint);
+ canvas.drawText(numberPaint,showText, getWidth() / 2f, getHeight() / 2f + (textH / 2f - fontMetrics.descent));
+ break;
+ case SHAPE_OVAL:
+
+ canvas.drawOval(rectF, backgroundPaint);
+ canvas.drawText( numberPaint,showText, getWidth() / 2f, getHeight() / 2f + (textH / 2f - fontMetrics.descent));
+ break;
+ case SHAPE_RECTANGLE:
+ canvas.drawRect(rectF, backgroundPaint);
+ canvas.drawText(numberPaint,showText, getWidth() / 2f, getHeight() / 2f + (textH / 2f - fontMetrics.descent));
+ break;
+ case SHAPE_SQUARE:
+ int sideLength = Math.min(getHeight(), getWidth());
+ RectFloat squareF = new RectFloat(0, 0, sideLength, sideLength);
+ canvas.drawRect(squareF, backgroundPaint);
+ canvas.drawText(numberPaint,showText, sideLength / 2f, sideLength / 2f + (textH / 2f - fontMetrics.descent));
+ break;
+ case SHAPTE_ROUND_RECTANGLE:
+ canvas.drawRoundRect(rectF, dip2px(getContext(), 5), dip2px(getContext(), 5), backgroundPaint);
+ canvas.drawText(numberPaint,showText, getWidth() / 2f, getHeight() / 2f + (textH / 2f - fontMetrics.descent));
+ break;
+ }
+
+ }
+
+
+
+
+ private int dip2px(Context context, int dip) {
+ Optional defaultDisplay = DisplayManager.getInstance().getDefaultDisplay(getContext());
+ if(defaultDisplay.isPresent()){
+ Display display = defaultDisplay.get();
+ return (int)(display.getAttributes().scalDensity*dip+0.5f);
+ }
+ return 0;
+ }
+
+ /** 将sp转换成px
+ *
+ * @param context 上下文
+ * @param spValue 需要修改的值
+ * @return 修改后的值
+ */
+ private int sp2px(Context context, float spValue) {
+ Optional defaultDisplay = DisplayManager.getInstance().getDefaultDisplay(getContext());
+ if(defaultDisplay.isPresent()){
+ Display display = defaultDisplay.get();
+ return (int)(display.getAttributes().scalDensity*spValue+0.5f);
+ }
+ return 0;
+ }
+
+ public BadgeView setShape(int shape) {
+ currentShape = shape;
+ invalidate();
+ return this;
+ }
+
+ /**
+ * 设置badgeview宽和高
+ * @param w dip
+ * @param h dip this unit is dip
+ * @return BadgeView对象
+ */
+ public BadgeView setWidthAndHeight(int w, int h) {
+ StackLayout.LayoutConfig params = (StackLayout.LayoutConfig) getLayoutConfig();
+ params.width = dip2px(getContext(), w);
+ params.height = dip2px(getContext(), h);
+ setLayoutConfig(params);
+ return this;
+ }
+
+
+
+ /**
+ * set bindview margin that you can change badges positon
+ *
+ * @param left the unit is dip
+ * @param top
+ * @param right
+ * @param bottom
+ * @return BadgeView对象
+ *
+ */
+ @Deprecated
+ public BadgeView setMargin(int left, int top, int right, int bottom) {
+ leftMargin = dip2px(getContext(), left);
+ bottomMargin = dip2px(getContext(), bottom);
+ topMargin = dip2px(getContext(), top);
+ rightMargin = dip2px(getContext(), right);
+ invalidate();
+ return this;
+ }
+
+ /**
+ *设置badgeview内容间距
+ *
+ * @param horitontal horitontal space unit dp
+ * @param vertical vertical space unnit dp
+ * @return BadgeView对象
+ */
+ public BadgeView setSpace(int horitontal, int vertical){
+ horiontalSpace=dip2px(getContext(), horitontal);
+ verticalSpace=dip2px(getContext(), vertical);
+ invalidate();
+ return this;
+ }
+ /**
+ * 设置badgeview内字体大小
+ * @param sp the unit is sp
+ * @return BadgeView对象
+ */
+ public BadgeView setTextSize(int sp) {
+ defaultTextSize = sp2px(getContext(), sp);
+ numberPaint.setTextSize(sp2px(getContext(), sp));
+ invalidate();
+ return this;
+ }
+
+ /**
+ * 设置badgeview颜色值
+ *
+ * @param color 颜色值
+ * @return badgeview对象
+ */
+ public BadgeView setTextColor(int color) {
+ defaultTextColor = color;
+ numberPaint.setColor(new Color(color));
+ invalidate();
+ return this;
+ }
+
+ /**
+ * 设置背景颜色值
+ *
+ * @param color 背景颜色
+ * @return badgeview对象
+ */
+ public BadgeView setBadgeBackground(int color) {
+ defaultBackgroundColor = color;
+ backgroundPaint.setColor(new Color(color));
+ invalidate();
+ return this;
+ }
+
+ public BadgeView setBadgeCount(int count) {
+ showText = String.valueOf(count);
+ invalidate();
+ return this;
+ }
+
+ public BadgeView setBadgeCount(String count) {
+ showText = count;
+ invalidate();
+ return this;
+ }
+ /**
+ * set gravity must be before @link bind() method
+ *
+ * @param gravity
+ * @return BadgeView对象
+ */
+ public BadgeView setBadgeGravity(int gravity) {
+ badgeGravity = gravity;
+ StackLayout.LayoutConfig params = (StackLayout.LayoutConfig) getLayoutConfig();
+ params.alignment = gravity;
+ setLayoutConfig(params);
+ return this;
+ }
+
+ public BadgeView bind(Component view) {
+ if (getComponentParent() != null){
+ ((ComponentContainer) getComponentParent()).removeComponent(this);
+ }
+ if (view == null){
+ return this;
+ }
+ if ((view.getComponentParent() instanceof StackLayout)&&hasBind==true)
+ {
+ ((StackLayout) view.getComponentParent()).addComponent(this);
+ return this;
+ } else if (view.getComponentParent() instanceof ComponentContainer) {
+ ComponentContainer parentContainer = (ComponentContainer) view.getComponentParent();
+ int viewIndex = ((ComponentContainer) view.getComponentParent()).getChildIndex(view);
+ ((ComponentContainer) view.getComponentParent()).removeComponent(view);
+ StackLayout container = new StackLayout(getContext());
+ ComponentContainer.LayoutConfig containerParams = view.getLayoutConfig();
+ int origionHeight=containerParams.height;
+ int origionWidth=containerParams.width;
+ StackLayout.LayoutConfig viewLayoutParams =new StackLayout.LayoutConfig( origionWidth, origionHeight);
+ if(origionHeight==ComponentContainer.LayoutConfig.MATCH_CONTENT){
+ containerParams.height = ComponentContainer.LayoutConfig.MATCH_CONTENT;
+ viewLayoutParams.setMarginTop(topMargin);
+ viewLayoutParams.setMarginBottom(bottomMargin);
+ }else{
+ containerParams.height =origionHeight+topMargin+bottomMargin+verticalSpace;
+ }
+ if(origionWidth==ComponentContainer.LayoutConfig.MATCH_CONTENT){
+ containerParams.width = ComponentContainer.LayoutConfig.MATCH_CONTENT;
+ viewLayoutParams.setMarginLeft(leftMargin);
+ viewLayoutParams.setMarginRight(rightMargin);
+ }else{
+ containerParams.width=origionWidth+rightMargin+horiontalSpace+leftMargin;
+ }
+ container.setLayoutConfig(containerParams);
+
+ //setGravity
+ StackLayout.LayoutConfig params = (StackLayout.LayoutConfig) getLayoutConfig();
+ if(params.alignment==(LayoutAlignment.RIGHT|LayoutAlignment.TOP)||params.alignment==LayoutAlignment.RIGHT||params.alignment==LayoutAlignment.TOP){
+ view.setPadding(0,verticalSpace,horiontalSpace,0);
+ viewLayoutParams.alignment=LayoutAlignment.LEFT|LayoutAlignment.BOTTOM;
+ }else if(params.alignment==(LayoutAlignment.LEFT|LayoutAlignment.TOP)||params.alignment==LayoutAlignment.LEFT||params.alignment==LayoutAlignment.TOP){
+ view.setPadding(horiontalSpace,verticalSpace,0,0);
+ viewLayoutParams.alignment=LayoutAlignment.RIGHT|LayoutAlignment.BOTTOM;
+ }else if(params.alignment==(LayoutAlignment.LEFT|LayoutAlignment.BOTTOM)){
+ view.setPadding(horiontalSpace,0,0,verticalSpace);
+ viewLayoutParams.alignment=LayoutAlignment.RIGHT|LayoutAlignment.TOP;
+ }else if(params.alignment==(LayoutAlignment.RIGHT|LayoutAlignment.BOTTOM)){
+ view.setPadding(0,0,horiontalSpace,verticalSpace);
+ viewLayoutParams.alignment=LayoutAlignment.LEFT|LayoutAlignment.TOP;
+ }else{
+ view.setPadding(0,verticalSpace,horiontalSpace,0);
+ viewLayoutParams.alignment=LayoutAlignment.LEFT|LayoutAlignment.BOTTOM;
+ }
+
+ view.setLayoutConfig(viewLayoutParams);
+ container.setId(view.getId());
+ container.addComponent(view);
+ container.addComponent(this);
+ parentContainer.addComponent(container, viewIndex);
+ hasBind=true;
+ } else if (view.getComponentParent() == null) {
+ return this;
+ }
+ return this;
+ }
+
+ public boolean unbind() {
+ if (getComponentParent() != null) {
+ ((ComponentContainer) getComponentParent()).removeComponent(this);
+ return true;
+ }
+ return false;
+ }
+
+ public String getBadgeCount() {
+ return showText;
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/resources/base/element/string.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/resources/base/element/string.json"
new file mode 100644
index 0000000000000000000000000000000000000000..6c298286373e6266fd910aac81429792f08df437
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/library/src/main/resources/base/element/string.json"
@@ -0,0 +1,8 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "Library"
+ }
+ ]
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/screenshot/badgeviewshow.jpg" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/screenshot/badgeviewshow.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..d0e951a88d87a329fe88a012ef8570182d5a26de
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/screenshot/badgeviewshow.jpg" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/settings.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/settings.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..d0c7ee8440156d4a9324ac5357770747425fef57
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/BadgeView/settings.gradle"
@@ -0,0 +1 @@
+include ':entry', ':library'
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..44d914d1a41227b5cd6dc5e527d3e1871662f97f
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/.gitignore"
@@ -0,0 +1,10 @@
+*.iml
+.gradle
+/local.properties
+.idea
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+upload1.gradle
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/LICENSE" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/LICENSE"
new file mode 100644
index 0000000000000000000000000000000000000000..608e2348bab516701f092036a7c72d1377bc02dd
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/LICENSE"
@@ -0,0 +1,5 @@
+Copyright (C) 2015 Stuart Campbell Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/README.OPENSOURCE" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/README.OPENSOURCE"
new file mode 100644
index 0000000000000000000000000000000000000000..1a77a01d56e65b6432bfcff3bd82afa412aaa984
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/README.OPENSOURCE"
@@ -0,0 +1,11 @@
+[
+ {
+ "Name": "RushOrm",
+ "License": " Licence Apache License, Version 2.0 ",
+ "License File": " LICENSE.md ",
+ "Version Number": " 1.3.0 ",
+ "Upstream URL": " https://github.com/Stuart-campbell/RushOrm/archive/v1.3.0.tar.gz",
+ "Description": " RushOrm replaces the need for SQL by mapping java classes to SQL tables. "
+ }
+]
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/README.md" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/README.md"
new file mode 100644
index 0000000000000000000000000000000000000000..12d71eae31a918fe6fea115fc573917111ce12a4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/README.md"
@@ -0,0 +1,162 @@
+# RushOrm
+RushOrm replaces the need for SQL by mapping java classes to SQL tables.
+
+### 概述
+
+### What projects is it right for?
+
+
Projects with complex data structures
+
Projects that want to implement database storage in the minimum amount of time
+
Projects that talk to a rest api
+
+
+
+### Why was RushOrm written?
+
+
Complex relationships - RushObjects support Lists of other RushObjects
+
SQL free migration
+
Easily extendable
+
No dependencies
+
Support asynchronous call
+
Be fast through compound inserts and selects
+
Support importing and exporting data to and from JSON
+
Unique ids to support merging databases
+
Supports conflict resolution when importing data
+
+While there are a number of other ORMs, the areas many seem to fall short is the support of 'one to many' relationships, migration and extensions. While claiming all the same basic feature of most other ORMs RushOrm supports 'List' properties without having to add the parent object to it's children. It also handles migrating the class structure without any SQL scripts being required by the developer. Finally it is designed with the understanding that not every situation can be anticipated so instead it can be easily customized.
+
+
+### 演示效果
+
+
+### 集成
+
+```javascript
+方式一:
+通过library生成har包,添加har包到libs文件夹内
+在entry的gradle内添加如下代码
+implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+
+方式二:
+allprojects{
+ repositories{
+ mavenCentral()
+ }
+}
+implementation 'io.openharmony.tpc.thirdlib:RushOrm_rushohos:1.0.6'
+```
+
+## entry运行要求
+ 通过DevEco studio,并下载SDK
+ 将项目中的build.gradle文件中dependencies→classpath版本改为对应的版本(即你的IDE新建项目中所用的版本)
+
+
+
+### 示例
+
+```java
+1.
+
+public class Car extends RushObject {
+
+ public String color;
+ public Engine engine;
+
+ public String anotherField;
+
+ @RushList(classType = Wheel.class)
+ public List wheels;
+
+ public Car(){
+ /* Empty constructor required */
+ }
+
+ public Car(String color, Engine engine){
+ this.color = color;
+ this.engine = engine;
+ }
+}
+
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ List> classes = new ArrayList<>();
+ classes.add(Car.class);
+ classes.add(Engine.class);
+ classes.add(Wheel.class);
+ OhosInitializeConfig ohosInitializeConfig = new OhosInitializeConfig(getApplicationContext(), classes);
+ RushOhos.initialize(ohosInitializeConfig);
+ }
+}
+
+
+
+2.
+ Button btnSave = (Button) findComponentById(ResourceTable.Id_btn_save);
+ Button btnSelect = (Button) findComponentById(ResourceTable.Id_btn_select);
+ Button btnDel = (Button) findComponentById(ResourceTable.Id_btn_del);
+ Text tvShow = (Text) findComponentById(ResourceTable.Id_text_show);
+ //保存
+ btnSave.setClickedListener(component -> {
+ final long startTime = System.currentTimeMillis();
+ final int numberToSave = 100;
+ List cars = new ArrayList<>(numberToSave);
+ for (int i = 0; i < numberToSave; i++) {
+ Car car = new Car("Red", new Engine());
+ car.wheels = new ArrayList<>();
+ for (int j = 0; j < 4; j++) {
+ car.wheels.add(new Wheel("Michelin"));
+ }
+ cars.add(car);
+ }
+
+ RushCore.getInstance().save(cars, () -> {
+ long endTime = System.currentTimeMillis();
+ final double saveTime = (endTime - startTime) / 1000.0;
+ getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
+ @Override
+ public void run() {
+ tvShow.setText("保存成功!总耗时:"+String.format("%1$,.2f s", saveTime));
+ }
+ });
+ });
+ });
+ //查询
+ btnSelect.setClickedListener(component -> {
+ new Thread(() -> {
+ List cars = new RushSearch().find(Car.class);
+ getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
+ @Override
+ public void run() {
+ LogUtil.error("test", "Rush main select complete====");
+ tvShow.setText("查询成功:"+JSON.toJSONString(cars));
+ }
+ });
+ }).start();
+ });
+ //删除
+ btnDel.setClickedListener(component -> new Thread(() -> {
+ RushCore.getInstance().deleteAll(Car.class);
+ RushCore.getInstance().deleteAll(Engine.class);
+ RushCore.getInstance().deleteAll(Wheel.class);
+ getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
+ @Override
+ public void run() {
+ tvShow.setText("删除成功");
+ }
+ });
+ }).start());
+```
+
+### Licence Apache License, Version 2.0
+Copyright (C) 2015 Stuart Campbell Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..5d2b8502bd31652bb022c9b7e8b39e8d34df3ad0
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/build.gradle"
@@ -0,0 +1,42 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
+
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+}
+
+buildscript {
+ repositories {
+ mavenCentral()
+
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.huawei.ohos:hap:3.0.5.2'
+ classpath 'com.huawei.ohos:decctest:1.2.7.2'
+ }
+}
+
+allprojects {
+ repositories {
+ mavenCentral()
+
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+
+ jcenter()
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/changelog.md" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/changelog.md"
new file mode 100644
index 0000000000000000000000000000000000000000..27833108d04e7a2694119a1ce1529df3d2f8c022
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/changelog.md"
@@ -0,0 +1,2 @@
+# Changelog
+支持RushOrm原有的所有功能
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..796b96d1c402326528b4ba3c12ee9d92d0e212e9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/.gitignore"
@@ -0,0 +1 @@
+/build
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..11d028a225ec7d4a3140fffbe3c0034dcc62125c
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/build.gradle"
@@ -0,0 +1,19 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ testCompile'junit:junit:4.12'
+ ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100'
+ implementation project(path: ':rushohos')
+ implementation 'com.alibaba:fastjson:1.2.55'
+}
+decc {
+ supportType = ['html','xml']
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..76ead90747cb06bc45735ba61a1e665178ba0d2d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/config.json"
@@ -0,0 +1,53 @@
+{
+ "app": {
+ "bundleName": "co.uk.rushorm.sample",
+ "vendor": "uk",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 5,
+ "target": 5
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "co.uk.rushorm.sample",
+ "name": ".RushOrmApp",
+ "reqCapabilities": [
+ "video_support"
+ ],
+ "deviceType": [
+ "phone",
+ "tv"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+
+ "name": "co.uk.rushorm.sample.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$ohos:string:id_text_font_family_medium",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/MainAbility.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/MainAbility.java"
new file mode 100644
index 0000000000000000000000000000000000000000..afffaa9833c299e2a74369bef5f5c225be770fa5
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/MainAbility.java"
@@ -0,0 +1,44 @@
+
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package co.uk.rushorm.sample;
+
+import co.uk.rushorm.ohos.OhosInitializeConfig;
+import co.uk.rushorm.ohos.RushOhos;
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.sample.demo.Car;
+import co.uk.rushorm.sample.demo.Engine;
+import co.uk.rushorm.sample.demo.Wheel;
+import co.uk.rushorm.sample.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ List> classes = new ArrayList<>();
+ classes.add(Car.class);
+ classes.add(Engine.class);
+ classes.add(Wheel.class);
+ OhosInitializeConfig ohosInitializeConfig = new OhosInitializeConfig(getApplicationContext(), classes);
+ RushOhos.initialize(ohosInitializeConfig);
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/RushOrmApp.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/RushOrmApp.java"
new file mode 100644
index 0000000000000000000000000000000000000000..bedd3f480d49b002166f31721632ab4fa3dfe809
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/RushOrmApp.java"
@@ -0,0 +1,26 @@
+
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package co.uk.rushorm.sample;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class RushOrmApp extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Car.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Car.java"
new file mode 100644
index 0000000000000000000000000000000000000000..08c0254010ec60fbc74030ca108b5b8b626d5ee9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Car.java"
@@ -0,0 +1,29 @@
+package co.uk.rushorm.sample.demo;
+
+import java.util.List;
+
+import co.uk.rushorm.core.RushObject;
+import co.uk.rushorm.core.annotations.RushList;
+
+/**
+ * Created by Stuart on 31/01/15.
+ */
+public class Car extends RushObject {
+
+ public String color;
+ public Engine engine;
+
+ public String anotherField;
+
+ @RushList(classType = Wheel.class)
+ public List wheels;
+
+ public Car(){
+ /* Empty constructor required */
+ }
+
+ public Car(String color, Engine engine){
+ this.color = color;
+ this.engine = engine;
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Engine.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Engine.java"
new file mode 100644
index 0000000000000000000000000000000000000000..34a0b6de84f14919ee237ce8105f3d2c89c37dca
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Engine.java"
@@ -0,0 +1,19 @@
+package co.uk.rushorm.sample.demo;
+
+import co.uk.rushorm.core.RushObject;
+
+/**
+ * Created by Stuart on 31/01/15.
+ */
+public class Engine extends RushObject {
+
+ public Engine(){
+ /* Empty constructor required */
+ }
+
+ public int cylinders;
+
+ public Engine(int cylinders){
+ this.cylinders = cylinders;
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Wheel.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Wheel.java"
new file mode 100644
index 0000000000000000000000000000000000000000..e69c32c07fc6c639724318c58d025fba01de52cd
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/demo/Wheel.java"
@@ -0,0 +1,20 @@
+package co.uk.rushorm.sample.demo;
+
+import co.uk.rushorm.core.RushObject;
+
+/**
+ * Created by Stuart on 31/01/15.
+ */
+public class Wheel extends RushObject {
+
+ public Wheel(){
+ /* Empty constructor required */
+ }
+
+ public String make;
+
+ public Wheel(String make){
+ this.make = make;
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/slice/MainAbilitySlice.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/slice/MainAbilitySlice.java"
new file mode 100644
index 0000000000000000000000000000000000000000..984f8582075864f620f56c8561f091eb09936602
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/java/co/uk/rushorm/sample/slice/MainAbilitySlice.java"
@@ -0,0 +1,112 @@
+
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package co.uk.rushorm.sample.slice;
+
+import co.uk.rushorm.sample.ResourceTable;
+
+import co.uk.rushorm.core.LogUtil;
+import co.uk.rushorm.core.RushCore;
+import co.uk.rushorm.core.RushSearch;
+import co.uk.rushorm.sample.demo.Car;
+import co.uk.rushorm.sample.demo.Engine;
+import co.uk.rushorm.sample.demo.Wheel;
+import com.alibaba.fastjson.JSON;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+import ohos.agp.components.Text;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 示例
+ */
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ Button btnSave = (Button) findComponentById(ResourceTable.Id_btn_save);
+ Button btnSelect = (Button) findComponentById(ResourceTable.Id_btn_select);
+ Button btnDel = (Button) findComponentById(ResourceTable.Id_btn_del);
+ Text tvShow = (Text) findComponentById(ResourceTable.Id_text_show);
+ //保存
+ btnSave.setClickedListener(component -> {
+ final long startTime = System.currentTimeMillis();
+ final int numberToSave = 100;
+
+ List cars = new ArrayList<>(numberToSave);
+ for (int i = 0; i < numberToSave; i++) {
+ Car car = new Car("Red", new Engine());
+ car.wheels = new ArrayList<>();
+ for (int j = 0; j < 4; j++) {
+ car.wheels.add(new Wheel("Michelin"));
+ }
+ cars.add(car);
+ }
+
+ RushCore.getInstance().save(cars, () -> {
+ long endTime = System.currentTimeMillis();
+ final double saveTime = (endTime - startTime) / 1000.0;
+ getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
+ @Override
+ public void run() {
+ LogUtil.error("test", "Rush main complete====");
+ tvShow.setText("保存成功!总耗时:"+String.format("%1$,.2f s", saveTime));
+ }
+ });
+ });
+ });
+ //查询
+ btnSelect.setClickedListener(component -> {
+ LogUtil.error("test", "Rush main select start====");
+ new Thread(() -> {
+ List cars = new RushSearch().find(Car.class);
+ getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
+ @Override
+ public void run() {
+ LogUtil.error("test", "Rush main select complete====");
+ tvShow.setText("查询成功:"+JSON.toJSONString(cars));
+ }
+ });
+ }).start();
+ });
+ //删除
+ btnDel.setClickedListener(component -> new Thread(() -> {
+ RushCore.getInstance().deleteAll(Car.class);
+ RushCore.getInstance().deleteAll(Engine.class);
+ RushCore.getInstance().deleteAll(Wheel.class);
+ getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
+ @Override
+ public void run() {
+ tvShow.setText("删除成功");
+ }
+ });
+ }).start());
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/element/string.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/element/string.json"
new file mode 100644
index 0000000000000000000000000000000000000000..60f9c7884386a9b02f24696888be9e24a76a80e7
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/element/string.json"
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "PushOrm_ohos"
+ },
+ {
+ "name": "mainability_description",
+ "value": "hap sample empty page"
+ }
+ ]
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/graphic/background_element.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/graphic/background_element.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..c3244f4584fb54c678fcc96b5d3fb9b0d0405112
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/graphic/background_element.xml"
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/layout/ability_main.xml" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/layout/ability_main.xml"
new file mode 100644
index 0000000000000000000000000000000000000000..f155fef40ba403a3fb5dbb8945cf05b9d3f8e275
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/layout/ability_main.xml"
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/media/icon.png" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/media/icon.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/main/resources/base/media/icon.png" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/ohosTest/java/co/uk/rushorm/ohos/ExampleOhosTest.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/ohosTest/java/co/uk/rushorm/ohos/ExampleOhosTest.java"
new file mode 100644
index 0000000000000000000000000000000000000000..b90a4b6a96402cb03a54dd6fad0053f9994cd453
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/ohosTest/java/co/uk/rushorm/ohos/ExampleOhosTest.java"
@@ -0,0 +1,14 @@
+package co.uk.rushorm.ohos;
+
+import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ExampleOhosTest {
+ @Test
+ public void testBundleName() {
+ final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName();
+ assertEquals("co.uk.rushorm.ohos", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/test/java/co/uk/rushorm/ohos/ExampleTest.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/test/java/co/uk/rushorm/ohos/ExampleTest.java"
new file mode 100644
index 0000000000000000000000000000000000000000..e17c981cbb203046539158f7dd6b11fdd1472e92
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/test/java/co/uk/rushorm/ohos/ExampleTest.java"
@@ -0,0 +1,9 @@
+package co.uk.rushorm.ohos;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/test/java/co/uk/rushorm/ohos/MainAbilityTest.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/test/java/co/uk/rushorm/ohos/MainAbilityTest.java"
new file mode 100644
index 0000000000000000000000000000000000000000..df7aaa1c6f4b3d1a6d6b0a5055d4158a69d96312
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/entry/src/test/java/co/uk/rushorm/ohos/MainAbilityTest.java"
@@ -0,0 +1,9 @@
+package co.uk.rushorm.ohos;
+
+import org.junit.Test;
+
+public class MainAbilityTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..0daf1830fbdef07e50a44d74210c8c82f1b66278
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle.properties"
@@ -0,0 +1,10 @@
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle/wrapper/gradle-wrapper.jar" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle/wrapper/gradle-wrapper.jar"
new file mode 100644
index 0000000000000000000000000000000000000000..490fda8577df6c95960ba7077c43220e5bb2c0d9
Binary files /dev/null and "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle/wrapper/gradle-wrapper.jar" differ
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle/wrapper/gradle-wrapper.properties" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle/wrapper/gradle-wrapper.properties"
new file mode 100644
index 0000000000000000000000000000000000000000..038f7b76fbf814c8d7afa085b1acd6c57e0fd976
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradle/wrapper/gradle-wrapper.properties"
@@ -0,0 +1,4 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
+zipStorePath=wrapper/dists
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradlew" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradlew"
new file mode 100644
index 0000000000000000000000000000000000000000..2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradlew"
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradlew.bat" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradlew.bat"
new file mode 100644
index 0000000000000000000000000000000000000000..62bd9b9ccefea2b65ae41e5d9a545e2021b90a1d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/gradlew.bat"
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/.gitignore" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..796b96d1c402326528b4ba3c12ee9d92d0e212e9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/.gitignore"
@@ -0,0 +1 @@
+/build
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/build.gradle" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/build.gradle"
new file mode 100644
index 0000000000000000000000000000000000000000..115ec9dab4917734bb2e858c3797e205259e0bf5
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/build.gradle"
@@ -0,0 +1,13 @@
+apply plugin: 'com.huawei.ohos.library'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ testCompile'junit:junit:4.12'
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/config.json" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..91a695e4899eb6a9d8bbc0034236cb688d6b22a9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/config.json"
@@ -0,0 +1,28 @@
+{
+ "app": {
+ "bundleName": "co.uk.rushorm.ohos",
+ "vendor": "uk",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 5,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {
+ },
+ "module": {
+ "package": "co.uk.rushorm.core",
+ "deviceType": [
+ "tv"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "rushcore",
+ "moduleType": "har"
+ }
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/AnnotationCache.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/AnnotationCache.java"
new file mode 100644
index 0000000000000000000000000000000000000000..ae26ade0f7e2677554ae62cb5c7e4956ca3fc639
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/AnnotationCache.java"
@@ -0,0 +1,17 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 03/03/15.
+ */
+public interface AnnotationCache {
+ public List getFieldToIgnore();
+ public List getDisableAutoDelete();
+ public Map> getListsClasses();
+ public Map> getListsTypes();
+ public String getSerializationName();
+ public String getTableName();
+ public boolean prefixTable();
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/InitializeListener.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/InitializeListener.java"
new file mode 100644
index 0000000000000000000000000000000000000000..59ffff8e7d2cfd76801d9ebeeace8ac889fb76d9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/InitializeListener.java"
@@ -0,0 +1,8 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 09/03/15.
+ */
+public interface InitializeListener {
+ public void initialized(boolean firstRun);
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/LogUtil.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/LogUtil.java"
new file mode 100644
index 0000000000000000000000000000000000000000..07c2c0c528e21e21e2fa1acd47356e4824f4175e
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/LogUtil.java"
@@ -0,0 +1,79 @@
+
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package co.uk.rushorm.core;
+
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+
+/**
+ * 日志工具
+ */
+public class LogUtil {
+ private static final String TAG_LOG = "LogUtil";
+
+ private static final int DOMAIN_ID = 0xD000F00;
+
+ private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, DOMAIN_ID, LogUtil.TAG_LOG);
+
+ private static final String LOG_FORMAT = "%{public}s: %{public}s";
+
+ private LogUtil() {
+ /* Do nothing */
+ }
+
+ /**
+ * Print debug log
+ *
+ * @param tag log tag
+ * @param msg log message
+ */
+ public static void debug(String tag, String msg) {
+ HiLog.debug(LABEL_LOG, LOG_FORMAT, tag, msg);
+ }
+
+ /**
+ * Print info log
+ *
+ * @param tag log tag
+ * @param msg log message
+ */
+ public static void info(String tag, String msg) {
+ HiLog.info(LABEL_LOG, LOG_FORMAT, tag, msg);
+ }
+
+ /**
+ * Print warn log
+ *
+ * @param tag log tag
+ * @param msg log message
+ */
+ public static void warn(String tag, String msg) {
+ HiLog.warn(LABEL_LOG, LOG_FORMAT, tag, msg);
+ }
+
+ /**
+ * Print error log
+ *
+ * @param tag log tag
+ * @param msg log message
+ */
+ public static void error(String tag, String msg) {
+ HiLog.error(LABEL_LOG, LOG_FORMAT, tag, msg);
+ }
+
+}
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/Logger.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/Logger.java"
new file mode 100644
index 0000000000000000000000000000000000000000..503d7b5573383e5ee52b308121ef92d32999d9d2
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/Logger.java"
@@ -0,0 +1,11 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 11/12/14.
+ */
+public interface Logger {
+
+ public void log(String message);
+ public void logSql(String sql);
+ public void logError(String error);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/Rush.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/Rush.java"
new file mode 100644
index 0000000000000000000000000000000000000000..89c9df4a9c42c0b97ee1c39ef28c5f23689f770e
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/Rush.java"
@@ -0,0 +1,16 @@
+package co.uk.rushorm.core;
+
+public interface Rush {
+
+ public abstract void save();
+
+ public abstract void save(RushCallback callback);
+
+ public abstract void delete();
+
+ public abstract void delete(RushCallback callback);
+
+ public abstract String getId();
+
+}
+
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushCallback.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushCallback.java"
new file mode 100644
index 0000000000000000000000000000000000000000..96dfffea624561ea866d6c0bde2fa3e174ffc614
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushCallback.java"
@@ -0,0 +1,8 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 10/12/14.
+ */
+public interface RushCallback {
+ public void complete();
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushClassFinder.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushClassFinder.java"
new file mode 100644
index 0000000000000000000000000000000000000000..657328255733ea6c19a89fcb0c1683236ab8e545
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushClassFinder.java"
@@ -0,0 +1,10 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+
+/**
+ * Created by stuartc on 11/12/14.
+ */
+public interface RushClassFinder {
+ public List> findClasses(RushConfig rushConfig);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushClassLoader.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushClassLoader.java"
new file mode 100644
index 0000000000000000000000000000000000000000..e7f2a7eaa83dba0f25373c498a2d491768932167
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushClassLoader.java"
@@ -0,0 +1,18 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 14/12/14.
+ */
+public interface RushClassLoader {
+
+ public interface LoadCallback {
+ public RushStatementRunner.ValuesCallback runStatement(String string);
+ public void didLoadObject(Rush rush, RushMetaData rushMetaData);
+ }
+
+ public List loadClasses(Class clazz, RushColumns rushColumns, Map, AnnotationCache> annotationCache, RushStatementRunner.ValuesCallback valuesCallback, LoadCallback callback);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushColumn.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushColumn.java"
new file mode 100644
index 0000000000000000000000000000000000000000..a3a712c59fe1468ebb9987ff7a3493b68a9f34a2
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushColumn.java"
@@ -0,0 +1,16 @@
+package co.uk.rushorm.core;
+
+import java.lang.reflect.Field;
+
+/**
+ * Created by Stuart on 06/01/15.
+ */
+public interface RushColumn {
+
+ public String sqlColumnType();
+ public String serialize(T object, RushStringSanitizer stringSanitizer);
+ public T deserialize(String value);
+ public Class[] classesColumnSupports();
+
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushColumns.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushColumns.java"
new file mode 100644
index 0000000000000000000000000000000000000000..abf17d30d9ba15c89327e46e2139f724ef46e4da
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushColumns.java"
@@ -0,0 +1,15 @@
+package co.uk.rushorm.core;
+
+import java.lang.reflect.Field;
+
+/**
+ * Created by Stuart on 06/01/15.
+ */
+public interface RushColumns {
+
+ public boolean supportsField(Field field);
+ public String sqlColumnType(Field field);
+ public String valueFromField(Rush rush, Field field, RushStringSanitizer stringSanitizer) throws IllegalAccessException;
+ public void setField(T rush, Field field, String value) throws IllegalAccessException;
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConfig.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConfig.java"
new file mode 100644
index 0000000000000000000000000000000000000000..006e98e4d1cf4c5b68c547606509eb83ed018a64
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConfig.java"
@@ -0,0 +1,14 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by stuartc on 11/12/14.
+ */
+public interface RushConfig {
+ String dbName();
+ int dbVersion();
+ boolean inDebug();
+ boolean log();
+ boolean usingMySql();
+ boolean userBulkInsert();
+ boolean orderColumnsAlphabetically();
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflict.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflict.java"
new file mode 100644
index 0000000000000000000000000000000000000000..559f0558824f826ff3f7c6e7ec8aa50a691cdf1b
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflict.java"
@@ -0,0 +1,29 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 17/02/15.
+ */
+public class RushConflict {
+
+ private final T inDataBase;
+ private final T toBeSaved;
+
+ public RushConflict(T inDataBase, T toBeSaved) {
+ this.inDataBase = inDataBase;
+ this.toBeSaved = toBeSaved;
+ }
+
+ public T getInDataBase(){
+ return inDataBase;
+ }
+
+ public T getToBeSaved(){
+ return toBeSaved;
+ }
+
+ public void resolve() {
+ RushMetaData toBeSavedMetaData = RushCore.getInstance().getMetaData(toBeSaved);
+ toBeSavedMetaData.setVersion(RushCore.getInstance().getMetaData(inDataBase).getVersion());
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflictCallback.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflictCallback.java"
new file mode 100644
index 0000000000000000000000000000000000000000..07d5fe67cff047167037a948e8d0fdd1ecdd5d02
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflictCallback.java"
@@ -0,0 +1,10 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+
+/**
+ * Created by Stuart on 17/02/15.
+ */
+public interface RushConflictCallback {
+ public void complete(List conflicts);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflictSaveStatementGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflictSaveStatementGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..d2a1013d8c25258072b7deabc945c9552458a9fc
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushConflictSaveStatementGenerator.java"
@@ -0,0 +1,18 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 17/02/15.
+ */
+public interface RushConflictSaveStatementGenerator {
+
+ public interface Callback extends RushSaveStatementGeneratorCallback {
+ public void conflictFound(RushConflict conflict);
+ public T load(Class T, String sql);
+ }
+
+ public void conflictsFromGenerateSaveOrUpdate(List extends Rush> objects, Map, AnnotationCache> annotationCache, RushStringSanitizer rushStringSanitizer, RushColumns rushColumns, Callback saveCallback);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushCore.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushCore.java"
new file mode 100644
index 0000000000000000000000000000000000000000..3b532168408682b0a9b3ebcd9a2bb5a9b760ceda
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushCore.java"
@@ -0,0 +1,669 @@
+package co.uk.rushorm.core;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import co.uk.rushorm.core.exceptions.RushCoreNotInitializedException;
+import co.uk.rushorm.core.exceptions.RushTableMissingEmptyConstructorException;
+import co.uk.rushorm.core.implementation.Insert.ConflictSaveStatementGenerator;
+import co.uk.rushorm.core.implementation.Insert.RushSqlInsertGenerator;
+import co.uk.rushorm.core.implementation.Insert.SqlBulkInsertGenerator;
+import co.uk.rushorm.core.implementation.Insert.SqlSingleInsertGenerator;
+import co.uk.rushorm.core.implementation.ReflectionClassLoader;
+import co.uk.rushorm.core.implementation.ReflectionDeleteStatementGenerator;
+import co.uk.rushorm.core.implementation.Insert.ReflectionSaveStatementGenerator;
+import co.uk.rushorm.core.implementation.ReflectionJoinStatementGenerator;
+import co.uk.rushorm.core.implementation.ReflectionTableStatementGenerator;
+import co.uk.rushorm.core.implementation.ReflectionUpgradeManager;
+import co.uk.rushorm.core.implementation.ReflectionUtils;
+import co.uk.rushorm.core.implementation.RushAnnotationCache;
+import co.uk.rushorm.core.implementation.RushColumnBoolean;
+import co.uk.rushorm.core.implementation.RushColumnBooleanNumerical;
+import co.uk.rushorm.core.implementation.RushColumnDate;
+import co.uk.rushorm.core.implementation.RushColumnDouble;
+import co.uk.rushorm.core.implementation.RushColumnFloat;
+import co.uk.rushorm.core.implementation.RushColumnInt;
+import co.uk.rushorm.core.implementation.RushColumnLong;
+import co.uk.rushorm.core.implementation.RushColumnShort;
+import co.uk.rushorm.core.implementation.RushColumnString;
+import co.uk.rushorm.core.implementation.RushColumnsImplementation;
+import co.uk.rushorm.core.implementation.RushSqlUtils;
+
+/**
+ * Created by Stuart on 10/12/14.
+ */
+public class RushCore {
+
+
+ @Deprecated
+ public static void initialize(RushClassFinder rushClassFinder, RushStatementRunner statementRunner, RushQueProvider queProvider, RushConfig rushConfig, RushStringSanitizer rushStringSanitizer, Logger logger, List columns, RushObjectSerializer rushObjectSerializer, RushObjectDeserializer rushObjectDeserializer) {
+
+ if(rushConfig.usingMySql()) {
+ columns.add(new RushColumnBooleanNumerical());
+ }else {
+ columns.add(new RushColumnBoolean());
+ }
+
+ columns.add(new RushColumnDate());
+ columns.add(new RushColumnDouble());
+ columns.add(new RushColumnInt());
+ columns.add(new RushColumnLong());
+ columns.add(new RushColumnShort());
+ columns.add(new RushColumnFloat());
+ columns.add(new RushColumnString());
+
+ RushColumns rushColumns = new RushColumnsImplementation(columns);
+
+ RushUpgradeManager rushUpgradeManager = new ReflectionUpgradeManager(logger, rushConfig);
+ RushSqlInsertGenerator rushSqlInsertGenerator = rushConfig.userBulkInsert() ? new SqlBulkInsertGenerator(rushConfig) : new SqlSingleInsertGenerator(rushConfig);
+
+ RushSaveStatementGenerator saveStatementGenerator = new ReflectionSaveStatementGenerator(rushSqlInsertGenerator, rushConfig);
+ RushConflictSaveStatementGenerator conflictSaveStatementGenerator = new ConflictSaveStatementGenerator(rushSqlInsertGenerator, rushConfig);
+ RushDeleteStatementGenerator deleteStatementGenerator = new ReflectionDeleteStatementGenerator(rushConfig);
+ RushJoinStatementGenerator rushJoinStatementGenerator = new ReflectionJoinStatementGenerator();
+ RushTableStatementGenerator rushTableStatementGenerator = new ReflectionTableStatementGenerator(rushConfig);
+ RushClassLoader rushClassLoader = new ReflectionClassLoader(rushConfig);
+
+ initialize(rushUpgradeManager, saveStatementGenerator, conflictSaveStatementGenerator, deleteStatementGenerator, rushJoinStatementGenerator, rushClassFinder, rushTableStatementGenerator, statementRunner, queProvider, rushConfig, rushClassLoader, rushStringSanitizer, logger, rushObjectSerializer, rushObjectDeserializer, rushColumns, null);
+ }
+
+ public static void initialize(RushInitializeConfig rushInitializeConfig) {
+ initialize(rushInitializeConfig.getRushUpgradeManager(),
+ rushInitializeConfig.getSaveStatementGenerator(),
+ rushInitializeConfig.getRushConflictSaveStatementGenerator(),
+ rushInitializeConfig.getRushDeleteStatementGenerator(),
+ rushInitializeConfig.getRushJoinStatementGenerator(),
+ rushInitializeConfig.getRushClassFinder(),
+ rushInitializeConfig.getRushTableStatementGenerator(),
+ rushInitializeConfig.getRushStatementRunner(),
+ rushInitializeConfig.getRushQueProvider(),
+ rushInitializeConfig.getRushConfig(),
+ rushInitializeConfig.getRushClassLoader(),
+ rushInitializeConfig.getRushStringSanitizer(),
+ rushInitializeConfig.getRushLogger(),
+ rushInitializeConfig.getRushObjectSerializer(),
+ rushInitializeConfig.getRushObjectDeserializer(),
+ rushInitializeConfig.getRushColumns(),
+ rushInitializeConfig.getInitializeListener());
+ }
+
+ public static void initialize(final RushUpgradeManager rushUpgradeManager,
+ RushSaveStatementGenerator saveStatementGenerator,
+ RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator,
+ RushDeleteStatementGenerator deleteStatementGenerator,
+ RushJoinStatementGenerator rushJoinStatementGenerator,
+ RushClassFinder rushClassFinder,
+ RushTableStatementGenerator rushTableStatementGenerator,
+ final RushStatementRunner statementRunner,
+ final RushQueProvider queProvider,
+ final RushConfig rushConfig,
+ RushClassLoader rushClassLoader,
+ RushStringSanitizer rushStringSanitizer,
+ Logger logger,
+ RushObjectSerializer rushObjectSerializer,
+ RushObjectDeserializer rushObjectDeserializer,
+ RushColumns rushColumns,
+ final InitializeListener initializeListener) {
+
+ if(rushCore != null) {
+ logger.logError("RushCore has already been initialized, make sure initialize is only called once.");
+ }
+
+ rushCore = new RushCore(saveStatementGenerator, rushConflictSaveStatementGenerator, deleteStatementGenerator, rushJoinStatementGenerator, statementRunner, queProvider, rushConfig, rushTableStatementGenerator, rushClassLoader, rushStringSanitizer, logger, rushObjectSerializer, rushObjectDeserializer, rushColumns);
+ rushCore.loadAnnotationCache(rushClassFinder);
+
+ final boolean isFirstRun = statementRunner.isFirstRun();
+ final RushQue que = queProvider.blockForNextQue();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ if (isFirstRun) {
+ rushCore.createTables(new ArrayList<>(rushCore.annotationCache.keySet()), que);
+ } else if(rushConfig.inDebug() || statementRunner.requiresUpgrade(rushConfig.dbVersion(), que)){
+ rushCore.upgrade(new ArrayList<>(rushCore.annotationCache.keySet()), rushUpgradeManager, que);
+ } else {
+ queProvider.queComplete(que);
+ }
+ statementRunner.initializeComplete(rushConfig.dbVersion());
+ if(initializeListener != null) {
+ initializeListener.initialized(isFirstRun);
+ }
+ }
+ }).start();
+ }
+
+ public static RushCore getInstance() {
+ if (rushCore == null) {
+ throw new RushCoreNotInitializedException();
+ }
+ return rushCore;
+ }
+
+ public void clearDatabase(){
+ for (Map.Entry, AnnotationCache> entry : annotationCache.entrySet()) {
+ deleteAll(entry.getKey());
+ }
+ }
+
+ public RushMetaData getMetaData(Rush rush) {
+ return idTable.get(rush);
+ }
+
+ public String getId(Rush rush) {
+ RushMetaData rushMetaData = getMetaData(rush);
+ if (rushMetaData == null) {
+ return null;
+ }
+ return rushMetaData.getId();
+ }
+
+ public void save(Rush rush) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ save(objects);
+ }
+
+ public void save(List extends Rush> objects) {
+ RushQue que = queProvider.blockForNextQue();
+ save(objects, que);
+ }
+
+ public void save(final Rush rush, final RushCallback callback) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ save(objects, callback);
+ }
+
+ public void save(final List extends Rush> objects, final RushCallback callback) {
+ queProvider.waitForNextQue(new RushQueProvider.RushQueCallback() {
+ @Override
+ public void callback(RushQue rushQue) {
+ save(objects, rushQue);
+ LogUtil.error(this.getClass().getName(),"Rush---core---save--callback");
+ if (callback != null) {
+ callback.complete();
+ }
+ }
+ });
+ }
+
+ public void join(List objects) {
+ RushQue que = queProvider.blockForNextQue();
+ join(objects, que);
+ }
+
+ public void join(final List objects, final RushCallback callback) {
+ queProvider.waitForNextQue(new RushQueProvider.RushQueCallback() {
+ @Override
+ public void callback(RushQue rushQue) {
+ join(objects, rushQue);
+ if (callback != null) {
+ callback.complete();
+ }
+ }
+ });
+ }
+
+ public void deleteJoin(List objects) {
+ RushQue que = queProvider.blockForNextQue();
+ deleteJoin(objects, que);
+ }
+
+ public void deleteJoin(final List objects, final RushCallback callback) {
+ queProvider.waitForNextQue(new RushQueProvider.RushQueCallback() {
+ @Override
+ public void callback(RushQue rushQue) {
+ deleteJoin(objects, rushQue);
+ if (callback != null) {
+ callback.complete();
+ }
+ }
+ });
+ }
+
+ public void clearChildren(Class extends Rush> parent, String field, Class extends Rush> child, String id) {
+ final RushQue que = queProvider.blockForNextQue();
+ rushJoinStatementGenerator.deleteAll(parent, field, child, id, new RushJoinStatementGenerator.Callback() {
+ @Override
+ public void runSql(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+ }, annotationCache);
+ queProvider.queComplete(que);
+ }
+
+ public long count(String sql) {
+ final RushQue que = queProvider.blockForNextQue();
+ logger.logSql(sql);
+ RushStatementRunner.ValuesCallback valuesCallback = statementRunner.runGet(sql, que);
+ List results = valuesCallback.next();
+ long count = Long.parseLong(results.get(0));
+ valuesCallback.close();
+ queProvider.queComplete(que);
+ return count;
+ }
+
+ public List load(Class clazz, String sql) {
+ RushQue que = queProvider.blockForNextQue();
+ return load(clazz, sql, que);
+ }
+
+ public void load(final Class clazz, final String sql, final RushSearchCallback callback) {
+ queProvider.waitForNextQue(new RushQueProvider.RushQueCallback() {
+ @Override
+ public void callback(RushQue rushQue) {
+ callback.complete(load(clazz, sql, rushQue));
+ }
+ });
+ }
+
+ public void delete(Rush rush) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ delete(objects);
+ }
+
+ public void delete(List extends Rush> objects) {
+ RushQue que = queProvider.blockForNextQue();
+ delete(objects, que);
+ }
+
+ public void delete(final Rush rush, final RushCallback callback) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ delete(objects, callback);
+ }
+
+ public void delete(final List extends Rush> objects, final RushCallback callback) {
+ queProvider.waitForNextQue(new RushQueProvider.RushQueCallback() {
+ @Override
+ public void callback(RushQue rushQue) {
+ delete(objects, rushQue);
+ if (callback != null) {
+ callback.complete();
+ }
+ }
+ });
+ }
+
+ public void deleteAll(Class extends Rush> clazz) {
+ final RushQue que = queProvider.blockForNextQue();
+ deleteAll(clazz, que);
+ }
+
+ public void deleteAll(final Class extends Rush> clazz, final RushCallback callback) {
+
+ queProvider.waitForNextQue(new RushQueProvider.RushQueCallback() {
+ @Override
+ public void callback(RushQue rushQue) {
+ deleteAll(clazz, rushQue);
+ if (callback != null) {
+ callback.complete();
+ }
+ }
+ });
+ }
+
+ public List saveOnlyWithoutConflict(Rush rush) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ return saveOnlyWithoutConflict(objects);
+ }
+
+ public List saveOnlyWithoutConflict(List extends Rush> objects) {
+ RushQue que = queProvider.blockForNextQue();
+ return saveOnlyWithoutConflict(objects, que);
+ }
+
+ public void saveOnlyWithoutConflict(final Rush rush, final RushConflictCallback callback) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ saveOnlyWithoutConflict(objects, callback);
+ }
+
+ public void saveOnlyWithoutConflict(final List extends Rush> objects, final RushConflictCallback callback) {
+ queProvider.waitForNextQue(new RushQueProvider.RushQueCallback() {
+ @Override
+ public void callback(RushQue rushQue) {
+ List conflicts = saveOnlyWithoutConflict(objects, rushQue);
+ if (callback != null) {
+ callback.complete(conflicts);
+ }
+ }
+ });
+ }
+
+ public String serialize(List extends Rush> rush) {
+ return serialize(rush, RushSqlUtils.RUSH_ID);
+ }
+
+ public String serialize(List extends Rush> rush, String idName) {
+ return serialize(rush, idName, RushSqlUtils.RUSH_VERSION);
+ }
+
+ public String serialize(List extends Rush> rush, String idName, String versionName) {
+ return rushObjectSerializer.serialize(rush, idName, versionName, rushColumns, annotationCache, new RushObjectSerializer.Callback() {
+ @Override
+ public RushMetaData getMetaData(Rush rush) {
+ return idTable.get(rush);
+ }
+ });
+ }
+
+ public List deserialize(String string) {
+ return deserialize(string, RushSqlUtils.RUSH_ID);
+ }
+
+ public List deserialize(String string, String idName) {
+ return deserialize(string, idName, RushSqlUtils.RUSH_VERSION);
+ }
+
+ public List deserialize(String string, String idName, String versionName) {
+ return deserialize(string, idName, versionName, Rush.class);
+ }
+
+ public List deserialize(String string, Class clazz) {
+ return deserialize(string, RushSqlUtils.RUSH_ID, clazz);
+ }
+
+ public List deserialize(String string, String idName, Class clazz) {
+ return deserialize(string, idName, RushSqlUtils.RUSH_VERSION, clazz);
+ }
+
+ public List deserialize(String string, String idName, String versionName, Class clazz) {
+ return rushObjectDeserializer.deserialize(string, idName, versionName, rushColumns, annotationCache, clazz, new RushObjectDeserializer.Callback() {
+ @Override
+ public void addRush(Rush rush, RushMetaData rushMetaData) {
+ idTable.put(rush, rushMetaData);
+ }
+ });
+ }
+
+ public void registerObjectWithId(Rush rush, String id) {
+ RushMetaData rushMetaData = new RushMetaData(id, 0);
+ registerObjectWithMetaData(rush, rushMetaData);
+ }
+
+ public void registerObjectWithMetaData(Rush rush, RushMetaData rushMetaData) {
+ idTable.put(rush, rushMetaData);
+ }
+
+ public Map, AnnotationCache> getAnnotationCache() {
+ return annotationCache;
+ }
+
+ /* protected */
+ protected String sanitize(String string) {
+ return rushStringSanitizer.sanitize(string);
+ }
+
+ /* private */
+ private static RushCore rushCore;
+ private final Map idTable = new WeakHashMap<>();
+
+ private final RushSaveStatementGenerator saveStatementGenerator;
+ private final RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator;
+ private final RushDeleteStatementGenerator deleteStatementGenerator;
+ private final RushJoinStatementGenerator rushJoinStatementGenerator;
+ private final RushStatementRunner statementRunner;
+ private final RushQueProvider queProvider;
+ private final RushConfig rushConfig;
+ private final RushTableStatementGenerator rushTableStatementGenerator;
+ private final RushClassLoader rushClassLoader;
+ private final Logger logger;
+ private final RushStringSanitizer rushStringSanitizer;
+ private final RushObjectSerializer rushObjectSerializer;
+ private final RushObjectDeserializer rushObjectDeserializer;
+ private final RushColumns rushColumns;
+ private final Map, AnnotationCache> annotationCache = new HashMap<>();
+
+
+ private RushCore(RushSaveStatementGenerator saveStatementGenerator,
+ RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator,
+ RushDeleteStatementGenerator deleteStatementGenerator,
+ RushJoinStatementGenerator rushJoinStatementGenerator, RushStatementRunner statementRunner,
+ RushQueProvider queProvider,
+ RushConfig rushConfig,
+ RushTableStatementGenerator rushTableStatementGenerator,
+ RushClassLoader rushClassLoader,
+ RushStringSanitizer rushStringSanitizer,
+ Logger logger,
+ RushObjectSerializer rushObjectSerializer,
+ RushObjectDeserializer rushObjectDeserializer,
+ RushColumns rushColumns) {
+
+ this.saveStatementGenerator = saveStatementGenerator;
+ this.rushConflictSaveStatementGenerator = rushConflictSaveStatementGenerator;
+ this.deleteStatementGenerator = deleteStatementGenerator;
+ this.rushJoinStatementGenerator = rushJoinStatementGenerator;
+ this.statementRunner = statementRunner;
+ this.queProvider = queProvider;
+ this.rushConfig = rushConfig;
+ this.rushTableStatementGenerator = rushTableStatementGenerator;
+ this.rushClassLoader = rushClassLoader;
+ this.rushStringSanitizer = rushStringSanitizer;
+ this.logger = logger;
+ this.rushObjectSerializer = rushObjectSerializer;
+ this.rushObjectDeserializer = rushObjectDeserializer;
+ this.rushColumns = rushColumns;
+ }
+
+ private void loadAnnotationCache(RushClassFinder rushClassFinder) {
+ for(Class extends Rush> clazz : rushClassFinder.findClasses(rushConfig)) {
+ List fields = new ArrayList<>();
+ ReflectionUtils.getAllFields(fields, clazz, rushConfig.orderColumnsAlphabetically());
+ annotationCache.put(clazz, new RushAnnotationCache(clazz, fields, rushConfig));
+ }
+ }
+
+ private void createTables(List> classes, final RushQue que) {
+ rushTableStatementGenerator.generateStatements(classes, rushColumns, new RushTableStatementGenerator.StatementCallback() {
+ @Override
+ public void statementCreated(String statement) {
+ logger.logSql(statement);
+ statementRunner.runRaw(statement, que);
+ }
+ }, annotationCache);
+ queProvider.queComplete(que);
+ }
+
+ private void upgrade(List> classes, RushUpgradeManager rushUpgradeManager, final RushQue que) {
+ rushUpgradeManager.upgrade(classes, new RushUpgradeManager.UpgradeCallback() {
+ @Override
+ public RushStatementRunner.ValuesCallback runStatement(String sql) {
+ logger.logSql(sql);
+ return statementRunner.runGet(sql, que);
+ }
+
+ @Override
+ public void runRaw(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+
+ @Override
+ public void createClasses(List> missingClasses) {
+ createTables(missingClasses, que);
+ }
+ }, annotationCache);
+ queProvider.queComplete(que);
+ }
+
+ private static final int SAVE_GROUP_SIZE = 1000;
+ private void save(List extends Rush> objects, final RushQue que) {
+ for (int i = 0; i < Math.ceil(objects.size() / ((float)SAVE_GROUP_SIZE)); i ++) {
+
+ int start = i * SAVE_GROUP_SIZE;
+ int end = Math.min(objects.size(), start + SAVE_GROUP_SIZE);
+ List extends Rush> group = objects.subList(start, end);
+ statementRunner.startTransition(que);
+ saveStatementGenerator.generateSaveOrUpdate(group, annotationCache, rushStringSanitizer, rushColumns, new RushSaveStatementGeneratorCallback() {
+ @Override
+ public void addRush(Rush rush, RushMetaData rushMetaData) {
+ registerObjectWithMetaData(rush, rushMetaData);
+ }
+
+ @Override
+ public void createdOrUpdateStatement(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+
+ @Override
+ public void deleteStatement(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+
+ @Override
+ public RushMetaData getMetaData(Rush rush) {
+ return idTable.get(rush);
+ }
+ });
+ statementRunner.endTransition(que);
+ }
+ queProvider.queComplete(que);
+ }
+
+ private List saveOnlyWithoutConflict(List extends Rush> objects, final RushQue que) {
+ final List conflicts = new ArrayList<>();
+ statementRunner.startTransition(que);
+ rushConflictSaveStatementGenerator.conflictsFromGenerateSaveOrUpdate(objects, annotationCache, rushStringSanitizer, rushColumns, new RushConflictSaveStatementGenerator.Callback() {
+ @Override
+ public void conflictFound(RushConflict conflict) {
+ conflicts.add(conflict);
+ }
+
+ @Override
+ public T load(Class T, String sql) {
+ List objects = RushCore.this.load(T, sql, que);
+ return objects.size() > 0 ? objects.get(0) : null;
+ }
+
+ @Override
+ public void addRush(Rush rush, RushMetaData rushMetaData) {
+ registerObjectWithMetaData(rush, rushMetaData);
+ }
+
+ @Override
+ public void createdOrUpdateStatement(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+
+ @Override
+ public void deleteStatement(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+
+ @Override
+ public RushMetaData getMetaData(Rush rush) {
+ return idTable.get(rush);
+ }
+ });
+ statementRunner.endTransition(que);
+ queProvider.queComplete(que);
+ return conflicts;
+ }
+
+ private void delete(List extends Rush> objects, final RushQue que) {
+ statementRunner.startTransition(que);
+ deleteStatementGenerator.generateDelete(objects, annotationCache, new RushDeleteStatementGenerator.Callback() {
+
+ @Override
+ public void removeRush(Rush rush) {
+ RushCore.this.removeRush(rush);
+ }
+
+ @Override
+ public void deleteStatement(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+
+ @Override
+ public RushMetaData getMetaData(Rush rush) {
+ return idTable.get(rush);
+ }
+ });
+ statementRunner.endTransition(que);
+ queProvider.queComplete(que);
+ }
+
+ private void deleteAll(Class extends Rush> clazz, final RushQue que) {
+ deleteStatementGenerator.generateDeleteAll(clazz, annotationCache, new RushDeleteStatementGenerator.Callback() {
+ @Override
+ public void removeRush(Rush rush) { }
+ @Override
+ public void deleteStatement(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+
+ @Override
+ public RushMetaData getMetaData(Rush rush) {
+ return null;
+ }
+ });
+ queProvider.queComplete(que);
+ }
+
+ private List load(Class clazz, String sql, final RushQue que) {
+ logger.logSql(sql);
+ RushStatementRunner.ValuesCallback values = statementRunner.runGet(sql, que);
+ List objects = rushClassLoader.loadClasses(clazz, rushColumns, annotationCache, values, new RushClassLoader.LoadCallback() {
+ @Override
+ public RushStatementRunner.ValuesCallback runStatement(String string) {
+ logger.logSql(string);
+ return statementRunner.runGet(string, que);
+ }
+
+ @Override
+ public void didLoadObject(Rush rush, RushMetaData rushMetaData) {
+ registerObjectWithMetaData(rush, rushMetaData);
+ }
+ });
+ values.close();
+ queProvider.queComplete(que);
+ if(objects == null) {
+ throw new RushTableMissingEmptyConstructorException(clazz);
+ }
+ return objects;
+ }
+
+ private void removeRush(Rush rush) {
+ idTable.remove(rush);
+ }
+
+ private void join(List objects, final RushQue que) {
+ statementRunner.startTransition(que);
+ rushJoinStatementGenerator.createJoins(objects, new RushJoinStatementGenerator.Callback() {
+ @Override
+ public void runSql(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+ }, annotationCache);
+ statementRunner.endTransition(que);
+ queProvider.queComplete(que);
+ }
+
+ private void deleteJoin(List objects, final RushQue que) {
+ statementRunner.startTransition(que);
+ rushJoinStatementGenerator.deleteJoins(objects, new RushJoinStatementGenerator.Callback() {
+ @Override
+ public void runSql(String sql) {
+ logger.logSql(sql);
+ statementRunner.runRaw(sql, que);
+ }
+ }, annotationCache);
+ statementRunner.endTransition(que);
+ queProvider.queComplete(que);
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushDeleteStatementGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushDeleteStatementGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..324d9561b2f6cf36ea07110be9f1068185d0819d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushDeleteStatementGenerator.java"
@@ -0,0 +1,19 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 16/02/15.
+ */
+public interface RushDeleteStatementGenerator {
+
+ public interface Callback extends RushStatementGeneratorCallback{
+ public void removeRush(Rush rush);
+ public void deleteStatement(String sql);
+ }
+
+ public void generateDelete(List extends Rush> objects, Map, AnnotationCache> annotationCache, Callback deleteCallback);
+ public void generateDeleteAll(Class extends Rush> clazz, Map, AnnotationCache> annotationCache, Callback deleteCallback);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushFile.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushFile.java"
new file mode 100644
index 0000000000000000000000000000000000000000..27d5abb5ca0812ae6ca0d4ae197a820bd83bf15e
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushFile.java"
@@ -0,0 +1,74 @@
+package co.uk.rushorm.core;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Created by Stuart on 19/01/15.
+ */
+public abstract class RushFile extends RushObject {
+
+ public abstract String fileExtension();
+
+ private String directory;
+
+ public RushFile(String directory) {
+ this.directory = directory;
+ }
+
+ public RushFile(){
+
+ }
+
+ private String filename() {
+ return directory + getId() + "." + fileExtension();
+ }
+
+ public File file() {
+ return new File(filename());
+ }
+
+ public boolean hasFile() {
+ return !(getId() == null) && file().exists();
+ }
+
+ public void writeToFile(byte[] bytes) throws IOException {
+
+ if(getId() == null) {
+ save();
+ }
+
+ FileOutputStream stream = null;
+ try {
+ stream = new FileOutputStream(file());
+ stream.write(bytes);
+ } finally {
+ if (stream != null) {
+ stream.close();
+ }
+ }
+ }
+
+ public InputStream readFormFile() throws IOException {
+ return new FileInputStream(filename());
+ }
+
+ @Override
+ public void delete() {
+ if(hasFile()) {
+ file().delete();
+ }
+ super.delete();
+ }
+
+ @Override
+ public void delete(RushCallback callback) {
+ if(hasFile()) {
+ file().delete();
+ }
+ super.delete(callback);
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushInitializeConfig.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushInitializeConfig.java"
new file mode 100644
index 0000000000000000000000000000000000000000..3ace15a03551f2f7e4cb659a85e2892d8c19682b
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushInitializeConfig.java"
@@ -0,0 +1,223 @@
+package co.uk.rushorm.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import co.uk.rushorm.core.implementation.Insert.ConflictSaveStatementGenerator;
+import co.uk.rushorm.core.implementation.Insert.ReflectionSaveStatementGenerator;
+import co.uk.rushorm.core.implementation.Insert.RushSqlInsertGenerator;
+import co.uk.rushorm.core.implementation.Insert.SqlBulkInsertGenerator;
+import co.uk.rushorm.core.implementation.Insert.SqlSingleInsertGenerator;
+import co.uk.rushorm.core.implementation.ReflectionClassLoader;
+import co.uk.rushorm.core.implementation.ReflectionDeleteStatementGenerator;
+import co.uk.rushorm.core.implementation.ReflectionJoinStatementGenerator;
+import co.uk.rushorm.core.implementation.ReflectionTableStatementGenerator;
+import co.uk.rushorm.core.implementation.ReflectionUpgradeManager;
+import co.uk.rushorm.core.implementation.RushColumnBoolean;
+import co.uk.rushorm.core.implementation.RushColumnBooleanNumerical;
+import co.uk.rushorm.core.implementation.RushColumnDate;
+import co.uk.rushorm.core.implementation.RushColumnDouble;
+import co.uk.rushorm.core.implementation.RushColumnFloat;
+import co.uk.rushorm.core.implementation.RushColumnInt;
+import co.uk.rushorm.core.implementation.RushColumnLong;
+import co.uk.rushorm.core.implementation.RushColumnShort;
+import co.uk.rushorm.core.implementation.RushColumnString;
+import co.uk.rushorm.core.implementation.RushColumnsImplementation;
+
+/**
+ * Created by Stuart on 20/06/15.
+ */
+public abstract class RushInitializeConfig {
+
+ protected RushUpgradeManager rushUpgradeManager;
+ protected RushSaveStatementGenerator saveStatementGenerator;
+ protected RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator;
+ protected RushDeleteStatementGenerator rushDeleteStatementGenerator;
+ protected RushJoinStatementGenerator rushJoinStatementGenerator;
+ protected RushClassFinder rushClassFinder;
+ protected RushStatementRunner rushStatementRunner;
+ protected RushQueProvider rushQueProvider;
+ protected RushConfig rushConfig;
+ protected RushTableStatementGenerator rushTableStatementGenerator;
+ protected RushClassLoader rushClassLoader;
+ protected Logger rushLogger;
+ protected RushStringSanitizer rushStringSanitizer;
+ protected RushObjectSerializer rushObjectSerializer;
+ protected RushObjectDeserializer rushObjectDeserializer;
+ protected RushColumns rushColumns;
+ protected InitializeListener initializeListener;
+ protected RushSqlInsertGenerator rushSqlInsertGenerator;
+ protected List rushColumnList = new ArrayList<>();
+
+ public RushUpgradeManager getRushUpgradeManager() {
+ if(rushUpgradeManager == null) {
+ rushUpgradeManager = new ReflectionUpgradeManager(getRushLogger(), getRushConfig());
+ }
+ return rushUpgradeManager;
+ }
+
+ public void setRushUpgradeManager(RushUpgradeManager rushUpgradeManager) {
+ this.rushUpgradeManager = rushUpgradeManager;
+ }
+
+ public RushSaveStatementGenerator getSaveStatementGenerator() {
+ if(saveStatementGenerator == null) {
+ saveStatementGenerator = new ReflectionSaveStatementGenerator(getRushSqlInsertGenerator(), getRushConfig());
+ }
+ return saveStatementGenerator;
+ }
+
+ public void setSaveStatementGenerator(RushSaveStatementGenerator saveStatementGenerator) {
+ this.saveStatementGenerator = saveStatementGenerator;
+ }
+
+ public RushConflictSaveStatementGenerator getRushConflictSaveStatementGenerator() {
+ if(rushConflictSaveStatementGenerator == null){
+ rushConflictSaveStatementGenerator = new ConflictSaveStatementGenerator(getRushSqlInsertGenerator(), getRushConfig());
+ }
+ return rushConflictSaveStatementGenerator;
+ }
+
+ public void setRushConflictSaveStatementGenerator(RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator) {
+ this.rushConflictSaveStatementGenerator = rushConflictSaveStatementGenerator;
+ }
+
+ public RushDeleteStatementGenerator getRushDeleteStatementGenerator() {
+ if(rushDeleteStatementGenerator == null){
+ rushDeleteStatementGenerator = new ReflectionDeleteStatementGenerator(getRushConfig());
+ }
+ return rushDeleteStatementGenerator;
+ }
+
+ public void setRushDeleteStatementGenerator(RushDeleteStatementGenerator rushDeleteStatementGenerator) {
+ this.rushDeleteStatementGenerator = rushDeleteStatementGenerator;
+ }
+
+ public RushJoinStatementGenerator getRushJoinStatementGenerator() {
+ if(rushJoinStatementGenerator == null){
+ rushJoinStatementGenerator = new ReflectionJoinStatementGenerator();
+ }
+ return rushJoinStatementGenerator;
+ }
+
+ public void setRushJoinStatementGenerator(RushJoinStatementGenerator rushJoinStatementGenerator) {
+ this.rushJoinStatementGenerator = rushJoinStatementGenerator;
+ }
+
+ public abstract RushClassFinder getRushClassFinder();
+
+ public void setRushClassFinder(RushClassFinder rushClassFinder) {
+ this.rushClassFinder = rushClassFinder;
+ }
+
+ public abstract RushStatementRunner getRushStatementRunner();
+
+ public void setRushStatementRunner(RushStatementRunner rushStatementRunner) {
+ this.rushStatementRunner = rushStatementRunner;
+ }
+
+ public abstract RushQueProvider getRushQueProvider();
+
+ public void setRushQueProvider(RushQueProvider rushQueProvider) {
+ this.rushQueProvider = rushQueProvider;
+ }
+
+ public abstract RushConfig getRushConfig();
+
+ public void setRushConfig(RushConfig rushConfig) {
+ this.rushConfig = rushConfig;
+ }
+
+ public RushTableStatementGenerator getRushTableStatementGenerator() {
+ if(rushTableStatementGenerator == null) {
+ rushTableStatementGenerator = new ReflectionTableStatementGenerator(getRushConfig());
+ }
+ return rushTableStatementGenerator;
+ }
+
+ public void setRushTableStatementGenerator(RushTableStatementGenerator rushTableStatementGenerator) {
+ this.rushTableStatementGenerator = rushTableStatementGenerator;
+ }
+
+ public RushClassLoader getRushClassLoader(){
+ if(rushClassLoader == null){
+ rushClassLoader = new ReflectionClassLoader(getRushConfig());
+ }
+ return rushClassLoader;
+ }
+
+ public void setRushClassLoader(RushClassLoader rushClassLoader) {
+ this.rushClassLoader = rushClassLoader;
+ }
+
+ public abstract Logger getRushLogger();
+
+ public void setRushLogger(Logger rushLogger) {
+ this.rushLogger = rushLogger;
+ }
+
+ public abstract RushStringSanitizer getRushStringSanitizer();
+
+ public void setRushStringSanitizer(RushStringSanitizer rushStringSanitizer) {
+ this.rushStringSanitizer = rushStringSanitizer;
+ }
+
+ public abstract RushObjectSerializer getRushObjectSerializer();
+
+ public void setRushObjectSerializer(RushObjectSerializer rushObjectSerializer) {
+ this.rushObjectSerializer = rushObjectSerializer;
+ }
+
+ public abstract RushObjectDeserializer getRushObjectDeserializer();
+
+ public void setRushObjectDeserializer(RushObjectDeserializer rushObjectDeserializer) {
+ this.rushObjectDeserializer = rushObjectDeserializer;
+ }
+
+ public RushColumns getRushColumns() {
+ if(rushColumns == null) {
+ if(getRushConfig().usingMySql()) {
+ addRushColumn(new RushColumnBooleanNumerical());
+ }else {
+ addRushColumn(new RushColumnBoolean());
+ }
+ addRushColumn(new RushColumnDate());
+ addRushColumn(new RushColumnDouble());
+ addRushColumn(new RushColumnInt());
+ addRushColumn(new RushColumnLong());
+ addRushColumn(new RushColumnShort());
+ addRushColumn(new RushColumnFloat());
+ addRushColumn(new RushColumnString());
+ rushColumns = new RushColumnsImplementation(rushColumnList);
+ }
+ return rushColumns;
+ }
+
+ public void addRushColumn(RushColumn rushColumn){
+ rushColumnList.add(rushColumn);
+ }
+
+ public void setRushColumns(RushColumns rushColumns) {
+ this.rushColumns = rushColumns;
+ }
+
+ public InitializeListener getInitializeListener() {
+ return initializeListener;
+ }
+
+ public void setInitializeListener(InitializeListener initializeListener) {
+ this.initializeListener = initializeListener;
+ }
+
+ public RushSqlInsertGenerator getRushSqlInsertGenerator() {
+ if(rushSqlInsertGenerator == null) {
+ rushSqlInsertGenerator = getRushConfig().userBulkInsert() ? new SqlBulkInsertGenerator(getRushConfig()) : new SqlSingleInsertGenerator(getRushConfig());
+ }
+ return rushSqlInsertGenerator;
+ }
+
+ public void setRushSqlInsertGenerator(RushSqlInsertGenerator rushSqlInsertGenerator) {
+ this.rushSqlInsertGenerator = rushSqlInsertGenerator;
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushJoin.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushJoin.java"
new file mode 100644
index 0000000000000000000000000000000000000000..0c9799fc21d7e47d54c68597f9789e2b68e3616d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushJoin.java"
@@ -0,0 +1,35 @@
+package co.uk.rushorm.core;
+
+
+/**
+ * Created by Stuart on 12/04/15.
+ */
+public class RushJoin {
+
+ private final Class extends Rush> parent;
+ private final String parentId;
+ private final String field;
+ private final Rush child;
+
+ public RushJoin(Class extends Rush> parent, String parentId, String field, Rush child) {
+ this.parent = parent;
+ this.parentId = parentId;
+ this.field = field;
+ this.child = child;
+ }
+
+ public Class extends Rush> getParent() {
+ return parent;
+ }
+
+ public String getParentId() {
+ return parentId;
+ }
+
+ public String getField() {
+ return field;
+ }
+ public Rush getChild() {
+ return child;
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushJoinStatementGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushJoinStatementGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c32bf258c082ba6bc720de21644277d9465a22de
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushJoinStatementGenerator.java"
@@ -0,0 +1,18 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 12/04/15.
+ */
+public interface RushJoinStatementGenerator {
+
+ public interface Callback {
+ public void runSql(String sql);
+ }
+
+ public void createJoins(List joins, Callback callback, Map, AnnotationCache> annotationCache);
+ public void deleteJoins(List joins, Callback callback, Map, AnnotationCache> annotationCache);
+ public void deleteAll(Class extends Rush> parent, String field, Class extends Rush> child, String id, Callback callback, Map, AnnotationCache> annotationCache);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushListField.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushListField.java"
new file mode 100644
index 0000000000000000000000000000000000000000..8ca93f442be9503fc805ff1d09ce3c79b409b1af
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushListField.java"
@@ -0,0 +1,8 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 12/04/15.
+ */
+public interface RushListField {
+ public void setDetails(Rush parent, String parentId, String fieldName, Class clazz);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushMetaData.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushMetaData.java"
new file mode 100644
index 0000000000000000000000000000000000000000..204813ad42aba0e11e463f5c3be51c307356acc6
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushMetaData.java"
@@ -0,0 +1,59 @@
+package co.uk.rushorm.core;
+
+import java.util.Date;
+import java.util.UUID;
+
+/**
+ * Created by Stuart on 16/02/15.
+ */
+public class RushMetaData {
+
+ private final String id;
+ private final long created;
+ private long updated;
+ private long version;
+
+ public RushMetaData() {
+ id = UUID.randomUUID().toString();
+ created = new Date().getTime();
+ version = 0;
+ }
+
+ public RushMetaData(String id, long version) {
+ this.id = id;
+ this.version = version;
+ created = new Date().getTime();
+ }
+
+ public RushMetaData(String id, long created, long updated, long version) {
+ this.id = id;
+ this.created = created;
+ this.updated = updated;
+ this.version = version;
+ }
+
+ public void save() {
+ version++;
+ updated = new Date().getTime();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public long getCreated() {
+ return created;
+ }
+
+ public long getUpdated() {
+ return updated;
+ }
+
+ public long getVersion() {
+ return version;
+ }
+
+ public void setVersion(long version) {
+ this.version = version;
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObject.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObject.java"
new file mode 100644
index 0000000000000000000000000000000000000000..40717e81351fd0d6b9e8da75a3d540b6b3c49684
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObject.java"
@@ -0,0 +1,43 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+
+/**
+ * Created by Stuart on 24/01/15.
+ */
+public abstract class RushObject implements Rush {
+
+ @Override
+ public void save() {
+ RushCore.getInstance().save(this);
+ }
+
+ @Override
+ public void save(RushCallback callback) {
+ RushCore.getInstance().save(this, callback);
+ }
+
+ public List saveOnlyWithoutConflict() {
+ return RushCore.getInstance().saveOnlyWithoutConflict(this);
+ }
+
+ public void saveOnlyWithoutConflict(RushConflictCallback callback) {
+ RushCore.getInstance().saveOnlyWithoutConflict(this, callback);
+ }
+
+ @Override
+ public void delete() {
+ RushCore.getInstance().delete(this);
+ }
+
+ @Override
+ public void delete(RushCallback callback) {
+ RushCore.getInstance().delete(this, callback);
+ }
+
+ @Override
+ public String getId() {
+ return RushCore.getInstance().getId(this);
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObjectDeserializer.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObjectDeserializer.java"
new file mode 100644
index 0000000000000000000000000000000000000000..2c0f51cc45dc865a9b99dc482fad5b575983d737
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObjectDeserializer.java"
@@ -0,0 +1,16 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 18/02/15.
+ */
+public interface RushObjectDeserializer {
+
+ public interface Callback {
+ public void addRush(Rush rush, RushMetaData rushMetaData);
+ }
+ public List deserialize(String string, String idName, String versionName, RushColumns rushColumns, Map, AnnotationCache> annotationCache, Class clazz, Callback callback);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObjectSerializer.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObjectSerializer.java"
new file mode 100644
index 0000000000000000000000000000000000000000..9883680af902a1b31fc51327bf9183c0400be752
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushObjectSerializer.java"
@@ -0,0 +1,17 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 18/02/15.
+ */
+public interface RushObjectSerializer {
+
+ public interface Callback {
+ public RushMetaData getMetaData(Rush rush);
+ }
+
+ public String serialize(List extends Rush> objects, String idName, String versionName, RushColumns rushColumns, Map, AnnotationCache> annotationCache, Callback callback);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushPageList.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushPageList.java"
new file mode 100644
index 0000000000000000000000000000000000000000..ca22c69cca4716e28c7763ae26bdc548ea3f5af9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushPageList.java"
@@ -0,0 +1,182 @@
+package co.uk.rushorm.core;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Created by Stuart on 12/04/15.
+ */
+public class RushPageList implements RushListField, Iterable {
+
+ private static final int PAGE_SIZE = 100;
+
+ private Class clazz;
+ private Class extends Rush> parentClazz;
+ private String parentId;
+ private String field;
+
+ private RushSearch rushSearch;
+
+ private List loadedObjects;
+
+ public RushPageList() {
+
+ }
+
+ public RushPageList(Class clazz) {
+ rushSearch = new RushSearch();
+ this.clazz = clazz;
+ }
+
+ public RushPageList(RushSearch rushSearch, Class clazz) {
+ this.rushSearch = rushSearch;
+ this.clazz = clazz;
+ }
+
+ public RushPageList(Rush parent, String fieldName, Class clazz) {
+ setDetails(parent, parent.getId(), fieldName, clazz);
+ }
+
+ public RushSearch getRushSearch() {
+ return rushSearch;
+ }
+
+ @Override
+ public void setDetails(Rush parent, String parentId, String fieldName, Class clazz) {
+ this.clazz = clazz;
+ this.parentClazz = parent.getClass();
+ this.parentId = parentId;
+ if(this.parentId == null) {
+ parent.save();
+ this.parentId = parent.getId();
+ }
+
+ this.field = fieldName;
+
+ rushSearch = new RushSearch().whereChildOf(parent.getClass(), fieldName, this.parentId);
+ rushSearch.setLimit(PAGE_SIZE);
+ rushSearch.setOffset(0);
+ }
+
+ public int size() {
+ return (int)rushSearch.count(clazz);
+ }
+
+ public boolean contains(Object rush) {
+ return rush != null && Rush.class.isAssignableFrom(rush.getClass()) && new RushSearch().whereChildOf(parentClazz, field, parentId).whereId(((Rush) rush).getId()).findSingle(clazz) != null;
+ }
+
+ @Override
+ public Iterator iterator() {
+ return new RushPageListIterator();
+ }
+
+ public boolean add(T rush) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ return addAll(objects);
+ }
+
+ public boolean remove(T rush) {
+ List objects = new ArrayList<>();
+ objects.add(rush);
+ return removeAll(objects);
+ }
+
+ public boolean addAll(Collection collection) {
+ List objects = new ArrayList<>();
+ for (Object object : collection) {
+ T rush = (T) object;
+ objects.add(rush);
+ }
+ RushCore.getInstance().save(objects);
+ RushCore.getInstance().join(joins(collection));
+ loadedObjects = null;
+ return true;
+ }
+
+ public boolean removeAll(Collection collection) {
+ RushCore.getInstance().deleteJoin(joins(collection));
+ loadedObjects = null;
+ return true;
+ }
+
+ private List joins(Collection collection) {
+ List joins = new ArrayList<>();
+ for (Object object : collection) {
+ Rush rush = (Rush) object;
+ joins.add(new RushJoin(parentClazz, parentId, field, rush));
+ }
+ return joins;
+ }
+
+ public void clear() {
+ RushCore.getInstance().clearChildren(parentClazz, field, clazz, parentId);
+ }
+
+ public boolean containsAll(Collection collection) {
+ for (Object object : collection) {
+ Rush rush = (Rush) object;
+ if (!contains(rush)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public T get(int index) {
+ boolean requiresLoad = false;
+
+ if(loadedObjects == null) {
+ requiresLoad = true;
+ }
+
+ int min = rushSearch.getOffset();
+ int localIndex = index - min;
+
+ if(localIndex < 0 || localIndex >= rushSearch.getLimit()) {
+ requiresLoad = true;
+ }
+
+ if(requiresLoad) {
+ int remainder = index / rushSearch.getLimit();
+ int offset = remainder * rushSearch.getLimit();
+ rushSearch.setOffset(offset);
+ loadedObjects = rushSearch.find(clazz);
+ }
+ int newIndex = index - rushSearch.getOffset();
+ return loadedObjects.get(newIndex);
+ }
+
+ public List subList(int fromIndex, int toIndex) {
+ return new RushSearch().whereChildOf(parentClazz, field, parentId).offset(fromIndex).limit(toIndex - fromIndex).find(clazz);
+ }
+
+ public class RushPageListIterator implements Iterator {
+
+ private Integer count;
+ private int place = 0;
+
+ public boolean hasNext() {
+ if(count == null) {
+ count = size();
+ }
+ return place < count;
+ }
+
+ public T next() {
+ T object = get(place);
+ place++;
+ return object;
+ }
+
+ @Override
+ public void remove() {
+ place --;
+ RushPageList.this.remove(get(place));
+ count = null;
+ }
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushQue.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushQue.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c851b8731b197771dd024f7bed2e60428443b419
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushQue.java"
@@ -0,0 +1,7 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 10/12/14.
+ */
+public interface RushQue {
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushQueProvider.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushQueProvider.java"
new file mode 100644
index 0000000000000000000000000000000000000000..edb12f54bf6ef8a8cd102e01f89067363c3b2397
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushQueProvider.java"
@@ -0,0 +1,15 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 10/12/14.
+ */
+public interface RushQueProvider {
+
+ public interface RushQueCallback {
+ public void callback(RushQue rushQue);
+ }
+
+ public RushQue blockForNextQue();
+ public void waitForNextQue(RushQueCallback rushQueCallback);
+ public void queComplete(RushQue que);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSaveStatementGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSaveStatementGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..6eae34a652941e92b4a427ac92ff11aae4ff24c1
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSaveStatementGenerator.java"
@@ -0,0 +1,13 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 10/12/14.
+ */
+public interface RushSaveStatementGenerator {
+
+ public void generateSaveOrUpdate(List extends Rush> objects, Map, AnnotationCache> annotationCache, RushStringSanitizer rushStringSanitizer, RushColumns rushColumns, RushSaveStatementGeneratorCallback saveCallback);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSaveStatementGeneratorCallback.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSaveStatementGeneratorCallback.java"
new file mode 100644
index 0000000000000000000000000000000000000000..8f7bd398b5827b91e8c1d74ec314fcec7096620d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSaveStatementGeneratorCallback.java"
@@ -0,0 +1,11 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 17/02/15.
+ */
+public interface RushSaveStatementGeneratorCallback extends RushStatementGeneratorCallback {
+
+ public void addRush(Rush rush, RushMetaData rushMetaData);
+ public void createdOrUpdateStatement(String sql);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSearch.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSearch.java"
new file mode 100644
index 0000000000000000000000000000000000000000..d74f1ac7ac178c82cbc1a1f4d1c03a30c4796978
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSearch.java"
@@ -0,0 +1,380 @@
+package co.uk.rushorm.core;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import co.uk.rushorm.core.exceptions.RushLimitRequiredForOffsetException;
+import co.uk.rushorm.core.implementation.RushSqlUtils;
+import co.uk.rushorm.core.search.RushOrderBy;
+import co.uk.rushorm.core.search.RushWhere;
+import co.uk.rushorm.core.search.RushWhereChild;
+import co.uk.rushorm.core.search.RushWhereHasChild;
+import co.uk.rushorm.core.search.RushWhereStatement;
+
+/**
+ * Created by Stuart on 14/12/14.
+ */
+public class RushSearch {
+
+ private static final String WHERE_TEMPLATE = "SELECT * from %s %s %s %s %s %s %s;";
+ private static final String COUNT_TEMPLATE = "SELECT COUNT(*) from %s %s %s;";
+
+ private final List whereStatements = new ArrayList<>();
+ private final List orderStatements = new ArrayList<>();
+ private final List groupBy = new ArrayList<>();
+
+ private Integer limit;
+ private Integer offset;
+
+ public T findSingle(Class clazz) {
+ List results = find(clazz);
+ return results.size() > 0 ? results.get(0) : null;
+ }
+
+ public void find(Class clazz, RushSearchCallback callback) {
+ RushCore.getInstance().load(clazz, buildSql(clazz), callback);
+ }
+
+ public List find(Class clazz) {
+ return RushCore.getInstance().load(clazz, buildSql(clazz));
+ }
+
+ public long count(Class clazz) {
+ return RushCore.getInstance().count(buildCountSql(clazz));
+ }
+
+ private String buildSql(Class extends Rush> clazz) {
+ StringBuilder joinString = new StringBuilder();
+ StringBuilder whereString = new StringBuilder();
+ for(int i = 0; i < whereStatements.size(); i ++) {
+ if(i < 1){
+ whereString.append("\nWHERE ");
+ }
+ RushWhere where = whereStatements.get(i);
+ whereString.append(where.getStatement(clazz, joinString));
+ }
+
+ StringBuilder order = new StringBuilder();
+ for(int i = 0; i < orderStatements.size(); i ++) {
+ if(i < 1){
+ order.append("\nORDER BY ");
+ }else if(i < orderStatements.size()){
+ order.append(", ");
+ }
+ order.append(orderStatements.get(i).getStatement());
+ }
+
+ String limit = "";
+ if(this.limit != null) {
+ limit = "LIMIT " + Integer.toString(this.limit);
+ }
+
+ String offset = "";
+ if(this.offset != null) {
+ offset = "OFFSET " + Integer.toString(this.offset);
+ }
+
+ StringBuilder groupBy = new StringBuilder();
+ for(int i = 0; i < this.groupBy.size(); i ++) {
+ if(i < 1){
+ groupBy.append("\nGROUP BY ");
+ }else if(i < this.groupBy.size()){
+ groupBy.append(", ");
+ }
+ groupBy.append(this.groupBy.get(i));
+ }
+
+ Map, AnnotationCache> annotationCache = RushCore.getInstance().getAnnotationCache();
+ return String.format(WHERE_TEMPLATE, annotationCache.get(clazz).getTableName(), joinString.toString(), whereString.toString(), order.toString(), groupBy.toString(), limit, offset);
+ }
+
+ private String buildCountSql(Class extends Rush> clazz) {
+ StringBuilder joinString = new StringBuilder();
+ StringBuilder whereString = new StringBuilder();
+ for(int i = 0; i < whereStatements.size(); i ++) {
+ if(i < 1){
+ whereString.append("\nWHERE ");
+ }
+ RushWhere where = whereStatements.get(i);
+ whereString.append(where.getStatement(clazz, joinString));
+ }
+ Map, AnnotationCache> annotationCache = RushCore.getInstance().getAnnotationCache();
+ return String.format(COUNT_TEMPLATE, annotationCache.get(clazz).getTableName(), joinString.toString(), whereString.toString());
+ }
+
+ public RushSearch whereId(String id) {
+ return whereEqual(RushSqlUtils.RUSH_ID, id);
+ }
+
+ public RushSearch and(){
+ whereStatements.add(new RushWhere(" AND "));
+ return this;
+ }
+
+ public RushSearch or(){
+ whereStatements.add(new RushWhere(" OR "));
+ return this;
+ }
+
+ public RushSearch startGroup(){
+ whereStatements.add(new RushWhere("("));
+ return this;
+ }
+
+ public RushSearch endGroup(){
+ whereStatements.add(new RushWhere(")"));
+ return this;
+ }
+
+ public RushSearch whereLessThan(String field, int value) {
+ return where(field, "<", Integer.toString(value));
+ }
+
+ public RushSearch whereGreaterThan(String field, int value) {
+ return where(field, ">", Integer.toString(value));
+ }
+
+ public RushSearch whereLessThan(String field, double value) {
+ return where(field, "<", Double.toString(value));
+ }
+
+ public RushSearch whereGreaterThan(String field, double value) {
+ return where(field, ">", Double.toString(value));
+ }
+
+ public RushSearch whereLessThan(String field, long value) {
+ return where(field, "<", Long.toString(value));
+ }
+
+ public RushSearch whereGreaterThan(String field, long value) {
+ return where(field, ">", Long.toString(value));
+ }
+
+ public RushSearch whereLessThan(String field, short value) {
+ return where(field, "<", Short.toString(value));
+ }
+
+ public RushSearch whereGreaterThan(String field, short value) {
+ return where(field, ">", Short.toString(value));
+ }
+
+ public RushSearch whereBefore(String field, Date date) {
+ return whereLessThan(field, date.getTime());
+ }
+
+ public RushSearch whereAfter(String field, Date date) {
+ return whereGreaterThan(field, date.getTime());
+ }
+
+ public RushSearch whereEqual(String field, String value) {
+ return where(field, "=", RushCore.getInstance().sanitize(value));
+ }
+
+ public RushSearch whereEqual(String field, int value) {
+ return where(field, "=", Integer.toString(value));
+ }
+
+ public RushSearch whereEqual(String field, long value) {
+ return where(field, "=", Long.toString(value));
+ }
+
+ public RushSearch whereEqual(String field, double value) {
+ return where(field, "=", Double.toString(value));
+ }
+
+ public RushSearch whereEqual(String field, short value) {
+ return where(field, "=", Short.toString(value));
+ }
+
+ public RushSearch whereEqual(String field, boolean value) {
+ return where(field, "=", "'" + Boolean.toString(value) + "'");
+ }
+
+ public RushSearch whereEqual(String field, Date date) {
+ return whereEqual(field, date.getTime());
+ }
+
+ public RushSearch whereNotEqual(String field, String value) {
+ return where(field, "<>", RushCore.getInstance().sanitize(value));
+ }
+
+ public RushSearch whereNotEqual(String field, int value) {
+ return where(field, "<>", Integer.toString(value));
+ }
+
+ public RushSearch whereNotEqual(String field, long value) {
+ return where(field, "<>", Long.toString(value));
+ }
+
+ public RushSearch whereNotEqual(String field, double value) {
+ return where(field, "<>", Double.toString(value));
+ }
+
+ public RushSearch whereNotEqual(String field, short value) {
+ return where(field, "<>", Short.toString(value));
+ }
+
+ public RushSearch whereNotEqual(String field, boolean value) {
+ return where(field, "<>", "'" + Boolean.toString(value) + "'");
+ }
+
+ public RushSearch whereNotEqual(String field, Date date) {
+ return whereNotEqual(field, date.getTime());
+ }
+
+
+ public RushSearch whereEqual(String field, Rush value) {
+ whereStatements.add(new RushWhereHasChild(field, value.getId(), value.getClass(), "="));
+ return this;
+ }
+
+ public RushSearch whereNotEqual(String field, Rush value) {
+ whereStatements.add(new RushWhereHasChild(field, value.getId(), value.getClass(), "<>"));
+ return this;
+ }
+
+ public RushSearch whereStartsWith(String field, String value) {
+ return whereLike(field, value + "%");
+ }
+
+ public RushSearch whereEndsWith(String field, String value) {
+ return whereLike(field, "%" + value);
+ }
+
+ public RushSearch whereContains(String field, String value) {
+ return whereLike(field, "%" + value + "%");
+ }
+
+ public RushSearch whereLike(String field, String value) {
+ return where(field, " LIKE ", RushCore.getInstance().sanitize(value));
+ }
+
+ public RushSearch whereChildOf(Rush value, String field) {
+ return whereChildOf(value.getClass(), field, value.getId());
+ }
+
+ public RushSearch whereChildOf(Class extends Rush> clazz, String field, String id) {
+ whereStatements.add(new RushWhereChild(field, id, clazz, "="));
+ return this;
+ }
+
+ public RushSearch whereNotChildOf(Rush value, String field) {
+ return whereNotChildOf(value.getClass(), field, value.getId());
+ }
+
+ public RushSearch whereNotChildOf(Class extends Rush> clazz, String field, String id) {
+ whereStatements.add(new RushWhereChild(field, id, clazz, "<>"));
+ return this;
+ }
+
+ private RushSearch where(String field, String modifier, String value) {
+ whereStatements.add(new RushWhereStatement(field, modifier, value));
+ return this;
+ }
+
+ public RushSearch whereIsNull(String field) {
+ whereStatements.add(new RushWhere(field + " IS NULL"));
+ return this;
+ }
+
+ public RushSearch whereIsNotNull(String field) {
+ whereStatements.add(new RushWhere(field + " IS NOT NULL"));
+ return this;
+ }
+
+ public RushSearch orderDesc(String field){
+ orderStatements.add(new RushOrderBy(field, "DESC"));
+ return this;
+ }
+
+ public RushSearch orderAsc(String field){
+ orderStatements.add(new RushOrderBy(field, "ASC"));
+ return this;
+ }
+
+ public RushSearch limit(int limit) {
+ this.limit = limit;
+ return this;
+ }
+
+ public RushSearch offset(int offset) {
+ if(limit == null) {
+ throw new RushLimitRequiredForOffsetException();
+ }
+ this.offset = offset;
+ return this;
+ }
+
+ public RushSearch whereIN(String column, List values) {
+ String inStatement = "(";
+ for (String value : values) {
+ inStatement += value + ",";
+ }
+ if(!values.isEmpty()) {
+ inStatement = inStatement.substring(0, inStatement.length() - 1);
+ }
+ inStatement += ")";
+ whereStatements.add(new RushWhereStatement(column, " IN ", inStatement));
+ return this;
+ }
+
+ public List getWhereStatements() {
+ return whereStatements;
+ }
+
+ public List getOrderStatements() {
+ return orderStatements;
+ }
+
+ public Integer getLimit() {
+ return limit;
+ }
+
+ public Integer getOffset() {
+ return offset;
+ }
+
+ public RushSearch setLimit(Integer limit) {
+ this.limit = limit;
+ return this;
+ }
+
+ public RushSearch setOffset(Integer offset) {
+ this.offset = offset;
+ return this;
+ }
+
+ private static final String JSON_TEMPLATE = "{\"limit\":%s," +
+ "\"offset\":%s," +
+ "\"order\":[%s]," +
+ "\"where\":[%s]}";
+
+ @Override
+ public String toString() {
+
+ StringBuilder where = new StringBuilder();
+ for(int i = 0; i < whereStatements.size(); i ++) {
+ where.append(whereStatements.get(i).toString());
+ if(i < whereStatements.size() - 1) {
+ where.append(",");
+ }
+ }
+
+ StringBuilder order = new StringBuilder();
+ for(int i = 0; i < orderStatements.size(); i ++) {
+ order.append(orderStatements.get(i).toString());
+ if(i < orderStatements.size() - 1) {
+ order.append(",");
+ }
+ }
+
+ return String.format(JSON_TEMPLATE, limit, offset, order.toString(), where.toString());
+ }
+
+ public RushSearch groupBy(String field) {
+ groupBy.add(field);
+ return this;
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSearchCallback.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSearchCallback.java"
new file mode 100644
index 0000000000000000000000000000000000000000..1eb9f846f6fde75057a0607873eaa81e10b31fb4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushSearchCallback.java"
@@ -0,0 +1,10 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+
+/**
+ * Created by Stuart on 01/02/15.
+ */
+public interface RushSearchCallback {
+ public void complete(List results);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStatementGeneratorCallback.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStatementGeneratorCallback.java"
new file mode 100644
index 0000000000000000000000000000000000000000..93c94bf9283c5439bbe56bdeadfeca847b7770b0
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStatementGeneratorCallback.java"
@@ -0,0 +1,9 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 16/02/15.
+ */
+public interface RushStatementGeneratorCallback {
+ public void deleteStatement(String sql);
+ public RushMetaData getMetaData(Rush rush);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStatementRunner.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStatementRunner.java"
new file mode 100644
index 0000000000000000000000000000000000000000..01d80793bbdb7d2d838aa7ad8779f238175a0ae3
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStatementRunner.java"
@@ -0,0 +1,25 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+
+/**
+ * Created by Stuart on 10/12/14.
+ */
+public interface RushStatementRunner {
+
+ public interface ValuesCallback {
+ public boolean hasNext();
+ public List next();
+ public void close();
+ }
+
+ public void runRaw(String statement, RushQue que);
+ public ValuesCallback runGet(String sql, RushQue que);
+ public void startTransition(RushQue que);
+ public void endTransition(RushQue que);
+
+ public boolean isFirstRun();
+ public void initializeComplete(long version);
+ public boolean requiresUpgrade(long version, RushQue que);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStringSanitizer.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStringSanitizer.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c6c30338e3c538168b8f31782f696bbadc8109c4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushStringSanitizer.java"
@@ -0,0 +1,8 @@
+package co.uk.rushorm.core;
+
+/**
+ * Created by Stuart on 15/12/14.
+ */
+public interface RushStringSanitizer {
+ public String sanitize(String string);
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushTableStatementGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushTableStatementGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c8d4eab92e05211953ac7ffc702c42670e645b30
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushTableStatementGenerator.java"
@@ -0,0 +1,17 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by stuartc on 11/12/14.
+ */
+public interface RushTableStatementGenerator {
+
+ public interface StatementCallback {
+ public void statementCreated(String statement);
+ }
+
+ public void generateStatements(List> classes, RushColumns rushColumns, StatementCallback statementCallback, Map, AnnotationCache> annotationCache);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushTextFile.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushTextFile.java"
new file mode 100644
index 0000000000000000000000000000000000000000..ee9a21f2ac013c16fc958aed24c9778839c9cf8c
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushTextFile.java"
@@ -0,0 +1,46 @@
+package co.uk.rushorm.core;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Created by Stuart on 19/01/15.
+ */
+public class RushTextFile extends RushFile {
+
+ public RushTextFile(String directory) {
+ super(directory);
+ }
+
+ public RushTextFile(){}
+
+ @Override
+ public String fileExtension() {
+ return "txt";
+ }
+
+ public void setText(String text) throws IOException {
+ writeToFile(text.getBytes("UTF-8"));
+ }
+
+ public String getText() throws IOException {
+ InputStream inputStream = readFormFile();
+
+ if (inputStream != null) {
+ InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ String receiveString;
+ StringBuilder stringBuilder = new StringBuilder();
+
+ while ((receiveString = bufferedReader.readLine()) != null) {
+ stringBuilder.append(receiveString);
+ }
+
+ inputStream.close();
+ return stringBuilder.toString();
+ }
+ return null;
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushUpgradeManager.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushUpgradeManager.java"
new file mode 100644
index 0000000000000000000000000000000000000000..d1237aba99245dddcff71d5494f0b65fe7a3bfba
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/RushUpgradeManager.java"
@@ -0,0 +1,19 @@
+package co.uk.rushorm.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stuart on 10/12/14.
+ */
+public interface RushUpgradeManager {
+
+ public interface UpgradeCallback {
+ public RushStatementRunner.ValuesCallback runStatement(String sql);
+ public void runRaw(String sql);
+ public void createClasses(List> missingClasses);
+ }
+
+ public void upgrade(List> classList, UpgradeCallback callback, Map, AnnotationCache> annotationCache);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushClassSerializationName.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushClassSerializationName.java"
new file mode 100644
index 0000000000000000000000000000000000000000..10af5a3709695dda22360c1d6960454e1e682e9d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushClassSerializationName.java"
@@ -0,0 +1,12 @@
+package co.uk.rushorm.core.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Created by Stuart on 22/02/15.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RushClassSerializationName {
+ public String name();
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushCustomTableName.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushCustomTableName.java"
new file mode 100644
index 0000000000000000000000000000000000000000..e9ddd04fe32ba246a91022330d46b84007e966db
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushCustomTableName.java"
@@ -0,0 +1,12 @@
+package co.uk.rushorm.core.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Created by Stuart on 05/05/15.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RushCustomTableName {
+ public String name();
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushDisableAutodelete.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushDisableAutodelete.java"
new file mode 100644
index 0000000000000000000000000000000000000000..b7c5616fc04d3b3dc3c77783b4d059f220bfa260
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushDisableAutodelete.java"
@@ -0,0 +1,11 @@
+package co.uk.rushorm.core.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Created by Stuart on 16/12/14.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RushDisableAutodelete {
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushIgnore.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushIgnore.java"
new file mode 100644
index 0000000000000000000000000000000000000000..771500a648326c117177d3b5cde714550a27ec39
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushIgnore.java"
@@ -0,0 +1,13 @@
+package co.uk.rushorm.core.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Created by stuartc on 11/12/14.
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RushIgnore {
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushList.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushList.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c14d754d4453d16cd81689d8733e397e642144ea
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushList.java"
@@ -0,0 +1,18 @@
+package co.uk.rushorm.core.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
+
+import co.uk.rushorm.core.Rush;
+
+/**
+ * Created by stuartc on 11/12/14.
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RushList {
+ public Class extends Rush> classType();
+ public Class listType() default ArrayList.class;
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushRenamed.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushRenamed.java"
new file mode 100644
index 0000000000000000000000000000000000000000..ef36c848928ce90511b425ac8395754d87dcbd9a
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/annotations/RushRenamed.java"
@@ -0,0 +1,12 @@
+package co.uk.rushorm.core.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Created by Stuart on 16/12/14.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RushRenamed {
+ public String[] names();
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushClassNotFoundException.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushClassNotFoundException.java"
new file mode 100644
index 0000000000000000000000000000000000000000..82c99201cd97a6b6e9850d94d969784c35ff68f9
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushClassNotFoundException.java"
@@ -0,0 +1,12 @@
+package co.uk.rushorm.core.exceptions;
+
+/**
+ * Created by Stuart on 12/04/15.
+ */
+public class RushClassNotFoundException extends RuntimeException {
+
+ public RushClassNotFoundException(Class clazz) {
+ super("Rush class " + clazz.getSimpleName() + " was not found. Please make sure that if you are using setClasses on RushInitializeConfig you include this class.");
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushCoreNotInitializedException.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushCoreNotInitializedException.java"
new file mode 100644
index 0000000000000000000000000000000000000000..2c38495fad52faff8dfb6a38d142a33f82b50a12
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushCoreNotInitializedException.java"
@@ -0,0 +1,7 @@
+package co.uk.rushorm.core.exceptions;
+
+/**
+ * Created by stuartc on 11/12/14.
+ */
+public class RushCoreNotInitializedException extends RuntimeException {
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushLimitRequiredForOffsetException.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushLimitRequiredForOffsetException.java"
new file mode 100644
index 0000000000000000000000000000000000000000..6764dbe18a8f816328ccb61e86e3652a1822fbb4
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushLimitRequiredForOffsetException.java"
@@ -0,0 +1,11 @@
+package co.uk.rushorm.core.exceptions;
+
+/**
+ * Created by Stuart on 16/03/15.
+ */
+public class RushLimitRequiredForOffsetException extends RuntimeException {
+
+ public RushLimitRequiredForOffsetException() {
+ super("You must set a limit before you can set an offset");
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushSqlException.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushSqlException.java"
new file mode 100644
index 0000000000000000000000000000000000000000..3e7f0eeec36c3e8cc5649689f6e173d0b63d5f54
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushSqlException.java"
@@ -0,0 +1,15 @@
+package co.uk.rushorm.core.exceptions;
+
+/**
+ * Created by Stuart on 15/02/15.
+ */
+public class RushSqlException extends RuntimeException {
+
+ public RushSqlException() {
+ super("This is most likely caused by a change in data structure or new RushObject.\n" +
+ "This issue should be resolved by a database migration.\n" +
+ "This can be done by updating db version number in the manifest or setting Rush in debug mode.\n" +
+ "To set Rush in debug mode add this to your manifest file - ");
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushTableMissingEmptyConstructorException.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushTableMissingEmptyConstructorException.java"
new file mode 100644
index 0000000000000000000000000000000000000000..225794446e103bdf8e12098ec37b37706b3c05e3
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/exceptions/RushTableMissingEmptyConstructorException.java"
@@ -0,0 +1,11 @@
+package co.uk.rushorm.core.exceptions;
+
+/**
+ * Created by Stuart on 22/01/15.
+ */
+public class RushTableMissingEmptyConstructorException extends RuntimeException {
+
+ public RushTableMissingEmptyConstructorException(Class clazz) {
+ super(clazz.getName() + " Implement: " + clazz.getSimpleName() + "(){}");
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/BasicJoin.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/BasicJoin.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c6c1a3c1960fe376120ea7050acad16aa0ef893e
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/BasicJoin.java"
@@ -0,0 +1,31 @@
+package co.uk.rushorm.core.implementation.Insert;
+
+import co.uk.rushorm.core.Rush;
+
+/**
+ * Created by Stuart on 03/04/15.
+ */
+public class BasicJoin {
+
+ private final String table;
+ private final Rush parent;
+ private final Rush child;
+
+ public BasicJoin(String table, Rush parent, Rush child) {
+ this.table = table;
+ this.parent = parent;
+ this.child = child;
+ }
+
+ public String getTable() {
+ return table;
+ }
+
+ public Rush getParent() {
+ return parent;
+ }
+
+ public Rush getChild() {
+ return child;
+ }
+}
\ No newline at end of file
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/BasicUpdate.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/BasicUpdate.java"
new file mode 100644
index 0000000000000000000000000000000000000000..9448ee8b794fcd8cc45a9fdb3679aa1d3aa5777d
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/BasicUpdate.java"
@@ -0,0 +1,34 @@
+package co.uk.rushorm.core.implementation.Insert;
+
+import java.util.List;
+
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.core.RushMetaData;
+
+/**
+ * Created by Stuart on 03/04/15.
+ */
+public class BasicUpdate {
+
+ protected final List values;
+ protected final Rush object;
+ protected final RushMetaData rushMetaData;
+
+ public BasicUpdate(List values, Rush object, RushMetaData rushMetaData) {
+ this.values = values;
+ this.object = object;
+ this.rushMetaData = rushMetaData;
+ }
+
+ public List getValues() {
+ return values;
+ }
+
+ public Rush getObject() {
+ return object;
+ }
+
+ public RushMetaData getRushMetaData() {
+ return rushMetaData;
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/ConflictSaveStatementGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/ConflictSaveStatementGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..7d181193de9ef55209827492d374dcfb084debc7
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/ConflictSaveStatementGenerator.java"
@@ -0,0 +1,75 @@
+package co.uk.rushorm.core.implementation.Insert;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import co.uk.rushorm.core.AnnotationCache;
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.core.RushColumns;
+import co.uk.rushorm.core.RushConfig;
+import co.uk.rushorm.core.RushConflict;
+import co.uk.rushorm.core.RushConflictSaveStatementGenerator;
+import co.uk.rushorm.core.RushMetaData;
+import co.uk.rushorm.core.RushSaveStatementGeneratorCallback;
+import co.uk.rushorm.core.RushStringSanitizer;
+import co.uk.rushorm.core.implementation.RushSqlUtils;
+
+/**
+ * Created by Stuart on 17/02/15.
+ */
+public class ConflictSaveStatementGenerator extends ReflectionSaveStatementGenerator implements RushConflictSaveStatementGenerator {
+
+ public ConflictSaveStatementGenerator(RushSqlInsertGenerator rushSqlInsertGenerator, RushConfig rushConfig) {
+ super(rushSqlInsertGenerator, rushConfig);
+ }
+
+ @Override
+ public void conflictsFromGenerateSaveOrUpdate(List extends Rush> objects, Map, AnnotationCache> annotationCache, RushStringSanitizer rushStringSanitizer, RushColumns rushColumns, Callback saveCallback) {
+ generateSaveOrUpdate(objects, annotationCache, rushStringSanitizer, rushColumns, saveCallback);
+ }
+
+ @Override
+ protected void createOrUpdateObjects(Map, List> valuesMap, final Map, List> columnsMap, Map, AnnotationCache> annotationCache, final RushSaveStatementGeneratorCallback saveCallback) {
+ Callback callback = (Callback)saveCallback;
+
+ List> toRemove = new ArrayList<>();
+
+ for (final Map.Entry, List> entry : valuesMap.entrySet()) {
+
+ final List creates = entry.getValue();
+ Class extends Rush> clazz = entry.getKey();
+ String sqlTemplate = String.format(RushSqlUtils.SELECT_TEMPLATE, annotationCache.get(clazz).getTableName(), "%s");
+
+ Iterator iterator = creates.iterator();
+ checkForConflict(clazz, iterator, sqlTemplate, callback);
+
+ if(creates.size() < 1) {
+ toRemove.add(clazz);
+ }
+ }
+
+ for(Class extends Rush> clazz : toRemove) {
+ valuesMap.remove(clazz);
+ columnsMap.remove(clazz);
+ }
+
+ if(valuesMap.size() > 0) {
+ super.createOrUpdateObjects(valuesMap, columnsMap, annotationCache, saveCallback);
+ }
+ }
+
+ private void checkForConflict(Class T, Iterator iterator, String sqlTemplate, Callback callback) {
+
+ BasicUpdate create = iterator.next();
+ T inDatabase = callback.load(T, String.format(sqlTemplate, create.rushMetaData.getId()));
+ if(inDatabase != null) {
+ RushMetaData rushMetaData = callback.getMetaData(inDatabase);
+ if(create.rushMetaData.getVersion() < rushMetaData.getVersion()) {
+ iterator.remove();
+ callback.conflictFound(new RushConflict<>(inDatabase, (T)create.object));
+ }
+ }
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/ReflectionSaveStatementGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/ReflectionSaveStatementGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..0859f08fb980babbc81a47b10359b005f50c2466
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/ReflectionSaveStatementGenerator.java"
@@ -0,0 +1,205 @@
+package co.uk.rushorm.core.implementation.Insert;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import co.uk.rushorm.core.AnnotationCache;
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.core.RushColumns;
+import co.uk.rushorm.core.RushConfig;
+import co.uk.rushorm.core.RushListField;
+import co.uk.rushorm.core.RushMetaData;
+import co.uk.rushorm.core.RushSaveStatementGenerator;
+import co.uk.rushorm.core.RushSaveStatementGeneratorCallback;
+import co.uk.rushorm.core.RushStringSanitizer;
+import co.uk.rushorm.core.exceptions.RushClassNotFoundException;
+import co.uk.rushorm.core.implementation.ReflectionUtils;
+
+/**
+ * Created by stuartc on 11/12/14.
+ */
+public class ReflectionSaveStatementGenerator implements RushSaveStatementGenerator {
+
+
+ private void addJoin(Map> joins, BasicJoin basicJoin) {
+ if(!joins.containsKey(basicJoin.getTable())) {
+ joins.put(basicJoin.getTable(), new ArrayList());
+ }
+ joins.get(basicJoin.getTable()).add(basicJoin);
+ }
+
+ private final RushSqlInsertGenerator rushSqlInsertGenerator;
+ private final RushConfig rushConfig;
+
+ public ReflectionSaveStatementGenerator(RushSqlInsertGenerator rushSqlInsertGenerator, RushConfig rushConfig) {
+ this.rushSqlInsertGenerator = rushSqlInsertGenerator;
+ this.rushConfig = rushConfig;
+ }
+
+ @Override
+ public void generateSaveOrUpdate(List extends Rush> objects, Map, AnnotationCache> annotationCache, RushStringSanitizer rushStringSanitizer, RushColumns rushColumns, RushSaveStatementGeneratorCallback saveCallback) {
+
+ List rushObjects = new ArrayList<>();
+
+ Map, List> updateValues = new HashMap<>();
+ Map, List> columns = new HashMap<>();
+
+ Map> joinDeletes = new HashMap<>();
+ Map> joinValues = new HashMap<>();
+
+ for(Rush rush : objects) {
+ generateSaveOrUpdate(rush, rushObjects, annotationCache, rushStringSanitizer, rushColumns, updateValues, columns, joinDeletes, joinValues, saveCallback);
+ }
+
+ ReflectionUtils.deleteManyJoins(joinDeletes, saveCallback);
+
+ createOrUpdateObjects(updateValues, columns, annotationCache, saveCallback);
+ createManyJoins(joinValues, saveCallback);
+
+ }
+
+ private void generateSaveOrUpdate(Rush rush, List rushObjects,
+ Map, AnnotationCache> annotationCache,
+ RushStringSanitizer rushStringSanitizer,
+ RushColumns rushColumns,
+ Map, List> updateValuesMap,
+ Map, List> columnsMap,
+ Map> joinDeletesMap,
+ Map> joinValuesMap,
+ RushSaveStatementGeneratorCallback saveCallback) {
+
+ if(contains(rushObjects, rush)) {
+ // Exit if object is referenced by child
+ return;
+ }
+
+ if(annotationCache.get(rush.getClass()) == null) {
+ throw new RushClassNotFoundException(rush.getClass());
+ }
+
+ rushObjects.add(rush);
+
+ List columns = new ArrayList<>();
+ List values = new ArrayList<>();
+ List fields = new ArrayList<>();
+
+ ReflectionUtils.getAllFields(fields, rush.getClass(), rushConfig.orderColumnsAlphabetically());
+
+ for (Field field : fields) {
+ if (!annotationCache.get(rush.getClass()).getFieldToIgnore().contains(field.getName())) {
+ field.setAccessible(true);
+ List joins = new ArrayList<>();
+ String joinTableName = joinFromField(joins, rush, field, annotationCache);
+ if (joinTableName == null) {
+ if (rushColumns.supportsField(field)) {
+ try {
+ String value = rushColumns.valueFromField(rush, field, rushStringSanitizer);
+ columns.add(field.getName());
+ values.add(value);
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ } else {
+ if (rush.getId() != null) {
+ // Clear join tables and re save rows to catch any deleted or changed children
+ if (!joinDeletesMap.containsKey(joinTableName)) {
+ joinDeletesMap.put(joinTableName, new ArrayList());
+ }
+ joinDeletesMap.get(joinTableName).add(rush.getId());
+ }
+ for(BasicJoin join : joins) {
+ generateSaveOrUpdate(join.getChild(), rushObjects, annotationCache, rushStringSanitizer, rushColumns, updateValuesMap, columnsMap, joinDeletesMap, joinValuesMap, saveCallback);
+ addJoin(joinValuesMap, join);
+ }
+ }
+ }
+ }
+
+ if (!columnsMap.containsKey(rush.getClass())) {
+ columnsMap.put(rush.getClass(), columns);
+ }
+
+ if (!updateValuesMap.containsKey(rush.getClass())) {
+ updateValuesMap.put(rush.getClass(), new ArrayList());
+ }
+
+ RushMetaData rushMetaData = saveCallback.getMetaData(rush);
+ if(rushMetaData == null) {
+ rushMetaData = new RushMetaData();
+ saveCallback.addRush(rush, rushMetaData);
+ }
+ updateValuesMap.get(rush.getClass()).add(new BasicUpdate(values, rush, rushMetaData));
+ }
+
+ private boolean contains(List objects, Rush rush) {
+ for(Rush object : objects) {
+ String id = object.getId();
+ if(object == rush || (id != null && id.equals(rush.getId()))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private String joinFromField(List joins, Rush rush, Field field, Map, AnnotationCache> annotationCache) {
+
+ if (Rush.class.isAssignableFrom(field.getType())) {
+ if(annotationCache.get(field.getType()) == null) {
+ throw new RushClassNotFoundException(rush.getClass());
+ }
+ String tableName = ReflectionUtils.joinTableNameForClass(annotationCache.get(rush.getClass()).getTableName(), annotationCache.get(field.getType()).getTableName(), field.getName());
+ try {
+ Rush child = (Rush) field.get(rush);
+ if (child != null) {
+ joins.add(new BasicJoin(tableName, rush, child));
+ }
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ return tableName;
+ }
+
+ if(annotationCache.get(rush.getClass()).getListsClasses().containsKey(field.getName())) {
+
+ if(RushListField.class.isAssignableFrom(field.getType())) {
+ // return null so that the join table is not cleared
+ return null;
+ }
+
+ Class listClass = annotationCache.get(rush.getClass()).getListsClasses().get(field.getName());
+ if(annotationCache.get(listClass) == null) {
+ throw new RushClassNotFoundException(rush.getClass());
+ }
+ String tableName = ReflectionUtils.joinTableNameForClass(annotationCache.get(rush.getClass()).getTableName(), annotationCache.get(listClass).getTableName(), field.getName());
+ if (Rush.class.isAssignableFrom(listClass)) {
+ try {
+ if(List.class.isAssignableFrom(field.getType())) {
+ List children = (List) field.get(rush);
+ if (children != null) {
+ for (Rush child : children) {
+ joins.add(new BasicJoin(tableName, rush, child));
+ }
+ }
+ }
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ return tableName;
+ }
+ return null;
+ }
+
+
+ private void createManyJoins(Map> joinValues, final RushSaveStatementGeneratorCallback saveCallback) {
+ rushSqlInsertGenerator.createManyJoins(joinValues, saveCallback);
+ }
+
+ protected void createOrUpdateObjects(Map, List> valuesMap, final Map, List> columnsMap, final Map, AnnotationCache> annotationCache, final RushSaveStatementGeneratorCallback saveCallback) {
+ rushSqlInsertGenerator.createOrUpdateObjects(valuesMap, columnsMap, annotationCache, saveCallback);
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/RushSqlInsertGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/RushSqlInsertGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..863b24ff57185013522fed983e51bc4716cd93c2
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/RushSqlInsertGenerator.java"
@@ -0,0 +1,18 @@
+package co.uk.rushorm.core.implementation.Insert;
+
+import java.util.List;
+import java.util.Map;
+
+import co.uk.rushorm.core.AnnotationCache;
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.core.RushSaveStatementGeneratorCallback;
+
+/**
+ * Created by Stuart on 03/04/15.
+ */
+public interface RushSqlInsertGenerator {
+
+ public void createManyJoins(Map> joinValues, final RushSaveStatementGeneratorCallback saveCallback);
+ public void createOrUpdateObjects(Map, List> valuesMap, final Map, List> columnsMap, final Map, AnnotationCache> annotationCache, final RushSaveStatementGeneratorCallback saveCallback);
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/SqlBulkInsertGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/SqlBulkInsertGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..2135ed378b0e19e382f793bc739056c42d2bf74a
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/SqlBulkInsertGenerator.java"
@@ -0,0 +1,130 @@
+package co.uk.rushorm.core.implementation.Insert;
+
+import java.util.List;
+import java.util.Map;
+
+import co.uk.rushorm.core.AnnotationCache;
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.core.RushConfig;
+import co.uk.rushorm.core.RushMetaData;
+import co.uk.rushorm.core.RushSaveStatementGeneratorCallback;
+import co.uk.rushorm.core.implementation.ReflectionUtils;
+import co.uk.rushorm.core.implementation.RushSqlUtils;
+
+/**
+ * Created by Stuart on 03/04/15.
+ */
+public class SqlBulkInsertGenerator implements RushSqlInsertGenerator {
+
+ private final RushConfig rushConfig;
+
+ public SqlBulkInsertGenerator(RushConfig rushConfig) {
+ this.rushConfig = rushConfig;
+ }
+
+ @Override
+ public void createManyJoins(Map> joinValues, final RushSaveStatementGeneratorCallback saveCallback) {
+ for (final Map.Entry> entry : joinValues.entrySet()) {
+ final StringBuilder columnsString = new StringBuilder();
+ final List values = entry.getValue();
+
+ ReflectionUtils.doLoop(values.size(), ReflectionUtils.GROUP_SIZE, new ReflectionUtils.LoopCallBack() {
+ @Override
+ public void start() {
+ columnsString.delete(0, columnsString.length());
+ }
+
+ @Override
+ public void actionAtIndex(int index) {
+ columnsString.append("('")
+ .append(values.get(index).getParent().getId())
+ .append("','")
+ .append(values.get(index).getChild().getId())
+ .append("')");
+ }
+
+ @Override
+ public void join() {
+ columnsString.append(", ");
+ }
+
+ @Override
+ public void doAction() {
+ String sql = String.format(RushSqlUtils.MULTIPLE_INSERT_JOIN_TEMPLATE, entry.getKey(),
+ columnsString.toString());
+ saveCallback.createdOrUpdateStatement(sql);
+ }
+ });
+ }
+ }
+
+ @Override
+ public void createOrUpdateObjects(Map, List> valuesMap, Map, List> columnsMap, final Map, AnnotationCache> annotationCache, final RushSaveStatementGeneratorCallback saveCallback) {
+ for (final Map.Entry, List> entry : valuesMap.entrySet()) {
+
+ StringBuilder columnsBuilder = new StringBuilder();
+ columnsBuilder.append(RushSqlUtils.RUSH_ID)
+ .append(",")
+ .append(RushSqlUtils.RUSH_CREATED)
+ .append(",")
+ .append(RushSqlUtils.RUSH_UPDATED)
+ .append(",")
+ .append(RushSqlUtils.RUSH_VERSION)
+ .append(commaSeparated(columnsMap.get(entry.getKey())));
+
+ final String columns = columnsBuilder.toString();
+
+ final StringBuilder valuesString = new StringBuilder();
+ final List creates = entry.getValue();
+
+ ReflectionUtils.doLoop(creates.size(), ReflectionUtils.GROUP_SIZE, new ReflectionUtils.LoopCallBack() {
+ @Override
+ public void start() {
+ valuesString.delete(0, valuesString.length());
+ }
+
+ @Override
+ public void actionAtIndex(int index) {
+
+ RushMetaData rushMetaData = creates.get(index).rushMetaData;
+ rushMetaData.save();
+
+ valuesString.append("('")
+ .append(rushMetaData.getId())
+ .append("',")
+ .append(rushMetaData.getCreated())
+ .append(",")
+ .append(rushMetaData.getUpdated())
+ .append(",")
+ .append(rushMetaData.getVersion())
+ .append(commaSeparated(creates.get(index).values))
+ .append(")");
+ }
+
+ @Override
+ public void join() {
+ valuesString.append(", ");
+ }
+
+ @Override
+ public void doAction() {
+ String sql = String.format(rushConfig.usingMySql() ? RushSqlUtils.MULTIPLE_INSERT_UPDATE_TEMPLATE_MYSQL : RushSqlUtils.MULTIPLE_INSERT_UPDATE_TEMPLATE_SQLITE,
+ annotationCache.get(entry.getKey()).getTableName(),
+ columns,
+ valuesString.toString());
+
+ saveCallback.createdOrUpdateStatement(sql);
+ }
+ });
+ }
+ }
+
+ private String commaSeparated(List values) {
+ StringBuilder string = new StringBuilder();
+ for (int i = 0; i < values.size(); i++) {
+ string.append(",")
+ .append(values.get(i));
+ }
+ return string.toString();
+ }
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/SqlSingleInsertGenerator.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/SqlSingleInsertGenerator.java"
new file mode 100644
index 0000000000000000000000000000000000000000..75911cc97814dc775b7ccd7fad2dc76a839505e7
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/Insert/SqlSingleInsertGenerator.java"
@@ -0,0 +1,98 @@
+package co.uk.rushorm.core.implementation.Insert;
+
+import java.util.List;
+import java.util.Map;
+
+import co.uk.rushorm.core.AnnotationCache;
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.core.RushConfig;
+import co.uk.rushorm.core.RushMetaData;
+import co.uk.rushorm.core.RushSaveStatementGeneratorCallback;
+import co.uk.rushorm.core.implementation.ReflectionUtils;
+import co.uk.rushorm.core.implementation.RushSqlUtils;
+
+/**
+ * Created by Stuart on 03/04/15.
+ */
+public class SqlSingleInsertGenerator implements RushSqlInsertGenerator {
+
+ private final RushConfig rushConfig;
+
+ public SqlSingleInsertGenerator(RushConfig rushConfig) {
+ this.rushConfig = rushConfig;
+ }
+
+ @Override
+ public void createManyJoins(Map> joinValues, RushSaveStatementGeneratorCallback saveCallback) {
+ for (Map.Entry> entry : joinValues.entrySet()) {
+ List values = entry.getValue();
+
+ for (BasicJoin join : values) {
+ StringBuilder columnsString = new StringBuilder();
+ columnsString.append("('")
+ .append(join.getParent().getId())
+ .append("','")
+ .append(join.getChild().getId())
+ .append("')");
+
+ String sql = String.format(RushSqlUtils.MULTIPLE_INSERT_JOIN_TEMPLATE, entry.getKey(),
+ columnsString.toString());
+ saveCallback.createdOrUpdateStatement(sql);
+ }
+ }
+ }
+
+ @Override
+ public void createOrUpdateObjects(Map, List> valuesMap, Map, List> columnsMap, Map, AnnotationCache> annotationCache, RushSaveStatementGeneratorCallback saveCallback) {
+ for (Map.Entry, List> entry : valuesMap.entrySet()) {
+
+ StringBuilder columnsBuilder = new StringBuilder();
+ columnsBuilder.append(RushSqlUtils.RUSH_ID)
+ .append(",")
+ .append(RushSqlUtils.RUSH_CREATED)
+ .append(",")
+ .append(RushSqlUtils.RUSH_UPDATED)
+ .append(",")
+ .append(RushSqlUtils.RUSH_VERSION)
+ .append(commaSeparated(columnsMap.get(entry.getKey())));
+
+ String columns = columnsBuilder.toString();
+ List creates = entry.getValue();
+
+ for (BasicUpdate update : creates) {
+ RushMetaData rushMetaData = update.rushMetaData;
+ rushMetaData.save();
+
+ StringBuilder valuesString = new StringBuilder();
+ valuesString.append("('")
+ .append(rushMetaData.getId())
+ .append("',")
+ .append(rushMetaData.getCreated())
+ .append(",")
+ .append(rushMetaData.getUpdated())
+ .append(",")
+ .append(rushMetaData.getVersion())
+ .append(commaSeparated(update.values))
+ .append(")");
+
+ String sql = String.format(rushConfig.usingMySql() ? RushSqlUtils.MULTIPLE_INSERT_UPDATE_TEMPLATE_MYSQL : RushSqlUtils.MULTIPLE_INSERT_UPDATE_TEMPLATE_SQLITE,
+ annotationCache.get(entry.getKey()).getTableName(),
+ columns,
+ valuesString.toString());
+
+ saveCallback.createdOrUpdateStatement(sql);
+ }
+ }
+ }
+
+
+ private String commaSeparated(List values) {
+ StringBuilder string = new StringBuilder();
+ for (int i = 0; i < values.size(); i++) {
+ string.append(",")
+ .append(values.get(i));
+ }
+ return string.toString();
+ }
+
+}
diff --git "a/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/ReflectionClassLoader.java" "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/ReflectionClassLoader.java"
new file mode 100644
index 0000000000000000000000000000000000000000..c82eaaba2ed4f847c54686447686631fb70f5e33
--- /dev/null
+++ "b/OpenHarmonyAPP\345\274\200\345\217\221\345\255\246\344\271\240\346\272\220\347\240\201\344\275\223\347\263\273/3\343\200\201\345\270\270\347\224\250\347\273\204\344\273\266\346\272\220\347\240\201/RushOrm/rushcore/src/main/java/co/uk/rushorm/core/implementation/ReflectionClassLoader.java"
@@ -0,0 +1,276 @@
+package co.uk.rushorm.core.implementation;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import co.uk.rushorm.core.AnnotationCache;
+import co.uk.rushorm.core.Rush;
+import co.uk.rushorm.core.RushClassLoader;
+import co.uk.rushorm.core.RushColumns;
+import co.uk.rushorm.core.RushConfig;
+import co.uk.rushorm.core.RushListField;
+import co.uk.rushorm.core.RushMetaData;
+import co.uk.rushorm.core.RushPageList;
+import co.uk.rushorm.core.RushStatementRunner;
+import co.uk.rushorm.core.exceptions.RushClassNotFoundException;
+
+/**
+ * Created by Stuart on 14/12/14.
+ */
+public class ReflectionClassLoader implements RushClassLoader {
+
+
+
+ private class Join {
+ private final Rush parent;
+ private final String tableName;
+ private final Field field;
+ private Join(Rush parentId, String tableName, Field field) {
+ this.parent = parentId;
+ this.tableName = tableName;
+ this.field = field;
+ }
+ }
+
+ private final RushConfig rushConfig;
+
+ public ReflectionClassLoader(RushConfig rushConfig) {
+ this.rushConfig = rushConfig;
+ }
+
+ private interface AttachChild {
+ public void attach(T object, List values) throws IllegalAccessException;
+ }
+
+ @Override
+ public List loadClasses(Class clazz, RushColumns rushColumns, Map, AnnotationCache> annotationCache, RushStatementRunner.ValuesCallback valuesCallback, LoadCallback callback) {
+ return loadClasses(clazz, rushColumns, annotationCache, valuesCallback, callback, new HashMap>(), null);
+ }
+
+ public List loadClasses(Class clazz, RushColumns rushColumns, Map, AnnotationCache> annotationCache, RushStatementRunner.ValuesCallback valuesCallback, LoadCallback callback, Map> loadedClasses, AttachChild attachChild) {
+ try {
+
+ Map> joins = new HashMap<>();
+ Map> joinTables = new HashMap<>();
+
+ List results = new ArrayList<>();
+ while(valuesCallback.hasNext()) {
+ List valuesList = valuesCallback.next();
+ T object = loadClass(clazz, rushColumns, annotationCache, valuesList, joins, joinTables, loadedClasses, callback);
+ results.add(object);
+ if(attachChild != null) {
+ attachChild.attach(object, valuesList);
+ }
+ }
+ valuesCallback.close();
+
+ for (Map.Entry> entry : joins.entrySet()) {
+ addChildrenToList(entry.getKey(), rushColumns, annotationCache, entry.getValue(), joinTables.get(entry.getKey()), loadedClasses, callback);
+ }
+
+ return results;
+ } catch (InstantiationException | ClassNotFoundException | IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private T loadClass(Class clazz, RushColumns rushColumns, Map, AnnotationCache> annotationCache, List values, Map> joins, Map> joinTables, Map> loadedClasses, LoadCallback callback) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
+
+ if(annotationCache.get(clazz) == null) {
+ throw new RushClassNotFoundException(clazz);
+ }
+
+ RushMetaData rushMetaData = new RushMetaData(values.get(0), Long.parseLong(values.get(1)), Long.parseLong(values.get(2)), Long.parseLong(values.get(3)));
+
+ if(!loadedClasses.containsKey(clazz)) {
+ loadedClasses.put(clazz, new HashMap());
+ }
+ if(loadedClasses.get(clazz).containsKey(rushMetaData.getId())) {
+ return loadedClasses.get(clazz).get(rushMetaData.getId());
+ }
+ T object = clazz.newInstance();
+
+ List fields = new ArrayList<>();
+ ReflectionUtils.getAllFields(fields, clazz, rushConfig.orderColumnsAlphabetically());
+
+ int counter = 4; /* Skip rush_id, rush_created, rush_updated and rush_version */
+ for (Field field : fields) {
+ field.setAccessible(true);
+ if (!annotationCache.get(clazz).getFieldToIgnore().contains(field.getName())) {
+ if (!loadJoinField(object, rushMetaData.getId(), rushColumns, annotationCache, field, joins, joinTables)) {
+ if(rushColumns.supportsField(field)) {
+ String value = values.get(counter);
+ if(value != null && !value.equals("null")) {
+ rushColumns.setField(object, field, value);
+ }
+ counter++;
+ }
+ }
+ }
+ }
+
+ loadedClasses.get(clazz).put(rushMetaData.getId(), object);
+ callback.didLoadObject(object, rushMetaData);
+
+ return object;
+ }
+
+ private boolean loadJoinField(T object, String id, RushColumns rushColumns, Map, AnnotationCache> annotationCache, Field field, Map> joins, Map> joinTables) {
+ Class clazz = null;
+ if (Rush.class.isAssignableFrom(field.getType())) {
+ clazz = field.getType();
+ } else if(annotationCache.get(object.getClass()).getListsClasses().containsKey(field.getName())){
+ if(RushListField.class.isAssignableFrom(field.getType())) {
+ Class listType = annotationCache.get(object.getClass()).getListsTypes().get(field.getName());
+ if(!RushListField.class.isAssignableFrom(listType)) {
+ listType = RushPageList.class;
+ }
+ try {
+ Constructor extends List> constructor = listType.getConstructor();
+ RushListField rushListField = (RushListField)constructor.newInstance();
+ rushListField.setDetails(object, id, field.getName(), annotationCache.get(object.getClass()).getListsClasses().get(field.getName()));
+ field.set(object, rushListField);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ clazz = annotationCache.get(object.getClass()).getListsClasses().get(field.getName());
+ }
+ }
+ if(clazz != null) {
+ if(!joins.containsKey(clazz)) {
+ joins.put(clazz, new ArrayList());
+ joinTables.put(clazz, new ArrayList());
+ }
+ if(annotationCache.get(clazz) == null) {
+ throw new RushClassNotFoundException(clazz);
+ }
+ String tableName = ReflectionUtils.joinTableNameForClass(annotationCache.get(object.getClass()).getTableName(), annotationCache.get(clazz).getTableName(), field.getName());
+ joins.get(clazz).add(new Join(object, tableName, field));
+ if(!joinTables.get(clazz).contains(tableName)) {
+ joinTables.get(clazz).add(tableName);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ private static final String SELECT_CHILDREN = "SELECT * from %s \n" +
+ "%s" +
+ "WHERE %s;";
+
+ private void addChildrenToList(final Class clazz, final RushColumns rushColumns, final Map, AnnotationCache> annotationCache, final List joins, final List