Salome HOME
PR: add resources/Plugin in Install
[modules/kernel.git] / src / DataTypeCatalog / SALOME_DataTypeCatalog_Handler.cxx
1 //  SALOME DataTypeCatalog : catalog of data types
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5 // 
6 //  This library is free software; you can redistribute it and/or 
7 //  modify it under the terms of the GNU Lesser General Public 
8 //  License as published by the Free Software Foundation; either 
9 //  version 2.1 of the License. 
10 // 
11 //  This library is distributed in the hope that it will be useful, 
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 //  Lesser General Public License for more details. 
15 // 
16 //  You should have received a copy of the GNU Lesser General Public 
17 //  License along with this library; if not, write to the Free Software 
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19 // 
20 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : SALOME_DataTypeCatalog_Handler.cxx
25 //  Author : Estelle Deville
26 //  Module : SALOME
27 //  $Header$
28
29 #include "SALOME_DataTypeCatalog_Handler.hxx"
30
31 #include "utilities.h"
32
33 using namespace std;
34
35 // contains all the data types defined in the catalog
36 ListOfParserDataType _datatypelist; 
37
38 //----------------------------------------------------------------------
39 // Function : SALOME_DataTypeCatalog_Handler
40 // Purpose  : Constructor
41 //----------------------------------------------------------------------
42 SALOME_DataTypeCatalog_Handler::SALOME_DataTypeCatalog_Handler()
43 {
44   MESSAGE("SALOME_DataTypeCatalog_Handler creation");
45   // XML Tags initialisation
46   // Used in the function endElement
47   test_data_type_name = "DataType-name";
48   test_data_type_interf_read = "DataType-interface-read";
49   test_data_type_interf_write = "DataType-interface-write";
50   test_data_type_parent_name = "Parent-name" ;
51   test_data_type_parents = "DataType-Parents-list";
52   test_data_type = "DataType";
53 }
54
55 //----------------------------------------------------------------------
56 // Function : ~SALOME_DataTypeCatalog_Handler
57 // Purpose  : Destructor
58 //----------------------------------------------------------------------
59 SALOME_DataTypeCatalog_Handler::~SALOME_DataTypeCatalog_Handler()
60 {
61   MESSAGE("SALOME_DataTypeCatalog_Handler destruction");
62 }
63
64 //----------------------------------------------------------------------
65 // Function : startDocument
66 // Purpose  : overload handler function
67 //----------------------------------------------------------------------
68 bool SALOME_DataTypeCatalog_Handler::startDocument()
69 {
70   MESSAGE("Begin parse document")
71   // Empty the private elements
72   _datatypelist.resize(0);
73   _a_data_parents_list.resize(0);
74   return true;
75 }
76
77 //----------------------------------------------------------------------
78 // Function : startElement
79 // Purpose  : overload handler function
80 //----------------------------------------------------------------------
81 bool SALOME_DataTypeCatalog_Handler::startElement(const QString&, 
82                                                   const QString &,
83                                                   const QString& qName, 
84                                                   const QXmlAttributes& atts)
85 {
86   return true;
87
88
89 //----------------------------------------------------------------------
90 // Function : endElement
91 // Purpose  : overload handler function
92 //----------------------------------------------------------------------
93 bool SALOME_DataTypeCatalog_Handler::endElement(const QString&, 
94                                                 const QString &,
95                                                 const QString& qName)
96 {
97   // DataType
98
99   // tag test_data_type_name
100   if((qName.compare(QString(test_data_type_name))==0))
101     _a_data_type.Parserdata_name = content;
102   // tag test_data_type_interf_read
103   if((qName.compare(QString(test_data_type_interf_read))==0)) 
104     _a_data_type.Parserdata_interface_read = content;
105   // tag test_data_type_interf_write
106   if((qName.compare(QString(test_data_type_interf_write))==0)) 
107     _a_data_type.Parserdata_interface_write = content;
108
109   // tag test_data_type_parent_name
110   if((qName.compare(QString(test_data_type_parent_name))==0)) 
111     _a_data_parents_list.push_back(content);
112
113   // tag test_data_type_parents
114   if((qName.compare(QString(test_data_type_parents))==0)) 
115     {
116       _a_data_type.Parserdata_parents = _a_data_parents_list;
117       _a_data_parents_list.resize(0);;
118     }
119
120   // tag test_data_type
121   if((qName.compare(QString(test_data_type))==0))
122     {
123       _datatypelist.push_back(_a_data_type);
124
125       // Empty temporary structures
126       _a_data_type.Parserdata_name = "";
127       _a_data_type.Parserdata_interface_read = "";
128       _a_data_type.Parserdata_interface_write = "";
129       _a_data_type.Parserdata_parents.resize(0);
130     }
131
132
133
134   return true;
135 }
136   
137 //----------------------------------------------------------------------
138 // Function : characters
139 // Purpose  : overload handler function
140 //----------------------------------------------------------------------
141 bool SALOME_DataTypeCatalog_Handler::characters(const QString& chars)
142 {
143   content = (const char*)chars ;
144   return true;
145 }
146
147 //----------------------------------------------------------------------
148 // Function : endDocument
149 // Purpose  : overload handler function
150 //            Print all informations find in the catalog 
151 //            (only in DEBUG mode!!)
152 //----------------------------------------------------------------------  
153 bool SALOME_DataTypeCatalog_Handler::endDocument()
154 {
155   //_datatypelist
156   for (unsigned int ind = 0; ind < _datatypelist.size(); ind++)
157     {
158       MESSAGE("DataType Name :"<<_datatypelist[ind].Parserdata_name);
159       MESSAGE("DataType interface read :"<<_datatypelist[ind].Parserdata_interface_read);
160       MESSAGE("DataType interface write :"<<_datatypelist[ind].Parserdata_interface_write);
161
162       for (unsigned int i = 0; i < _datatypelist[ind].Parserdata_parents.size(); i++)
163         MESSAGE("Parent name :" << _datatypelist[ind].Parserdata_parents[i]);
164     }
165
166   MESSAGE("Document parsed");
167   return true;
168 }
169  
170 //----------------------------------------------------------------------
171 // Function : errorProtocol
172 // Purpose  : overload handler function
173 //----------------------------------------------------------------------  
174 QString SALOME_DataTypeCatalog_Handler::errorProtocol()
175 {
176   return errorProt ;
177 }
178
179
180 //----------------------------------------------------------------------
181 // Function : fatalError
182 // Purpose  : overload handler function
183 //----------------------------------------------------------------------  
184 bool SALOME_DataTypeCatalog_Handler::fatalError(const QXmlParseException& exception)
185 {
186     errorProt += QString( "fatal parsing error: %1 in line %2, column %3\n" )
187     .arg( exception.message() )
188     .arg( exception.lineNumber() )
189     .arg( exception.columnNumber() );
190
191   return QXmlDefaultHandler::fatalError( exception );
192 }