智能工厂.apk(点击下载) / SqlTool.java


package com.baidu.tts.tools;

import android.text.TextUtils;
import com.fasterxml.jackson.core.util.MinimalPrettyPrinter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;

public class SqlTool {
    public static String sqlDropTable(String str) {
        return "drop table if exists " + str;
    }

    public static String sqlCreateTable(String str, Object[] objArr) {
        if (!(str == null || objArr == null)) {
            Object obj = objArr[0];
            Class<?> cls = obj.getClass();
            try {
                Method supportedMethod = ReflectTool.getSupportedMethod(cls, "getColumnName", null);
                Method supportedMethod2 = ReflectTool.getSupportedMethod(cls, "getDataType", null);
                StringBuilder sb = new StringBuilder("create Table " + str);
                String a = a(supportedMethod, supportedMethod2, obj);
                if (a != null) {
                    sb.append(" (" + a);
                    int length = objArr.length;
                    for (int i = 1; i < length; i++) {
                        sb.append(",");
                        sb.append(a(supportedMethod, supportedMethod2, objArr[i]));
                    }
                    sb.append(")");
                    return sb.toString();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    private static String a(Method method, Method method2, Object obj) {
        String a;
        String a2 = a(method, obj);
        if (a2 == null || (a = a(method2, obj)) == null) {
            return null;
        }
        return a2 + MinimalPrettyPrinter.DEFAULT_ROOT_VALUE_SEPARATOR + a;
    }

    private static String a(Method method, Object obj) {
        try {
            return (String) method.invoke(obj, null);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e2) {
            e2.printStackTrace();
        } catch (InvocationTargetException e3) {
            e3.printStackTrace();
        }
        return null;
    }

    public static String buildConditions(String str, String... strArr) {
        if (TextUtils.isEmpty(str) || strArr == null || strArr.length == 0) {
            return null;
        }
        ArrayList arrayList = new ArrayList();
        for (String str2 : strArr) {
            if (!StringTool.isEmpty(str2)) {
                arrayList.add(str2);
            }
        }
        StringBuilder sb = new StringBuilder();
        Iterator it = arrayList.iterator();
        if (it.hasNext()) {
            sb.append((String) it.next());
        }
        while (it.hasNext()) {
            sb.append(MinimalPrettyPrinter.DEFAULT_ROOT_VALUE_SEPARATOR + str + MinimalPrettyPrinter.DEFAULT_ROOT_VALUE_SEPARATOR);
            sb.append((String) it.next());
        }
        return sb.toString();
    }

    public static String buildInCondition(String str, String[] strArr) {
        if (strArr == null || strArr.length == 0 || TextUtils.isEmpty(str)) {
            return null;
        }
        return str + " in (" + addPlaceholders(strArr.length) + ")";
    }

    public static String addPlaceholders(int i) {
        if (i < 1) {
            return null;
        }
        StringBuilder sb = new StringBuilder();
        sb.append("?");
        for (int i2 = 1; i2 < i; i2++) {
            sb.append(",?");
        }
        return sb.toString();
    }

    public static String[] getSQLformat(String str, String[] strArr, String[] strArr2, String[] strArr3) {
        String[] strArr4 = new String[(strArr.length + 1 + strArr2.length + strArr3.length)];
        strArr4[0] = str;
        System.arraycopy(strArr, 0, strArr4, 1, strArr.length);
        System.arraycopy(strArr2, 0, strArr4, strArr.length + 1, strArr2.length);
        System.arraycopy(strArr3, 0, strArr4, strArr.length + 1 + strArr2.length, strArr3.length);
        return strArr4;
    }
}