Ejemplo n.º 1
0
	// /////////////////////////////////////////////////////////////////
	//
	// /////////////////////////////////////////////////////////////////
	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);
	}
Ejemplo n.º 2
0
	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);
	}
Ejemplo n.º 3
0
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!");
  }
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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!");
  }
}