SHAPER  9.12.0
ModelAPI_Validator.h
1 // Copyright (C) 2014-2023 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 ModelAPI_Validator_H_
21 #define ModelAPI_Validator_H_
22 
23 #include <ModelAPI.h>
24 #include <ModelAPI_Feature.h>
25 #include <memory>
26 #include <list>
27 
28 class ModelAPI_Feature;
29 class Events_InfoMessage;
30 
42 class MODELAPI_EXPORT ModelAPI_Validator
43 {
44  public:
45  // Make virtual destructor in order to make the class polymorphic
46  virtual ~ModelAPI_Validator()
47  {
48  }
49 };
50 
51 typedef std::shared_ptr<ModelAPI_Validator> ValidatorPtr;
52 
65 class MODELAPI_EXPORT ModelAPI_ValidatorsFactory
66 {
67  public:
68  virtual ~ModelAPI_ValidatorsFactory() {}
69 
71  virtual void registerValidator(const std::string& theID, ModelAPI_Validator* theValidator) = 0;
72 
74  virtual void assignValidator(const std::string& theID, const std::string& theFeatureID) = 0;
75 
77  virtual void assignValidator(const std::string& theID,
78  const std::string& theFeatureID,
79  const std::list<std::string>& theArguments) = 0;
80 
82  virtual void assignValidator(const std::string& theID, const std::string& theFeatureID,
83  const std::string& theAttrID,
84  const std::list<std::string>& theArguments) = 0;
85 
87  typedef std::list<std::pair<std::string, std::list<std::string> > > Validators;
89  virtual void validators(const std::string& theFeatureID,
90  Validators& theResult) const = 0;
92  virtual void validators(const std::string& theFeatureID, const std::string& theAttrID,
93  Validators& theResult) const = 0;
94 
96  virtual const ModelAPI_Validator* validator(const std::string& theID) const = 0;
97 
99  virtual bool validate(const std::shared_ptr<ModelAPI_Feature>& theFeature) const = 0;
100 
102  virtual bool validate(const std::shared_ptr<ModelAPI_Attribute>& theAttribute,
103  std::string& theValidator, Events_InfoMessage& theError) const = 0;
104 
107  virtual void registerNotObligatory(std::string theFeature, std::string theAttribute) = 0;
108 
110  virtual bool isNotObligatory(std::string theFeature, std::string theAttribute) = 0;
111 
114  virtual void registerConcealment(std::string theFeature, std::string theAttribute) = 0;
115 
117  virtual bool isConcealed(std::string theFeature, std::string theAttribute) = 0;
118 
120  virtual void registerMainArgument(std::string theFeature, std::string theAttribute) = 0;
121 
123  virtual bool isMainArgument(std::string theFeature, std::string theAttribute) = 0;
124 
126  virtual void registerCase(std::string theFeature, std::string theAttribute,
127  const std::list<std::pair<std::string, std::string> >& theCases) = 0;
128 
130  virtual bool isCase(FeaturePtr theFeature, std::string theAttribute) = 0;
131 
133  virtual void registerGeometricalSelection(std::string theFeature, std::string theAttribute) = 0;
134 
136  virtual bool isGeometricalSelection(std::string theFeature, std::string theAttribute) = 0;
137 
138  protected:
141  {
142  }
143 };
144 
145 #endif
An event message for sending a string message which has to be translated.
Definition: Events_InfoMessage.h:35
Feature function that represents the particular functionality of this operation.
Definition: ModelAPI_Feature.h:39
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
virtual void registerGeometricalSelection(std::string theFeature, std::string theAttribute)=0
Register the selection attribute as geometrical selection.
virtual const ModelAPI_Validator * validator(const std::string &theID) const =0
Returns registered validator by its Id.
virtual void assignValidator(const std::string &theID, const std::string &theFeatureID, const std::list< std::string > &theArguments)=0
Assigns validator to the feature with arguments of the validator.
virtual void registerConcealment(std::string theFeature, std::string theAttribute)=0
register that this attribute conceals in the object browser all referenced features after execution
virtual bool isMainArgument(std::string theFeature, std::string theAttribute)=0
Returns true is the attribute is a main argument of the feature.
virtual void registerMainArgument(std::string theFeature, std::string theAttribute)=0
Register the attribute as a main argument of the feature.
virtual bool isNotObligatory(std::string theFeature, std::string theAttribute)=0
Returns true if the attribute in feature is not obligatory for the feature execution.
virtual void registerValidator(const std::string &theID, ModelAPI_Validator *theValidator)=0
Registers the instance of the validator by the ID.
ModelAPI_ValidatorsFactory()
Get instance from Session.
Definition: ModelAPI_Validator.h:140
virtual void assignValidator(const std::string &theID, const std::string &theFeatureID, const std::string &theAttrID, const std::list< std::string > &theArguments)=0
Assigns validator to the attribute of the feature.
virtual void assignValidator(const std::string &theID, const std::string &theFeatureID)=0
Assigns validator to the feature.
virtual bool isCase(FeaturePtr theFeature, std::string theAttribute)=0
Returns true if the attribute must be checked (the case is selected)
virtual bool isConcealed(std::string theFeature, std::string theAttribute)=0
Returns true that it was registered that attribute conceals the referenced result.
virtual void registerNotObligatory(std::string theFeature, std::string theAttribute)=0
register that this attribute in feature is not obligatory for the feature execution so,...
virtual bool validate(const std::shared_ptr< ModelAPI_Attribute > &theAttribute, std::string &theValidator, Events_InfoMessage &theError) const =0
Returns true if the attribute is valid.
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
virtual void registerCase(std::string theFeature, std::string theAttribute, const std::list< std::pair< std::string, std::string > > &theCases)=0
Register the case-attribute: this attribute is checked only if its case is selected.
virtual void validators(const std::string &theFeatureID, const std::string &theAttrID, Validators &theResult) const =0
Provides a validator for the attribute, returns NULL if no validator.
virtual bool isGeometricalSelection(std::string theFeature, std::string theAttribute)=0
Returns true if the attribute is a geometrical selection.
virtual bool validate(const std::shared_ptr< ModelAPI_Feature > &theFeature) const =0
Returns true if feature and all its attributes are valid.
virtual void validators(const std::string &theFeatureID, Validators &theResult) const =0
Provides a validator for the feature, returns NULL if no validator.