XMLPatternParser.cc

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00013 #include <zypp/parser/xmlstore/XMLPatternParser.h>
00014 #include <zypp/parser/xmlstore/XMLResObjectParser.h>
00015 
00016 #include <zypp/parser/LibXMLHelper.h>
00017 #include <istream>
00018 #include <string>
00019 #include "zypp/parser/xml_parser_assert.h"
00020 #include <libxml/xmlreader.h>
00021 #include <libxml/tree.h>
00022 #include <zypp/base/Logger.h>
00023 #include <zypp/parser/xmlstore/schemanames.h>
00024 
00025 using namespace std;
00026 namespace zypp {
00027   namespace parser {
00028     namespace xmlstore {
00029 
00030       XMLPatternParser::XMLPatternParser()
00031       { }
00032       
00033       XMLPatternParser::XMLPatternParser(XMLPatternData_Ptr& entry)
00034       : XMLNodeIterator<XMLPatternData_Ptr>(entry)
00035       { }
00036       
00037       
00038       XMLPatternParser::~XMLPatternParser()
00039       { }
00040       
00041       
00042       // select for which elements process() will be called
00043       bool 
00044       XMLPatternParser::isInterested(const xmlNodePtr nodePtr)
00045       {
00046         return _helper.isElement(nodePtr) && _helper.name(nodePtr) == "pattern";
00047       }
00048       
00049       // do the actual processing
00050       XMLPatternData_Ptr
00051       XMLPatternParser::process(const xmlTextReaderPtr reader)
00052       {
00053         xml_assert(reader);
00054         XMLPatternData_Ptr dataPtr = new XMLPatternData;
00055         xmlNodePtr dataNode = xmlTextReaderExpand(reader);
00056         xml_assert(dataNode);
00057         
00058         parseResObjectCommonData( dataPtr, dataNode);
00059         parseDependencies( dataPtr, dataNode);
00060         
00061         for (xmlNodePtr child = dataNode->children; child && child != dataNode; child = child->next)
00062         {
00063           if (_helper.isElement(child))
00064           {
00065             string name = _helper.name(child);
00066             
00067             if (name == "summary")
00068             {
00069               dataPtr->summary.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
00070             }
00071             else if (name == "default") {
00072               dataPtr->default_ = _helper.content(child);
00073             }
00074             else if (name == "uservisible") {
00075               dataPtr->userVisible = _helper.content(child);
00076             }
00077             else if (name == "description") {
00078               dataPtr->description.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
00079             }
00080             else if (name == "category") {
00081               dataPtr->category.setText(_helper.content(child));
00082             }
00083             else if (name == "icon") {
00084               dataPtr->icon = _helper.content(child);
00085             }
00086             else if (name == "script") {
00087               dataPtr->script = _helper.content(child);
00088             }
00089           }
00090         }
00091         return dataPtr;
00092       } /* end process */
00093       
00094       
00095       XMLPatternParser::XMLPatternParser(istream &is, const string &baseUrl)
00096       : XMLNodeIterator<XMLPatternData_Ptr>(is, baseUrl,PATTERNSCHEMA)
00097       { 
00098         fetchNext();
00099       }
00100       
00101     } // namespace yum
00102   } // namespace parser
00103 } // namespace zypp

Generated on Thu May 4 16:03:23 2006 for zypp by  doxygen 1.4.6