ImagingTools Core SDK
CProductInstanceInfo.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ImtCore includes
6#include <imtbase/TIdentifiableWrap.h>
7#include <imtbase/CCollectionInfo.h>
8#include <imtlic/IProductInstanceInfo.h>
9#include <imtlic/CLicenseInstance.h>
10
11
12namespace imtlic
13{
14
15
22{
23public:
25
26 // reimplemented (imtlic::IProductInstanceInfo)
27 virtual const imtbase::IObjectCollection* GetProductDatabase() const override;
28 virtual const imtbase::IObjectCollection* GetCustomerDatabase() const override;
29 virtual void SetupProductInstance(
30 const QByteArray& productId,
31 const QByteArray& instanceId,
32 const QByteArray& customerId) override;
33 virtual void AddLicense(const QByteArray& licenseId, const QDateTime& expirationDate = QDateTime()) override;
34 virtual void RemoveLicense(const QByteArray& licenseId) override;
35 virtual void ClearLicenses() override;
36 virtual QByteArray GetProductId() const override;
37 virtual QByteArray GetProductInstanceId() const override;
38 virtual void SetProductInstanceId(const QByteArray& instanceId) override;
39 virtual QByteArray GetCustomerId() const override;
40 virtual QByteArray GetSerialNumber() const override;
41 virtual void SetSerialNumber(const QByteArray& serialNumber) override;
42 virtual QByteArray GetProject() const override;
43 virtual void SetProject(const QByteArray& project) override;
44 virtual bool IsInUse() const override;
45 virtual void SetInUse(bool inUse) override;
46 virtual bool IsInternalUse() const override;
47 virtual void SetInternalUse(bool internalUse) override;
48 virtual bool IsMultiProduct() const override;
49 virtual void SetMultiProduct(bool isMulti) override;
50 virtual int GetProductCount() const override;
51 virtual void SetProductCount(int count) override;
52 virtual QByteArray GetParentInstanceId() const override;
53 virtual void SetParentInstanceId(const QByteArray& parentInstanceId) override;
54
55 // reimplemented (imtlic::ILicenseInfoProvider)
56 virtual const imtbase::ICollectionInfo& GetLicenseInstances() const override;
57 virtual const imtlic::ILicenseInstance* GetLicenseInstance(const QByteArray& licenseId) const override;
58
59 // reimplemented (iser::ISerializable)
60 virtual bool Serialize(iser::IArchive& archive) override;
61
62 // reimplemented (istd::IChangeable)
63 virtual int GetSupportedOperations() const override;
64 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
65 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
66 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
67 virtual QByteArray GetFactoryId() const override;
68
69protected:
70 const imtbase::IObjectCollection* m_customerCollectionPtr;
71 const imtbase::IObjectCollection* m_productCollectionPtr;
72
73private:
74 typedef istd::TSmartPtr<CLicenseInstance> LicenseInstancePtr;
75 typedef QMap<QByteArray /*ID of the license definition in the product*/, LicenseInstancePtr> LicenseInstances;
76
77 QByteArray m_productId;
78 QByteArray m_customerId;
79 QByteArray m_instanceId;
80 QByteArray m_serialNumber;
81 QByteArray m_project;
82 bool m_inUse;
83 bool m_internalUse;
84 LicenseInstances m_licenses;
85 imtbase::CCollectionInfo m_licenseContainerInfo;
86 bool m_isMultiProduct;
87 int m_productCount;
88 QByteArray m_parentInstanceId;
89};
90
91
92typedef imtbase::TIdentifiableWrap<CProductInstanceInfo> CIdentifiableSoftwareInstanceInfo;
93
94
95} // namespace imtlic
Core licensing domain model providing feature-based product licensing and instance management.