oddělení generatoru od readeru

This commit is contained in:
2024-01-29 14:50:12 +01:00
parent 36a799057c
commit a7fc519138
62 changed files with 1147 additions and 932 deletions

View File

@@ -0,0 +1,143 @@
#include <stdio.h>
#include <filesystem>
#include <cstdlib>
#include <licenceGenerator.h>
#include "utils.h"
#include "pugixml.hpp"
#include <typeinfo>
LicenceGenerator::LicenceGenerator()
{
}
LicenceGenerator::LicenceGenerator(string uid, string cid, string csd, string dataFileName)
{
if (dataFileName.empty()) throw LicenceException((int)GeneralError::ParamMissing, "Missing par: dataFileName");
if (uid.empty() == false)
{
this->licData.uid = uid;
}
else
{
if (cid.empty()) throw LicenceException((int)GeneralError::ParamMissing, "Missing par: CID");
if (csd.empty()) throw LicenceException((int)GeneralError::ParamMissing, "Missing par: CSD");
}
this->configFileName = dataFileName;
this->licData.cid = cid;
this->licData.csd = csd;
this->argumentsCorrect = true;
processInputConfiguration();
}
bool LicenceGenerator::processInputConfiguration()
{
string fullFile = getCompletePath(this->configFileName);
const int fileNameLength = fullFile.length();
char fileName[fileNameLength] = {};
getCharsFromString(fullFile, fileName, fileNameLength);
#ifdef WINDOWS
pugi::xml_parse_result result = doc.load_file("licData.xml");
#else
pugi::xml_parse_result result = doc.load_file(fileName);
#endif
if (result)
{
const char *dataRootName = doc.child("data") ? "data" : "licence"; // kompatibilita s verzí, která měla ještě root "data"
Mapping mapping;
if (atoi(&doc.child(dataRootName).attribute("xmlVersion").value()[0]) != XML_VERSION)
{
throw LicenceException((int)GeneralError::IvanlidParam, "Invalid param: XML VERSION");
}
this->licData.doc = &doc;
string licType = doc.child(dataRootName).child("licenceType").child_value();
if (!licType.empty())
{
this->licIdentification.licLicenceType = mapping.licMapTypes[licType]; // LicenceType::EOS_EOV;
}
else
{
throw LicenceException((int)GeneralError::ParamMissing, "ERROR MISSING licenceType");
}
this->licIdentification.licenceVersion = atoi(&doc.child(dataRootName).child("licenceType").attribute("licenceVersion").value()[0]);
this->licIdentification.revision = doc.child(dataRootName).attribute("revision").value()[0];
this->licIdentification.licenceIndex = atoi(&doc.child(dataRootName).child("licenceType").attribute("licenceIndex").value()[0]);
this->licIdentification.licElcType = (ELCType)atoi(&doc.child(dataRootName).attribute("elc").value()[0]);
this->licIdentification.licCompatibility = atoi(&doc.child(dataRootName).attribute("compatibility").value()[0]);
string plcType = doc.child(dataRootName).child("plcType").child_value();
if (!plcType.empty())
{
this->licIdentification.licPlcType = mapping.licMapPlcType[plcType];
}
}
else
{
throw LicenceException((int)GeneralError::FileOpenError, "Unable to open the config file.");
}
return true;
}
void LicenceGenerator::createLicenceFile()
{
switch (this->licIdentification.licElcType)
{
case ELCType::ELC1:
createLicenceELC1();
break;
case ELCType::ELC2:
createLicenceELC2();
break;
case ELCType::ELC3:
createLicenceELC3();
break;
}
}
void LicenceGenerator::createLicenceELC1() // přejmenvat na ELC1
{
LicenceELC11 plcWriteLicence = LicenceELC11(this->licData.cid, this->licData.csd, "file", this->configFileName);
plcWriteLicence.createLicence();
}
void LicenceGenerator::createLicenceELC2()
{
switch (this->licIdentification.licCompatibility)
{
case 1:
// LicenceELC21 licence = LicenceELC21(this->licData);
// licence.createLicence();
break;
}
}
void LicenceGenerator::createLicenceELC3()
{
switch (this->licIdentification.licCompatibility)
{
case 1:
//LicenceELC31 licence = LicenceELC31(this->licData);
//licence.createLicence();
break;
}
}
LicenceGenerator::~LicenceGenerator()
{
}