FOSSredder 0.5.0
Loading...
Searching...
No Matches
Property.cpp
Go to the documentation of this file.
1
5
7
8#include <algorithm>
9#include <utility>
10
11namespace core::domain {
12
13Property::Property() = default;
14
16 name_ = std::move(value.value());
17}
18
19void Property::rename(std::string value) {
20 rename(EntityName(std::move(value)));
21}
22
23void Property::setAliases(std::vector<Alias> value) {
25 aliases_ = std::move(value);
26}
27
28void Property::setContractIds(std::vector<std::string> value) {
29 std::sort(value.begin(), value.end());
30 value.erase(std::unique(value.begin(), value.end()), value.end());
31 contractIds_ = std::move(value);
32}
33
36 if (value.value().empty() || policies::alias::containsAliasValue(aliases_, value.value())) {
37 return;
38 }
39 aliases_.push_back(std::move(value));
40}
41
42void Property::removeAlias(std::string value) {
43 const auto normalized = policies::alias::canonicalAliasValue(value);
44 policies::alias::removeAliasValue(aliases_, normalized);
45}
46
48 aliases_.clear();
49}
50
51void Property::recordAliasHit(std::string value, std::string timestamp) {
52 policies::alias::recordAliasHit(aliases_, std::move(value), std::move(timestamp));
53}
54
55bool Property::hasAlias(const std::string& value) const {
56 return policies::alias::containsAliasValue(aliases_, value);
57}
58
59std::size_t Property::aliasCount() const noexcept {
60 return aliases_.size();
61}
62
63void Property::addContractId(std::string value) {
64 value = policies::alias::trimCopy(std::move(value));
65 if (value.empty() || std::find(contractIds_.begin(), contractIds_.end(), value) != contractIds_.end()) {
66 return;
67 }
68 contractIds_.push_back(std::move(value));
69}
70
71void Property::removeContractId(std::string value) {
72 const auto normalized = policies::alias::trimCopy(value);
73 contractIds_.erase(std::remove(contractIds_.begin(), contractIds_.end(), normalized), contractIds_.end());
74}
75
77 contractIds_.clear();
78}
79
80bool Property::hasContractRelations() const noexcept {
81 return !contractIds_.empty();
82}
83
84std::size_t Property::contractCount() const noexcept {
85 return contractIds_.size();
86}
87
88const std::string& Property::id() const noexcept { return id_; }
89const std::string& Property::name() const noexcept { return name_; }
90const std::vector<Alias>& Property::aliases() const noexcept { return aliases_; }
91const std::vector<std::string>& Property::contractIds() const noexcept { return contractIds_; }
92const std::string& Property::createdAt() const noexcept { return createdAt_; }
93const std::string& Property::updatedAt() const noexcept { return updatedAt_; }
94void Property::setId(std::string value) { id_ = std::move(value); }
95void Property::setCreatedAt(std::string value) { createdAt_ = std::move(value); }
96void Property::setUpdatedAt(std::string value) { updatedAt_ = std::move(value); }
97
98} // namespace core::domain
Domain model for properties.
const std::string & value() const noexcept
Definition Alias.cpp:27
const std::string & value() const noexcept
void removeAlias(std::string value)
Removes an alias.
Definition Property.cpp:42
const std::string & id() const noexcept
Definition Property.cpp:88
void rename(EntityName value)
Renames the property with normalized entity text.
Definition Property.cpp:15
bool hasContractRelations() const noexcept
Checks whether the property has at least one linked contract.
Definition Property.cpp:80
const std::string & name() const noexcept
Definition Property.cpp:89
void removeContractId(std::string value)
Removes a linked contract identifier.
Definition Property.cpp:71
void setId(std::string value)
Definition Property.cpp:94
const std::vector< Alias > & aliases() const noexcept
Definition Property.cpp:90
void setCreatedAt(std::string value)
Definition Property.cpp:95
const std::string & updatedAt() const noexcept
Definition Property.cpp:93
const std::string & createdAt() const noexcept
Definition Property.cpp:92
std::size_t aliasCount() const noexcept
Returns the number of aliases.
Definition Property.cpp:59
void clearContractIds()
Clears all linked contract identifiers.
Definition Property.cpp:76
bool hasAlias(const std::string &value) const
Checks whether an alias exists on the property.
Definition Property.cpp:55
void setContractIds(std::vector< std::string > value)
Replaces all linked contract identifiers.
Definition Property.cpp:28
void recordAliasHit(std::string value, std::string timestamp={})
Records a usage hit for an alias.
Definition Property.cpp:51
std::size_t contractCount() const noexcept
Returns the number of linked contract identifiers.
Definition Property.cpp:84
void addAlias(Alias value)
Adds a normalized alias when it is not already present.
Definition Property.cpp:34
void clearAliases()
Clears all aliases from the property.
Definition Property.cpp:47
void setUpdatedAt(std::string value)
Definition Property.cpp:96
void addContractId(std::string value)
Adds a linked contract identifier when it is not already present.
Definition Property.cpp:63
const std::vector< std::string > & contractIds() const noexcept
Definition Property.cpp:91
void setAliases(std::vector< Alias > value)
Definition Property.cpp:23
std::string canonicalAliasValue(std::string value)
Canonicalizes an alias string for comparison.
void recordAliasHit(std::vector< Alias > &aliases, const std::string &value, const std::string &timestamp={})
Records or updates a hit for an alias value.
std::string trimCopy(std::string value)
Trims leading and trailing whitespace from text.
void normalizeAliases(std::vector< Alias > &aliases)
Normalizes and deduplicates a list of aliases.
bool containsAliasValue(const std::vector< Alias > &aliases, const std::string &value)
Checks whether an alias list already contains a value.
void removeAliasValue(std::vector< Alias > &aliases, const std::string &value)
Removes aliases with a given value.
void normalizeAlias(Alias &alias)
Normalizes a single alias in place.