FOSSredder 0.5.0
Loading...
Searching...
No Matches
Annual.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <algorithm>
9#include <iterator>
10#include <string>
11#include <vector>
12#include <utility>
13
17
18namespace core::domain {
19
20class Annual {
21public:
23
24 Annual(const Annual&) = delete;
25 Annual& operator=(const Annual&) = delete;
26 Annual(Annual&&) = delete;
27 Annual& operator=(Annual&&) = delete;
28
33 void rename(EntityName value);
38 void rename(std::string value);
39
44 void setYear(Year value);
49 void setYear(int value);
50
57 void apply(std::string nameValue, int yearValue, std::vector<std::string> analysisIdsValue);
58
63 void setAnalysisIds(std::vector<std::string> value);
64
69 void addAnalysisId(std::string value);
70
76 void insertAnalysisId(std::string value, std::size_t position);
77
82 void removeAnalysisId(const std::string& value);
83
87 void clearAnalysisIds();
88
94 [[nodiscard]] bool containsAnalysisId(const std::string& value) const;
95
101 [[nodiscard]] std::size_t indexOfAnalysisId(const std::string& value) const;
102
108 void moveAnalysisId(const std::string& value, std::size_t newPosition);
109
114 [[nodiscard]] std::size_t analysisCount() const noexcept;
115
120 [[nodiscard]] bool hasYear() const noexcept;
121
126 [[nodiscard]] bool isEmpty() const noexcept;
127
128private:
129 std::string id_;
130 std::string name_;
131 int year_ = 0;
132 std::vector<std::string> analysisIds_;
133 std::string createdAt_;
134 std::string updatedAt_;
135
136public:
137 // Read accessors
138 [[nodiscard]] const std::string& id() const noexcept;
139 [[nodiscard]] const std::string& name() const noexcept;
140 [[nodiscard]] const int& year() const noexcept;
141 [[nodiscard]] const std::vector<std::string>& analysisIds() const noexcept;
142 [[nodiscard]] const std::string& createdAt() const noexcept;
143 [[nodiscard]] const std::string& updatedAt() const noexcept;
144
145 // Technical hydration
146 void setId(std::string value);
147 void setCreatedAt(std::string value);
148 void setUpdatedAt(std::string value);
149};
150
151} // namespace core::domain
Shared annual validation helpers.
Small value object for normalized entity display names.
Value object for annual year validation.
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
Annual(const Annual &)=delete
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
Annual & operator=(const Annual &)=delete
const int & year() const noexcept
Definition Annual.cpp:119
Annual(Annual &&)=delete
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
Annual & operator=(Annual &&)=delete
bool hasYear() const noexcept
Checks whether the annual year is valid.
Definition Annual.cpp:109