001package com.box.sdk.internal.utils; 002 003import java.util.HashMap; 004import java.util.Map; 005 006import com.box.sdk.Metadata; 007import com.eclipsesource.json.JsonObject; 008 009/** 010 * Utility class for constructing metadata map from json object. 011 */ 012public class MetadataUtils { 013 014 /** 015 * Only static members. 016 */ 017 protected MetadataUtils() { 018 } 019 020 /** 021 * Creates a map of metadata from json. 022 * @param jsonObject metadata json object for metadata field in get /files?fileds=,etadata.scope.template response 023 * @return Map of String as key a value another Map with a String key and Metadata value 024 */ 025 public static Map<String, Map<String, Metadata>> parseAndPopulateMetadataMap(JsonObject jsonObject) { 026 Map<String, Map<String, Metadata>> metadataMap = new HashMap<String, Map<String, Metadata>>(); 027 //Parse all templates 028 for (JsonObject.Member templateMember : jsonObject) { 029 if (templateMember.getValue().isNull()) { 030 continue; 031 } else { 032 String templateName = templateMember.getName(); 033 Map<String, Metadata> scopeMap = metadataMap.get(templateName); 034 //If templateName doesn't yet exist then create an entry with empty scope map 035 if (scopeMap == null) { 036 scopeMap = new HashMap<String, Metadata>(); 037 metadataMap.put(templateName, scopeMap); 038 } 039 //Parse all scopes in a template 040 for (JsonObject.Member scopeMember : templateMember.getValue().asObject()) { 041 String scope = scopeMember.getName(); 042 Metadata metadataObject = new Metadata(scopeMember.getValue().asObject()); 043 scopeMap.put(scope, metadataObject); 044 } 045 } 046 047 } 048 return metadataMap; 049 } 050}