ImagingTools Core SDK
Public Types | Public Member Functions | List of all members
imtlic::IProductInfoabstract

Interface for accessing information about a product (software or hardware). More...

#include <IProductInfo.h>

Inherits iprm::INameParam.

Inherited by imtlic::CProductInfo [virtual].

Public Types

enum  MetaInfoTypes { MIT_PRODUCT_NAME = idoc::IDocumentMetaInfo::MIT_USER , MIT_PRODUCT_ID , MIT_PRODUCT_DESCRIPTION , MIT_PRODUCT_CATEGORY }
 

Public Member Functions

virtual const IProductInfoGetProductFamilyInfo () const =0
 
virtual QByteArray GetProductId () const =0
 
virtual void SetProductId (const QByteArray &productId)=0
 
virtual QString GetProductDescription () const =0
 
virtual void SetProductDescription (const QString &description)=0
 
virtual QByteArray GetCategoryId () const =0
 
virtual void SetCategoryId (const QByteArray &categoryId)=0
 
virtual imtbase::IObjectCollectionGetFeatures ()=0
 
virtual bool AddFeature (const QByteArray &featureId, const IFeatureInfo &featureInfo)=0
 
virtual bool RemoveFeature (const QByteArray &featureId)=0
 

Detailed Description

Interface for accessing information about a product (software or hardware).

A Product represents a software or hardware offering and is fundamentally defined as a collection of Features. From a licensing perspective, a Product also contains all available License Definitions, where each license "unlocks" a specific set of features.

Conceptual Model

Product as Feature Container:**

Product
├─ Feature 1 (Mandatory)
├─ Feature 2 (Optional)
├─ Feature 3 (Optional)
│ ├─ Child Feature 3.1
│ └─ Child Feature 3.2
└─ Feature 4 (Permission)

Product as License Container:**

Product
├─ License Definition "Basic" → unlocks Features {1}
├─ License Definition "Professional" → unlocks Features {1, 2, 3}
└─ License Definition "Enterprise" → unlocks Features {1, 2, 3, 4}

Product Lifecycle

  1. Definition Phase:**

Create Product with unique ID, name, description

Product Families

Products can be organized in families:

Key Responsibilities

Meta-Information

Products support meta-information for persistence and serialization:

Usage Example

// Create a product
IProductInfoSharedPtr product = ...; // From factory
product->SetProductId("product-enterprise-suite");
product->SetName("Enterprise Suite");
product->SetProductDescription("Complete enterprise solution");
product->SetCategoryId("software");
// Add features
IFeatureInfoSharedPtr featureCore = ...;
product->AddFeature("feature-core", *featureCore);
IFeatureInfoSharedPtr featureAdvanced = ...;
product->AddFeature("feature-advanced", *featureAdvanced);
// Access features
imtbase::IObjectCollection* features = product->GetFeatures();
int featureCount = features->GetCount();

Related Interfaces

See also
IFeatureInfo, ILicenseDefinition, IProductInstanceInfo, IProductLicensingInfo

Definition at line 133 of file IProductInfo.h.

Member Enumeration Documentation

◆ MetaInfoTypes

Enumerator
MIT_PRODUCT_NAME 

Product Name given as QString.

MIT_PRODUCT_ID 

Product-ID given as QByteArray.

MIT_PRODUCT_DESCRIPTION 

Product Description given as QString.

MIT_PRODUCT_CATEGORY 

Product category given as QByteArray.

Definition at line 136 of file IProductInfo.h.

Member Function Documentation

◆ AddFeature()

virtual bool imtlic::IProductInfo::AddFeature ( const QByteArray &  featureId,
const IFeatureInfo featureInfo 
)
pure virtual

Add a feature to this product's feature collection.

Parameters
featureIdUnique identifier for the feature
featureInfoFeature information to be added
Returns
true if the feature was successfully added, false otherwise

◆ GetCategoryId()

virtual QByteArray imtlic::IProductInfo::GetCategoryId ( ) const
pure virtual

Get a category ID of this product.

◆ GetFeatures()

virtual imtbase::IObjectCollection * imtlic::IProductInfo::GetFeatures ( )
pure virtual

Get the collection of features that define this product's capabilities. A Product is essentially a container of Features.

◆ GetProductDescription()

virtual QString imtlic::IProductInfo::GetProductDescription ( ) const
pure virtual

Get a description of this product.

◆ GetProductFamilyInfo()

virtual const IProductInfo * imtlic::IProductInfo::GetProductFamilyInfo ( ) const
pure virtual

Get information about the related product family of this product, if available.

◆ GetProductId()

virtual QByteArray imtlic::IProductInfo::GetProductId ( ) const
pure virtual

Get a unique ID of this product.

◆ RemoveFeature()

virtual bool imtlic::IProductInfo::RemoveFeature ( const QByteArray &  featureId)
pure virtual

Remove a feature from this product's feature collection.

Parameters
featureIdUnique identifier of the feature to remove
Returns
true if the feature was successfully removed, false otherwise

◆ SetCategoryId()

virtual void imtlic::IProductInfo::SetCategoryId ( const QByteArray &  categoryId)
pure virtual

Set category-ID.

◆ SetProductDescription()

virtual void imtlic::IProductInfo::SetProductDescription ( const QString &  description)
pure virtual

Set product description.

◆ SetProductId()

virtual void imtlic::IProductInfo::SetProductId ( const QByteArray &  productId)
pure virtual

Set product-ID.