File tree 1 file changed +18
-6
lines changed
1 file changed +18
-6
lines changed Original file line number Diff line number Diff line change @@ -1931,27 +1931,39 @@ QDomElement QgsOgcUtils::expressionNodeToOgcFilter( const QgsExpression::Node* n
1931
1931
1932
1932
QDomElement QgsOgcUtils::expressionUnaryOperatorToOgcFilter ( const QgsExpression::NodeUnaryOperator* node, QDomDocument& doc, QString& errorMessage )
1933
1933
{
1934
+
1935
+ QDomElement operandElem = expressionNodeToOgcFilter ( node->operand (), doc, errorMessage );
1936
+ if ( !errorMessage.isEmpty () )
1937
+ return QDomElement ();
1938
+
1934
1939
QDomElement uoElem;
1935
1940
switch ( node->op () )
1936
1941
{
1937
1942
case QgsExpression::uoMinus:
1938
1943
uoElem = doc.createElement ( " ogc:Literal" );
1939
- uoElem.appendChild ( doc.createTextNode ( " -" ) );
1944
+ if ( node->operand ()->nodeType () == QgsExpression::ntLiteral )
1945
+ {
1946
+ // operand expression already created a Literal node:
1947
+ // take the literal value, prepend - and remove old literal node
1948
+ uoElem.appendChild ( doc.createTextNode ( " -" + operandElem.text () ) );
1949
+ doc.removeChild (operandElem);
1950
+ }
1951
+ else
1952
+ {
1953
+ errorMessage = QString ( " This use of unary operator not implemented yet" );
1954
+ return QDomElement ();
1955
+ }
1940
1956
break ;
1941
1957
case QgsExpression::uoNot:
1942
1958
uoElem = doc.createElement ( " ogc:Not" );
1959
+ uoElem.appendChild ( operandElem );
1943
1960
break ;
1944
1961
1945
1962
default :
1946
1963
errorMessage = QString ( " Unary operator %1 not implemented yet" ).arg ( QgsExpression::UnaryOperatorText[node->op ()] );
1947
1964
return QDomElement ();
1948
1965
}
1949
1966
1950
- QDomElement operandElem = expressionNodeToOgcFilter ( node->operand (), doc, errorMessage );
1951
- if ( !errorMessage.isEmpty () )
1952
- return QDomElement ();
1953
-
1954
- uoElem.appendChild ( operandElem );
1955
1967
return uoElem;
1956
1968
}
1957
1969
You can’t perform that action at this time.
0 commit comments