Skip to content

Commit 506c6e8

Browse files
authored
Merge pull request #4 from wisdomrider/sqlite
Sqlite
2 parents 87579eb + 2c6ddb6 commit 506c6e8

26 files changed

Lines changed: 1341 additions & 11 deletions

.idea/codeStyles/Project.xml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencies {
3939

4040
implementation 'com.google.android.material:material:1.1.0-alpha10'
4141

42-
42+
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
4343

4444

4545
implementation project(path: ':lazylibrary')

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
android:supportsRtl="true"
1515
android:theme="@style/AppTheme"
1616
tools:ignore="GoogleAppIndexingWarning">
17-
<activity android:name=".bottomnavigation.BottomNavigationView"></activity>
17+
<activity android:name=".sqlite.AddOrUpdateActivity"></activity>
18+
<activity android:name=".sqlite.SqliteActivity" />
19+
<activity android:name=".bottomnavigation.BottomNavigationView" />
1820
<activity android:name=".fetchdata.FetchindDataFromServer" />
1921
<activity android:name=".mapactivity.MapActivity" />
2022

app/src/main/java/org/wisdomrider/lazylibrarydemo/App.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.wisdomrider.lazylibrarydemo
22

33
import org.wisdomrider.lazylibrary.LazyApp
44
import org.wisdomrider.lazylibrary.modules.*
5+
import org.wisdomrider.lazylibrary.modules.sqlite.SqliteModule
56
import org.wisdomrider.lazylibrarydemo.api.Api
67

78
class App : LazyApp() {
@@ -13,10 +14,11 @@ class App : LazyApp() {
1314
inject(MapModule::class.java)
1415
inject(BroadCastModule::class.java)
1516
inject(BottomNavigationModule::class.java)
16-
1717
api = inject(RetrofitModule::class.java)
18-
.buildRetrofit("https://jsonplaceholder.typicode.com", Api::class.java)
18+
.build("https://jsonplaceholder.typicode.com", Api::class.java)
1919
.create(Api::class.java)
20+
inject(SqliteModule::class.java)
21+
.build("DB_NAME")
2022
}
2123
}
2224

app/src/main/java/org/wisdomrider/lazylibrarydemo/MainActivity.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,30 @@ package org.wisdomrider.lazylibrarydemo
22

33
import android.content.Intent
44
import android.os.Bundle
5+
import android.util.Log
56
import android.view.Menu
67
import android.view.MenuItem
78
import org.wisdomrider.lazylibrary.LazyBase
9+
import org.wisdomrider.lazylibrary.lazyMap
810
import org.wisdomrider.lazylibrary.modules.receiveBroadcast
911
import org.wisdomrider.lazylibrary.modules.sendBroadCast
12+
import org.wisdomrider.lazylibrary.modules.sqlite.*
13+
import org.wisdomrider.lazylibrary.modules.sqlite.SQLITECONSTANTS.AND
14+
import org.wisdomrider.lazylibrary.modules.sqlite.SQLITECONSTANTS.OR
1015
import org.wisdomrider.lazylibrary.modules.toast
1116
import org.wisdomrider.lazylibrarydemo.bottomnavigation.BottomNavigationView
1217
import org.wisdomrider.lazylibrarydemo.fetchdata.FetchindDataFromServer
1318
import org.wisdomrider.lazylibrarydemo.mapactivity.MapActivity
19+
import org.wisdomrider.lazylibrarydemo.sqlite.SqliteActivity
1420

1521
class MainActivity : LazyBase() {
1622

23+
24+
1725
override fun onCreate(savedInstanceState: Bundle?) {
1826
super.onCreate(savedInstanceState)
1927
setContentView(R.layout.activity_main)
28+
2029
}
2130

2231

@@ -42,7 +51,10 @@ class MainActivity : LazyBase() {
4251
val intent = Intent()
4352
intent.putExtra("key", "Hello broadCast !")
4453
intent.sendBroadCast().lazy()
54+
}
4555

56+
R.id.action_sq_lite_example -> {
57+
openActivity(SqliteActivity::class.java)
4658
}
4759

4860
R.id.action_bottom_nav_view -> {
@@ -52,6 +64,4 @@ class MainActivity : LazyBase() {
5264
}
5365
return super.onOptionsItemSelected(item)
5466
}
55-
56-
5767
}

app/src/main/java/org/wisdomrider/lazylibrarydemo/fetchdata/FetchindDataFromServer.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class FetchindDataFromServer : LazyBase() {
1919
supportActionBar!!.title="Retrofit and Recycler Module Example"
2020
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
2121
var api = (application as App).api
22+
2223
api.list()
2324
.get({
2425
rv_fetchdata.lazyAdapter(it.body()!!, R.layout.item)
@@ -31,6 +32,7 @@ class FetchindDataFromServer : LazyBase() {
3132
it.message!!.toast().lazy()
3233

3334
})
35+
3436
rv_fetchdata.linearLayoutManager().lazy()
3537
}
3638
}

app/src/main/java/org/wisdomrider/lazylibrarydemo/mapactivity/MapActivity.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.wisdomrider.lazylibrarydemo.mapactivity
22

3-
import androidx.appcompat.app.AppCompatActivity
43
import android.os.Bundle
54
import com.google.android.gms.maps.CameraUpdateFactory
65
import com.google.android.gms.maps.model.LatLng
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package org.wisdomrider.lazylibrarydemo.sqlite
2+
3+
import android.content.Intent
4+
import android.os.Bundle
5+
import kotlinx.android.synthetic.main.activity_add_or_update.*
6+
import kotlinx.android.synthetic.main.dialog.*
7+
import org.wisdomrider.lazylibrary.LazyBase
8+
import org.wisdomrider.lazylibrary.lazyMap
9+
import org.wisdomrider.lazylibrary.modules.sqlite.SQLITECONSTANTS.AND
10+
import org.wisdomrider.lazylibrary.modules.sqlite.SQLITECONSTANTS.OR
11+
import org.wisdomrider.lazylibrary.modules.sqlite.insert
12+
import org.wisdomrider.lazylibrary.modules.sqlite.update
13+
import org.wisdomrider.lazylibrary.modules.sqlite.updateTable
14+
import org.wisdomrider.lazylibrary.modules.sqlite.where
15+
import org.wisdomrider.lazylibrary.modules.toast
16+
import org.wisdomrider.lazylibrarydemo.R
17+
import org.wisdomrider.lazylibrarydemo.utils.BOOK
18+
import org.wisdomrider.lazylibrarydemo.utils.IS_CALLED_FROM_UPDATE
19+
20+
class AddOrUpdateActivity : LazyBase() {
21+
var iscalledFromUpdate: Boolean = false
22+
override fun onCreate(savedInstanceState: Bundle?) {
23+
super.onCreate(savedInstanceState)
24+
setContentView(R.layout.activity_add_or_update)
25+
supportActionBar!!.title = "Add or update Books"
26+
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
27+
var bundle = intent.extras
28+
iscalledFromUpdate = bundle[IS_CALLED_FROM_UPDATE] as Boolean
29+
30+
if(iscalledFromUpdate) {
31+
var books = intent.extras[BOOK] as Books
32+
et_book_name.setText(books.name)
33+
et_book_author.setText(books.author)
34+
et_book_price.setText(books.price.toString())
35+
et_book_description.setText(books.description)
36+
}
37+
38+
btn_insert_or_update.setOnClickListener {
39+
var bookName = et_book_name.text.toString()
40+
var bookAuthor = et_book_author.text.toString()
41+
var bookPrice = et_book_price.text.toString().toDouble()
42+
var bookDescription = et_book_description.text.toString()
43+
if (!iscalledFromUpdate) {
44+
// set property on Book object
45+
var books = Books(
46+
name = bookName,
47+
price = bookPrice,
48+
author = bookAuthor,
49+
description = bookDescription
50+
)
51+
addBooksOnsqliteDatabase(books)
52+
} else {
53+
var books = intent.extras[BOOK] as Books
54+
books.name = bookName
55+
books.author = bookAuthor
56+
books.price = bookPrice
57+
books.description = bookDescription
58+
// books.updateTable().lazy()
59+
books
60+
.update(type = OR, condition = lazyMap("id" to books.id
61+
62+
)
63+
, autoInsert = false
64+
).lazy()
65+
66+
67+
68+
"Update Sucessfully".toast().lazy()
69+
var intent = Intent(this, SqliteActivity::class.java)
70+
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
71+
startActivity(intent)
72+
}
73+
}
74+
}
75+
76+
77+
private fun addBooksOnsqliteDatabase(books: Books) {
78+
books.insert().lazy()
79+
"Insert sucessfully".toast().lazy()
80+
var intent = Intent(this, SqliteActivity::class.java)
81+
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
82+
startActivity(intent)
83+
/* Books().createTable().lazy()
84+
Books().removeAll().lazy()
85+
Books("a2x", "'Book2", 10, 21312).insert().lazy()
86+
87+
88+
Books("a1x", "'Book2", 10, 21312)
89+
.update(type = OR, condition = lazyMap("id" to "a1x", "price" to 10)
90+
, autoInsert = false
91+
).lazy()
92+
93+
94+
Books().where(type = AND, condition = lazyMap("id" to "a1x", "price" to 10)) {
95+
Log.e("UPDATE", "A")
96+
}.lazy()
97+
98+
Books().delete(type = AND, condition = lazyMap("id" to "a1x", "price" to 10)).lazy()
99+
100+
"select * from Books".rawQuery {
101+
Log.e("CURSOR",it.toString());
102+
}.lazy()*/
103+
104+
}
105+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.wisdomrider.lazylibrarydemo.sqlite
2+
3+
import org.wisdomrider.lazylibrary.modules.sqlite.SqliteAnnotations
4+
import java.io.Serializable
5+
6+
class Books(
7+
@SqliteAnnotations.Primary
8+
@SqliteAnnotations.AutoIncrement
9+
var id: Int?= null,
10+
var name: String? = "In Search of Lost Time",
11+
var price: Double? = 40.00,
12+
var author: String? = "Marcel Proust",
13+
var description: String? = "Swann's Way, the first part of A la recherche de temps perdu, Marcel Proust's seven-part cycle, was published in 1913. In it, Proust introduces the themes that run through the entire work."
14+
): Serializable
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package org.wisdomrider.lazylibrarydemo.sqlite
2+
3+
import android.content.Intent
4+
import android.os.Bundle
5+
import android.util.Log
6+
import kotlinx.android.synthetic.main.activity_sqlite.*
7+
import kotlinx.android.synthetic.main.row_books.view.*
8+
import org.wisdomrider.lazylibrary.LazyBase
9+
import org.wisdomrider.lazylibrary.modules.LazyAdapter
10+
import org.wisdomrider.lazylibrary.modules.lazyAdapter
11+
import org.wisdomrider.lazylibrary.modules.linearLayoutManager
12+
import org.wisdomrider.lazylibrary.modules.sqlite.*
13+
import org.wisdomrider.lazylibrary.modules.toast
14+
import org.wisdomrider.lazylibrarydemo.R
15+
import org.wisdomrider.lazylibrarydemo.utils.BOOK
16+
import org.wisdomrider.lazylibrarydemo.utils.IS_CALLED_FROM_UPDATE
17+
18+
class SqliteActivity : LazyBase() {
19+
lateinit var adapter: LazyAdapter<Books>
20+
lateinit var list: ArrayList<Books>
21+
override fun onCreate(savedInstanceState: Bundle?) {
22+
super.onCreate(savedInstanceState)
23+
setContentView(R.layout.activity_sqlite)
24+
supportActionBar!!.title = "Sq lite Example"
25+
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
26+
// Creating book table on Sq lite database
27+
Books().createTable().lazy()
28+
// Getting all book
29+
getAllBooksFromDatabase()
30+
adapter = rv_books.lazyAdapter(list, R.layout.row_books)
31+
{ wisdomHolder: LazyAdapter.WisdomHolder, index: Int, books: Books ->
32+
wisdomHolder.itemView.tv_book_name.text = books.name
33+
wisdomHolder.itemView.tv_book_price.text = "$ ${books.price}"
34+
wisdomHolder.itemView.tv__book_description.text = books.description
35+
wisdomHolder.itemView.tv__book_author.text = books.author
36+
wisdomHolder.itemView.btn_update.setOnClickListener {
37+
updateBooks(books)
38+
}
39+
40+
wisdomHolder.itemView.btn_delete.setOnClickListener {
41+
books.deleteOne().lazy()
42+
list.removeAt(index)
43+
adapter.notifyItemRemoved(index)
44+
/*getAllBooksFromDatabase()
45+
adapter.notifyDataSetChanged()*/
46+
47+
}
48+
}
49+
rv_books.linearLayoutManager().lazy()
50+
btn_add_books.setOnClickListener {
51+
var intent = Intent(this, AddOrUpdateActivity::class.java)
52+
var bundle = Bundle()
53+
bundle.putBoolean(IS_CALLED_FROM_UPDATE, false)
54+
intent.putExtras(bundle)
55+
startActivity(intent)
56+
}
57+
58+
btn_remove_all.setOnClickListener {
59+
removeAllBooksFromDatabase()
60+
}
61+
}
62+
63+
64+
private fun updateBooks(book: Books) {
65+
var intent = Intent(this, AddOrUpdateActivity::class.java)
66+
var bundle = Bundle()
67+
bundle.putBoolean(IS_CALLED_FROM_UPDATE, true)
68+
bundle.putSerializable(BOOK,book)
69+
intent.putExtras(bundle)
70+
startActivity(intent)
71+
}
72+
73+
private fun removeAllBooksFromDatabase() {
74+
Books().removeAll().lazy()
75+
list.clear()
76+
adapter.notifyDataSetChanged()
77+
getAllBooksFromDatabase()
78+
}
79+
80+
private fun getAllBooksFromDatabase() {
81+
Books().getAll() {
82+
list = it!!
83+
if (it.size == 0) {
84+
"No data on Database".toast().lazy()
85+
}
86+
}.lazy()
87+
}
88+
}

0 commit comments

Comments
 (0)