VersionHelper.java
1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.shunzhi.parent.annotation;
import android.text.TextUtils;
import android.util.SparseArray;
import org.greenrobot.greendao.annotation.Entity;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import timber.log.Timber;
/**
* Created by 10501 on 2018/3/28.
*/
public class VersionHelper {
private static final String sql_insert = "ALTER table %s INSERT ADD COLUMN %s %s";
private static final String sql_update = "UPDATE table message SET %s = '%s' WHERE %s = '%s'";
public static SparseArray<List<String>> init(Class clazz,String dbName) {
SparseArray<List<String>> array = new SparseArray<>();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
AddColumn column = field.getAnnotation(AddColumn.class);
if (column != null) {
Timber.i("---==== :fieldName= %s version :%s fieldClass : %s", field.getName()
, column.version(), field.getType());
Integer version = column.version();
List<String> sqlList = array.get(version);
if (sqlList == null) {
sqlList = new ArrayList<>();
array.put(version, sqlList);
}
if (field.getType().getSimpleName().equalsIgnoreCase("string")) {
String sql = String.format(sql_insert, dbName, field.getName(), "TEXT");
sqlList.add(sql);
} else if ("integer".equalsIgnoreCase(field.getType().getSimpleName())) {
String sql = String.format(sql_insert, dbName, field.getName(), "INTEGER");
sqlList.add(sql);
} else {
//其他类型使用到的时候再写
Timber.i("类型检测失败");
}
}
}
return array;
}
}