currentGadget.setAuthor(gadgetJSON.containsKey("author") ? gadgetJSON.getString("author") : "");
currentGadget.setDescription(gadgetJSON.containsKey("description") ? gadgetJSON.getString("description")
: "");
JSONObject gadgetUserPrefsJSON = gadgetJSON.getJSONObject("userPrefs");
List<UserPrefDTO> userPrefs = new ArrayList<UserPrefDTO>();
UserPrefDTO currentUserPref;
JSONObject currentUserPrefJSON;
String currentUserPrefKey;
for (Object userPrefKey : gadgetUserPrefsJSON.keySet())
{
currentUserPrefKey = (String) userPrefKey;
currentUserPrefJSON = gadgetUserPrefsJSON.getJSONObject(currentUserPrefKey);
currentUserPref = new UserPrefDTO();
currentUserPref.setName(currentUserPrefKey);
currentUserPref.setDisplayName(currentUserPrefJSON.getString("displayName"));
currentUserPref.setDataType(currentUserPrefJSON.getString("type"));
currentUserPref.setDefaultValue(currentUserPrefJSON.getString("default"));
if (currentUserPref.getDataType().name() == DataType.ENUM.name())
{
// Unordered easy access map of enum values.
Map<String, String> enumValues = new HashMap<String, String>();
String enumKey;
String userPrefEnumValue;
// parse enum values here
for (Object enumKeyObject : currentUserPrefJSON.getJSONObject("enumValues").keySet())
{
enumKey = (String) enumKeyObject;
userPrefEnumValue = (String) currentUserPrefJSON.getJSONObject("enumValues").get(enumKey);
enumValues.put(enumKey, userPrefEnumValue);
}
currentUserPref.setEnumValues(enumValues);
// Ordered enum values for creating preferences.
List<EnumValuePairDTO> orderedEnumValues = new LinkedList<EnumValuePairDTO>();
JSONArray orderedEnumValuesJson = currentUserPrefJSON.getJSONArray("orderedEnumValues");
JSONObject currentOrderedEnumValueJson;
for (int arrayIndex = 0; arrayIndex < orderedEnumValuesJson.size(); arrayIndex++)
{
currentOrderedEnumValueJson = orderedEnumValuesJson.getJSONObject(arrayIndex);
orderedEnumValues.add(new EnumValuePairDTO(currentOrderedEnumValueJson.getString("value"),
currentOrderedEnumValueJson.getString("displayValue")));
}
currentUserPref.setOrderedEnumValues(orderedEnumValues);
}
if (currentUserPrefJSON.containsKey("required"))
{
currentUserPref.setRequired(currentUserPrefJSON.getString("required"));
}
userPrefs.add(currentUserPref);
}
currentGadget.setUserPrefs(userPrefs);
currentGadgetMetaData.add(currentGadget);