10Duke Scale C++ Client
Loading...
Searching...
No Matches
FluentConsumptionBuilder.h
1#ifndef TENDUKE_SE_LICENSING_CHEKOUTISH_H
2#define TENDUKE_SE_LICENSING_CHEKOUTISH_H
3
4#include "./LicenseCheckoutArguments.h"
5#include "./LicenseCheckoutParameters.h"
6#include "../../License.h"
7
8#include <cstdint>
9#include <string>
10#include <utility>
11
12namespace tenduke { namespace se { namespace licensing {
13
18template <typename Builder>
20{
21public:
27 : buildingItem(false)
28 , licenseKey(std::move(licenseKey))
29 , qty(0)
30 , qtyDimension(::tenduke::se::licensing::License::QuantityDimension::NONE)
31 {}
32
33public:
40 Builder & seats(const std::string &pProductName, std::int64_t numSeats)
41 {
42 startArgument(::tenduke::se::licensing::License::SEATS, pProductName, numSeats);
43 return static_cast<Builder&>(*this);
44 }
45
51 Builder & seat(const std::string &pProductName)
52 {
53 return seats(pProductName, 1);
54 }
55
62 Builder & count(const std::string &pProductName, std::int64_t useCount)
63 {
64 startArgument(::tenduke::se::licensing::License::USE_COUNT, pProductName, useCount);
65 return static_cast<Builder&>(*this);
66 }
67
73 Builder & count(const std::string &pProductName)
74 {
75 return count(pProductName, 1);
76 }
77
84 Builder & time(const std::string &pProductName, std::int64_t useTime)
85 {
86 startArgument(::tenduke::se::licensing::License::USE_TIME, pProductName, useTime);
87 return static_cast<Builder&>(*this);
88 }
89
99 Builder & version(const std::string &pClientVersion)
100 {
101 if (buildingItem) {
102 this->clientVersion = pClientVersion;
103 }
104 else {
105 defaultVersion = pClientVersion;
106 }
107 return static_cast<Builder&>(*this);
108 }
109
117 Builder & licenseId(const std::string &pLicenseId)
118 {
119 this->id = pLicenseId;
120 return static_cast<Builder&>(*this);
121 }
122
123protected:
128 {
129 if (buildingItem) {
130 arguments.emplace_back(
131 productName,
132 qty,
133 qtyDimension,
134 clientVersion,
135 id
136 );
137 }
138 }
139
148 const std::string &pProductName,
149 std::int64_t pQty
150 )
151 {
152 this->buildingItem = true;
153 this->qtyDimension = pQtyDimension;
154 this->productName = pProductName;
155 this->qty = pQty;
156
157 this->id = "";
158 this->clientVersion = defaultVersion;
159 }
160
161protected:
163 const std::string licenseKey;
164
166 std::vector<::tenduke::se::licensing::LicenseCheckoutArguments> arguments;
167
168private:
169 bool buildingItem;
170 std::string defaultVersion;
171
173 std::string clientVersion;
174 std::int64_t qty;
175 std::string productName;
176 std::string id;
177};
178
179}}}
180
181#endif //TENDUKE_SE_LICENSING_CHEKOUTISH_H
Base class for fluent building of license checkout parameters.
Definition FluentConsumptionBuilder.h:20
Builder & seats(const std::string &pProductName, std::int64_t numSeats)
Start building a license-consumption for seats.
Definition FluentConsumptionBuilder.h:40
FluentConsumptionBuilder(std::string licenseKey)
Constructs new instance.
Definition FluentConsumptionBuilder.h:26
Builder & count(const std::string &pProductName, std::int64_t useCount)
Start building a license consumption for use count.
Definition FluentConsumptionBuilder.h:62
void buildArgument()
Builds one argument.
Definition FluentConsumptionBuilder.h:127
Builder & time(const std::string &pProductName, std::int64_t useTime)
Starts building a license consumption of use time.
Definition FluentConsumptionBuilder.h:84
Builder & seat(const std::string &pProductName)
Start building a license-consumption for one seat.
Definition FluentConsumptionBuilder.h:51
const std::string licenseKey
License key to use in checkout.
Definition FluentConsumptionBuilder.h:163
Builder & licenseId(const std::string &pLicenseId)
Sets the license id to consume.
Definition FluentConsumptionBuilder.h:117
Builder & version(const std::string &pClientVersion)
Set the client version.
Definition FluentConsumptionBuilder.h:99
std::vector<::tenduke::se::licensing::LicenseCheckoutArguments > arguments
Arguments.
Definition FluentConsumptionBuilder.h:166
Builder & count(const std::string &pProductName)
Starts building a license consumption for one use count.
Definition FluentConsumptionBuilder.h:73
void startArgument(::tenduke::se::licensing::License::QuantityDimension pQtyDimension, const std::string &pProductName, std::int64_t pQty)
Starts building new argument.
Definition FluentConsumptionBuilder.h:146
10Duke Scale license.
Definition License.h:27
QuantityDimension
Quantity dimensions.
Definition License.h:33
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7