Skip to content

Commit 34d96e6

Browse files
committed
Android & DbFlow example
1 parent ec0a0b2 commit 34d96e6

35 files changed

+711
-0
lines changed

gradle/android-dbflow/.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Directories
2+
.gradle/
3+
.idea/
4+
.navigation/
5+
build/
6+
captures/
7+
8+
# Files
9+
.DS_Store
10+
com_crashlytics_export_strings.xml
11+
crashlytics-build.properties
12+
local.properties
13+
14+
# Extensions
15+
*.iml

gradle/android-dbflow/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# kotlin-poc
2+
A test using Kotlin (kapt) + DBFlow
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
buildscript {
2+
ext.kotlin_version = '1.0.0-beta-1038'
3+
4+
repositories {
5+
jcenter()
6+
}
7+
8+
dependencies {
9+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
10+
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
11+
}
12+
}
13+
14+
apply plugin: 'com.android.application'
15+
apply plugin: 'kotlin-android'
16+
17+
android {
18+
compileSdkVersion 23
19+
buildToolsVersion '23.0.1'
20+
21+
defaultConfig {
22+
minSdkVersion 14
23+
targetSdkVersion 23
24+
versionCode 1
25+
versionName '1.0'
26+
}
27+
sourceSets {
28+
main.java.srcDirs += 'src/main/kotlin'
29+
}
30+
31+
}
32+
33+
dependencies {
34+
// Android Support Libraries
35+
compile 'com.android.support:appcompat-v7:23.1.0'
36+
compile 'com.android.support:cardview-v7:23.1.0'
37+
compile 'com.android.support:recyclerview-v7:23.1.0'
38+
39+
// DBFlow
40+
kapt 'com.raizlabs.android:DBFlow-Compiler:2.2.1'
41+
compile 'com.raizlabs.android:DBFlow-Core:2.2.1'
42+
compile 'com.raizlabs.android:DBFlow:2.2.1'
43+
44+
// Kotlin
45+
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
46+
47+
}
48+
49+
kapt {
50+
generateStubs = true
51+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest
3+
package="mobi.porquenao.poc.kotlin"
4+
xmlns:android="http://schemas.android.com/apk/res/android">
5+
6+
<application
7+
android:name=".DatabaseApplication"
8+
android:allowBackup="false"
9+
android:icon="@drawable/ic_launcher"
10+
android:label="@string/app_name"
11+
android:theme="@style/AppTheme">
12+
13+
<activity
14+
android:name=".ui.MainActivity">
15+
<intent-filter>
16+
<action android:name="android.intent.action.MAIN"/>
17+
<category android:name="android.intent.category.LAUNCHER"/>
18+
</intent-filter>
19+
</activity>
20+
21+
</application>
22+
23+
</manifest>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package mobi.porquenao.poc.kotlin
2+
3+
import android.app.Application
4+
5+
import com.raizlabs.android.dbflow.config.FlowManager
6+
7+
public class DatabaseApplication : Application() {
8+
9+
override fun onCreate() {
10+
super.onCreate()
11+
FlowManager.init(this)
12+
}
13+
14+
override fun onTerminate() {
15+
super.onTerminate()
16+
FlowManager.destroy()
17+
}
18+
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package mobi.porquenao.poc.kotlin.core
2+
3+
import com.raizlabs.android.dbflow.annotation.Database
4+
5+
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION, generatedClassSeparator = "_")
6+
public object AppDatabase {
7+
const val NAME: String = "app"
8+
const val VERSION: Int = 1
9+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package mobi.porquenao.poc.kotlin.core
2+
3+
import com.raizlabs.android.dbflow.converter.TypeConverter
4+
import com.raizlabs.android.dbflow.annotation.TypeConverter as TypeConverterAnnotation
5+
import java.util.Calendar
6+
7+
@TypeConverterAnnotation
8+
public class CalendarConverter : TypeConverter<Long, Calendar>() {
9+
10+
override fun getDBValue(model: Calendar): Long? {
11+
return model.timeInMillis
12+
}
13+
14+
override fun getModelValue(data: Long?): Calendar {
15+
val calendar = Calendar.getInstance()
16+
calendar.timeInMillis = data!!
17+
return calendar
18+
}
19+
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package mobi.porquenao.poc.kotlin.core
2+
3+
import com.raizlabs.android.dbflow.annotation.Column
4+
import com.raizlabs.android.dbflow.annotation.PrimaryKey
5+
import com.raizlabs.android.dbflow.annotation.Table
6+
import com.raizlabs.android.dbflow.structure.BaseModel
7+
8+
import java.util.Calendar
9+
10+
@Table(tableName = "items", databaseName = AppDatabase.NAME)
11+
public class Item : BaseModel() {
12+
13+
@PrimaryKey(autoincrement = true)
14+
@Column(name = "id")
15+
public var id: Long = 0
16+
17+
@Column(name = "updated_at")
18+
public var updatedAt: Calendar = Calendar.getInstance()
19+
20+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package mobi.porquenao.poc.kotlin.core
2+
3+
import com.raizlabs.android.dbflow.sql.language.From
4+
import com.raizlabs.android.dbflow.sql.language.Select
5+
import com.raizlabs.android.dbflow.structure.Model
6+
7+
public object ItemRepository {
8+
9+
public fun getAll(): MutableList<Item> {
10+
return Select()
11+
.from(Item::class.java)
12+
.where()
13+
.orderBy(false, Item_Table.UPDATED_AT)
14+
.queryList()
15+
}
16+
17+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package mobi.porquenao.poc.kotlin.ui
2+
3+
import android.app.ActivityManager
4+
import android.graphics.BitmapFactory
5+
import android.os.Build
6+
import android.os.Bundle
7+
import android.support.v7.app.AppCompatActivity
8+
import mobi.porquenao.poc.kotlin.R
9+
import kotlinx.android.synthetic.main.*
10+
11+
public abstract class BaseActivity : AppCompatActivity() {
12+
13+
override fun onCreate(savedInstanceState: Bundle?) {
14+
super.onCreate(savedInstanceState)
15+
prepareTaskDescription()
16+
}
17+
18+
override fun setContentView(layoutResID: Int) {
19+
super.setContentView(layoutResID)
20+
setSupportActionBar(toolbar)
21+
}
22+
23+
private fun prepareTaskDescription() {
24+
if (Build.VERSION.SDK_INT >= 21) {
25+
if (sTaskDescription == null) {
26+
val label = getString(R.string.app_name)
27+
val icon = BitmapFactory.decodeResource(resources, R.drawable.ic_task)
28+
val colorPrimary = resources.getColor(R.color.app_primary_500)
29+
sTaskDescription = ActivityManager.TaskDescription(label, icon, colorPrimary)
30+
}
31+
setTaskDescription(sTaskDescription)
32+
}
33+
}
34+
35+
companion object {
36+
private var sTaskDescription: ActivityManager.TaskDescription? = null
37+
}
38+
}

0 commit comments

Comments
 (0)