]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Add error descriptions for some feture and attribute validators
authorspo <sergey.pokhodenko@opencascade.com>
Fri, 4 Sep 2015 11:17:02 +0000 (14:17 +0300)
committerspo <sergey.pokhodenko@opencascade.com>
Fri, 4 Sep 2015 11:17:24 +0000 (14:17 +0300)
src/ExchangePlugin/ExchangePlugin_Validators.cpp
src/GeomValidators/GeomValidators_BooleanArguments.cpp
src/GeomValidators/GeomValidators_ConstructionComposite.cpp
src/GeomValidators/GeomValidators_Different.cpp
src/GeomValidators/GeomValidators_Face.cpp
src/GeomValidators/GeomValidators_Positive.cpp
src/GeomValidators/GeomValidators_ZeroOffset.cpp
src/SketchPlugin/SketchPlugin_ExternalValidator.cpp

index d13b2c478248d939d940492b18b45ae6a1f08dc1..e0579464007a69089e5e9578d58dfcb40bb747bb 100644 (file)
@@ -41,17 +41,23 @@ bool ExchangePlugin_FormatValidator::isValid(const AttributePtr& theAttribute,
                                              const std::list<std::string>& theArguments,
                                              std::string& theError) const
 {
-  if (!theAttribute->isInitialized())
+  if (!theAttribute->isInitialized()) {
+    theError = "Is not initialized.";
     return false;
+  }
 
   const AttributeStringPtr aStrAttr =
       std::dynamic_pointer_cast<ModelAPI_AttributeString>(theAttribute);
-  if (!aStrAttr)
+  if (!aStrAttr) {
+    theError = "Is not a string attribute.";
     return false;
+  }
 
   std::string aFileName = aStrAttr->value();
-  if (aFileName.empty())
+  if (aFileName.empty()) {
+    theError = "File name is empty.";
     return false;
+  }
 
   std::list<std::string> aFormats;
   ExchangePlugin_FormatValidator::parseFormats(theArguments, aFormats);
@@ -67,5 +73,6 @@ bool ExchangePlugin_FormatValidator::isValid(const AttributePtr& theAttribute,
       }
     }
   }
+  theError = "File name does not end with any available format.";
   return false;
 }
