FOSSredder 0.5.0
Loading...
Searching...
No Matches
WorkspaceFacade.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <functional>
9#include <memory>
10#include <optional>
11#include <string>
12
17
18namespace core::application {
19
24
33public:
39 explicit WorkspaceFacade(std::unique_ptr<core::ports::storage::IStorageManager> storageManager);
41
45 WorkspaceFacade& operator=(WorkspaceFacade&&) noexcept;
46
52
57 void setErrorReporter(std::shared_ptr<core::ports::diagnostics::IErrorReporter> reporter) override;
58
63 void setAtomicStoreSave(core::ports::storage::IStorageManager::AtomicStoreSave saveFn) override;
64
69 void setAtomicStoreLoad(core::ports::storage::IStorageManager::AtomicStoreLoad loadFn) override;
70
75 void setDeletionImpactCallback(core::ports::workspace::IWorkspaceWriter::DeletionImpactCallback cb) override;
76
78 core::ports::workspace::WorkspaceSnapshot workspaceSnapshot() const override;
79
85 std::optional<core::ports::workspace::StatementDraftSnapshot> statementDraftSnapshot(const std::string& draftId = {}) const override;
91 core::ports::workspace::WorkspaceIdentitySnapshot actorIdentityByName(const std::string& name) const override;
107 const std::string& name,
108 const std::string& type,
109 const std::vector<std::string>& actorIds,
110 const std::vector<std::string>& propertyIds) const override;
122 std::string nextContractName() const override;
123
127 void openLatest() override;
132 void newFile(const std::string& path) override;
137 void openFile(const std::string& path) override;
141 void saveFile() override;
146 void saveFileAs(const std::string& path) override;
150 void commit() override;
154 void notifySnapshot() override;
155
204
210 std::string addActor(const core::ports::workspace::ActorCommand& command) override;
215 void updateActor(const core::ports::workspace::ActorCommand& command) override;
220 void deleteActor(const std::string& id) override;
221
227 std::string addProperty(const core::ports::workspace::PropertyCommand& command) override;
232 void updateProperty(const core::ports::workspace::PropertyCommand& command) override;
237 void deleteProperty(const std::string& id) override;
238
244 std::string addContract(const core::ports::workspace::ContractCommand& command) override;
249 void updateContract(const core::ports::workspace::ContractCommand& command) override;
254 void deleteContract(const std::string& id) override;
255
261 std::string addStatement(const core::ports::workspace::StatementCommand& command) override;
272 void updateStatement(const core::ports::workspace::StatementCommand& command) override;
277 void deleteStatement(const std::string& id) override;
278
284 std::string addTransaction(const core::ports::workspace::TransactionCommand& command) override;
294 void deleteTransaction(const std::string& id) override;
295
301 std::string addAnalysis(const core::ports::workspace::AnalysisCommand& command) override;
306 void updateAnalysis(const core::ports::workspace::AnalysisCommand& command) override;
311 void deleteAnalysis(const std::string& id) override;
312
318 std::string addAnnual(const core::ports::workspace::AnnualCommand& command) override;
323 void updateAnnual(const core::ports::workspace::AnnualCommand& command) override;
328 void deleteAnnual(const std::string& id) override;
329
345 void clearStatementDraft(const std::string& draftId = {}) override;
350 void saveImportLog(const core::ports::workspace::ImportLogCommand& command) override;
355 void deleteImportLog(const std::string& id) override;
360 void saveExportLog(const core::ports::workspace::ExportLogCommand& command) override;
365 void deleteExportLog(const std::string& id) override;
366
368 std::string currentPath() const override;
369
370private:
371 void installStateChangedDispatcher();
372
373 SnapshotChanged onSnapshotChanged_;
374 std::unique_ptr<WorkspaceSession> session_;
375 std::unique_ptr<WorkspaceCommandService> commands_;
376 std::unique_ptr<WorkspaceWorkflowService> workflows_;
377 std::unique_ptr<WorkspaceQueryService> queries_;
378};
379
380} // namespace core::application
Declares the structured diagnostics reporting port.
Storage manager port used by application services.
Read-side workspace boundary that exposes immutable snapshots.
Write-side workspace boundary that accepts typed command models.
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.
WorkspaceFacade(const WorkspaceFacade &)=delete
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.
WorkspaceFacade(WorkspaceFacade &&) noexcept
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.
WorkspaceFacade & operator=(const WorkspaceFacade &)=delete
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.
Write-side workspace boundary for persistence, CRUD, drafts, and logs.
std::function< void(const DeletionImpact &)> DeletionImpactCallback
std::function< void(const WorkspaceSnapshot &)> SnapshotChanged
Catalog selection change request for transaction forms.
Transaction catalog ids selected by a UI form or workspace query.