added support for yum the new patterns to the target store
authorDuncan Mac-Vicar P <dmacvicar@suse.de>
Thu, 9 Feb 2006 13:23:46 +0000 (13:23 +0000)
committerDuncan Mac-Vicar P <dmacvicar@suse.de>
Thu, 9 Feb 2006 13:23:46 +0000 (13:23 +0000)
zypp/target/store/XMLFilesBackend.cc
zypp/target/store/XMLFilesBackend.h
zypp/target/store/xml/XMLPatternImpl.cc
zypp/target/store/xml/XMLPatternImpl.h

index 9b73217..fee5ed2 100644 (file)
@@ -25,6 +25,7 @@
 #include "zypp/target/store/xml/XMLScriptImpl.h"
 #include "zypp/target/store/xml/XMLSelectionImpl.h"
 #include "zypp/target/store/xml/XMLProductImpl.h"
+#include "zypp/target/store/xml/XMLPatternImpl.h"
 
 #include <iostream>
 #include <fstream>
@@ -94,6 +95,7 @@ XMLFilesBackend::XMLFilesBackend(const Pathname &root) : Backend(root)
   //d->kinds.insert(ResTraits<zypp::Script>::kind);
   d->kinds.insert(ResTraits<zypp::Selection>::kind);
   d->kinds.insert(ResTraits<zypp::Product>::kind);
+  d->kinds.insert(ResTraits<zypp::Pattern>::kind);
 
        // check if the db exists
        if (!isBackendInitialized())
@@ -318,6 +320,16 @@ ResObject::Ptr XMLFilesBackend::resolvableFromFile( std::string file_path, Resol
       break;
     }
   }
