public static AbstractPriceModel CreatePriceModel(AndroidJavaObject jniPriceModel) { string pmType = jniPriceModel.Call<string>("getType"); AbstractPriceModel pm = null; if (pmType == "balance") { List<Dictionary<string, int>> currencyValuePerBalance = new List<Dictionary<string, int>>(); using(AndroidJavaObject jniCurrencyValuePerBalance = jniPriceModel.Call<AndroidJavaObject>("getCurrencyValuePerBalance")) { for (int i=0; i<jniCurrencyValuePerBalance.Call<int>("size"); i++) { using(AndroidJavaObject jniCurrencyValue = jniCurrencyValuePerBalance.Call<AndroidJavaObject>("get", i)) { using(AndroidJavaObject jniCurrencyValueKeys = jniCurrencyValue.Call<AndroidJavaObject>("keySet")) { Dictionary<string, int> currencyValue = new Dictionary<string, int>(); using(AndroidJavaObject jniCurrencyValueKeysIter = jniCurrencyValueKeys.Call<AndroidJavaObject>("iterator")) { while(jniCurrencyValueKeysIter.Call<bool>("hasNext")) { string key = jniCurrencyValueKeysIter.Call<string>("next"); int price = jniCurrencyValue.Call<int>("get", key); currencyValue[key] = price; } } currencyValuePerBalance.Add(currencyValue); } } } } pm = new BalanceDrivenPriceModel(currencyValuePerBalance); } else { Dictionary<string, int> currencyValue = new Dictionary<string, int>(); using(AndroidJavaObject jniCurrencyValue = jniPriceModel.Call<AndroidJavaObject>("getCurrencyValue")) { using(AndroidJavaObject jniCurrencyValueKeys = jniCurrencyValue.Call<AndroidJavaObject>("keySet")) { using(AndroidJavaObject jniCurrencyValueVals = jniCurrencyValue.Call<AndroidJavaObject>("values")) { using(AndroidJavaObject jniCurrencyValueKeysIter = jniCurrencyValueKeys.Call<AndroidJavaObject>("iterator")) { using(AndroidJavaObject jniCurrencyValueValsIter = jniCurrencyValueVals.Call<AndroidJavaObject>("iterator")) { while(jniCurrencyValueKeysIter.Call<bool>("hasNext")) { string key = jniCurrencyValueKeysIter.Call<string>("next"); string priceStr = jniCurrencyValueValsIter.Call<AndroidJavaObject>("next").Call<string>("toString"); int price = int.Parse(priceStr); currencyValue[key] = price; } } } } } } pm = new StaticPriceModel(currencyValue); } return pm; }
public static AbstractPriceModel CreatePriceModel(JSONObject jsonPriceModel) { string pmType = jsonPriceModel[JSONConsts.GOOD_PRICE_MODEL_TYPE].str; AbstractPriceModel pm = null; if (pmType == "balance") { JSONObject values = jsonPriceModel[JSONConsts.GOOD_PRICE_MODEL_VALUES]; List<Dictionary<string, int>> currencyValuePerBalance = new List<Dictionary<string, int>>(); for(int i=0; i<values.list.Count; i++) { JSONObject val = values[i]; Dictionary<string, int> currencyValue = new Dictionary<string, int>(); for(int j=0; j<val.list.Count; j++) { string itemId = (string)val.keys[j]; int price = System.Convert.ToInt32(((JSONObject)val[itemId]).n); currencyValue[itemId] = price; } currencyValuePerBalance.Add(currencyValue); } pm = new BalanceDrivenPriceModel(currencyValuePerBalance); } else { JSONObject values = jsonPriceModel[JSONConsts.GOOD_PRICE_MODEL_VALUES]; Dictionary<string, int> currencyValue = new Dictionary<string, int>(); for(int i=0; i<values.list.Count; i++) { string itemId = (string)values.keys[i]; int price = System.Convert.ToInt32(((JSONObject)values[itemId]).n); currencyValue[itemId] = price; } pm = new StaticPriceModel(currencyValue); } return pm; }