Imported Upstream version 14.45.0
[platform/upstream/libzypp.git] / zypp / Product.h
index c921cf1..7c9bb3f 100644 (file)
@@ -43,6 +43,31 @@ namespace zypp
      */
     sat::Solvable referencePackage() const;
 
+    /** For installed products the name of the coddesponding
+     * \c /etc/products.d entry.
+    .*/
+    std::string referenceFilename() const;
+
+    /** List of packages included in older versions of this product and now dropped.
+     *
+     * This evaluates the \ref referencePackage \c weakremover namespace. It actually
+     * returns a \ref CapabilitySet, because we support to drop specific versions or
+     * version ranges of a package. Use \ref sat::WhatProvides to get the actually
+     * installed and available packages matching this list.
+     * \code
+     *   const Product & openSUSE;
+     *   sat::WhatProvides dropped( openSUSE.droplist() );
+     *   for_( it, dropped.poolItemBegin(), dropped.poolItemEnd() )
+     *   {
+     *     if ( it->status().isInstalled() )
+     *     {
+     *       MIL << "Installed but no longer supported package: " << *it << endl;
+     *     }
+     *   }
+     * \endcode
+     */
+    CapabilitySet droplist() const;
+
   public:
     /***/
     typedef std::vector<constPtr> ReplacedProducts;
@@ -52,30 +77,66 @@ namespace zypp
      */
     ReplacedProducts replacedProducts() const;
 
+    /** Vendor specific string denoting the product line. */
+    std::string productLine() const;
+
   public:
-    /** Untranslated short name like <tt>SLES 10</tt>*/
+    /** Untranslated short name like <tt>SLES 10</tt> (fallback: name) */
     std::string shortName() const;
 
     /** The product flavor (LiveCD Demo, FTP edition,...). */
     std::string flavor() const;
 
-    /** Get the product type (base, add-on)
+    /** Get the product type
      * Well, in an ideal world there is only one base product.
      * It's the installed product denoted by a symlink in
      * \c /etc/products.d.
-    */
-    std::string type() const;
-
-    /** Update repository indicator string.
-     * Repositories providing updates/patches for this product
-     * should (somehow) provide this string. So we are able to
-     * detect them.
      */
-    std::string updaterepoKey() const;
+    std::string type() const;
 
     /** The product flags */
     std::list<std::string> flags() const;
 
+    /** The date when this Product goes out of support as indicated by it's medadata. */
+    Date endOfLife() const;
+
+    /** ContentIdentifier of required update repositories. */
+    std::vector<Repository::ContentIdentifier> updateContentIdentifier() const;
+
+    /** Whether \a cident_r is listed as required update repository. */
+    bool hasUpdateContentIdentifier( const Repository::ContentIdentifier & cident_r ) const;
+
+    /** Whether one of the ContentIdentifier is listed as required update repository. */
+    template <class _Iterator>
+    bool hasUpdateContentIdentifier( _Iterator begin, _Iterator end ) const
+    {
+      for_( it, begin, end )
+       if ( hasUpdateContentIdentifier( *it ) )
+         return true;
+      return false;
+    }
+
+  public:
+    /** This is the \b installed product that is also targeted by the
+     *  \c /etc/products.d/baseproduct symlink.
+    */
+    bool isTargetDistribution() const;
+
+    /** This is \c register.target attribute of a product.
+      * Used for registration and filtering service repos.
+      */
+    std::string registerTarget() const;
+
+    /** This is \c register.release attribute of an \b installed product.
+      * Used for registration.
+      */
+    std::string registerRelease() const;
+
+    /** This is \c register.flavor attribute of a product.
+      * Used for registration.
+      */
+    std::string registerFlavor() const;
+
   public:
     /***/
     class UrlList;