コード例 #1
0
ファイル: wtss.cpp プロジェクト: rogervictor/tws
void
tws::wtss::prepare_timeseries_response(const timeseries_request_parameters& parameters,
                                       const timeseries_validated_parameters& vparameters,
                                       rapidjson::Document& doc,
                                       rapidjson::Value& jattributes,
                                       rapidjson::Document::AllocatorType& allocator)
{
// prepare result part in response
  rapidjson::Value jresult(rapidjson::kObjectType);

  jresult.AddMember("attributes", jattributes, allocator);

// add timeline in the response
  rapidjson::Value jtimeline(rapidjson::kArrayType);

  std::size_t init_pos = vparameters.timeline->pos(vparameters.start_time_idx);
  std::size_t fin_pos = vparameters.timeline->pos(vparameters.end_time_idx);

  tws::core::copy_string_array(std::begin(vparameters.timeline->time_points()) + init_pos,
                               std::begin(vparameters.timeline->time_points()) + (fin_pos + 1),
                               jtimeline, allocator);

  jresult.AddMember("timeline", jtimeline, allocator);

// add the pixel center location in response
  rapidjson::Value jcenter(rapidjson::kObjectType);
  jcenter.AddMember("latitude", vparameters.pixel_center_latitude, allocator);
  jcenter.AddMember("longitude", vparameters.pixel_center_longitude, allocator);
  jresult.AddMember("center_coordinates", jcenter, allocator);

// prepare the query part in response
  rapidjson::Value jquery(rapidjson::kObjectType);

  jquery.AddMember("coverage", parameters.cv_name.c_str(), allocator);

  rapidjson::Value jqattributes(rapidjson::kArrayType);

  tws::core::copy_string_array(parameters.queried_attributes.begin(), parameters.queried_attributes.end(), jqattributes, allocator);

  jquery.AddMember("attributes", jqattributes, allocator);

  jquery.AddMember("latitude", parameters.latitude, allocator);

  jquery.AddMember("longitude", parameters.longitude, allocator);

  doc.AddMember("result", jresult, allocator);
  doc.AddMember("query", jquery, allocator);
}
コード例 #2
0
void CJsonQueryParam::toJson(CString& json, IApproveTypeTranslator* translator)
{
	std::shared_ptr<Json::JsonObject> jquery((Json::JsonObject*)(Json::JsonFactory::createObject()));
	if (NULL != m_pbsc || NULL != m_pdsc || NULL != m_pAdvanced || m_pAq.get() != NULL){
		Json::JsonObject& jSearch = jquery->add(L"search", Json::JsonFactory::createObject()).asObject(L"search");
		if (NULL != m_pbsc)
		{
			Json::JsonObject& jBasic = jSearch.add(L"basic", Json::JsonFactory::createObject()).asObject(L"basic");
			jBasic.add(L"text", Json::JsonFactory::createString((Json::json_char*)(LPCTSTR)m_pbsc->lpText));
			jBasic.add(L"exact", Json::JsonFactory::createBool(m_pbsc->exact));
		}

		if (NULL != m_pdsc)
		{
			Json::JsonObject& jDate = jSearch.add(L"date", Json::JsonFactory::createObject()).asObject(L"date");
			jDate.add(L"startDate", Json::JsonFactory::createString((Json::json_char*)(LPCTSTR)m_pdsc->startDate));
			jDate.add(L"endDate", Json::JsonFactory::createString((Json::json_char*)(LPCTSTR)m_pdsc->endDate));
		}

		if (NULL != m_pAdvanced)
		{
			Json::JsonArray& jAdvance = jSearch.add(L"advanced", Json::JsonFactory::createArray()).asArray(L"advanced");
			for (int i = 0, len = m_pAdvanced->size(); i < len; ++i){
				jAdvance.add(Json::JsonFactory::createString((Json::json_char*)(LPCTSTR)m_pAdvanced->at(i)));
			}
		}

		if (m_pAq.get() != NULL)
		{
			jSearch.add(L"united", m_pAq->toJson());
		}
	}

	if (!m_acsMap.empty() && NULL != translator){
		LPCTSTR approveType = NULL;
		Json::JsonArray& jApprove = jquery->add(L"approve", Json::JsonFactory::createArray()).asArray(L"approve");
		int k = 0;
		for (std::map<int, std::vector<ApproveCondition_t>>::iterator it = m_acsMap.begin(); it != m_acsMap.end(); ++it, ++k)
		{
			Json::JsonArray& jGroup = jApprove.add(Json::JsonFactory::createArray()).asArray(k);
			for (int i = 0, len = it->second.size(); i < len; ++i){
				approveType = translator->Translate(it->second.at(i).type);
				if (NULL != approveType)
				{
					Json::JsonObject& jApproveItem = jGroup.add(Json::JsonFactory::createObject()).asObject(i);
					jApproveItem.add(L"type", Json::JsonFactory::createString((Json::json_char*)approveType));
					jApproveItem.add(L"approved", Json::JsonFactory::createBool(it->second.at(i).approved));
				}
			}
		}
	}

	if (!m_scs.empty()){
		Json::JsonArray& jSort = jquery->add(L"sort", Json::JsonFactory::createArray()).asArray(L"sort");
		for (int i = 0, len = m_scs.size(); i < len; ++i){
			Json::JsonObject& jSortItem = jSort.add(Json::JsonFactory::createObject()).asObject(i);
			jSortItem.add(L"col", Json::JsonFactory::createInt(m_scs.at(i).col));
			jSortItem.add(L"order", Json::JsonFactory::createBool(m_scs.at(i).asc));
		}
	}

	Json::json_stringstream jss;
	jquery->asJson(jss);
	json = jss.str().c_str();
}