33 #include "rjson_utils.h"
43 #define prolog std::string("Granule::").append(__func__).append("() - ")
47 string granule_LINKS_REL_DATA_ACCES =
"http://esipfed.org/ns/fedsearch/1.1/data#";
48 string granule_LINKS_REL_METADATA_ACCESS =
"http://esipfed.org/ns/fedsearch/1.1/data#";
49 string granule_LINKS =
"links";
50 string granule_LINKS_REL=
"rel";
51 string granule_LINKS_HREFLANG =
"hreflang";
52 string granule_LINKS_HREF =
"href";
53 string granule_SIZE =
"granule_size";
54 string granule_LMT =
"updated";
56 string granule_ID =
"id";
58 string granule_NAME =
"title";
64 setDataAccessUrl(granule_obj);
65 setMetadataAccessUrl(granule_obj);
66 setLastModifiedStr(granule_obj);
71 this->d_name = rju.getStringValue(go, granule_NAME);
76 this->d_id = rju.getStringValue(go, granule_ID);
81 this->d_size_str = rju.getStringValue(go, granule_SIZE);
89 this->d_last_modified_time = rju.getStringValue(go, granule_LMT);
98 bool result = itr != go.MemberEnd();
99 string msg = prolog + (result?
"Located":
"FAILED to locate") +
" the value '"+granule_LINKS+
"' in object.";
100 BESDEBUG(MODULE, msg << endl);
102 throw CmrError(
"ERROR: Failed to located '"+granule_LINKS+
"' section for CMRGranule!",__FILE__,__LINE__);
106 throw CmrError(
"ERROR: The '"+granule_LINKS+
"' object is NOT an array!",__FILE__,__LINE__);
120 string rel = rju.getStringValue(link,granule_LINKS_REL);
121 if(rel == granule_LINKS_REL_DATA_ACCES){
122 this->d_data_access_url = rju.getStringValue(link,granule_LINKS_HREF);
126 throw CmrError(
"ERROR: Failed to locate granule data access link ("+granule_LINKS_REL_DATA_ACCES+
"). :(",__FILE__,__LINE__);
138 string rel = rju.getStringValue(link,granule_LINKS_REL);
139 if(rel == granule_LINKS_REL_METADATA_ACCESS){
140 this->d_metadata_access_url = rju.getStringValue(link,granule_LINKS_HREF);
144 throw CmrError(
"ERROR: Failed to locate granule metadata access link ("+granule_LINKS_REL_METADATA_ACCESS+
"). :(",__FILE__,__LINE__);
150 item->
set_type(bes::CatalogItem::leaf);
152 item->
set_lmt(getLastModifiedStr());