1
1
package dev.matrix.roomigrant.compiler
2
2
3
3
import com.squareup.kotlinpoet.*
4
+ import dev.matrix.roomigrant.AfterMigrationRule
5
+ import dev.matrix.roomigrant.BeforeMigrationRule
4
6
import dev.matrix.roomigrant.FieldMigrationRule
5
7
import dev.matrix.roomigrant.GenerateRoomMigrations
6
8
import dev.matrix.roomigrant.compiler.data.Scheme
7
- import dev.matrix.roomigrant.compiler.rules.FieldRule
8
- import dev.matrix.roomigrant.compiler.rules.FieldRules
9
- import dev.matrix.roomigrant.compiler.rules.RulesHolder
9
+ import dev.matrix.roomigrant.compiler.rules.*
10
10
import javax.annotation.processing.ProcessingEnvironment
11
11
import javax.lang.model.element.ElementKind
12
12
import javax.lang.model.element.TypeElement
@@ -17,7 +17,7 @@ import javax.tools.StandardLocation
17
17
/* *
18
18
* @author matrixdev
19
19
*/
20
- @Suppress(" UNCHECKED_CAST" )
20
+ @Suppress(" UNCHECKED_CAST" , " MemberVisibilityCanBePrivate " )
21
21
class Database (val environment : ProcessingEnvironment , element : TypeElement ) {
22
22
23
23
val migrationType = ClassName (" android.arch.persistence.room.migration" , " Migration" )
@@ -29,8 +29,8 @@ class Database(val environment: ProcessingEnvironment, element: TypeElement) {
29
29
val elementClassName = element.asClassName().simpleName()
30
30
val migrationListClassName = ClassName (packageName, " ${elementClassName} _Migrations" )
31
31
32
+ val rules = Rules ()
32
33
val migrations = ArrayList <Migration >()
33
- val fieldRules = FieldRules ()
34
34
val rulesHolderList = ArrayList <RulesHolder >()
35
35
36
36
init {
@@ -48,7 +48,17 @@ class Database(val environment: ProcessingEnvironment, element: TypeElement) {
48
48
49
49
method.getAnnotation(FieldMigrationRule ::class .java)?.also {
50
50
val rule = FieldRule (this , holder, method.simpleName.toString())
51
- fieldRules.put(it.version1, it.version2, it.table, it.field, rule)
51
+ rules.putFieldRule(it.version1, it.version2, it.table, it.field, rule)
52
+ }
53
+
54
+ method.getAnnotation(BeforeMigrationRule ::class .java)?.also {
55
+ val rule = LifecycleRule (this , holder, method.simpleName.toString())
56
+ rules.putBeforeRule(it.version1, it.version2, rule)
57
+ }
58
+
59
+ method.getAnnotation(AfterMigrationRule ::class .java)?.also {
60
+ val rule = LifecycleRule (this , holder, method.simpleName.toString())
61
+ rules.putAfterRule(it.version1, it.version2, rule)
52
62
}
53
63
}
54
64
0 commit comments