package com.ucar.weex.init.utils;

/**
 * Created by chenxi.cui on 2017/7/12.
 */
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

import android.os.Bundle;
import android.text.TextUtils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;

public class ArgumentsUtil {
    public ArgumentsUtil() {
    }


    public static Bundle fromJsonToBundle(JSONObject jsonObject) {
        Bundle budle = new Bundle();
        if (jsonObject == null) {
            return budle;
        } else {
            Iterator iterator = jsonObject.keySet().iterator();

            while (iterator.hasNext()) {
                String key = (String) iterator.next();
                Object value = jsonObject.get(key);
                if (value != null) {
                    if (value instanceof String) {
                        budle.putString(key, (String) value);
                    } else if (value instanceof Byte) {
                        budle.putByte(key, ((Byte) value).byteValue());
                    } else if (value instanceof Short) {
                        budle.putShort(key, ((Short) value).shortValue());
                    } else if (value instanceof Integer) {
                        budle.putInt(key, ((Integer) value).intValue());
                    } else if (value instanceof Long) {
                        budle.putLong(key, ((Long) value).longValue());
                    } else if (value instanceof Float) {
                        budle.putFloat(key, ((Float) value).floatValue());
                    } else if (value instanceof Double) {
                        budle.putDouble(key, ((Double) value).doubleValue());
                    } else if (value instanceof Boolean) {
                        budle.putBoolean(key, ((Boolean) value).booleanValue());
                    } else if (value instanceof Character) {
                        budle.putChar(key, ((Character) value).charValue());
                    } else if (value instanceof JSONObject) {
                        budle.putBundle(key, fromJsonToBundle((JSONObject) value));
                    } else {
                        if (!value.getClass().isArray()) {
                            throw new IllegalArgumentException("Could not convert " + value.getClass());
                        }

                        fromArrayToBundle(budle, key, value);
                    }
                }
            }

            return budle;
        }
    }

    public static void fromArrayToBundle(Bundle bundle, String key, Object array) {
        if (bundle != null && !TextUtils.isEmpty(key) && array != null) {
            if (array instanceof String[]) {
                bundle.putStringArray(key, (String[]) ((String[]) array));
            } else if (array instanceof byte[]) {
                bundle.putByteArray(key, (byte[]) ((byte[]) array));
            } else if (array instanceof short[]) {
                bundle.putShortArray(key, (short[]) ((short[]) array));
            } else if (array instanceof int[]) {
                bundle.putIntArray(key, (int[]) ((int[]) array));
            } else if (array instanceof long[]) {
                bundle.putLongArray(key, (long[]) ((long[]) array));
            } else if (array instanceof float[]) {
                bundle.putFloatArray(key, (float[]) ((float[]) array));
            } else if (array instanceof double[]) {
                bundle.putDoubleArray(key, (double[]) ((double[]) array));
            } else if (array instanceof boolean[]) {
                bundle.putBooleanArray(key, (boolean[]) ((boolean[]) array));
            } else if (array instanceof char[]) {
                bundle.putCharArray(key, (char[]) ((char[]) array));
            } else {
                if (!(array instanceof JSONArray)) {
                    throw new IllegalArgumentException("Unknown array type " + array.getClass());
                }

                ArrayList arraylist = new ArrayList();
                JSONArray jsonArray = (JSONArray) array;
                Iterator it = jsonArray.iterator();

                while (it.hasNext()) {
                    JSONObject object = (JSONObject) it.next();
                    arraylist.add(fromJsonToBundle(object));
                }

                bundle.putParcelableArrayList(key, arraylist);
            }

        }
    }
    public static ArrayList fromArray(Object array) {
        ArrayList list = new ArrayList();

        int len$;
        int i$;
        if(array instanceof String[]) {
            String[] arr$ = (String[])((String[])array);
            len$ = arr$.length;

            for(i$ = 0; i$ < len$; ++i$) {
                String v = arr$[i$];
                list.add(v);
            }
        } else if(array instanceof Bundle[]) {
            Bundle[] var7 = (Bundle[])((Bundle[])array);
            len$ = var7.length;

            for(i$ = 0; i$ < len$; ++i$) {
                Bundle var12 = var7[i$];
                list.add(fromBundle(var12));
            }
        } else if(array instanceof int[]) {
            int[] var8 = (int[])((int[])array);
            len$ = var8.length;

            for(i$ = 0; i$ < len$; ++i$) {
                int var13 = var8[i$];
                list.add(var13);
            }
        } else if(array instanceof float[]) {
            float[] var9 = (float[])((float[])array);
            len$ = var9.length;

            for(i$ = 0; i$ < len$; ++i$) {
                float var14 = var9[i$];
                list.add((double)var14);
            }
        } else if(array instanceof double[]) {
            double[] var10 = (double[])((double[])array);
            len$ = var10.length;

            for(i$ = 0; i$ < len$; ++i$) {
                double var15 = var10[i$];
                list.add(var15);
            }
        } else {
            if(!(array instanceof boolean[])) {
                throw new IllegalArgumentException("Unknown array type " + array.getClass());
            }

            boolean[] var11 = (boolean[])((boolean[])array);
            len$ = var11.length;

            for(i$ = 0; i$ < len$; ++i$) {
                boolean var16 = var11[i$];
                list.add(var16);
            }
        }

        return list;
    }
    public static JSONObject fromBundle(Bundle bundle) {
        JSONObject map = new JSONObject();
        Iterator iterator = bundle.keySet().iterator();
        while (iterator.hasNext()) {
            String key = (String) iterator.next();
            Object value = bundle.get(key);
            if (value == null) {
                map.put(key, null);
            } else if (value.getClass().isArray()) {
                map.put(key, fromArray(value));
            } else if (value instanceof String) {
                map.put(key, value);
            } else if (value instanceof Number) {
                if (value instanceof Integer) {
                    map.put(key, ((Integer) value).intValue());
                } else {
                    map.put(key, ((Number) value).doubleValue());
                }
            } else if (value instanceof Boolean) {
                map.put(key, ((Boolean) value).booleanValue());
            } else {
                if (!(value instanceof Bundle)) {
                    throw new IllegalArgumentException("Could not convert " + value.getClass());
                }

                map.put(key, fromBundle((Bundle) value));
            }
        }

        return map;
    }


}