SHAPER 9.16.0
Model_Validator.h
1// Copyright (C) 2014-2026 CEA, EDF
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19
20#ifndef Model_Validator_H_
21#define Model_Validator_H_
22
23#include <Model.h>
24#include <ModelAPI_Validator.h>
25#include <map>
26#include <set>
27
41{
42 private:
43 std::map<std::string, ModelAPI_Validator*> myIDs;
45 typedef std::map<std::string, std::list<std::string> > AttrValidators;
47 std::map<std::string, AttrValidators> myFeatures;
49 std::map<std::string, std::map<std::string, AttrValidators> > myAttrs;
52 std::map<std::string, std::set<std::string> > myConcealed;
55 // (switchId (ID of the attribute) and case Ids (possible values of the switch attribute))
56 std::map<std::string, std::map<std::string,
57 std::map<std::string, std::set<std::string> > > > myCases;
59 std::map<std::string, std::string> myMainArgument;
60 std::map<std::string, std::set<std::string> > myGeometricalSelection;
61
62 public:
64 MODEL_EXPORT virtual void registerValidator(const std::string& theID,
65 ModelAPI_Validator* theValidator);
66
68 MODEL_EXPORT virtual void assignValidator(const std::string& theID,
69 const std::string& theFeatureID);
70
72 MODEL_EXPORT virtual void assignValidator(const std::string& theID,
73 const std::string& theFeatureID,
74 const std::list<std::string>& theArguments);
75
77 MODEL_EXPORT virtual void assignValidator(const std::string& theID,
78 const std::string& theFeatureID,
79 const std::string& theAttrID,
80 const std::list<std::string>& theArguments);
81
83 MODEL_EXPORT virtual void validators(const std::string& theFeatureID,
84 Validators& theResult) const;
86 MODEL_EXPORT virtual void validators(const std::string& theFeatureID,
87 const std::string& theAttrID, Validators& theResult) const;
88
90 MODEL_EXPORT virtual const ModelAPI_Validator* validator(const std::string& theID) const;
91
93 MODEL_EXPORT virtual bool validate(const std::shared_ptr<ModelAPI_Feature>& theFeature) const;
94
96 MODEL_EXPORT virtual bool validate(const std::shared_ptr<ModelAPI_Attribute>& theAttribute,
97 std::string& theValidator, Events_InfoMessage& theError) const;
98
101 virtual void registerNotObligatory(std::string theFeature, std::string theAttribute);
102
104 virtual bool isNotObligatory(std::string theFeature, std::string theAttribute);
105
108 virtual void registerConcealment(std::string theFeature, std::string theAttribute);
109
111 virtual bool isConcealed(std::string theFeature, std::string theAttribute);
112
114 virtual void registerCase(std::string theFeature, std::string theAttribute,
115 const std::list<std::pair<std::string, std::string> >& theCases);
116
118 virtual bool isCase(FeaturePtr theFeature, std::string theAttribute);
119
121 virtual void registerMainArgument(std::string theFeature, std::string theAttribute);
122
124 virtual bool isMainArgument(std::string theFeature, std::string theAttribute);
125
127 virtual void registerGeometricalSelection(std::string theFeature, std::string theAttribute);
128
130 virtual bool isGeometricalSelection(std::string theFeature, std::string theAttribute);
131
132
133protected:
135 void addDefaultValidators(Validators& theValidators) const;
137 void addDefaultAttributeValidators(Validators& theValidators) const;
140
141 friend class Model_Session;
142};
143
144#endif
An event message for sending a string message which has to be translated.
Definition: Events_InfoMessage.h:35
Allows to validate the attribute value of a feature or the whole feature.
Definition: ModelAPI_Validator.h:43
Manages the registered validators.
Definition: ModelAPI_Validator.h:66
std::list< std::pair< std::string, std::list< std::string > > > Validators
Validators is a list of pairs <Validator, list of arguments>
Definition: ModelAPI_Validator.h:87
Object that knows (from the initial XML file) which plugin contains which feature,...
Definition: Model_Session.h:43
Manages the registered validators.
Definition: Model_Validator.h:41
virtual bool isMainArgument(std::string theFeature, std::string theAttribute)
Returns true is the attribute is a main argument of the feature.
Definition: Model_Validator.cpp:374
virtual bool isGeometricalSelection(std::string theFeature, std::string theAttribute)
Returns true if the attribute is a geometrical selection.
Definition: Model_Validator.cpp:395
virtual MODEL_EXPORT const ModelAPI_Validator * validator(const std::string &theID) const
Returns registered validator by its Id.
Definition: Model_Validator.cpp:146
virtual void registerNotObligatory(std::string theFeature, std::string theAttribute)
register that this attribute in feature is not obligatory for the feature execution so,...
Definition: Model_Validator.cpp:268
virtual MODEL_EXPORT void validators(const std::string &theFeatureID, Validators &theResult) const
Provides a validator for the feature, returns NULL if no validator.
Definition: Model_Validator.cpp:96
virtual void registerMainArgument(std::string theFeature, std::string theAttribute)
Register the attribute as a main argument of the feature.
Definition: Model_Validator.cpp:366
virtual MODEL_EXPORT void assignValidator(const std::string &theID, const std::string &theFeatureID)
Assigns validator to the feature.
Definition: Model_Validator.cpp:46
virtual void registerGeometricalSelection(std::string theFeature, std::string theAttribute)
Register the selection attribute as geometrical selection.
Definition: Model_Validator.cpp:380
virtual bool isNotObligatory(std::string theFeature, std::string theAttribute)
Returns true if the attribute in feature is not obligatory for the feature execution.
Definition: Model_Validator.cpp:281
virtual void registerCase(std::string theFeature, std::string theAttribute, const std::list< std::pair< std::string, std::string > > &theCases)
register the case-attribute (myCases set definition)
Definition: Model_Validator.cpp:312
virtual MODEL_EXPORT void registerValidator(const std::string &theID, ModelAPI_Validator *theValidator)
Registers the instance of the validator by the ID.
Definition: Model_Validator.cpp:36
virtual bool isConcealed(std::string theFeature, std::string theAttribute)
Returns true that it was registered that attribute conceals the referenced result.
Definition: Model_Validator.cpp:306
Model_ValidatorsFactory()
Get instance from Session.
Definition: Model_Validator.cpp:139
void addDefaultAttributeValidators(Validators &theValidators) const
Adds the default validators that are useful for all attributes.
Definition: Model_Validator.cpp:163
virtual MODEL_EXPORT bool validate(const std::shared_ptr< ModelAPI_Feature > &theFeature) const
Returns true if feature and all its attributes are valid.
Definition: Model_Validator.cpp:171
void addDefaultValidators(Validators &theValidators) const
Adds the default validators that are useful for all features.
Definition: Model_Validator.cpp:155
virtual void registerConcealment(std::string theFeature, std::string theAttribute)
register that this attribute conceals in the object browser all referenced features after execution
Definition: Model_Validator.cpp:294
virtual bool isCase(FeaturePtr theFeature, std::string theAttribute)
Returns true if the attribute must be checked (the case is selected)
Definition: Model_Validator.cpp:342