VersionHelper.java 1.88 KB
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;
    }
}