// ///////////////////////////////////////////////////////////////// // // ///////////////////////////////////////////////////////////////// shared_ptr<BaseGameLogic> Pool3dGame::VCreateLogicAndViews() { RegisterGameSpecificEvents(); // Create the logic layer for the test app. shared_ptr<BaseGameLogic> logicPtr(GCC_NEW Pool3dLogic(m_optionsPtr, m_loggerPtr, m_mvProjStackManager)); if(!logicPtr) { GF_LOG_FAT("Failed to allocate memory for the Pool3D logic layer"); } else { // TODO: Load the loading screen/view here first. // Add the main game view where gameplay is rendered. shared_ptr<Pool3dView> viewPtr(GCC_NEW Pool3dView(m_optionsPtr, m_loggerPtr, m_windowManagerPtr, m_mvProjStackManager, &m_viewFrustrum)); if(!viewPtr) { GF_LOG_FAT("Failed to allocate memory for the Pool3D view (Removing the Pool3D logic layer as a result)"); logicPtr.reset(); } else { boost::optional<GameViewId> gameViewId = logicPtr->VAddView(viewPtr); if(!gameViewId.is_initialized()) { GF_LOG_FAT("Failed to add the GameView to the Logic layer"); } else { m_gameId = *gameViewId; } } // Add the menu/UI view where the menu screens are displayed overlayed on the game view. shared_ptr<Pool3dMenuView> menuViewPtr(GCC_NEW Pool3dMenuView(m_optionsPtr, m_loggerPtr, m_windowManagerPtr, m_mvProjStackManager)); if(!menuViewPtr) { GF_LOG_FAT("Failed to allocate memory for the Pool3D UI/Menu view (Removing the Pool3D logic layer as a result)"); logicPtr.reset(); } else { boost::optional<GameViewId> uiViewId = logicPtr->VAddView(menuViewPtr); if(!uiViewId.is_initialized()) { GF_LOG_FAT("Failed to add the UiView to the Logic layer"); } else { m_uiId = *uiViewId; } } } return (logicPtr); }
shared_ptr<BaseGameLogic> TestApp::VCreateLogicAndViews() { RegisterGameSpecificEvents(); shared_ptr<BaseGameLogic> logicPtr(GCC_NEW TestLogic(m_optionsPtr , m_loggerPtr , m_mvProjStackManager)); shared_ptr<TestView> viewPtr(GCC_NEW TestView(m_optionsPtr , m_loggerPtr , m_windowManagerPtr , m_mvProjStackManager)); boost::optional<GameViewId> gameViewId = logicPtr->VAddView(viewPtr); m_gameId = *gameViewId; return (logicPtr); }
void TsJsonUtils::testToJSon() { try { terrama2::services::view::core::View* view = new terrama2::services::view::core::View(); terrama2::services::view::core::ViewPtr viewPtr(view); view->viewName = "TestView"; view->id = 1; view->projectId = 1; view->serviceInstanceId = 1; view->active = true; // DataSeries List view->dataSeriesID = 1; // Legend terrama2::services::view::core::View::Legend::Rule rule; rule.title = "Class 1"; rule.value = "1"; rule.color = "#000000"; rule.opacity ="1"; rule.isDefault = true; terrama2::services::view::core::View::Legend* legend = new terrama2::services::view::core::View::Legend(); legend->operation = terrama2::services::view::core::View::Legend::OperationType::VALUE; legend->classify = terrama2::services::view::core::View::Legend::ClassifyType::RAMP; legend->metadata.emplace("band_number", "0"); legend->metadata.emplace("column", ""); legend->rules.push_back(rule); view->legend.reset(legend); // Schedule terrama2::core::Schedule schedule; schedule.id = 1; schedule.frequency = 2; schedule.frequencyUnit = "min"; view->schedule = schedule; // Filter terrama2::core::Filter filter; filter.discardBefore = terrama2::core::TimeUtils::stringToTimestamp("2016-07-06 12:39:00UTM+00", "%Y-%m-%d %H:%M:%S%ZP"); filter.discardAfter = terrama2::core::TimeUtils::stringToTimestamp("2016-07-06 12:45:00UTM+00", "%Y-%m-%d %H:%M:%S%ZP"); view->filter = filter; QJsonObject obj = terrama2::services::view::core::toJson(viewPtr); } catch(const terrama2::Exception& e) { QString message(*boost::get_error_info<terrama2::ErrorDescription>(e)); QFAIL(message.toStdString().c_str()); } catch(const boost::exception& e) { QFAIL(boost::diagnostic_information(e).c_str()); } catch(const std::exception& e) { QFAIL(e.what()); } catch(...) { QFAIL("Unknow exception!"); } }
int main(int argc, char** argv) { terrama2::core::initializeTerraMA(); terrama2::core::registerFactories(); QApplication app(argc, argv); try { auto& serviceManager = terrama2::core::ServiceManager::getInstance(); std::map<std::string, std::string> connInfo { {"PG_HOST", TERRAMA2_DATABASE_HOST}, {"PG_PORT", TERRAMA2_DATABASE_PORT}, {"PG_USER", TERRAMA2_DATABASE_USERNAME}, {"PG_PASSWORD", TERRAMA2_DATABASE_PASSWORD}, {"PG_DB_NAME", TERRAMA2_DATABASE_DBNAME}, {"PG_CONNECT_TIMEOUT", "4"}, {"PG_CLIENT_ENCODING", "UTF-8"} }; serviceManager.setLogConnectionInfo(connInfo); serviceManager.setInstanceId(1); std::shared_ptr<terrama2::services::view::core::DataManager> dataManager = std::make_shared<terrama2::services::view::core::DataManager>(); prepareExample(dataManager); terrama2::services::view::core::Service service(dataManager); service.start(); terrama2::services::view::core::View* view = new terrama2::services::view::core::View(); terrama2::services::view::core::ViewPtr viewPtr(view); view->id = 1; view->projectId = 1; view->serviceInstanceId = 1; view->active = true; view->resolutionWidth = 800; view->resolutionHeight = 600; terrama2::core::Schedule schedule; schedule.id = 1; schedule.frequency = 2; schedule.frequencyUnit = "min"; view->schedule = schedule; view->dataSeriesList.push_back(1); view->dataSeriesList.push_back(2); view->dataSeriesList.push_back(3); terrama2::core::Filter filter; view->filtersPerDataSeries.emplace(1, filter); view->filtersPerDataSeries.emplace(2, filter); view->filtersPerDataSeries.emplace(3, filter); dataManager->add(viewPtr); QTimer timer; QObject::connect(&timer, SIGNAL(timeout()), QCoreApplication::instance(), SLOT(quit())); timer.start(20000); app.exec(); service.stopService(); } catch(const std::exception& e) { std::cout << std::endl << "An exception has occurred in DrawLayer example: " << e.what() << std::endl; return EXIT_FAILURE; } catch(...) { std::cout << std::endl << "An unexpected exception has occurred in DrawLayer example!" << std::endl; return EXIT_FAILURE; } terrama2::core::finalizeTerraMA(); return EXIT_SUCCESS; }
void TsJsonUtils::testGoNBackJSon() { try { terrama2::services::view::core::View* view = new terrama2::services::view::core::View(); terrama2::services::view::core::ViewPtr viewPtr(view); view->viewName = "TestView"; view->id = 1; view->projectId = 1; view->serviceInstanceId = 1; view->active = true; // DataSeries List view->dataSeriesID = 1; // Legend terrama2::services::view::core::View::Legend::Rule rule; rule.title = "Class 1"; rule.value = "1"; rule.color = "#000000"; rule.opacity ="1"; rule.isDefault = true; terrama2::services::view::core::View::Legend* legend = new terrama2::services::view::core::View::Legend(); legend->operation = terrama2::services::view::core::View::Legend::OperationType::VALUE; legend->classify = terrama2::services::view::core::View::Legend::ClassifyType::RAMP; legend->metadata.emplace("band_number", "0"); legend->metadata.emplace("column", ""); legend->rules.push_back(rule); view->legend.reset(legend); // Schedule terrama2::core::Schedule schedule; schedule.id = 1; schedule.frequency = 2; schedule.frequencyUnit = "min"; view->schedule = schedule; // Filter terrama2::core::Filter filter; filter.discardBefore = terrama2::core::TimeUtils::stringToTimestamp("2016-07-06 12:39:00UTM+00", "%Y-%m-%d %H:%M:%S%ZP"); filter.discardAfter = terrama2::core::TimeUtils::stringToTimestamp("2016-07-06 12:45:00UTM+00", "%Y-%m-%d %H:%M:%S%ZP"); view->filter = filter; QJsonObject obj = terrama2::services::view::core::toJson(viewPtr); terrama2::services::view::core::ViewPtr viewBackPtr = terrama2::services::view::core::fromViewJson(obj); QCOMPARE(viewBackPtr->viewName, viewPtr->viewName); QCOMPARE(viewBackPtr->id, viewPtr->id); QCOMPARE(viewBackPtr->projectId, viewPtr->projectId); QCOMPARE(viewBackPtr->serviceInstanceId, viewPtr->serviceInstanceId); QCOMPARE(viewBackPtr->active, viewPtr->active); QCOMPARE(viewBackPtr->imageName, viewPtr->imageName); QCOMPARE(viewBackPtr->imageType, viewPtr->imageType); QCOMPARE(viewBackPtr->imageResolutionWidth, viewPtr->imageResolutionWidth); QCOMPARE(viewBackPtr->imageResolutionHeight, viewPtr->imageResolutionHeight); QCOMPARE(viewBackPtr->srid, viewPtr->srid); QCOMPARE(viewBackPtr->schedule.id, viewPtr->schedule.id); QCOMPARE(viewBackPtr->schedule.frequency, viewPtr->schedule.frequency); QCOMPARE(viewBackPtr->schedule.frequencyUnit, viewPtr->schedule.frequencyUnit); QCOMPARE(viewBackPtr->dataSeriesID, viewPtr->dataSeriesID); QCOMPARE(viewBackPtr->legend->operation, viewPtr->legend->operation); QCOMPARE(viewBackPtr->legend->classify, viewPtr->legend->classify); QCOMPARE(viewBackPtr->legend->metadata.size(), viewPtr->legend->metadata.size()); if(!std::equal(viewBackPtr->legend->metadata.begin(), viewBackPtr->legend->metadata.end(), viewPtr->legend->metadata.begin())) QFAIL("Fail!"); QCOMPARE(viewBackPtr->legend->rules.size(), viewPtr->legend->rules.size()); for(uint i = 0; i < viewBackPtr->legend->rules.size(); i++) { QCOMPARE(viewBackPtr->legend->rules.at(i).title, viewPtr->legend->rules.at(i).title); QCOMPARE(viewBackPtr->legend->rules.at(i).value, viewPtr->legend->rules.at(i).value); QCOMPARE(viewBackPtr->legend->rules.at(i).color, viewPtr->legend->rules.at(i).color); QCOMPARE(viewBackPtr->legend->rules.at(i).isDefault, viewPtr->legend->rules.at(i).isDefault); } // TODO: enable when convert filter/json is implemented /* QCOMPARE(*viewBackPtr->filter.discardBefore, viewPtr->filter.discardBefore); QCOMPARE(*viewBackPtr->filter.discardAfter, viewPtr->filter.discardAfter); */ } catch(const terrama2::Exception& e) { QString message(*boost::get_error_info<terrama2::ErrorDescription>(e)); QFAIL(message.toStdString().c_str()); } catch(const boost::exception& e) { QFAIL(boost::diagnostic_information(e).c_str()); } catch(const std::exception& e) { QFAIL(e.what()); } catch(...) { QFAIL("Unknow exception!"); } }