FOSSredder 0.5.0
Loading...
Searching...
No Matches
Annual.cpp
Go to the documentation of this file.
1
5
7
8#include <algorithm>
9#include <iterator>
10#include <utility>
11
12namespace core::domain {
13
14Annual::Annual() = default;
15
17 name_ = std::move(value.value());
18}
19
20void Annual::rename(std::string value) {
21 rename(EntityName(std::move(value)));
22}
23
24void Annual::setYear(Year value) {
25 year_ = value.value();
26}
27
28void Annual::setYear(int value) {
29 setYear(Year(value));
30}
31
32void Annual::apply(std::string nameValue, int yearValue, std::vector<std::string> analysisIdsValue) {
33 rename(std::move(nameValue));
34 setYear(yearValue);
35 setAnalysisIds(std::move(analysisIdsValue));
36}
37
38void Annual::setAnalysisIds(std::vector<std::string> value) {
40 analysisIds_ = std::move(value);
41}
42
43void Annual::addAnalysisId(std::string value) {
44 value = policies::annual::normalizeId(std::move(value));
45 if (value.empty() || containsAnalysisId(value)) {
46 return;
47 }
48 analysisIds_.push_back(std::move(value));
49}
50
51void Annual::insertAnalysisId(std::string value, std::size_t position) {
52 value = policies::annual::normalizeId(std::move(value));
53 if (value.empty()) {
54 return;
55 }
56 removeAnalysisId(value);
57 if (position >= analysisIds_.size()) {
58 analysisIds_.push_back(std::move(value));
59 return;
60 }
61 analysisIds_.insert(analysisIds_.begin() + static_cast<std::vector<std::string>::difference_type>(position), std::move(value));
62}
63
64void Annual::removeAnalysisId(const std::string& value) {
65 const auto normalized = policies::annual::normalizeId(value);
66 analysisIds_.erase(std::remove(analysisIds_.begin(), analysisIds_.end(), normalized), analysisIds_.end());
67}
68
70 analysisIds_.clear();
71}
72
73bool Annual::containsAnalysisId(const std::string& value) const {
74 return policies::annual::containsAnalysisId(analysisIds_, value);
75}
76
77std::size_t Annual::indexOfAnalysisId(const std::string& value) const {
78 const auto normalized = policies::annual::normalizeId(value);
79 const auto it = std::find(analysisIds_.begin(), analysisIds_.end(), normalized);
80 if (it == analysisIds_.end()) {
81 return analysisIds_.size();
82 }
83 return static_cast<std::size_t>(std::distance(analysisIds_.begin(), it));
84}
85
86void Annual::moveAnalysisId(const std::string& value, std::size_t newPosition) {
87 const auto normalized = policies::annual::normalizeId(value);
88 const auto it = std::find(analysisIds_.begin(), analysisIds_.end(), normalized);
89 if (it == analysisIds_.end()) {
90 return;
91 }
92 const auto current = static_cast<std::size_t>(std::distance(analysisIds_.begin(), it));
93 const auto item = *it;
94 analysisIds_.erase(it);
95 if (newPosition >= analysisIds_.size()) {
96 analysisIds_.push_back(item);
97 return;
98 }
99 if (current < newPosition && newPosition > 0) {
100 --newPosition;
101 }
102 analysisIds_.insert(analysisIds_.begin() + static_cast<std::vector<std::string>::difference_type>(newPosition), item);
103}
104
105std::size_t Annual::analysisCount() const noexcept {
106 return analysisIds_.size();
107}
108
109bool Annual::hasYear() const noexcept {
110 return policies::annual::isValidYear(year_);
111}
112
113bool Annual::isEmpty() const noexcept {
114 return name_.empty() && !hasYear() && analysisIds_.empty();
115}
116
117const std::string& Annual::id() const noexcept { return id_; }
118const std::string& Annual::name() const noexcept { return name_; }
119const int& Annual::year() const noexcept { return year_; }
120const std::vector<std::string>& Annual::analysisIds() const noexcept { return analysisIds_; }
121const std::string& Annual::createdAt() const noexcept { return createdAt_; }
122const std::string& Annual::updatedAt() const noexcept { return updatedAt_; }
123void Annual::setId(std::string value) { id_ = std::move(value); }
124void Annual::setCreatedAt(std::string value) { createdAt_ = std::move(value); }
125void Annual::setUpdatedAt(std::string value) { updatedAt_ = std::move(value); }
126
127} // namespace core::domain
Domain model for annual aggregates.
void moveAnalysisId(const std::string &value, std::size_t newPosition)
Moves an analysis id to a new position.
Definition Annual.cpp:86
void setAnalysisIds(std::vector< std::string > value)
Replaces the linked analysis ids with normalized values.
Definition Annual.cpp:38
std::size_t analysisCount() const noexcept
Returns the number of linked analysis ids.
Definition Annual.cpp:105
void apply(std::string nameValue, int yearValue, std::vector< std::string > analysisIdsValue)
Applies the complete annual definition in one normalized domain step.
Definition Annual.cpp:32
std::size_t indexOfAnalysisId(const std::string &value) const
Returns the index of an analysis id.
Definition Annual.cpp:77
void addAnalysisId(std::string value)
Adds an analysis id when it is not already present.
Definition Annual.cpp:43
void setId(std::string value)
Definition Annual.cpp:123
void setUpdatedAt(std::string value)
Definition Annual.cpp:125
void setYear(Year value)
Sets the annual year from a value object.
Definition Annual.cpp:24
const int & year() const noexcept
Definition Annual.cpp:119
void removeAnalysisId(const std::string &value)
Removes an analysis id from the annual aggregate.
Definition Annual.cpp:64
const std::vector< std::string > & analysisIds() const noexcept
Definition Annual.cpp:120
void setCreatedAt(std::string value)
Definition Annual.cpp:124
const std::string & updatedAt() const noexcept
Definition Annual.cpp:122
void clearAnalysisIds()
Clears all linked analysis ids.
Definition Annual.cpp:69
bool isEmpty() const noexcept
Checks whether the annual aggregate is empty.
Definition Annual.cpp:113
void insertAnalysisId(std::string value, std::size_t position)
Inserts an analysis id at a requested position.
Definition Annual.cpp:51
bool containsAnalysisId(const std::string &value) const
Checks whether an analysis id exists.
Definition Annual.cpp:73
void rename(EntityName value)
Renames the annual aggregate with normalized entity text.
Definition Annual.cpp:16
const std::string & createdAt() const noexcept
Definition Annual.cpp:121
const std::string & name() const noexcept
Definition Annual.cpp:118
const std::string & id() const noexcept
Definition Annual.cpp:117
bool hasYear() const noexcept
Checks whether the annual year is valid.
Definition Annual.cpp:109
const std::string & value() const noexcept
int value() const noexcept
Definition Year.cpp:20
void normalizeIds(std::vector< std::string > &values)
Normalizes and deduplicates analysis ids.
bool containsAnalysisId(const std::vector< std::string > &analysisIds, const std::string &analysisId)
Checks whether an analysis id exists in a list.
bool isValidYear(int year)
Checks whether a year is valid for annual aggregates.
std::string normalizeId(std::string value)
Trims leading and trailing whitespace from an id.