SSAGES  0.9.3
Software Suite for Advanced General Ensemble Simulations
AllOfRequirement.h
1 
26 #pragma once
27 
28 #include "Requirement.h"
29 #include "RequirementLoader.h"
30 #include <memory>
31 
32 namespace Json
33 {
35 
39  {
40  private:
42 
43  public:
46 
48  virtual void ClearErrors() override
49  {
50  for(auto& r : reqs_)
51  r->ClearErrors();
52 
54  }
55 
57  virtual void ClearNotices() override
58  {
59  for(auto& r : reqs_)
60  r->ClearNotices();
61 
63  }
64 
66  virtual void Reset() override
67  {
68  ClearErrors();
69  ClearNotices();
70  reqs_.clear();
71  }
72 
74 
81  virtual void Parse(Value json, const std::string& path) override
82  {
83  Reset();
84  RequirementLoader loader;
85 
86  auto& head = json.isMember("allOf") ? json["allOf"] : json;
87 
88  for(auto& val : head)
89  if(auto req = loader.LoadRequirement(val))
90  {
91  reqs_.push_back(std::move(req));
92  reqs_.back()->Parse(val, path);
93  }
94 
95  }
96 
98 
102  virtual void Validate(const Value& json, const std::string& path) override
103  {
104  for(auto& r : reqs_)
105  {
106  r->Validate(json, path);
107 
108  if(r->HasErrors())
109  for(const auto& error : r->GetErrors())
110  PushError(error);
111 
112  if(r->HasNotices())
113  for(const auto& notice : r->GetNotices())
114  PushNotice(notice);
115  }
116  }
117  };
118 }
Requires that all of a list of Requirements hold.
virtual void Reset() override
Reset all Requirements.
virtual void ClearNotices() override
Clear lists of notices for all Requirements.
RequireList reqs_
List of Requirements.
AllOfRequirement()
Constructor.
virtual void Parse(Value json, const std::string &path) override
Parse JSON value and add all loaded Requirements.
virtual void Validate(const Value &json, const std::string &path) override
Validate that all Requirements are met.
virtual void ClearErrors() override
Clear lists of errors for all Requirements.
Helper class to load Requirement.
std::unique_ptr< Requirement > LoadRequirement(const Value &json)
Load specific requirement.
Requirements on input files.
Definition: Requirement.h:40
void PushNotice(const std::string &notice)
Add message to list of notices.
Definition: Requirement.h:62
virtual void ClearNotices()
Clear list of notice messages.
Definition: Requirement.h:110
virtual void ClearErrors()
Clear list of error messages.
Definition: Requirement.h:95
void PushError(const std::string &error)
Add error to list of error messages.
Definition: Requirement.h:53
std::vector< std::unique_ptr< Requirement > > RequireList
List of Requirements.
Definition: Requirement.h:117