FOSSredder 0.5.0
Loading...
Searching...
No Matches
AnalysisFilter.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <functional>
9#include <memory>
10#include <string>
11#include <utility>
12#include <vector>
13
16
18
24public:
25 using Pred =
26 std::function<bool(const std::shared_ptr<core::domain::Transaction> &,
28
30 void addPredicate(Pred p) { preds_.push_back(std::move(p)); }
31
38 bool matches(const std::shared_ptr<core::domain::Transaction> &t,
39 const core::domain::catalog::WorkspaceCatalog &state) const {
40 for (const auto &p : preds_)
41 if (!p(t, state))
42 return false;
43 return true;
44 }
45
47 bool empty() const { return preds_.empty(); }
48
49private:
50 std::vector<Pred> preds_;
51};
52
58AnalysisFilter parseAnalysisFilterSpec(const std::string &spec);
59
66std::vector<std::shared_ptr<core::domain::Transaction>>
69 const AnalysisFilter &filter);
70
71} // namespace core::application::analysis
Domain model for transactions.
Domain aggregate that stores catalog entities for one workspace.
Aggregates transaction predicates parsed from one analysis filter specification.
bool empty() const
Checks whether no predicates have been added.
void addPredicate(Pred p)
Adds one predicate to the composed filter.
bool matches(const std::shared_ptr< core::domain::Transaction > &t, const core::domain::catalog::WorkspaceCatalog &state) const
Evaluates all predicates against one transaction.
std::function< bool(const std::shared_ptr< core::domain::Transaction > &, const core::domain::catalog::WorkspaceCatalog &)> Pred
std::vector< std::shared_ptr< core::domain::Transaction > > collectAnalysisTransactions(const core::domain::catalog::WorkspaceCatalog &state, const AnalysisFilter &filter)
Collects transactions that satisfy the supplied filter.
AnalysisFilter parseAnalysisFilterSpec(const std::string &spec)
Parses a raw filter specification into predicate form.