OGS
XmlPrjInterface.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <QString>
7#include <QtXml/QDomNode>
8#include <memory>
9#include <string>
10#include <vector>
11
15#include "BaseLib/IO/Writer.h"
17
18namespace FileIO
19{
25{
26public:
27 explicit XmlPrjInterface(DataHolderLib::Project& project);
28
29 ~XmlPrjInterface() override = default;
30
32 int readFile(const QString& fileName) override;
33
35 bool readFile(std::string const& fname)
36 {
37 return readFile(QString(fname.c_str())) != 0;
38 }
39
41 int writeToFile(const std::string& filename);
42
43protected:
44 bool write() override;
45
46private:
48 QDomNode findParam(QDomNode const& param_root,
49 QString const& param_name) const;
50
52 void readConditions(QDomNode const& pvar_root, QDomNode const& param_root);
53
55 void readBoundaryConditions(QDomNode const& bc_root,
56 QDomNode const& param_root,
58
60 void readSourceTerms(QDomNode const& st_root, QDomNode const& param_root,
62
64 void writeProcessVariables(QDomDocument& doc, QDomElement& root) const;
65
67 std::vector<DataHolderLib::ProcessVariable> getPrimaryVariableVec() const;
68
70 template <typename T>
71 void writeCondition(QDomDocument& doc, QDomElement& tag,
72 DataHolderLib::FemCondition const& cond) const;
73
75 void writeBoundaryConditions(QDomDocument& doc, QDomElement& bc_list_tag,
76 std::string const& name) const;
77
79 void writeSourceTerms(QDomDocument& doc, QDomElement& st_list_tag,
80 std::string const& name) const;
81
83 template <typename T>
84 T* parseCondition(QDomNode const& node, QDomNode const& param_root,
85 DataHolderLib::ProcessVariable const& pvar) const;
86
87 std::string _filename;
89};
90
91} // end namespace FileIO
Base class which enables writing an object to string, stringstream or file.
Definition Writer.h:21
Base class for boundary conditions, initial conditions and source terms.
void readBoundaryConditions(QDomNode const &bc_root, QDomNode const &param_root, DataHolderLib::ProcessVariable const &pvar)
Reading all boundary conditions.
T * parseCondition(QDomNode const &node, QDomNode const &param_root, DataHolderLib::ProcessVariable const &pvar) const
Parsing one specific condition.
int writeToFile(const std::string &filename)
Writes a project to the specified file.
std::vector< DataHolderLib::ProcessVariable > getPrimaryVariableVec() const
Compiles a vector of all existing primary variables for writing purposes.
bool write() override
Writes the object to the internal stream. This method must be implemented by a subclass....
void writeSourceTerms(QDomDocument &doc, QDomElement &st_list_tag, std::string const &name) const
Writes a list of source terms.
void readSourceTerms(QDomNode const &st_root, QDomNode const &param_root, DataHolderLib::ProcessVariable const &pvar)
Reading all source terms.
int readFile(const QString &fileName) override
Reads an xml-file containing a project.
void writeProcessVariables(QDomDocument &doc, QDomElement &root) const
Writes information on process variables.
~XmlPrjInterface() override=default
DataHolderLib::Project & _project
void writeCondition(QDomDocument &doc, QDomElement &tag, DataHolderLib::FemCondition const &cond) const
Writes one specific condition.
void writeBoundaryConditions(QDomDocument &doc, QDomElement &bc_list_tag, std::string const &name) const
Writes a list of boundary conditions.
XmlPrjInterface(DataHolderLib::Project &project)
void readConditions(QDomNode const &pvar_root, QDomNode const &param_root)
Manages reading all kinds of conditions.
QDomNode findParam(QDomNode const &param_root, QString const &param_name) const
Tests if a given parameter exists within the file.
bool readFile(std::string const &fname)
Reads an xml-file containing a project.