ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/XmlTools2/trunk/xmlpatch.cpp
(Generate patch)

Comparing XmlTools2/trunk/xmlpatch.cpp (file contents):
Revision 997 by s10k, Fri Apr 25 16:14:22 2014 UTC vs.
Revision 1055 by s10k, Fri Oct 28 21:05:06 2016 UTC

# Line 51 | Line 51 | void XmlPatch::insertNodesOperation(cons
51      pugi::xml_document newNode;
52      pugi::xml_parse_result result;
53  
54 <    filesToProcess=UtilXmlTools::getAllXmlFilesByWildcard(filesWildcard);
54 >    try{
55  
56 <    if(filesToProcess.isEmpty()){
57 <        UtilXmlTools::displayErrorMessage("@ADD_INSIDE_NODES","No XML files were found for the wildcard: "+filesWildcard);
58 <    }
59 <
60 <    result=newNode.load(xmlString.toUtf8().constData()); // load xml to insert
61 <
62 <    if(result.status!=pugi::status_ok){
63 <        UtilXmlTools::displayErrorMessage("@ADD_INSIDE_NODES", "The xml node to insert is invalid.\n" + Util::toQString(result.description()));
64 <    }
56 >        filesToProcess=UtilXmlTools::getAllXmlFilesByWildcard(filesWildcard);
57  
58 <    // Process all XmlFiles
59 <    for(int i=0; i<filesToProcess.size(); i++){
58 >        if(filesToProcess.isEmpty()){
59 >            UtilXmlTools::displayErrorMessage("@ADD_INSIDE_NODES","No XML files were found for the wildcard: "+filesWildcard);
60 >        }
61  
62 <        UtilXmlTools::loadXmlFile(filesToProcess[i],this->document,this->rootNode,this->backupsEnabled,this->verboseEnabled,"@ADD_INSIDE_NODES");
62 >        result=newNode.load(xmlString.toUtf8().constData()); // load xml to insert
63  
64 <        // Check how the element will be fetched via element name or xpath expression
65 <        if(xPathExpression.isEmpty()){
73 <            UtilXmlTools::getAllNamedElements(this->rootNode,nodesToInsertion,filters);
74 <        }
75 <        else{
76 <            UtilXmlTools::getAllXpathElements(xPathExpression,this->document,nodesToInsertion);
64 >        if(result.status!=pugi::status_ok){
65 >            UtilXmlTools::displayErrorMessage("@ADD_INSIDE_NODES", "The xml node to insert is invalid.\n" + Util::toQString(result.description()));
66          }
67  
68 <        if(nodesToInsertion.isEmpty() || nodesToInsertion[0].type()==pugi::node_null){
68 >        // Process all XmlFiles
69 >        for(int i=0; i<filesToProcess.size(); i++){
70  
71 <            QString errMessage;
71 >            UtilXmlTools::loadXmlFile(filesToProcess[i],this->document,this->rootNode,this->backupsEnabled,this->verboseEnabled,"@ADD_INSIDE_NODES");
72  
73 +            // Check how the element will be fetched via element name or xpath expression
74              if(xPathExpression.isEmpty()){
75 <                errMessage = "No node was found with an ElementName: '" + filters.getElementName() + "'";
85 <                if(filters.getParentElementName()!=""){
86 <                    errMessage += " and a ParentElementName: '" + filters.getParentElementName() + "'";
87 <                }
88 <                if(filters.getAttributeName()!=""){
89 <                    errMessage += " and an AttributeName: '" + filters.getAttributeName() + "' and an AttributeValue: '" + filters.getAttributeValue() + "'";
90 <                }
75 >                UtilXmlTools::getAllNamedElements(this->rootNode,nodesToInsertion,filters);
76              }
77              else{
78 <                errMessage = "No node was found with an XPathExpression: '" + xPathExpression + "'";
78 >                UtilXmlTools::getAllXpathElements(xPathExpression,this->document,nodesToInsertion);
79              }
80  
81 <            UtilXmlTools::displayErrorMessage("@ADD_INSIDE_NODES",errMessage);
82 <        }
81 >            if(nodesToInsertion.isEmpty() || nodesToInsertion[0].type()==pugi::node_null){
82 >
83 >                QString errMessage;
84  
85 <        for(int j=0; j<nodesToInsertion.size(); j++){
86 <            for (pugi::xml_node currNodeToInsert = newNode.first_child(); currNodeToInsert; currNodeToInsert = currNodeToInsert.next_sibling())
87 <            {
88 <                nodesToInsertion[j].append_copy(currNodeToInsert); // append the new node
85 >                if(xPathExpression.isEmpty()){
86 >                    errMessage = "No node was found with an ElementName: '" + filters.getElementName() + "'";
87 >                    if(filters.getParentElementName()!=""){
88 >                        errMessage += " and a ParentElementName: '" + filters.getParentElementName() + "'";
89 >                    }
90 >                    if(filters.getAttributeName()!=""){
91 >                        errMessage += " and an AttributeName: '" + filters.getAttributeName() + "' and an AttributeValue: '" + filters.getAttributeValue() + "'";
92 >                    }
93 >                }
94 >                else{
95 >                    errMessage = "No node was found with an XPathExpression: '" + xPathExpression + "'";
96 >                }
97 >
98 >                UtilXmlTools::displayErrorMessage("@ADD_INSIDE_NODES",errMessage);
99              }
100  
101 <        }
101 >            for(int j=0; j<nodesToInsertion.size(); j++){
102 >                for (pugi::xml_node currNodeToInsert = newNode.first_child(); currNodeToInsert; currNodeToInsert = currNodeToInsert.next_sibling())
103 >                {
104 >                    nodesToInsertion[j].append_copy(currNodeToInsert); // append the new node
105 >                }
106 >
107 >            }
108  
109 <        UtilXmlTools::saveXmlFile(filesToProcess[i],this->document, "@ADD_INSIDE_NODES");
109 >            UtilXmlTools::saveXmlFile(filesToProcess[i],this->document, "@ADD_INSIDE_NODES");
110  
111 <        nodesToInsertion.clear();
111 >            nodesToInsertion.clear();
112 >        }
113 >    }
114 >    catch(const std::exception &e){
115 >        UtilXmlTools::displayErrorMessage("@ADD_INSIDE_NODES", QString("An exception was caught: ") + e.what());
116      }
117  
118      UtilXmlTools::displaySuccessMessage(filesToProcess.size(),"@ADD_INSIDE_NODES");
# Line 118 | Line 124 | void XmlPatch::removeNodesOperation(XmlF
124  
125      QList<pugi::xml_node> nodesToDeletion;
126  
127 <    filesToProcess=UtilXmlTools::getAllXmlFilesByWildcard(filesWildcard);
127 >    try{
128  
129 <    if(filesToProcess.isEmpty()){
124 <        UtilXmlTools::displayErrorMessage("@REMOVE_NODES","No XML files were found for the wildcard: "+filesWildcard);
125 <    }
126 <
127 <    // Process all XmlFiles
128 <    for(int i=0; i<filesToProcess.size(); i++){
129 >        filesToProcess=UtilXmlTools::getAllXmlFilesByWildcard(filesWildcard);
130  
131 <        UtilXmlTools::loadXmlFile(filesToProcess[i],this->document,this->rootNode,this->backupsEnabled,this->verboseEnabled,"@REMOVE_NODES");
132 <
132 <        // Check how the element will be fetched via element name or xpath expression
133 <        if(xPathExpression.isEmpty()){
134 <            UtilXmlTools::getAllNamedElements(this->rootNode,nodesToDeletion,filters);
135 <        }
136 <        else{
137 <            UtilXmlTools::getAllXpathElements(xPathExpression,this->document,nodesToDeletion);
131 >        if(filesToProcess.isEmpty()){
132 >            UtilXmlTools::displayErrorMessage("@REMOVE_NODES","No XML files were found for the wildcard: "+filesWildcard);
133          }
134  
135 <        if(nodesToDeletion.isEmpty() || nodesToDeletion[0].type()==pugi::node_null){
135 >        // Process all XmlFiles
136 >        for(int i=0; i<filesToProcess.size(); i++){
137  
138 <            QString errMessage;
138 >            UtilXmlTools::loadXmlFile(filesToProcess[i],this->document,this->rootNode,this->backupsEnabled,this->verboseEnabled,"@REMOVE_NODES");
139  
140 +            // Check how the element will be fetched via element name or xpath expression
141              if(xPathExpression.isEmpty()){
142 <                errMessage = "No node was found with an ElementName: '" + filters.getElementName() + "'";
146 <                if(filters.getParentElementName()!=""){
147 <                    errMessage += " and a ParentElementName: '" + filters.getParentElementName() + "'";
148 <                }
149 <                if(filters.getAttributeName()!=""){
150 <                    errMessage += " and an AttributeName: '" + filters.getAttributeName() + "' and an AttributeValue: '" + filters.getAttributeValue() + "'";
151 <                }
142 >                UtilXmlTools::getAllNamedElements(this->rootNode,nodesToDeletion,filters);
143              }
144              else{
145 <                errMessage = "No node was found with an XPathExpression: '" + xPathExpression + "'";
145 >                UtilXmlTools::getAllXpathElements(xPathExpression,this->document,nodesToDeletion);
146              }
147  
148 <            UtilXmlTools::displayErrorMessage("@REMOVE_NODES",errMessage);
158 <        }
159 <
160 <        // Delete all the specified nodes
161 <        for(int j=0; j<nodesToDeletion.size(); j++){
162 <            if(!nodesToDeletion[j].parent().remove_child(nodesToDeletion[j])){  // remove the node
148 >            if(nodesToDeletion.isEmpty() || nodesToDeletion[0].type()==pugi::node_null){
149  
150                  QString errMessage;
165                if(xPathExpression.isEmpty()){
166                    errMessage = "Couldn't remove the node with Element '" + filters.getElementName() + "'";
151  
152 +                if(xPathExpression.isEmpty()){
153 +                    errMessage = "No node was found with an ElementName: '" + filters.getElementName() + "'";
154                      if(filters.getParentElementName()!=""){
155 <                        errMessage += " and a ParentElement: '" + filters.getParentElementName() + "'";
155 >                        errMessage += " and a ParentElementName: '" + filters.getParentElementName() + "'";
156 >                    }
157 >                    if(filters.getAttributeName()!=""){
158 >                        errMessage += " and an AttributeName: '" + filters.getAttributeName() + "' and an AttributeValue: '" + filters.getAttributeValue() + "'";
159                      }
160                  }
161                  else{
162 <                    errMessage = "Couldn't remove the node with the XPathExpression '" + xPathExpression + "'";
162 >                    errMessage = "No node was found with an XPathExpression: '" + xPathExpression + "'";
163                  }
164  
165                  UtilXmlTools::displayErrorMessage("@REMOVE_NODES",errMessage);
166              }
178        }
167  
168 <        UtilXmlTools::saveXmlFile(filesToProcess[i],this->document, "@REMOVE_NODES");
168 >            // Delete all the specified nodes
169 >            for(int j=0; j<nodesToDeletion.size(); j++){
170 >                if(!nodesToDeletion[j].parent().remove_child(nodesToDeletion[j])){  // remove the node
171 >
172 >                    QString errMessage;
173 >                    if(xPathExpression.isEmpty()){
174 >                        errMessage = "Couldn't remove the node with Element '" + filters.getElementName() + "'";
175 >
176 >                        if(filters.getParentElementName()!=""){
177 >                            errMessage += " and a ParentElement: '" + filters.getParentElementName() + "'";
178 >                        }
179 >                    }
180 >                    else{
181 >                        errMessage = "Couldn't remove the node with the XPathExpression '" + xPathExpression + "'";
182 >                    }
183 >
184 >                    UtilXmlTools::displayErrorMessage("@REMOVE_NODES",errMessage);
185 >                }
186 >            }
187 >
188 >            UtilXmlTools::saveXmlFile(filesToProcess[i],this->document, "@REMOVE_NODES");
189  
190 <        nodesToDeletion.clear();
190 >            nodesToDeletion.clear();
191 >        }
192 >    }
193 >    catch(const std::exception &e){
194 >        UtilXmlTools::displayErrorMessage("@REMOVE_NODES", QString("An exception was caught: ") + e.what());
195      }
196  
197      UtilXmlTools::displaySuccessMessage(filesToProcess.size(), "@REMOVE_NODES");
# Line 215 | Line 227 | void XmlPatch::executeCustomCommandOpera
227  
228      QVector<QString> filesToProcess=UtilXmlTools::getAllXmlFilesByWildcard(filesWildcard);
229  
230 <    if(filesToProcess.isEmpty()){
231 <        UtilXmlTools::displayErrorMessage("@CUSTOM_CODE","No XML files were found for the wildcard: "+filesWildcard);
232 <    }
233 <
222 <    XmlCustomCode::getInstance()->executeCustomCode(jsString,filesToProcess,this->backupsEnabled,this->verboseEnabled);
230 >    try{
231 >        if(filesToProcess.isEmpty()){
232 >            UtilXmlTools::displayErrorMessage("@CUSTOM_CODE","No XML files were found for the wildcard: "+filesWildcard);
233 >        }
234  
235 +        XmlCustomCode::getInstance()->executeCustomCode(jsString,filesToProcess,this->backupsEnabled,this->verboseEnabled);
236 +    }
237 +    catch(const std::exception &e){
238 +        UtilXmlTools::displayErrorMessage("@CUSTOM_CODE", QString("An exception was caught: ") + e.what());
239 +    }
240  
241      UtilXmlTools::displaySuccessMessage(filesToProcess.size(), "@CUSTOM_CODE");
242   }

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)