/** * Main.cc * Created on: 18 mar. 2016 * Author: AKKA IS */ #include #include #include "AMDA-Kernel_Config.hh" #include // Parameters module include #include "ParameterManager.hh" #include "Parameter.hh" #include "Process.hh" #include "ParameterInfo.hh" #include "ServicesServer.hh" #include "TimeUtil.hh" using namespace std; namespace po = boost::program_options; using namespace log4cxx; using namespace log4cxx::helpers; using namespace AMDA::Parameters; #define MAX_YEAR 2040 /** * Main function */ int main(int argc, char *argv[]) { int result = AMDA_EXIT_OK; /// Parse command line parameters po::options_description desc("Allowed options"); desc.add_options() ("help,h", "Produce help message") ("version,v", "Program version") ("parameter,p", po::value< vector >(), "Parameter(s) name") ; po::positional_options_description p; p.add("parameter", -1); po::variables_map vm; po::store(po::command_line_parser(argc, argv).options(desc).positional(p).run(), vm); po::notify(vm); if (vm.count("help")) { cout << desc << "\n"; return result; } if (vm.count("version")) { cout << "Version: " << AMDA_Kernel_VERSION << "\n"; return result; } if (!vm.count("parameter")) { return result; } AMDA::Common::Application lMain; return lMain.main(argc,argv,[&](int , char **, AMDA::helpers::Properties& lProperties) -> int { vector lParameterList = vm["parameter"].as< vector >(); ///Create ParameterManager and configuration ParameterManager parameterManager; std::string emptyStr; std::stringstream ss; char startTimeIso[24]; char stopTimeIso[24]; memset(startTimeIso, 0, 24*sizeof(char)); memset(stopTimeIso, 0, 24*sizeof(char)); double startTime = 0.; double stopTime = 0.; std::vector gran; gran.push_back("-01-01T00:01:00.000"); gran.push_back("-01-01T01:00:00.000"); gran.push_back("-01-02T00:00:00.000"); gran.push_back("-02-01T00:00:00.000"); gran.push_back("-12-31T00:00:00.000"); for (std::vector::iterator itGran = gran.begin(); itGran != gran.end(); ++itGran) { for (int y = 1970; y < MAX_YEAR; ++y) { ss.str(""); ss << std::setfill('0') << y << "-01-01T00:00:00.000"; memcpy(startTimeIso, ss.str().c_str(), 24*sizeof(char)); startTime = AMDA::TimeUtil::readTimeInIso(startTimeIso); ss.str(""); ss << std::setfill('0') << y << (*itGran); memcpy(stopTimeIso, ss.str().c_str(), 24*sizeof(char)); stopTime = AMDA::TimeUtil::readTimeInIso(stopTimeIso); parameterManager.addInputInterval(startTime, stopTime, 0, emptyStr, emptyStr, 0); } } if (!lProperties["app.param.gapthreshold"].empty()) { double defaultGapThreshold = atof(lProperties["app.param.gapthreshold"].c_str()); if (defaultGapThreshold > 0.) parameterManager.setDefaultGapThreshold(defaultGapThreshold); } for (auto lParamName : lParameterList) { try { ///Create Parameter parameterManager.createParameter(lParamName); ///Generate Output AMDA::Parameters::ParameterInfo* lParameterInfo = new AMDA::Parameters::ParameterInfo(parameterManager); ParamOutputSPtr lParamOutput(lParameterInfo); lParameterInfo->setParamName(lParamName); parameterManager.getParamOutputList().push_back( lParamOutput); } catch (...) { } } /// launch request parameterManager.execute(""); return result; }); }