14#include "keyple/card/calypso/DirectoryHeaderAdapter.hpp"
20#include "keyple/core/util/cpp/exception/IllegalStateException.hpp"
26using keyple::core::util::cpp::exception::IllegalStateException;
28const std::string DirectoryHeaderAdapter::LEVEL_STR =
"level";
30DirectoryHeaderAdapter::DirectoryHeaderBuilder::DirectoryHeaderBuilder()
34DirectoryHeaderAdapter::DirectoryHeaderBuilder&
35DirectoryHeaderAdapter::DirectoryHeaderBuilder::lid(std::uint16_t lid)
42DirectoryHeaderAdapter::DirectoryHeaderBuilder&
43DirectoryHeaderAdapter::DirectoryHeaderBuilder::accessConditions(
44 const std::vector<std::uint8_t>& accessConditions)
46 mAccessConditions = accessConditions;
51DirectoryHeaderAdapter::DirectoryHeaderBuilder&
52DirectoryHeaderAdapter::DirectoryHeaderBuilder::keyIndexes(
53 const std::vector<std::uint8_t>& keyIndexes)
55 mKeyIndexes = keyIndexes;
60DirectoryHeaderAdapter::DirectoryHeaderBuilder&
61DirectoryHeaderAdapter::DirectoryHeaderBuilder::dfStatus(std::uint8_t dfStatus)
68DirectoryHeaderAdapter::DirectoryHeaderBuilder&
69DirectoryHeaderAdapter::DirectoryHeaderBuilder::kif(
70 WriteAccessLevel level, std::uint8_t kif)
72 mKif.insert({level, kif});
77DirectoryHeaderAdapter::DirectoryHeaderBuilder&
78DirectoryHeaderAdapter::DirectoryHeaderBuilder::kvc(
79 WriteAccessLevel level, std::uint8_t kvc)
81 mKvc.insert({level, kvc});
86std::unique_ptr<DirectoryHeader>
87DirectoryHeaderAdapter::DirectoryHeaderBuilder::build()
89 return std::unique_ptr<DirectoryHeaderAdapter>(
90 new DirectoryHeaderAdapter(
this));
93DirectoryHeaderAdapter::DirectoryHeaderAdapter(DirectoryHeaderBuilder* builder)
95, mAccessConditions(builder->mAccessConditions)
96, mKeyIndexes(builder->mKeyIndexes)
97, mDfStatus(builder->mDfStatus)
104DirectoryHeaderAdapter::getLid()
const
109const std::vector<std::uint8_t>&
110DirectoryHeaderAdapter::getAccessConditions()
const
112 return mAccessConditions;
115const std::vector<std::uint8_t>&
116DirectoryHeaderAdapter::getKeyIndexes()
const
122DirectoryHeaderAdapter::getDfStatus()
const
128DirectoryHeaderAdapter::getKif(WriteAccessLevel writeAccessLevel)
const
130 const auto it = mKif.find(writeAccessLevel);
131 if (it != mKif.end()) {
134 throw IllegalStateException(
"writeAccessLevel should exist in map");
139DirectoryHeaderAdapter::getKvc(WriteAccessLevel writeAccessLevel)
const
141 const auto it = mKvc.find(writeAccessLevel);
142 if (it != mKvc.end()) {
145 throw IllegalStateException(
"writeAccessLevel should exist in map");
149std::unique_ptr<DirectoryHeaderAdapter::DirectoryHeaderBuilder>
150DirectoryHeaderAdapter::builder()
152 return std::unique_ptr<DirectoryHeaderAdapter::DirectoryHeaderBuilder>(
153 new DirectoryHeaderAdapter::DirectoryHeaderBuilder());