index c8a75ead58c3c381878b42e444e02b263b2d0604..b54344510c0a0be1fc56640cfabd15685172529f 100644 (file)
@@ -15,6 +15,7 @@ bool GeomValidators_BooleanArguments::isValid(const std::shared_ptr<ModelAPI_Fea
                                               std::string& theError) const
 {
   if(theArguments.size() != 3) {
+    theError = "Wrong number of arguments (expected 3).";
     return false;
   }
 
index afd84190e447e3b8af4f5f340fd9f62dbff200b2..25e2565eeb2c1e80fd988ddd863e54d1a8a12983 100644 (file)
@@ -13,8 +13,10 @@ bool GeomValidators_ConstructionComposite::isValid(const AttributePtr& theAttrib
   bool aValid = false;
   AttributeSelectionPtr aSelectionAttr = std::dynamic_pointer_cast<ModelAPI_AttributeSelection>
                                                                 (theAttribute);
-  if (aSelectionAttr.get() == NULL)
+  if (aSelectionAttr.get() == NULL) {
+    theError = "Is not a selection attribute.";
     return aValid;
+  }
 
   ResultPtr aResult = aSelectionAttr->context();
   GeomShapePtr aShape = aSelectionAttr->value();
@@ -32,7 +34,7 @@ bool GeomValidators_ConstructionComposite::isValid(const AttributePtr& theAttrib
     }
     else {
       // an empty shape is used in attribute selection if the shape of the result is equal to
-      // the selected shape, so according to the upper condifition, the result is true
+      // the selected shape, so according to the upper condition, the result is true
       aValid = true;
     }
   }
@@ -40,7 +42,7 @@ bool GeomValidators_ConstructionComposite::isValid(const AttributePtr& theAttrib
     ResultConstructionPtr aConstr =
                             std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(aResult);
     if (aConstr != NULL) {
-      // it provides selection only on compositie features, construction without composite
+      // it provides selection only on composite features, construction without composite
       // feature is not selectable
       FeaturePtr aFeature = ModelAPI_Feature::feature(aConstr);
       CompositeFeaturePtr aComposite = 
index 85921c0d43a67620fc8800a9eff5e50397c9621c..45de46f7dd605339a99fb8b051036bb28e2032ee 100644 (file)
@@ -69,8 +69,12 @@ bool GeomValidators_Different::isValid(const std::shared_ptr<ModelAPI_Feature>&
       std::list<AttributePtr>::const_iterator aNextIt = anAttributeIt; ++aNextIt;
       while (aNextIt != anAttributes.end()) {
         // if equal attribute is found then all attributes are not different
-        if (std::find_if(aNextIt, anAttributes.end(), IsEqual(*anAttributeIt)) != anAttributes.end()) 
+        std::list<AttributePtr>::const_iterator aFindIt =
+            std::find_if(aNextIt, anAttributes.end(), IsEqual(*anAttributeIt));
+        if (aFindIt != anAttributes.end()) {
+          theError = "Attributes " + anAttributeIt->id() + " and " + aFindIt->id() + " are equal." ;
           return false;
+        }
         ++anAttributeIt;
         ++aNextIt; 
       }
index 90eb2aac390c138374290897de01f6339b949315..be0d9270eb69d8c25fe63ed949e6b5d6345aacef 100644 (file)
@@ -44,8 +44,13 @@ bool GeomValidators_Face::isValid(const AttributePtr& theAttribute,
 
   ObjectPtr anObject = GeomValidators_Tools::getObject(theAttribute);
   if (anObject.get() != NULL) {
-    AttributeSelectionPtr aSelectionAttr = std::dynamic_pointer_cast<ModelAPI_AttributeSelection>
-                                                                 (theAttribute);
+    AttributeSelectionPtr aSelectionAttr =
+        std::dynamic_pointer_cast<ModelAPI_AttributeSelection>(theAttribute);
+    if (aSelectionAttr.get() == NULL) {
+      theError = "Is not a selection attribute.";
+      return aValid;
+    }
+
     std::shared_ptr<GeomAPI_Shape> aGeomShape = aSelectionAttr->value();
     if (!aGeomShape.get()) {
       // if the shape is empty, apply the validator to the shape of result
@@ -60,15 +65,21 @@ bool GeomValidators_Face::isValid(const AttributePtr& theAttribute,
         switch(aFaceType) {
             case GeomAbs_Plane:
               aValid = aGeomFace->isPlanar();
+              if (!aValid)
+                theError = "The shape is not a plane."
               break;
             case GeomAbs_Cylinder:
               aValid = aGeomFace->isCylindrical();
+              if (!aValid)
+                theError = "The shape is not a cylinder."
               break;
             default:
+              theError = "The shape is not an available face."
               break;
         }
       }
-    }
+    } else
+      theError = "The shape is not a face."
   }
   else
     aValid = true; // an empty face selected is valid.
index cd7dcc68c85b5e5387de316fe820e9bfcd6077ef..344cfe08d76369b799e9f6e59cef947ae670e341 100644 (file)
@@ -25,11 +25,31 @@ bool GeomValidators_Positive::isValid(const AttributePtr& theAttribute,
                                       const std::list<std::string>& theArguments,
                                       std::string& theError) const
 {
-  AttributeDoublePtr aDouble = 
-    std::dynamic_pointer_cast<ModelAPI_AttributeDouble>(theAttribute);
-  if (aDouble.get())
-    return aDouble->isInitialized() && aDouble->value() > 1.e-5;
-  AttributeIntegerPtr aInteger = 
-    std::dynamic_pointer_cast<ModelAPI_AttributeInteger>(theAttribute);
-  return aInteger->isInitialized() && aInteger->value() > 0;
+  if (theAttribute->attributeType() == ModelAPI_AttributeDouble::typeId()) {
+    AttributeDoublePtr aDouble =
+        std::dynamic_pointer_cast<ModelAPI_AttributeDouble>(theAttribute);
+    if (!aDouble->isInitialized()) {
+      theError = "Double is not initialized.";
+      return false;
+    }
+    if (aDouble->value() <= 1.e-5) {
+      theError = "Double is not positive.";
+      return false;
+    }
+  }
+
+  if (theAttribute->attributeType() == ModelAPI_AttributeInteger::typeId()) {
+    AttributeIntegerPtr aInteger =
+        std::dynamic_pointer_cast<ModelAPI_AttributeInteger>(theAttribute);
+    if (!aInteger->isInitialized()) {
+      theError = "Integer is not initialized.";
+      return false;
+    }
+    if (aInteger->value() <= 0) {
+      theError = "Integer is not positive.";
+      return false;
+    }
+  }
+
+  return true;
 }
index f2857f935bee26f0f55f7f702796e1e20dd4e8a0..9f0d5ede126e960a298332853fdb89c657d9495a 100644 (file)
@@ -17,6 +17,7 @@ bool GeomValidators_ZeroOffset::isValid(const std::shared_ptr<ModelAPI_Feature>&
                                         std::string& theError) const
 {
   if(theArguments.size() != 8) {
+    theError = "Wrong number of arguments (expected 8).";
     return false;
   }
 
@@ -44,6 +45,7 @@ bool GeomValidators_ZeroOffset::isValid(const std::shared_ptr<ModelAPI_Feature>&
 
   if(aSelectedMethod == aCreationMethod) {
     if(aToSize == -aFromSize) {
+      theError = "ToSize = -FromSize.";
       return false;
     } else {
       return true;
@@ -84,6 +86,7 @@ bool GeomValidators_ZeroOffset::isValid(const std::shared_ptr<ModelAPI_Feature>&
 
   if(((!aFromShape && !aToShape) || ((aFromShape && aToShape) && aFromShape->isEqual(aToShape)))
     && (aFromSize == -aToSize)) {
+    theError = "FromSize = -ToSize and bounding planes are equal.";
     return false;
   }
 
index 3302e4c1e0368fccf34068b6f6fb1c60474dbf0c..362dd94f17ab09068ada469ed648c244b79ec54f 100644 (file)
@@ -28,8 +28,10 @@ bool SketchPlugin_ExternalValidator::isValid(const AttributePtr& theAttribute,
   bool isParameterExternal = isExternalAttribute(aFeature->attribute(aFrontArgument));
 
   // it is not possible that both features, attribute and attribute in parameter, are external
-  if (isAttributeExternal && isParameterExternal)
+  if (isAttributeExternal && isParameterExternal) {
+    theError = "Both features, attribute and attribute in parameter, are external.";
     return false;
+  }
   return true;
 }