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> init(Class clazz,String dbName) { SparseArray> 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 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; } }