00001
00002 #include "Updater.h"
00003
00004 namespace MosesServer
00005 {
00006 using namespace Moses;
00007 using namespace std;
00008
00009 Updater::
00010 Updater()
00011 {
00012
00013
00014
00015 this->_signature = "S:S";
00016 this->_help = "Updates stuff";
00017 }
00018
00019 void
00020 Updater::
00021 execute(xmlrpc_c::paramList const& paramList,
00022 xmlrpc_c::value * const retvalP)
00023 {
00024 #if PT_UG
00025 const params_t params = paramList.getStruct(0);
00026 breakOutParams(params);
00027 Mmsapt* pdsa = reinterpret_cast<Mmsapt*>(PhraseDictionary::GetColl()[0]);
00028 pdsa->add(m_src, m_trg, m_aln);
00029 XVERBOSE(1,"Done inserting\n");
00030 *retvalP = xmlrpc_c::value_string("Phrase table updated");
00031 #endif
00032 };
00033
00034 void
00035 Updater::
00036 breakOutParams(const params_t& params)
00037 {
00038 params_t::const_iterator si = params.find("source");
00039 if(si == params.end())
00040 throw xmlrpc_c::fault("Missing source sentence",
00041 xmlrpc_c::fault::CODE_PARSE);
00042 m_src = xmlrpc_c::value_string(si->second);
00043 XVERBOSE(1,"source = " << m_src << endl);
00044 si = params.find("target");
00045 if(si == params.end())
00046 throw xmlrpc_c::fault("Missing target sentence",
00047 xmlrpc_c::fault::CODE_PARSE);
00048 m_trg = xmlrpc_c::value_string(si->second);
00049 XVERBOSE(1,"target = " << m_trg << endl);
00050 if((si = params.find("alignment")) == params.end())
00051 throw xmlrpc_c::fault("Missing alignment", xmlrpc_c::fault::CODE_PARSE);
00052 m_aln = xmlrpc_c::value_string(si->second);
00053 XVERBOSE(1,"alignment = " << m_aln << endl);
00054 m_bounded = ((si = params.find("bounded")) != params.end());
00055 m_add2ORLM = ((si = params.find("updateORLM")) != params.end());
00056 };
00057
00058 }