Keyple Card Calypso C++ Library 2.1.0
Reference Terminal Reader API for C++
DirectoryHeaderAdapter.cpp
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright (c) 2021 Calypso Networks Association https://calypsonet.org/ *
3 * *
4 * See the NOTICE file(s) distributed with this work for additional information regarding *
5 * copyright ownership. *
6 * *
7 * This program and the accompanying materials are made available under the terms of the Eclipse *
8 * Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0 *
9 * *
10 * SPDX-License-Identifier: EPL-2.0 *
11 **************************************************************************************************/
12
14
15/* Keyple Core Util */
16#include "IllegalStateException.h"
17
18namespace keyple {
19namespace card {
20namespace calypso {
21
22using namespace keyple::core::util::cpp::exception;
23
25
26const std::string DirectoryHeaderAdapter::LEVEL_STR = "level";
27
28/* DIRECTORY HEADER BUILDER --------------------------------------------------------------------- */
29
30DirectoryHeaderBuilder::DirectoryHeaderBuilder() {}
31
33{
34 mLid = lid;
35
36 return* this;
37}
38
40 const std::vector<uint8_t>& accessConditions)
41{
42 mAccessConditions = accessConditions;
43
44 return *this;
45}
46
48 const std::vector<uint8_t>& keyIndexes)
49{
50 mKeyIndexes = keyIndexes;
51
52 return *this;
53}
54
56{
57 mDfStatus = dfStatus;
58
59 return *this;
60}
61
63 const uint8_t kif)
64{
65 mKif.insert({level, kif});
66
67 return *this;
68}
69
70DirectoryHeaderBuilder& DirectoryHeaderBuilder::kvc(const WriteAccessLevel level, const uint8_t kvc)
71{
72 mKvc.insert({level, kvc});
73
74 return *this;
75}
76
77const std::shared_ptr<DirectoryHeader> DirectoryHeaderBuilder::build()
78{
79 return std::shared_ptr<DirectoryHeaderAdapter>(new DirectoryHeaderAdapter(shared_from_this()));
80}
81
82/* DIRECTORY HEADER ADAPTER --------------------------------------------------------------------- */
83
84DirectoryHeaderAdapter::DirectoryHeaderAdapter(
85 const std::shared_ptr<DirectoryHeaderBuilder> builder)
86: mLid(builder->mLid),
87 mAccessConditions(builder->mAccessConditions),
88 mKeyIndexes(builder->mKeyIndexes),
89 mDfStatus(builder->mDfStatus),
90 mKif(builder->mKif),
91 mKvc(builder->mKvc) {}
92
94{
95 return mLid;
96}
97
98const std::vector<uint8_t>& DirectoryHeaderAdapter::getAccessConditions() const
99{
100 return mAccessConditions;
101}
102
103const std::vector<uint8_t>& DirectoryHeaderAdapter::getKeyIndexes() const
104{
105 return mKeyIndexes;
106}
107
109{
110 return mDfStatus;
111}
112
113uint8_t DirectoryHeaderAdapter::getKif(const WriteAccessLevel writeAccessLevel) const
114{;
115 const auto it = mKif.find(writeAccessLevel);
116 if (it != mKif.end()) {
117 return it->second;
118 } else {
119 throw IllegalStateException("writeAccessLevel should exist in map");
120 }
121}
122
123uint8_t DirectoryHeaderAdapter::getKvc(const WriteAccessLevel writeAccessLevel) const
124{
125 const auto it = mKvc.find(writeAccessLevel);
126 if (it != mKvc.end()) {
127 return it->second;
128 } else {
129 throw IllegalStateException("writeAccessLevel should exist in map");
130 }
131}
132
133std::shared_ptr<DirectoryHeaderBuilder> DirectoryHeaderAdapter::builder()
134{
135 return std::shared_ptr<DirectoryHeaderBuilder>(new DirectoryHeaderBuilder());
136}
137
138}
139}
140}
DirectoryHeaderBuilder & kif(const WriteAccessLevel level, const uint8_t kif)
DirectoryHeaderBuilder & accessConditions(const std::vector< uint8_t > &accessConditions)
DirectoryHeaderBuilder & keyIndexes(const std::vector< uint8_t > &keyIndexes)
DirectoryHeaderBuilder & kvc(const WriteAccessLevel level, const uint8_t kvc)
uint8_t getKvc(const WriteAccessLevel writeAccessLevel) const override
const std::vector< uint8_t > & getKeyIndexes() const override
uint8_t getKif(const WriteAccessLevel writeAccessLevel) const override
const std::vector< uint8_t > & getAccessConditions() const override
static std::shared_ptr< DirectoryHeaderBuilder > builder()
DirectoryHeaderAdapter::DirectoryHeaderBuilder DirectoryHeaderBuilder