FOSSredder 0.5.0
Loading...
Searching...
No Matches
WorkspaceFacade.cpp
Go to the documentation of this file.
1
5
6#include "core/pch.h"
8
13
14namespace core::application {
15
16namespace {
17
18core::ports::workspace::DeletionImpact toWorkspaceDeletionImpact(
19 const core::domain::DeletionImpact& impact) {
20 return {
21 impact.deletedActorIds,
22 impact.deletedPropertyIds,
23 impact.deletedContractIds,
26 impact.deletedAnalysisIds,
27 impact.deletedAnnualIds,
32 };
33}
34
35} // namespace
36
38 std::unique_ptr<core::ports::storage::IStorageManager> storageManager)
39 : session_(std::make_unique<WorkspaceSession>(std::move(storageManager))),
40 commands_(std::make_unique<WorkspaceCommandService>(*session_)),
41 workflows_(std::make_unique<WorkspaceWorkflowService>(*session_)),
42 queries_(std::make_unique<WorkspaceQueryService>(*session_))
43{
44}
45
47
49
50WorkspaceFacade& WorkspaceFacade::operator=(WorkspaceFacade&&) noexcept = default;
51
53 onSnapshotChanged_ = std::move(cb);
54 installStateChangedDispatcher();
55}
56
57void WorkspaceFacade::installStateChangedDispatcher() {
58 session_->setStateChangedCallback(
60 if (onSnapshotChanged_) {
61 onSnapshotChanged_(workspaceSnapshot());
62 }
63 });
64}
65
66void WorkspaceFacade::setErrorReporter(std::shared_ptr<core::ports::diagnostics::IErrorReporter> reporter) {
67 session_->setErrorReporter(std::move(reporter));
68}
69
71 session_->setAtomicStoreSave(std::move(saveFn));
72}
73
75 session_->setAtomicStoreLoad(std::move(loadFn));
76}
77
80 session_->setDeletionImpactCallback(
81 [callback = std::move(cb)](const core::domain::DeletionImpact& impact) {
82 if (callback) {
83 callback(toWorkspaceDeletionImpact(impact));
84 }
85 });
86}
87
89 return queries_->workspaceSnapshot();
90}
91
92std::optional<core::ports::workspace::StatementDraftSnapshot>
93WorkspaceFacade::statementDraftSnapshot(const std::string& draftId) const {
94 return queries_->statementDraftSnapshot(draftId);
95}
96
98 return queries_->actorIdentityByName(name);
99}
100
102 return queries_->propertyIdentityByName(name);
103}
104
106 const std::string& name,
107 const std::string& type,
108 const std::vector<std::string>& actorIds,
109 const std::vector<std::string>& propertyIds) const {
110 return queries_->contractIdentityBySignature(name, type, actorIds, propertyIds);
111}
112
116 return queries_->transactionCatalogSelection(change);
117}
118
120 return queries_->nextContractName();
121}
122
124 session_->openLatest();
125}
126
127void WorkspaceFacade::newFile(const std::string& path) {
128 session_->newFile(path);
129}
130
131void WorkspaceFacade::openFile(const std::string& path) {
132 session_->openFile(path);
133}
134
136 session_->saveFile();
137}
138
139void WorkspaceFacade::saveFileAs(const std::string& path) {
140 session_->saveFileAs(path);
141}
142
144 session_->commit();
145}
146
148 session_->notifyState();
149}
150
154
158
162
166
170
175
179
183
185 return commands_->addActor(command);
186}
187
189 commands_->updateActor(command);
190}
191
192void WorkspaceFacade::deleteActor(const std::string& id) {
193 commands_->deleteActor(id);
194}
195
197 return commands_->addProperty(command);
198}
199
201 commands_->updateProperty(command);
202}
203
204void WorkspaceFacade::deleteProperty(const std::string& id) {
205 commands_->deleteProperty(id);
206}
207
208void WorkspaceFacade::deleteContract(const std::string& id) {
209 commands_->deleteContract(id);
210}
211
213 return commands_->addContract(command);
214}
215
217 commands_->updateContract(command);
218}
219
221 return commands_->addStatement(command);
222}
223
226 return commands_->addStatementWithTransactions(command);
227}
228
230 commands_->updateStatement(command);
231}
232
233void WorkspaceFacade::deleteStatement(const std::string& id) {
234 commands_->deleteStatement(id);
235}
236
238 return commands_->addTransaction(command);
239}
240
242 commands_->updateTransaction(command);
243}
244
245void WorkspaceFacade::deleteTransaction(const std::string& id) {
246 commands_->deleteTransaction(id);
247}
248
250 return commands_->addAnalysis(command);
251}
252
254 commands_->updateAnalysis(command);
255}
256
257void WorkspaceFacade::deleteAnalysis(const std::string& id) {
258 commands_->deleteAnalysis(id);
259}
260
262 return commands_->addAnnual(command);
263}
264
266 commands_->updateAnnual(command);
267}
268
269void WorkspaceFacade::deleteAnnual(const std::string& id) {
270 commands_->deleteAnnual(id);
271}
272
274 return workflows_->finalizeStatementDraft(command);
275}
276
278 workflows_->saveStatementDraft(command);
279}
280
281void WorkspaceFacade::clearStatementDraft(const std::string& draftId) {
282 workflows_->clearStatementDraft(draftId);
283}
284
286 workflows_->saveImportLog(command);
287}
288
289void WorkspaceFacade::deleteImportLog(const std::string& id) {
290 workflows_->deleteImportLog(id);
291}
292
294 workflows_->saveExportLog(command);
295}
296
297void WorkspaceFacade::deleteExportLog(const std::string& id) {
298 workflows_->deleteExportLog(id);
299}
300
301std::string WorkspaceFacade::currentPath() const {
302 return queries_->currentPath();
303}
304
305} // namespace core::application
Applies catalog commands to workspace session state and persists commits.
Declares the workspace facade implementing snapshot reader and command writer ports.
Reads workspace snapshots and draft projections from the application layer.
Declares the mutable workspace session that ties in-memory state to storage.
Applies draft and log workflow commands to workspace session state.
Exposes state mutation and workspace persistence as a single application facade.
void setDeletionImpactCallback(core::ports::workspace::IWorkspaceWriter::DeletionImpactCallback cb) override
Registers a callback that receives deletion impact information after saves.
void setErrorReporter(std::shared_ptr< core::ports::diagnostics::IErrorReporter > reporter) override
Registers the error reporter used by workspace operations.
std::string finalizeStatementDraft(const core::ports::workspace::FinalizeStatementDraftCommand &command) override
Finalizes a statement draft.
void saveFileAs(const std::string &path) override
Saves the current workspace file to another path.
void updateContract(const core::ports::workspace::ContractCommand &command) override
Updates a contract.
void deleteProperty(const std::string &id) override
Deletes a property.
core::ports::workspace::WorkspaceIdentitySnapshot actorIdentityByName(const std::string &name) const override
Looks up an actor identity by name.
WorkspaceFacade(std::unique_ptr< core::ports::storage::IStorageManager > storageManager)
Construct with unique ownership of an IStorageManager.
core::ports::workspace::ValidationResult validateActor(const core::ports::workspace::ActorCommand &command) const override
Validates an actor command.
std::string addAnalysis(const core::ports::workspace::AnalysisCommand &command) override
Adds an analysis.
core::ports::workspace::ValidationResult validateStatement(const core::ports::workspace::StatementCommand &command) const override
Validates a statement command.
core::ports::workspace::ValidationResult validateStatementWithTransactions(const core::ports::workspace::StatementWithTransactionsCommand &command) const override
Validates a statement batch command.
void setSnapshotChangedCallback(SnapshotChanged cb) override
Registers a snapshot callback used by read-side consumers.
void deleteAnnual(const std::string &id) override
Deletes an annual.
core::ports::workspace::ValidationResult validateAnnual(const core::ports::workspace::AnnualCommand &command) const override
Validates an annual command.
void saveStatementDraft(const core::ports::workspace::StatementDraftCommand &command) override
Saves a statement draft.
std::string addStatement(const core::ports::workspace::StatementCommand &command) override
Adds a statement.
void commit() override
Commits pending workspace storage changes.
std::string nextContractName() const override
Returns the next generated contract name.
std::string addContract(const core::ports::workspace::ContractCommand &command) override
Adds a contract.
void newFile(const std::string &path) override
Creates a new workspace file.
core::ports::workspace::ValidationResult validateContract(const core::ports::workspace::ContractCommand &command) const override
Validates a contract command.
void openFile(const std::string &path) override
Opens a workspace file.
void updateActor(const core::ports::workspace::ActorCommand &command) override
Updates an actor.
void deleteImportLog(const std::string &id) override
Deletes an import log.
void clearStatementDraft(const std::string &draftId={}) override
Clears one statement draft or all drafts when id is empty.
void deleteActor(const std::string &id) override
Deletes an actor.
core::ports::workspace::WorkspaceIdentitySnapshot contractIdentityBySignature(const std::string &name, const std::string &type, const std::vector< std::string > &actorIds, const std::vector< std::string > &propertyIds) const override
Looks up a contract identity by signature.
void deleteStatement(const std::string &id) override
Deletes a statement.
std::string currentPath() const override
Returns the current workspace path tracked by the storage layer.
void updateTransaction(const core::ports::workspace::TransactionCommand &command) override
Updates a transaction.
void saveFile() override
Saves the current workspace file.
void updateAnnual(const core::ports::workspace::AnnualCommand &command) override
Updates an annual.
std::optional< core::ports::workspace::StatementDraftSnapshot > statementDraftSnapshot(const std::string &draftId={}) const override
Returns one statement draft snapshot.
void openLatest() override
Opens the latest workspace file.
void saveExportLog(const core::ports::workspace::ExportLogCommand &command) override
Saves an export log.
std::string addTransaction(const core::ports::workspace::TransactionCommand &command) override
Adds a transaction.
void saveImportLog(const core::ports::workspace::ImportLogCommand &command) override
Saves an import log.
std::string addStatementWithTransactions(const core::ports::workspace::StatementWithTransactionsCommand &command) override
Adds a statement and its transactions.
void updateProperty(const core::ports::workspace::PropertyCommand &command) override
Updates a property.
core::ports::workspace::WorkspaceIdentitySnapshot propertyIdentityByName(const std::string &name) const override
Looks up a property identity by name.
void deleteContract(const std::string &id) override
Deletes a contract.
void setAtomicStoreSave(core::ports::storage::IStorageManager::AtomicStoreSave saveFn) override
Registers the atomic save callback delegated to the storage manager.
void deleteTransaction(const std::string &id) override
Deletes a transaction.
std::string addActor(const core::ports::workspace::ActorCommand &command) override
Adds an actor.
void notifySnapshot() override
Publishes a fresh workspace snapshot.
core::ports::workspace::IWorkspaceWriter::SnapshotChanged SnapshotChanged
void updateStatement(const core::ports::workspace::StatementCommand &command) override
Updates a statement.
void updateAnalysis(const core::ports::workspace::AnalysisCommand &command) override
Updates an analysis.
core::ports::workspace::WorkspaceSnapshot workspaceSnapshot() const override
Returns the current immutable workspace snapshot.
void deleteExportLog(const std::string &id) override
Deletes an export log.
core::ports::workspace::ValidationResult validateAnalysis(const core::ports::workspace::AnalysisCommand &command) const override
Validates an analysis command.
std::string addProperty(const core::ports::workspace::PropertyCommand &command) override
Adds a property.
core::ports::workspace::ValidationResult validateProperty(const core::ports::workspace::PropertyCommand &command) const override
Validates a property command.
void setAtomicStoreLoad(core::ports::storage::IStorageManager::AtomicStoreLoad loadFn) override
Registers the atomic load callback delegated to the storage manager.
void deleteAnalysis(const std::string &id) override
Deletes an analysis.
core::ports::workspace::TransactionCatalogSelection transactionCatalogSelection(const core::ports::workspace::TransactionCatalogSelectionChange &change) const override
Applies catalog-dependent transaction selection rules.
std::string addAnnual(const core::ports::workspace::AnnualCommand &command) override
Adds an annual.
core::ports::workspace::ValidationResult validateTransaction(const core::ports::workspace::TransactionCommand &command) const override
Validates a transaction command.
Maintains the editable app state for one workspace and persists it through IStorageManager.
std::function< core::application::workspace::WorkspaceSessionState(const std::string &dbPath)> AtomicStoreLoad
std::function< core::domain::DeletionImpact(const std::string &dbPath, const core::application::workspace::WorkspaceSessionState &document)> AtomicStoreSave
Destroy the storage manager port.
std::function< void(const DeletionImpact &)> DeletionImpactCallback
Collects common core includes and aliases for precompiled-header builds.
Lists entity identifiers removed by cascading workspace operations.
std::vector< std::string > deletedAnnualIds
std::vector< std::string > deletedExportLogIds
std::vector< std::string > deletedStatementIds
std::vector< std::string > deletedActorIds
std::vector< std::string > deletedImportLogIds
std::vector< std::string > deletedPropertyIds
std::vector< std::string > deletedTransactionIds
std::vector< std::string > deletedStatementDraftIds
std::vector< std::string > deletedAnalysisIds
std::vector< std::string > deletedContractIds
std::vector< std::string > deletedTransactionDraftIds
Catalog selection change request for transaction forms.
Transaction catalog ids selected by a UI form or workspace query.