+  else if ( kind == ResTraits<zypp::Pattern>::kind )
+  {
+    YUMPatternParser iter(res_file,"");
+    for (; !iter.atEnd(); ++iter)
+    {
+      DBG << "here..." << std::endl;
+      resolvable = createPattern(**iter);
+      break;
+    }
+  }
   /*
   else if ( kind == ResTraits<zypp::Message>::kind )
   {
@@ -513,6 +525,33 @@ XMLFilesBackend::createProduct( const zypp::parser::yum::YUMProductData & parsed
   }
 }
 
+Pattern::Ptr
+XMLFilesBackend::createPattern( const zypp::parser::yum::YUMPatternData & parsed ) const
+{
+  try
+  {
+    shared_ptr<XMLPatternImpl> impl(new XMLPatternImpl());
+
+    impl->_user_visible = ((parsed.userVisible == "false" ) ? false : true );
+    impl->_summary = parsed.name;
+    impl->_description = parsed.description;
+    impl->_default = ((parsed.default_ == "false" ) ? false : true );
+    impl->_category = parsed.category;
+    impl->_icon = parsed.icon;
+    impl->_script = parsed.script;    
+
+    // Collect basic Resolvable data
+    NVRAD dataCollect( parsed.patternId, Edition::noedition, Arch_noarch,           createDependencies( parsed, ResTraits<Pattern>::kind));
+    Pattern::Ptr pattern = detail::makeResolvableFromImpl( dataCollect, impl );
+    return pattern;
+  }
+  catch (const Exception & excpt_r)
+  {
+    ERR << excpt_r << endl;
+    throw "Cannot create installation pattern object";
+  }
+}
+
 Selection::Ptr
 XMLFilesBackend::createSelection( const zypp::parser::yum::YUMGroupData & parsed ) const
 {
@@ -570,12 +609,11 @@ XMLFilesBackend::createDependencies( const zypp::parser::yum::YUMObjectData & pa
   {
     _deps[Dep::PROVIDES].insert(createCapability(*it, my_kind));
   }
-
   for (std::list<YUMDependency>::const_iterator it = parsed.conflicts.begin(); it != parsed.conflicts.end(); it++)
   {
     _deps[Dep::CONFLICTS].insert(createCapability(*it, my_kind));
   }
-  
+
   for (std::list<YUMDependency>::const_iterator it = parsed.obsoletes.begin(); it != parsed.obsoletes.end(); it++)
   {
     _deps[Dep::OBSOLETES].insert(createCapability(*it, my_kind));
@@ -586,6 +624,21 @@ XMLFilesBackend::createDependencies( const zypp::parser::yum::YUMObjectData & pa
     _deps[Dep::FRESHENS].insert(createCapability(*it, my_kind));
   }
 
+  for (std::list<YUMDependency>::const_iterator it = parsed.recommends.begin(); it != parsed.recommends.end(); it++)
+  {
+    _deps[Dep::RECOMMENDS].insert(createCapability(*it, my_kind));
+  }
+
+  for (std::list<YUMDependency>::const_iterator it = parsed.suggests.begin(); it != parsed.suggests.end(); it++)
+  {
+    _deps[Dep::SUGGESTS].insert(createCapability(*it, my_kind));
+  }
+
+  for (std::list<YUMDependency>::const_iterator it = parsed.enhances.begin(); it != parsed.enhances.end(); it++)
+  {
+    _deps[Dep::ENHANCES].insert(createCapability(*it, my_kind));
+  }
+
   for (std::list<YUMDependency>::const_iterator it = parsed.requires.begin(); it != parsed.requires.end(); it++)
   {
     if (it->pre == "1")
@@ -593,9 +646,8 @@ XMLFilesBackend::createDependencies( const zypp::parser::yum::YUMObjectData & pa
     else
       _deps[Dep::REQUIRES].insert(createCapability(*it, my_kind));
   }
-
-    return _deps;
-  }
+  return _deps;
+}
 
 Dependencies 
 XMLFilesBackend::createGroupDependencies( const zypp::parser::yum::YUMGroupData & parsed ) const
@@ -619,30 +671,6 @@ XMLFilesBackend::createGroupDependencies( const zypp::parser::yum::YUMGroupData
   return _deps;
 }
 
-Dependencies
-XMLFilesBackend::createPatternDependencies( const zypp::parser::yum::YUMPatternData & parsed ) const
-{
-  Dependencies _deps;
-#warning FIXME once pattern class is ready
-/*
-FIXME
-  for (std::list<PackageReq>::const_iterator it = parsed.packageList.begin(); it != parsed.packageList.end(); it++)
-  {
-    if (it->type == "mandatory" || it->type == "")
-    {
-      _deps[Dep::REQUIRES].insert(createCapability(YUMDependency( "", it->name, "EQ", it->epoch, it->ver, it->rel, "" ), ResTraits<Package>::kind));
-    }
-  }
-  for (std::list<MetaPkg>::const_iterator it = parsed.patternlist.begin(); it != parsed.patternlist.end(); it++)
-  {
-    if (it->type == "mandatory" || it->type == "")
-    {
-      _deps[Dep::REQUIRES].insert(createCapability(YUMDependency( "", it->name, "", "", "", "", "" ), ResTraits<Selection>::kind));
-    }
-  }*/
-  return _deps;
-}
-
 Capability
 XMLFilesBackend::createCapability(const YUMDependency & dep, const Resolvable::Kind & my_kind) const
 {
index f5c9b2b..7aca3fe 100644 (file)
@@ -20,6 +20,7 @@
 #include "zypp/Script.h"
 #include "zypp/Product.h"
 #include "zypp/Selection.h"
+#include "zypp/Pattern.h"
 
 #include "zypp/parser/yum/YUMParser.h"
 #include "zypp/parser/yum/YUMParserData.h"
@@ -131,7 +132,7 @@ public:
   Script::Ptr createScript(const zypp::parser::yum::YUMPatchScript & parsed ) const;
   Product::Ptr createProduct( const zypp::parser::yum::YUMProductData & parsed ) const;
   Selection::Ptr createSelection( const zypp::parser::yum::YUMGroupData & parsed ) const;
-
+  Pattern::Ptr createPattern( const zypp::parser::yum::YUMPatternData & parsed ) const;
 
   Dependencies createDependencies( const zypp::parser::yum::YUMObjectData & parsed, const Resolvable::Kind my_kind ) const;
   Dependencies createGroupDependencies( const zypp::parser::yum::YUMGroupData & parsed ) const;
index 710212c..6f03c48 100644 (file)
@@ -36,6 +36,47 @@ namespace zypp
     XMLPatternImpl::~XMLPatternImpl()
     {}
 
+      bool XMLPatternImpl::userVisible() const {
+        return _user_visible;
+      }
+
+      TranslatedText XMLPatternImpl::summary() const
+      { return _summary; }
+
+      TranslatedText XMLPatternImpl::description() const
+      { return _description; }
+
+      Text XMLPatternImpl::insnotify() const
+      { return ResObjectImplIf::insnotify(); }
+
+      Text XMLPatternImpl::delnotify() const
+      { return ResObjectImplIf::delnotify(); }
+
+      bool XMLPatternImpl::providesSources() const
+      { return ResObjectImplIf::providesSources(); }
+
+      Label XMLPatternImpl::instSrcLabel() const
+      { return ResObjectImplIf::instSrcLabel(); }
+
+      Vendor XMLPatternImpl::instSrcVendor() const
+      { return ResObjectImplIf::instSrcVendor(); }
+
+      ByteCount XMLPatternImpl::size() const
+      { return ResObjectImplIf::size(); }
+
+      /** */
+      bool XMLPatternImpl::isDefault() const
+      { return _default; }
+      /** */
+      std::string XMLPatternImpl::category() const
+      { return _category; }
+      /** */
+      Pathname XMLPatternImpl::icon() const
+      { return _icon; }
+      /** */
+      Pathname XMLPatternImpl::script() const
+      { return _script; }
+
     /////////////////////////////////////////////////////////////////
   } // namespace storage
   ///////////////////////////////////////////////////////////////////
index b8cabcf..da8f7ec 100644 (file)
@@ -28,11 +28,32 @@ namespace zypp
     //
     /**
     */
-    class XMLPatternImpl : public zypp::detail::PatternImplIf
+    struct XMLPatternImpl : public zypp::detail::PatternImplIf
     {
-    public:
       XMLPatternImpl();
       virtual ~XMLPatternImpl();
+
+      virtual bool userVisible() const;
+      virtual TranslatedText summary() const;
+      virtual TranslatedText description() const;
+      virtual Text insnotify() const;
+      virtual Text delnotify() const;
+      virtual bool providesSources() const;
+      virtual Label instSrcLabel() const;
+      virtual Vendor instSrcVendor() const;
+      virtual ByteCount size() const;
+      virtual bool isDefault() const;
+      virtual std::string category() const;
+      virtual Pathname icon() const;
+      virtual Pathname script() const;
+
+      bool _user_visible;
+      TranslatedText _summary;
+      TranslatedText _description;
+      bool _default;
+      std::string _category;
+      Pathname _icon;
+      Pathname _script;
     };
     ///////////////////////////////////////////////////////////////////