put changelog information to packages
authorJiri Srain <jsrain@suse.cz>
Fri, 2 Dec 2005 08:44:33 +0000 (08:44 +0000)
committerJiri Srain <jsrain@suse.cz>
Fri, 2 Dec 2005 08:44:33 +0000 (08:44 +0000)
zypp/Changelog.h [new file with mode: 0644]
zypp/Makefile.am
zypp/Package.cc
zypp/Package.h
zypp/detail/PackageImplIf.cc
zypp/detail/PackageImplIf.h
zypp/source/yum/YUMPackageImpl.cc
zypp/source/yum/YUMPackageImpl.h

diff --git a/zypp/Changelog.h b/zypp/Changelog.h
new file mode 100644 (file)
index 0000000..889e585
--- /dev/null
@@ -0,0 +1,67 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file zypp/Changelog.h
+ *
+*/
+#ifndef ZYPP_CHANGELOG_H
+#define ZYPP_CHANGELOG_H
+
+#include <string>
+#include <list>
+#include <iostream>
+
+using namespace std;
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{ /////////////////////////////////////////////////////////////////
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   CLASS NAME : ChangelogEntry
+  //
+  /** Single entry in a change log
+  */
+  class ChangelogEntry
+  {
+  public:
+    /** Default ctor */
+    ChangelogEntry( const Date & d, 
+                    const std::string & a, 
+                    const std::string & t )
+    : _date( d ), _author( a ), _text( t )
+    {};
+    /** Dtor */
+    ~ChangelogEntry()
+    {}
+    Date date() const { return _date; }
+    std::string author() const { return _author; }
+    std::string text() const { return _text; }
+
+  private:
+    Date _date;
+    std::string _author;
+    std::string _text;
+  };
+
+  typedef std::list<ChangelogEntry> Changelog;
+
+  inline std::ostream & operator<<( std::ostream & out,
+                                   const ChangelogEntry & obj )
+  { 
+    out << obj.date() << " " << obj.author() << endl << obj.text() << endl;
+    return out;
+  }
+
+  ///////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+
+#endif // ZYPP_CHANGELOG_H
index 8923b61..a2fb2c7 100644 (file)
@@ -21,7 +21,8 @@ include_HEADERS = NeedAType.h \
        Message.h       \
        Script.h        \
        Patch.h         \
-       Product.h
+       Product.h       \
+       Changelog.h
 
 ## ##################################################
 
index 97959d0..1e899f3 100644 (file)
@@ -42,7 +42,8 @@ namespace zypp
   //
   ///////////////////////////////////////////////////////////////////
 
-
+  Changelog Package::changelog()
+  { return pimpl().changelog(); }
 
   /////////////////////////////////////////////////////////////////
 } // namespace zypp
index abc689b..44a005d 100644 (file)
@@ -45,6 +45,8 @@ namespace zypp
              const Arch & arch_r );
     /** Dtor */
     virtual ~Package();
+    /** Get the package change log */
+    Changelog changelog();
 
   private:
     /** Access implementation */
index 4200c61..2acbe55 100644 (file)
@@ -47,8 +47,8 @@ namespace zypp
       PackageGroup PackageImplIf::group() const
       { return PackageGroup(); }
 
-      Text PackageImplIf::changelog() const
-      { return Text(); }
+      Changelog PackageImplIf::changelog() const
+      { return Changelog(); }
 
       std::string PackageImplIf::url() const
       { return std::string(); }
index b1aefe1..57ffe9b 100644 (file)
@@ -15,6 +15,7 @@
 #include "zypp/detail/ResObjectImplIf.h"
 #include "zypp/Edition.h"
 #include "zypp/Arch.h"
+#include "zypp/Changelog.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
@@ -181,7 +182,7 @@ namespace zypp
       /** */
       virtual PackageGroup group() const PURE_VIRTUAL;
       /** */
-      virtual Text changelog() const PURE_VIRTUAL;
+      virtual Changelog changelog() const PURE_VIRTUAL;
       /** Don't ship it as class Url, because it might be
        * in fact anything but a legal Url. */
       virtual std::string url() const PURE_VIRTUAL;
index d33abf6..f77d7c3 100644 (file)
@@ -77,7 +77,15 @@ namespace zypp
        {
          _filenames.push_back(it->name);
        }
-// TODO changelog
+       for (std::list<zypp::parser::yum::ChangelogEntry>::const_iterator
+               it = other.changelog.begin();
+            it != other.changelog.end();
+            it++)
+       {
+         _changelog.push_back(ChangelogEntry(strtol(it->date.c_str(), 0, 10),
+                                             it->author,
+                                             it->entry));
+       }
       }
 
       YUMPackageImpl::YUMPackageImpl(
@@ -169,7 +177,15 @@ namespace zypp
          );
          _delta_rpms.push_back(delta);
        }
-// TODO changelog
+       for (std::list<zypp::parser::yum::ChangelogEntry>::const_iterator
+               it = parsed.changelog.begin();
+            it != parsed.changelog.end();
+            it++)
+       {
+         _changelog.push_back(ChangelogEntry(strtol(it->date.c_str(), 0, 10),
+                                             it->author,
+                                             it->entry));
+       }
       }
 
 
@@ -234,7 +250,7 @@ namespace zypp
       { return _group; }
 
       /** */
-      Text YUMPackageImpl::changelog() const
+      Changelog YUMPackageImpl::changelog() const
       { return _changelog; }
 
       /** Don't ship it as class Url, because it might be
index 905c486..7beed0d 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "zypp/detail/PackageImpl.h"
 #include "zypp/parser/yum/YUMParserData.h"
+#include "zypp/Changelog.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
@@ -71,7 +72,7 @@ namespace zypp
        /** */
        virtual PackageGroup group() const;
        /** */
-       virtual Text changelog() const;
+       virtual Changelog changelog() const;
        /** Don't ship it as class Url, because it might be
         * in fact anything but a legal Url. */
        virtual std::string url() const;
@@ -198,7 +199,7 @@ namespace zypp
        Label _license;
        std::string _packager;
        PackageGroup _group;
-       Text _changelog;
+       Changelog _changelog;
        std::string _type;
        License _license_to_confirm;
        Text _authors;