FOSSredder 0.5.0
Loading...
Searching...
No Matches
ImportAdapter.cpp
Go to the documentation of this file.
1
5
7
8#include <cstddef>
9#include <cstdint>
10#include <utility>
11#include <vector>
12
16
17namespace ui::adapters {
18
19namespace core_importing = core::ports::importing::draft;
20
21namespace {
22
23QStringList toQStringList(const std::vector<std::string>& values) {
24 QStringList out;
25 out.reserve(static_cast<int>(values.size()));
26 for (const auto& value : values) {
27 out.push_back(QString::fromStdString(value));
28 }
29 return out;
30}
31
32QString proofImageDataUrl(const std::vector<std::uint8_t>& bytes) {
33 if (bytes.empty()) {
34 return {};
35 }
36 const QByteArray data(reinterpret_cast<const char*>(bytes.data()),
37 static_cast<int>(bytes.size()));
38 return QString::fromLatin1(data.toBase64());
39}
40
41} // namespace
42
44 std::shared_ptr<core::ports::importing::IImportRunner> runner)
45 : runner_(std::move(runner)) {}
46
52 "ImportAdapter::startStatementImport", "Import runner invoked",
54 return runner_ ? runner_->startStatementImport(request, std::move(callback))
56}
57
60 if (runner_)
61 runner_->unsubscribe(handle);
62}
63
66 if (runner_)
67 runner_->cancel(handle);
68}
69
72 if (runner_)
73 runner_->pause(handle);
74}
75
78 if (runner_)
79 runner_->resume(handle);
80}
81
87
92 return runner_ ? runner_->buildDraftDerivedState(state, selection)
94}
95
98 const core::ports::workspace::WorkspaceSnapshot& secondary) const {
99 return runner_ ? runner_->mergeWorkspaceState(std::move(primary), secondary)
100 : std::move(primary);
101}
102
104 const core_importing::TransactionDraft& draft,
106 const auto derived = buildDraftDerivedState(state, toCoreSelection(draft));
107 return toTransactionDraftView(draft, derived);
108}
109
110core_importing::DraftLinkSelection
111ImportAdapter::toCoreSelection(const core_importing::TransactionDraft& draft) {
112 core_importing::DraftLinkSelection out;
113 out.name = draft.name;
114 out.metadata = draft.metadata;
115 out.actorText = draft.actorText;
116 out.propertyText = draft.propertyText;
117 out.actorId = draft.actorId;
118 out.actorSelected = draft.actorSelected;
119 out.contractId = draft.contractId;
120 out.contractSelected = draft.contractSelected;
121 out.type = draft.type;
122 out.allocatable = draft.allocatable;
123 out.allocatableSelected = draft.allocatableSelected;
124 out.propertyIds = draft.propertyIds;
125 return out;
126}
127
129 core_importing::TransactionDraft& draft,
131 const core_importing::TransactionDraftEdit& edit) const {
132 return runner_ && runner_->updateTransactionDraft(draft, state, edit);
133}
134
135core_importing::StatementDraftEditResult ImportAdapter::updateStatementDraft(
136 core_importing::StatementDraft& draft,
137 const core_importing::StatementDraftEdit& edit) const {
138 return runner_ ? runner_->updateStatementDraft(draft, edit)
139 : core_importing::StatementDraftEditResult{};
140}
141
142core_importing::StatementDraft ImportAdapter::buildStatementDraft(
143 const std::string& sourceFile,
146 const std::vector<core_importing::TransactionDraft>& transactions,
147 const std::string& draftId) const {
148 return runner_ ? runner_->buildStatementDraft(sourceFile, statement, state,
149 transactions, draftId)
150 : core_importing::StatementDraft{};
151}
152
153core_importing::StatementDraft ImportAdapter::restoreStatementDraft(
155 return runner_ ? runner_->restoreStatementDraft(draft)
156 : core_importing::StatementDraft{};
157}
158
161 const core_importing::StatementDraft& draft,
163 return runner_ ? runner_->buildStatementDraftSnapshot(draft, state)
165}
166
167TransactionDraftView ImportAdapter::toTransactionDraftView(
168 const core_importing::TransactionDraft& draft,
169 const core_importing::DraftDerivedState& derived) {
171 view.id = QString::fromStdString(draft.id);
172 view.name = QString::fromStdString(draft.name);
173 view.bookingDate = QString::fromStdString(draft.bookingDate);
174 view.valuta = QString::fromStdString(draft.valuta);
175 view.amountText = QVariant(draft.amount).toString();
176 view.metadata = QString::fromStdString(draft.metadata);
177 const QString proofData = proofImageDataUrl(draft.proofImageData);
178 view.proofSource =
179 proofData.isEmpty()
180 ? QString{}
181 : QStringLiteral("data:image/jpeg;base64,") + proofData;
182 view.actorId = QString::fromStdString(draft.actorId);
183 view.contractId = QString::fromStdString(draft.contractId);
184 view.propertyIds = toQStringList(draft.propertyIds);
185 view.status = draft.status;
186 view.effectiveAllocatable = draft.allocatableSelected
187 ? draft.allocatable
188 : derived.effectiveAllocatable;
189 view.actorSuggestionConfidence = derived.actorSuggestionConfidence;
191 QString::fromStdString(derived.actorSuggestionSummary);
192 view.propertySuggestionConfidence = derived.propertySuggestionConfidence;
194 QString::fromStdString(derived.propertySuggestionSummary);
195 view.contractSuggestionConfidence = derived.contractSuggestionConfidence;
197 QString::fromStdString(derived.contractSuggestionSummary);
199 derived.allocatableSuggestionConfidence;
201 QString::fromStdString(derived.allocatableSuggestionSummary);
202 return view;
203}
204
205} // namespace ui::adapters
Declares the import adapter used by UI import workflows.
Coordinates asynchronous statement imports and in-memory draft sessions.
Declares lightweight conversions between common Qt string types and standard strings.
Declarations for the UI Trace component.
void unsubscribe(const core::ports::importing::StatementImportHandle &handle)
Removes an import event subscription.
core::ports::importing::draft::StatementDraft buildStatementDraft(const std::string &sourceFile, const core::ports::workspace::StatementSnapshot &statement, const core::ports::workspace::WorkspaceSnapshot &state, const std::vector< core::ports::importing::draft::TransactionDraft > &transactions, const std::string &draftId) const
Builds a statement draft from an imported statement result.
ImportAdapter(std::shared_ptr< core::ports::importing::IImportRunner > runner)
Creates an adapter backed by the core import runner port.
core::ports::importing::StatementImportHandle startStatementImport(const core::ports::importing::ImportRequest &request, core::ports::importing::StatementImportEventCallback callback)
Starts an asynchronous statement import through the runner.
core::ports::importing::draft::StatementDraft restoreStatementDraft(const core::ports::workspace::StatementDraftSnapshot &draft) const
Restores a statement draft from workspace draft state.
core::ports::workspace::WorkspaceSnapshot mergeWorkspaceState(core::ports::workspace::WorkspaceSnapshot primary, const core::ports::workspace::WorkspaceSnapshot &secondary) const
Merges stored draft catalog state with live workspace state.
core::ports::importing::ImportResult importResult(const core::ports::importing::StatementImportHandle &handle)
Reads the final import result for a handle.
bool updateTransactionDraft(core::ports::importing::draft::TransactionDraft &draft, const core::ports::workspace::WorkspaceSnapshot &state, const core::ports::importing::draft::TransactionDraftEdit &edit) const
Applies a transaction draft edit through the runner.
core::ports::importing::draft::DraftDerivedState buildDraftDerivedState(const core::ports::workspace::WorkspaceSnapshot &state, const core::ports::importing::draft::DraftLinkSelection &selection) const
Builds derived draft suggestion state through the runner.
void cancel(const core::ports::importing::StatementImportHandle &handle)
Requests cancellation of a running import.
void pause(const core::ports::importing::StatementImportHandle &handle)
Requests pausing of a running import.
void resume(const core::ports::importing::StatementImportHandle &handle)
Requests resuming of a paused import.
core::ports::importing::draft::StatementDraftEditResult updateStatementDraft(core::ports::importing::draft::StatementDraft &draft, const core::ports::importing::draft::StatementDraftEdit &edit) const
Applies a statement draft edit through the runner.
TransactionDraftView transactionDraftView(const core::ports::importing::draft::TransactionDraft &draft, const core::ports::workspace::WorkspaceSnapshot &state) const
Builds the QML transaction draft view through core-derived state.
core::ports::workspace::StatementDraftSnapshot buildStatementDraftSnapshot(const core::ports::importing::draft::StatementDraft &draft, const core::ports::workspace::WorkspaceSnapshot &state) const
Builds workspace draft state from the active statement draft.
std::function< void(const StatementImportEvent &)> StatementImportEventCallback
constexpr auto kFile
Definition Trace.h:26
void traceAdapter(const char *origin, std::string message, core::errors::ErrorContext context={})
Emits an adapter trace event.
Definition Trace.h:75
QStringList toQStringList(const std::vector< std::string > &values)
Converts standard strings to a Qt string list.
Qt-friendly projection of the currently edited import transaction.