TableUtils.java

/*
 * Decompiled with CFR 0_132.
 */
package org.xutils.db.table;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.LinkedHashMap;
import org.xutils.common.util.LogUtil;
import org.xutils.db.annotation.Column;
import org.xutils.db.converter.ColumnConverterFactory;
import org.xutils.db.table.ColumnEntity;

final class TableUtils {
    private TableUtils() {
    }

    static synchronized LinkedHashMap<String, ColumnEntity> findColumnMap(Class<?> entityType) {
        LinkedHashMap<String, ColumnEntity> columnMap = new LinkedHashMap<String, ColumnEntity>();
        TableUtils.addColumns2Map(entityType, columnMap);
        return columnMap;
    }

    private static void addColumns2Map(Class<?> entityType, HashMap<String, ColumnEntity> columnMap) {
        if (Object.class.equals(entityType)) {
            return;
        }
        try {
            Field[] fields;
            for (Field field : fields = entityType.getDeclaredFields()) {
                ColumnEntity column;
                Column columnAnn;
                int modify = field.getModifiers();
                if (Modifier.isStatic(modify) || Modifier.isTransient(modify) || (columnAnn = field.getAnnotation(Column.class)) == null || !ColumnConverterFactory.isSupportColumnConverter(field.getType()) || columnMap.containsKey((column = new ColumnEntity(entityType, field, columnAnn)).getName())) continue;
                columnMap.put(column.getName(), column);
            }
            TableUtils.addColumns2Map(entityType.getSuperclass(), columnMap);
        }
        catch (Throwable e) {
            LogUtil.e(e.getMessage(), e);
        }
    }
}