FOSSredder 0.5.0
Loading...
Searching...
No Matches
Analysis.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <algorithm>
9#include <cctype>
10#include <cstddef>
11#include <string>
12#include <unordered_map>
13#include <utility>
14
20
21namespace core::domain {
22
23class Analysis {
24public:
26
27 Analysis(const Analysis&) = delete;
28 Analysis& operator=(const Analysis&) = delete;
29 Analysis(Analysis&&) = delete;
31
36 void rename(EntityName value);
41 void rename(std::string value);
42
47 void setType(AnalysisType value);
52 void setType(std::string value);
57 void setConfigJson(std::string value);
62 void setFilterSpec(FilterSpec value);
67 void setFilterSpec(std::string value);
72 void setExportFormat(ExportFormat value);
77 void setExportFormat(std::string value);
82 void setIncludeCalculationAdjustments(bool value);
87 void setExportStateJson(std::string value);
92 void setSnapshotTransactionsJson(std::string value);
96 void clearAdjustments();
97
103 void setAdjustment(std::string key, double value);
104
109 void removeAdjustment(const std::string& key);
110
116 [[nodiscard]] bool hasAdjustment(const std::string& key) const;
117
122 [[nodiscard]] std::size_t adjustmentCount() const noexcept;
123
128 [[nodiscard]] bool hasType() const noexcept;
133 [[nodiscard]] bool hasExportFormat() const noexcept;
138 [[nodiscard]] bool hasConfig() const noexcept;
143 [[nodiscard]] bool hasFilterSpec() const noexcept;
148 [[nodiscard]] bool hasSnapshotTransactions() const noexcept;
153 [[nodiscard]] bool isReadyForExport() const noexcept;
158 [[nodiscard]] bool isConfigured() const noexcept;
163 [[nodiscard]] bool isTabular() const noexcept;
168 [[nodiscard]] bool isChartLike() const noexcept;
174 [[nodiscard]] bool supportsExportFormat(const std::string& candidate) const;
179 [[nodiscard]] bool hasAdjustments() const noexcept;
184 [[nodiscard]] bool isResultReady() const noexcept;
185
190 [[nodiscard]] std::string executionType() const;
191
196 [[nodiscard]] std::string outputType() const;
197
198private:
199 std::string id_;
200 std::string name_;
201 std::string type_;
202 std::string configJson_;
203 std::string filterSpec_;
204 std::string exportFormat_;
205 bool includeCalculationAdjustments_ = true;
206 std::string exportStateJson_;
207 std::string snapshotTransactionsJson_;
208 std::unordered_map<std::string, double> adjustments_;
209 std::string createdAt_;
210 std::string updatedAt_;
211
212public:
213 // Read accessors
214 [[nodiscard]] const std::string& id() const noexcept;
215 [[nodiscard]] const std::string& name() const noexcept;
216 [[nodiscard]] const std::string& type() const noexcept;
217 [[nodiscard]] const std::string& configJson() const noexcept;
218 [[nodiscard]] const std::string& filterSpec() const noexcept;
219 [[nodiscard]] const std::string& exportFormat() const noexcept;
220 [[nodiscard]] const bool& includeCalculationAdjustments() const noexcept;
221 [[nodiscard]] const std::string& exportStateJson() const noexcept;
222 [[nodiscard]] const std::string& snapshotTransactionsJson() const noexcept;
223 [[nodiscard]] const std::unordered_map<std::string, double>& adjustments() const noexcept;
224 [[nodiscard]] const std::string& createdAt() const noexcept;
225 [[nodiscard]] const std::string& updatedAt() const noexcept;
226
227 // Technical hydration
228 void setId(std::string value);
229 void setCreatedAt(std::string value);
230 void setUpdatedAt(std::string value);
231};
232
233} // namespace core::domain
Shared analysis validation and normalization helpers.
Value object for analysis type labels.
Small value object for normalized entity display names.
Value object for export format labels.
Value object for analysis filter specifications.
bool isResultReady() const noexcept
Checks whether the analysis has enough data to represent a result.
Definition Analysis.cpp:181
std::string outputType() const
Resolves the effective output type for the analysis.
Definition Analysis.cpp:189
bool isChartLike() const noexcept
Checks whether the analysis type is chart-like.
Definition Analysis.cpp:165
bool isTabular() const noexcept
Checks whether the analysis type is tabular.
Definition Analysis.cpp:161
Analysis & operator=(const Analysis &)=delete
void rename(EntityName value)
Renames the analysis with normalized entity text.
Definition Analysis.cpp:16
bool hasType() const noexcept
Checks whether the analysis has a valid type.
Definition Analysis.cpp:133
const std::string & filterSpec() const noexcept
Definition Analysis.cpp:197
void setAdjustment(std::string key, double value)
Sets or updates a normalized adjustment entry.
Definition Analysis.cpp:111
Analysis(const Analysis &)=delete
void setCreatedAt(std::string value)
Definition Analysis.cpp:206
const std::string & createdAt() const noexcept
Definition Analysis.cpp:203
void setExportStateJson(std::string value)
Stores the export state JSON snapshot.
Definition Analysis.cpp:56
void setType(AnalysisType value)
Sets the analysis type from a value object.
Definition Analysis.cpp:24
void removeAdjustment(const std::string &key)
Removes a normalized adjustment entry.
Definition Analysis.cpp:119
const std::string & configJson() const noexcept
Definition Analysis.cpp:196
const std::string & snapshotTransactionsJson() const noexcept
Definition Analysis.cpp:201
std::size_t adjustmentCount() const noexcept
Returns the number of adjustments.
Definition Analysis.cpp:129
const std::string & name() const noexcept
Definition Analysis.cpp:194
const std::string & exportFormat() const noexcept
Definition Analysis.cpp:198
bool isReadyForExport() const noexcept
Checks whether the analysis is ready to export.
Definition Analysis.cpp:153
bool hasSnapshotTransactions() const noexcept
Checks whether snapshot transactions are present.
Definition Analysis.cpp:149
bool hasFilterSpec() const noexcept
Checks whether a filter specification exists.
Definition Analysis.cpp:145
void setUpdatedAt(std::string value)
Definition Analysis.cpp:207
const std::string & exportStateJson() const noexcept
Definition Analysis.cpp:200
bool hasConfig() const noexcept
Checks whether configuration JSON exists.
Definition Analysis.cpp:141
bool hasAdjustment(const std::string &key) const
Checks whether an adjustment exists.
Definition Analysis.cpp:124
void setSnapshotTransactionsJson(std::string value)
Stores the snapshot transactions JSON.
Definition Analysis.cpp:60
void setId(std::string value)
Definition Analysis.cpp:205
Analysis(Analysis &&)=delete
void setExportFormat(ExportFormat value)
Sets the export format from a value object.
Definition Analysis.cpp:44
std::string executionType() const
Resolves the effective execution type for the analysis.
Definition Analysis.cpp:185
const bool & includeCalculationAdjustments() const noexcept
Definition Analysis.cpp:199
void setFilterSpec(FilterSpec value)
Sets the filter specification from a value object.
Definition Analysis.cpp:36
void setConfigJson(std::string value)
Stores the raw configuration JSON.
Definition Analysis.cpp:32
const std::unordered_map< std::string, double > & adjustments() const noexcept
Definition Analysis.cpp:202
void clearAdjustments()
Clears all adjustment entries.
Definition Analysis.cpp:107
const std::string & updatedAt() const noexcept
Definition Analysis.cpp:204
bool isConfigured() const noexcept
Checks whether the analysis is configured sufficiently for processing.
Definition Analysis.cpp:157
const std::string & type() const noexcept
Definition Analysis.cpp:195
Analysis & operator=(Analysis &&)=delete
void setIncludeCalculationAdjustments(bool value)
Enables or disables calculation adjustments.
Definition Analysis.cpp:52
bool hasExportFormat() const noexcept
Checks whether the analysis has a valid export format.
Definition Analysis.cpp:137
bool supportsExportFormat(const std::string &candidate) const
Checks whether a candidate export format matches this analysis.
Definition Analysis.cpp:169
bool hasAdjustments() const noexcept
Checks whether at least one adjustment exists.
Definition Analysis.cpp:177