void ORM Add const Queued eo EOid msg try odb transaction m_models- da

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void
ORM::Add( const Queued::eo::EOid & msg)
{
try
{
odb::transaction t(m_models->database().begin());
EST::Mapping::ModelPointer mp = m_models->modelSecond();
qlonglong msgUniKey = wtf(msg.UniKey) .toLongLong();
qlonglong msgTplma = wtf(msg.Tplma) .toLongLong();
qlonglong msgNamep = QString::fromStdString(msg.Namep).toLongLong();
QString msgPltxt = QString::fromStdString(msg.Pltxt);
EST::Mapping::Identifier idNode (msgUniKey); //значение id экземпляра получаем из data
EST::Mapping::Identifier idParent(msgTplma ); //значение id вышестоящего объекта
EST::Mapping::Identifier idType (msgNamep ); //значение id класса получаем из data
EST::Mapping::NodePointer nodep (mp->node(idNode));
if (0 != nodep) return; // уже существует
EST::Mapping::NodePointer parntp(mp->node(idParent));
if (0 == parntp) return; // нет родителя
EST::Mapping::TypePointer tp (mp->type(idType));
EST::Mapping::NodePointer newNode(new EST::Mapping::Node(mp,tp,idNode,msgPltxt,parntp));
m_models->database().persist(newNode);
t.commit();
}
catch(odb::exception &e)
{
EST::Syslog log;
log.critical(QString("ORM::Add failed: %1").arg(e.what()));
}
}