Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsfieldconstraints.cpp 3 : : ----------------------- 4 : : Date : November 2016 5 : : Copyright : (C) 2016 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : #include "qgsfieldconstraints.h" 16 : : 17 : 246 : QgsFieldConstraints::QgsFieldConstraints() = default; 18 : : 19 : 0 : QgsFieldConstraints::ConstraintOrigin QgsFieldConstraints::constraintOrigin( QgsFieldConstraints::Constraint constraint ) const 20 : : { 21 : 0 : if ( !( mConstraints & constraint ) ) 22 : 0 : return ConstraintOriginNotSet; 23 : : 24 : 0 : return mConstraintOrigins.value( constraint, ConstraintOriginNotSet ); 25 : 0 : } 26 : : 27 : 0 : QgsFieldConstraints::ConstraintStrength QgsFieldConstraints::constraintStrength( QgsFieldConstraints::Constraint constraint ) const 28 : : { 29 : 0 : if ( !( mConstraints & constraint ) ) 30 : 0 : return ConstraintStrengthNotSet; 31 : : 32 : : // defaults to hard strength unless explicitly set 33 : 0 : return mConstraintStrengths.value( constraint, ConstraintStrengthHard ); 34 : 0 : } 35 : : 36 : 0 : void QgsFieldConstraints::setConstraintStrength( QgsFieldConstraints::Constraint constraint, QgsFieldConstraints::ConstraintStrength strength ) 37 : : { 38 : 0 : if ( strength == ConstraintStrengthNotSet ) 39 : : { 40 : 0 : mConstraintStrengths.remove( constraint ); 41 : 0 : } 42 : : else 43 : : { 44 : 0 : mConstraintStrengths.insert( constraint, strength ); 45 : : } 46 : 0 : } 47 : : 48 : 2 : void QgsFieldConstraints::setConstraint( QgsFieldConstraints::Constraint constraint, QgsFieldConstraints::ConstraintOrigin origin ) 49 : : { 50 : 2 : if ( origin == ConstraintOriginNotSet ) 51 : : { 52 : 0 : mConstraints &= ~constraint; 53 : 0 : mConstraintOrigins.remove( constraint ); 54 : 0 : mConstraintStrengths.remove( constraint ); 55 : 0 : } 56 : : else 57 : : { 58 : 2 : mConstraints |= constraint; 59 : 2 : mConstraintOrigins.insert( constraint, origin ); 60 : 2 : if ( !mConstraintStrengths.contains( constraint ) ) 61 : : { 62 : 2 : mConstraintStrengths.insert( constraint, ConstraintStrengthHard ); 63 : 2 : } 64 : : } 65 : 2 : } 66 : : 67 : 0 : QString QgsFieldConstraints::constraintExpression() const 68 : : { 69 : 0 : return ( mConstraints & QgsFieldConstraints::ConstraintExpression ) ? mExpressionConstraint : QString(); 70 : : } 71 : : 72 : 0 : void QgsFieldConstraints::setConstraintExpression( const QString &expression, const QString &description ) 73 : : { 74 : 0 : if ( expression.isEmpty() ) 75 : 0 : mConstraints &= ~QgsFieldConstraints::ConstraintExpression; 76 : : else 77 : : { 78 : 0 : mConstraints |= QgsFieldConstraints::ConstraintExpression; 79 : 0 : mConstraintOrigins.insert( QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintOriginLayer ); 80 : : } 81 : : 82 : 0 : mExpressionConstraint = expression; 83 : 0 : mExpressionConstraintDescription = description; 84 : 0 : } 85 : : 86 : 0 : bool QgsFieldConstraints::operator==( const QgsFieldConstraints &other ) const 87 : : { 88 : 0 : return mConstraints == other.mConstraints && mConstraintOrigins == other.mConstraintOrigins 89 : 0 : && mExpressionConstraint == other.mExpressionConstraint && mExpressionConstraintDescription == other.mExpressionConstraintDescription 90 : 0 : && mConstraintStrengths == other.mConstraintStrengths; 91 : : }