Salome HOME
Improvement of "Updater" algorithms
[modules/shaper.git] / src / Config / Config_DataModelReader.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 /*
4  * Config_DataModelReader.h
5  *
6  *  Created on: Jul 21, 2015
7  *      Author: vsv
8  */
9
10 #ifndef CONFIG_DATAMODELREADER_H_
11 #define CONFIG_DATAMODELREADER_H_
12
13 #include <Config_def.h>
14 #include <Config_XMLReader.h>
15
16 #include <vector>
17 #include <string>
18
19 /*!
20  * \class Config_DataModelReader
21  * \ingroup Config
22  * \brief Class that reads data model definition XML for
23  * further processing in the XGUI_DataModel
24  */
25 class Config_DataModelReader : public Config_XMLReader
26 {
27  public:
28   /*!
29    * Constructor
30    */
31   CONFIG_EXPORT Config_DataModelReader();
32   CONFIG_EXPORT virtual ~Config_DataModelReader();
33
34   // ROOT folders propertiues *****************
35   /// Returns name of type of tree items in root
36   CONFIG_EXPORT std::string rootType() const { return myRootTypes; }
37
38   /// Returns number of folders under root 
39   CONFIG_EXPORT int rootFoldersNumber() const { return int(myRootFolderNames.size()); }
40
41   /// Returns name of the folder by its Id
42   /// \param theId id of the folder
43   CONFIG_EXPORT std::string rootFolderName(int theId) const { return myRootFolderNames[theId]; }
44
45   /// Returns data type in the folder by its Id
46   /// \param theId id of the folder
47   CONFIG_EXPORT std::string rootFolderType(int theId) const { return myRootFolderTypes[theId]; }
48
49   /// Returns icon of a folder by its Id
50   /// \param theId id of the folder
51   CONFIG_EXPORT std::string rootFolderIcon(int theId) const { return myRootFolderIcons[theId]; }
52
53   /// Returns id of a folder containing the given type
54   /// \param theType type of objects in folder
55   CONFIG_EXPORT int rootFolderId(std::string theType) const;
56
57   /// Returns true if the folder can be shown without items
58   /// \param theId id of the folder
59   CONFIG_EXPORT bool rootShowEmpty(int theId) const { return myRootFolderShowEmpty[theId]; }
60
61
62
63   // SUB folders propertiues ********************
64   /// Returns name of type of tree items in sub document
65   CONFIG_EXPORT std::string subType() const { return mySubTypes; }
66
67   /// Returns number of folders under sub document 
68   CONFIG_EXPORT int subFoldersNumber() const { return int(mySubFolderNames.size()); }
69
70   /// Returns name of the folder by its Id
71   /// \param theId id of the folder
72   CONFIG_EXPORT std::string subFolderName(int theId) const { return mySubFolderNames[theId]; }
73
74   /// Returns data type in the folder by its Id
75   /// \param theId id of the folder
76   CONFIG_EXPORT std::string subFolderType(int theId) const { return mySubFolderTypes[theId]; }
77
78   /// Returns icon of a folder by its Id
79   /// \param theId id of the folder
80   CONFIG_EXPORT std::string subFolderIcon(int theId) const { return mySubFolderIcons[theId]; }
81
82   /// Returns true if the folder can be shown without items
83   /// \param theId id of the folder
84   CONFIG_EXPORT bool subShowEmpty(int theId) const { return mySubFolderShowEmpty[theId]; }
85
86   /// Returns id of a folder containing the given type
87   /// \param theType type of objects in folder
88   CONFIG_EXPORT int subFolderId(std::string theType) const;
89
90   /// Returns true if the sub-document data tree has to be attached to Part Result node
91   /// Otherwise it has to be connected to Part feature node
92   CONFIG_EXPORT bool isAttachToResult() const { return myIsResultLink; }
93
94 protected:
95   /// Overloaded method. Defines how to process each node
96   virtual void processNode(xmlNodePtr theNode);
97
98 private:
99   bool isRootReading;
100
101   /// Root document data
102   std::vector<std::string> myRootFolderNames;
103   std::vector<std::string> myRootFolderTypes;
104   std::vector<std::string> myRootFolderIcons;
105   std::vector<bool> myRootFolderShowEmpty;
106
107   std::string myRootTypes;
108
109   /// Sub document data
110   std::vector<std::string> mySubFolderNames;
111   std::vector<std::string> mySubFolderTypes;
112   std::vector<std::string> mySubFolderIcons;
113   std::vector<bool> mySubFolderShowEmpty;
114
115   bool myIsResultLink;
116   std::string mySubTypes;
117 };
118
119
120 #endif