package ca.uwaterloo.uwfoodservicesutility; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class ParseProductInfo { private static final String TAG_META = "meta"; private static final String TAG_DATA = "data"; private static final String TAG_PRODUCT_ID = "product_id"; private static final String TAG_PRODUCT_NAME = "product_name"; private static final String TAG_INGREDIENTS = "ingredients"; private static final String TAG_SERVING_SIZE = "serving_size"; private static final String TAG_SERVING_SIZE_ML = "serving_size_ml"; private static final String TAG_SERVING_SIZE_G = "serving_size_g"; private static final String TAG_CALORIES = "calories"; private static final String TAG_TOTAL_FAT_G = "total_fat_g"; private static final String TAG_TOTAL_FAT_PERCENT = "total_fat_percent"; private static final String TAG_FAT_SATURATED_G = "fat_saturated_g"; private static final String TAG_FAT_SATURATED_PERCENT = "fat_saturated_percent"; private static final String TAG_FAT_TRANS_G = "fat_trans_g"; private static final String TAG_FAT_TRANS_PERCENT = "fat_trans_percent"; private static final String TAG_CHOLESTEROL_MG = "cholesterol_mg"; private static final String TAG_SODIUM_MG = "sodium_mg"; private static final String TAG_SODIUM_PERCENT = "sodium_percent"; private static final String TAG_CARBO_G = "carbo_g"; private static final String TAG_CARBO_PERCENT = "carbo_percent"; private static final String TAG_CARBO_FIBRE_G = "carbo_fibre_g"; private static final String TAG_CARBO_FIBRE_PERCENT = "carbo_fibre_percent"; private static final String TAG_CARBO_SUGARS_G = "carbo_sugars_g"; private static final String TAG_PROTEIN_G = "protein_g"; private static final String TAG_VITAMIN_A_PERCENT = "vitamin_a_percent"; private static final String TAG_VITAMIN_C_PERCENT = "vitamin_c_percent"; private static final String TAG_CALCIUM_PERCENT = "calcium_percent"; private static final String TAG_IRON_PERCENT = "iron_percent"; private static final String TAG_MICRO_NUTRIENTS = "micro_nutrients"; private static final String TAG_TIPS = "tips"; private static final String TAG_DIET_ID = "diet_id"; private static final String TAG_DIET_TYPE = "diet_type"; private static ProductInfoHolder holder; public ParseProductInfo(){ } public void Parse(List<JSONObject> json){ List<ProductInfoObject> productInfoList = new ArrayList<ProductInfoObject>(); try { for (JSONObject jsonObject : json) { JSONObject meta = jsonObject.getJSONObject(TAG_META); JSONObject data = jsonObject.getJSONObject(TAG_DATA); Integer product_id = MenuUtilities.getInteger(data.getString(TAG_PRODUCT_ID)); String product_name = data.getString(TAG_PRODUCT_NAME); List<String> ingredients = Arrays.asList(data.getString(TAG_INGREDIENTS).split(", ")); // String serving_size = data.getString(TAG_SERVING_SIZE); Integer serving_size_amount = MenuUtilities.getInteger(data.getString(TAG_SERVING_SIZE) .replaceAll("\\D+","")); String serving_size_unit; if (data.getString(TAG_SERVING_SIZE).contains("grams")) { serving_size_unit = "g"; } else if (data.getString(TAG_SERVING_SIZE_G) != null) { serving_size_unit = "g"; } else if (data.getString(TAG_SERVING_SIZE_ML) != null) { serving_size_unit = "ml"; } else { serving_size_unit = "ml"; } Integer calories = MenuUtilities.getInteger(data.getString(TAG_CALORIES)); Integer total_fat_g = MenuUtilities.getInteger(data.getString(TAG_TOTAL_FAT_G)); Integer total_fat_percent = MenuUtilities.getInteger(data.getString(TAG_TOTAL_FAT_PERCENT)); Integer fat_saturated_g = MenuUtilities.getInteger(data.getString(TAG_FAT_SATURATED_G)); Integer fat_saturated_percent = MenuUtilities.getInteger(data.getString(TAG_FAT_SATURATED_PERCENT)); Integer fat_trans_g = MenuUtilities.getInteger(data.getString(TAG_FAT_TRANS_G)); Integer fat_trans_percent = MenuUtilities.getInteger(data.getString(TAG_FAT_TRANS_PERCENT)); Integer cholesterol_mg = MenuUtilities.getInteger(data.getString(TAG_CHOLESTEROL_MG)); Integer sodium_mg = MenuUtilities.getInteger(data.getString(TAG_SODIUM_MG)); Integer sodium_percent = MenuUtilities.getInteger(data.getString(TAG_SODIUM_PERCENT)); Integer carbo_g = MenuUtilities.getInteger(data.getString(TAG_CARBO_G)); Integer carbo_percent = MenuUtilities.getInteger(data.getString(TAG_CARBO_PERCENT)); Integer carbo_fibre_g = MenuUtilities.getInteger(data.getString(TAG_CARBO_FIBRE_G)); Integer carbo_fibre_percent = MenuUtilities.getInteger(data.getString(TAG_CARBO_FIBRE_PERCENT)); Integer carbo_sugars_g = MenuUtilities.getInteger(data.getString(TAG_CARBO_SUGARS_G)); Integer protein_g = MenuUtilities.getInteger(data.getString(TAG_PROTEIN_G)); Integer vitamin_a_percent = MenuUtilities.getInteger(data.getString(TAG_VITAMIN_A_PERCENT)); Integer vitamin_c_percent = MenuUtilities.getInteger(data.getString(TAG_VITAMIN_C_PERCENT)); Integer calcium_percent = MenuUtilities.getInteger(data.getString(TAG_CALCIUM_PERCENT)); Integer iron_percent = MenuUtilities.getInteger(data.getString(TAG_IRON_PERCENT)); List<String> micro_nutrients = Arrays.asList(data.getString(TAG_MICRO_NUTRIENTS).split(", ")); String tips = data.getString(TAG_TIPS); Integer diet_id = MenuUtilities.getInteger(data.getString(TAG_DIET_ID)); String diet_type = data.getString(TAG_DIET_TYPE); productInfoList.add(new ProductInfoObject(product_id, product_name, ingredients, serving_size, serving_size_amount, serving_size_unit, calories, total_fat_g, total_fat_percent, fat_saturated_g, fat_saturated_percent, fat_trans_g, fat_trans_percent, cholesterol_mg, sodium_mg, sodium_percent, carbo_g, carbo_percent, carbo_fibre_g, carbo_fibre_percent, carbo_sugars_g, protein_g, vitamin_a_percent, vitamin_c_percent, calcium_percent, iron_percent, micro_nutrients, tips, diet_id, diet_type)); } holder = ProductInfoHolder.getInstance(productInfoList); } catch (JSONException e) { e.printStackTrace(); } } }