From ff615ec084b65330d7ce1ce45b502ee53b0b4e93 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 15 Nov 2018 21:44:44 +0100 Subject: [PATCH] Finished V2Svk model protobuf serialization --- source/DataModel.cpp | 4 - source/SubTests/V2Svk/V2SvkModel.cpp | 204 ++++++++++++++++----------- 2 files changed, 123 insertions(+), 85 deletions(-) diff --git a/source/DataModel.cpp b/source/DataModel.cpp index 2f571c1..d2e3eca 100644 --- a/source/DataModel.cpp +++ b/source/DataModel.cpp @@ -63,10 +63,6 @@ void DataModel::writeProtoBuf(std::ostream &outStream) const //m_metaData.writeProtoBuf(dataModel.mutable_metadata); m_v2Svk.writeProtoBuf(*dataModel.mutable_v2svk()); dataModel.SerializeToOstream(&outStream); - - std::string saveData; - google::protobuf::TextFormat::PrintToString(dataModel, &saveData); - qDebug() << "Wrote:" << QString::fromStdString(saveData); } void DataModel::readProtoBuf(std::istream &inStream) diff --git a/source/SubTests/V2Svk/V2SvkModel.cpp b/source/SubTests/V2Svk/V2SvkModel.cpp index b86cef9..a78e5d1 100644 --- a/source/SubTests/V2Svk/V2SvkModel.cpp +++ b/source/SubTests/V2Svk/V2SvkModel.cpp @@ -1,46 +1,39 @@ #include "V2SvkModel.h" V2SvkModel::V2SvkModel(QObject *parent) - : CheckableTestModel(parent) + : CheckableTestModel(parent) { - m_tests = { - { "W-Frage", - { "Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", - "Gans" , "Gans", "Gans", "Gans"} }, - { "Verbtrennung", - { "", "Affe", "", "", "", "", "", "Schwein", "" , "", "Gans", ""} }, - { "SVK: /-st/", - { "Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", - "Gans" , "Gans", "Gans", "Gans"} }, + m_tests = { + {"W-Frage", + {"Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", "Gans", + "Gans", "Gans", "Gans"}}, + {"Verbtrennung", {"", "Affe", "", "", "", "", "", "Schwein", "", "", "Gans", ""}}, + {"SVK: /-st/", + {"Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", "Gans", + "Gans", "Gans", "Gans"}}, - { "Objekt-Topikalisierung", - { "Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", - "Gans" , "Gans", "Gans", "Gans"} }, - { "SVK: Stamm", - { "Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", - "Gans" , "Gans", "Gans", "Gans"} }, + {"Objekt-Topikalisierung", + {"Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", "Gans", + "Gans", "Gans", "Gans"}}, + {"SVK: Stamm", + {"Affe", "Affe", "Affe", "Affe", "Schwein", "Schwein", "Schwein", "Schwein", "Gans", + "Gans", "Gans", "Gans"}}, - { "Temporaladverb Präsens", - { "Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans" } }, - { "SKV: /-e/ o. Stamm", - { "Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans" } }, + {"Temporaladverb Präsens", {"Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans"}}, + {"SKV: /-e/ o. Stamm", {"Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans"}}, - { "Temporaladverb Perfekt", - { "Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans" } }, - { "Verbtrennung", - { "Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans" } }, - { "SVK: /-e/ o. Stamm", - { "Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans" } }, - { "Partizip", - { "Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans" } }, + {"Temporaladverb Perfekt", {"Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans"}}, + {"Verbtrennung", {"Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans"}}, + {"SVK: /-e/ o. Stamm", {"Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans"}}, + {"Partizip", {"Affe", "Affe", "Schwein", "Schwein", "Gans", "Gans"}}, }; } unsigned int V2SvkModel::getV2Points() { - unsigned int points = 0; + unsigned int points = 0; - for (auto testIndex : { 0, 1, 3, 5, 7, 8 }) + for (auto testIndex : {0, 1, 3, 5, 7, 8}) { const auto &test = m_tests.at(testIndex); @@ -58,9 +51,9 @@ unsigned int V2SvkModel::getV2Points() unsigned int V2SvkModel::getSvkPoints() { - unsigned int points = 0; + unsigned int points = 0; - for (auto testIndex : { 2, 4, 6, 9, 10 }) + for (auto testIndex : {2, 4, 6, 9, 10}) { const auto &test = m_tests.at(testIndex); @@ -78,64 +71,113 @@ unsigned int V2SvkModel::getSvkPoints() void V2SvkModel::writeProtoBuf(ESGRAF48::V2SvkModel &model) const { - auto *wfrage = model.mutable_wfrage(); - if (wfrage != nullptr) - { - const auto &items = m_tests.at(0).items(); + auto writeOneVal = [&](ESGRAF48::V2SvkModel::OneEach *modelData, int testIndex) { + if (modelData != nullptr) + { + const auto &testItems = m_tests.at(testIndex).items(); - wfrage->set_affe1(items[0].isChecked()); - wfrage->set_affe2(items[1].isChecked()); - wfrage->set_affe3(items[2].isChecked()); - wfrage->set_affe4(items[3].isChecked()); - wfrage->set_schwein1(items[4].isChecked()); - wfrage->set_schwein2(items[5].isChecked()); - wfrage->set_schwein3(items[6].isChecked()); - wfrage->set_schwein4(items[7].isChecked()); - wfrage->set_gans1(items[8].isChecked()); - wfrage->set_gans2(items[9].isChecked()); - wfrage->set_gans3(items[10].isChecked()); - wfrage->set_gans4(items[11].isChecked()); - } + modelData->set_affe(testItems[1].isChecked()); + modelData->set_schwein(testItems[7].isChecked()); + modelData->set_gans(testItems[10].isChecked()); + } + }; - auto *verbtrennung = model.mutable_verbtrennung1(); - if (verbtrennung != nullptr) - { - const auto &testItems = m_tests.at(1).items(); + auto writeTwoVals = [&](ESGRAF48::V2SvkModel::TwoEach *modelData, int testIndex) { + if (modelData != nullptr) + { + const auto &testItems = m_tests.at(testIndex).items(); - verbtrennung->set_affe(testItems[1].isChecked()); - verbtrennung->set_schwein(testItems[7].isChecked()); - verbtrennung->set_gans(testItems[10].isChecked()); - } + modelData->set_affe1(testItems[0].isChecked()); + modelData->set_affe2(testItems[1].isChecked()); + modelData->set_schwein1(testItems[2].isChecked()); + modelData->set_schwein2(testItems[3].isChecked()); + modelData->set_gans1(testItems[4].isChecked()); + modelData->set_gans2(testItems[5].isChecked()); + } + }; + + auto writeFourVals = [&](ESGRAF48::V2SvkModel::FourEach *modelData, int testIndex) { + if (modelData != nullptr) + { + const auto &testItems = m_tests.at(testIndex).items(); + + modelData->set_affe1(testItems[0].isChecked()); + modelData->set_affe2(testItems[1].isChecked()); + modelData->set_affe3(testItems[2].isChecked()); + modelData->set_affe4(testItems[3].isChecked()); + modelData->set_schwein1(testItems[4].isChecked()); + modelData->set_schwein2(testItems[5].isChecked()); + modelData->set_schwein3(testItems[6].isChecked()); + modelData->set_schwein4(testItems[7].isChecked()); + modelData->set_gans1(testItems[8].isChecked()); + modelData->set_gans2(testItems[9].isChecked()); + modelData->set_gans3(testItems[10].isChecked()); + modelData->set_gans4(testItems[11].isChecked()); + } + }; + + writeFourVals(model.mutable_wfrage(), 0); + writeOneVal(model.mutable_verbtrennung1(), 1); + writeFourVals(model.mutable_svkst(), 2); + writeFourVals(model.mutable_objtop(), 3); + writeFourVals(model.mutable_svkstamm(), 4); + writeTwoVals(model.mutable_temppraes(), 5); + writeTwoVals(model.mutable_svke1(), 6); + writeTwoVals(model.mutable_tempperf(), 7); + writeTwoVals(model.mutable_verbtrennung2(), 8); + writeTwoVals(model.mutable_svke2(), 9); + writeTwoVals(model.mutable_partizip(), 10); } - + void V2SvkModel::readProtoBuf(const ESGRAF48::V2SvkModel &model) { - const auto &wfrage = model.wfrage(); - { - auto &testItems = m_tests.at(0).items(); + auto readOneVal = [&](const ESGRAF48::V2SvkModel::OneEach &modelData, int testIndex) { + auto &testItems = m_tests.at(testIndex).items(); - testItems[0].setState(wfrage.affe1()); - testItems[1].setState(wfrage.affe2()); - testItems[2].setState(wfrage.affe3()); - testItems[3].setState(wfrage.affe4()); - testItems[4].setState(wfrage.schwein1()); - testItems[5].setState(wfrage.schwein2()); - testItems[6].setState(wfrage.schwein3()); - testItems[7].setState(wfrage.schwein4()); - testItems[8].setState(wfrage.gans1()); - testItems[9].setState(wfrage.gans2()); - testItems[10].setState(wfrage.gans3()); - testItems[11].setState(wfrage.gans4()); - } + testItems[1].setState(modelData.affe()); + testItems[7].setState(modelData.schwein()); + testItems[10].setState(modelData.gans()); + }; - const auto &verbtrennung = model.verbtrennung1(); - { - auto &testItems = m_tests.at(1).items(); + auto readTwoVals = [&](const ESGRAF48::V2SvkModel::TwoEach &modelData, int testIndex) { + auto &testItems = m_tests.at(testIndex).items(); - testItems[1].setState(verbtrennung.affe()); - testItems[7].setState(verbtrennung.schwein()); - testItems[10].setState(verbtrennung.gans()); - } + testItems[0].setState(modelData.affe1()); + testItems[1].setState(modelData.affe2()); + testItems[2].setState(modelData.schwein1()); + testItems[3].setState(modelData.schwein2()); + testItems[4].setState(modelData.gans1()); + testItems[5].setState(modelData.gans2()); + }; + + auto readFourVals = [&](const ESGRAF48::V2SvkModel::FourEach &modelData, int testIndex) { + auto &testItems = m_tests.at(testIndex).items(); + + testItems[0].setState(modelData.affe1()); + testItems[1].setState(modelData.affe2()); + testItems[2].setState(modelData.affe3()); + testItems[3].setState(modelData.affe4()); + testItems[4].setState(modelData.schwein1()); + testItems[5].setState(modelData.schwein2()); + testItems[6].setState(modelData.schwein3()); + testItems[7].setState(modelData.schwein4()); + testItems[8].setState(modelData.gans1()); + testItems[9].setState(modelData.gans2()); + testItems[10].setState(modelData.gans3()); + testItems[11].setState(modelData.gans4()); + }; + + readFourVals(model.wfrage(), 0); + readOneVal(model.verbtrennung1(), 1); + readFourVals(model.svkst(), 2); + readFourVals(model.objtop(), 3); + readFourVals(model.svkstamm(), 4); + readTwoVals(model.temppraes(), 5); + readTwoVals(model.svke1(), 6); + readTwoVals(model.tempperf(), 7); + readTwoVals(model.verbtrennung2(), 8); + readTwoVals(model.svke2(), 9); + readTwoVals(model.partizip(), 10); emit dataChanged(index(0, 0), index(rowCount() - 1, columnCount() - 1)); }