isDataWhereMatchOne method
dynamic
isDataWhereMatchOne(
- dynamic dataRow,
- String where
)
Implementation
isDataWhereMatchOne(dataRow, String where) {
myLogAll('isDataWhereMatchOne');
where = getTableWhereValue(where, '=', false);
if (where.contains('>=')) {
List whereS = where.split('>=');
return toNumeric(expressValue(dataRow, removeBracket(whereS[0]))) >=
toNumeric(whereS[1]);
}
if (where.contains('<=')) {
List whereS = where.split('<=');
return toNumeric(expressValue(dataRow, removeBracket(whereS[0]))) <=
toNumeric(whereS[1]);
}
if (where.contains('!=')) {
List whereS = where.split('!=');
var aValue = expressValue(dataRow, removeBracket(whereS[0])) ?? '';
return (aValue != whereS[1]) && ("'$aValue'" != whereS[1]);
}
if (where.contains('=')) {
List whereS = where.split('=');
var aValue = expressValue(dataRow, removeBracket(whereS[0])) ?? '';
return (aValue == whereS[1] || "'$aValue'" == whereS[1]);
}
if (where.contains('>')) {
List whereS = where.split('>');
//print('================= ${expressValue(dataRow, removeBracket(whereS[0]))}');
//print('================= ${whereS[1]}');
dynamic d0 = toNumeric(expressValue(dataRow, removeBracket(whereS[0])));
dynamic d1 = toNumeric(whereS[1]);
return d0 > d1;
}
if (where.contains('<')) {
List whereS = where.split('<');
return toNumeric(expressValue(dataRow, removeBracket(whereS[0]))) <
toNumeric(whereS[1]);
}
if (where.contains(' between ')) {
List whereS = where.split(' between '); // (balance-hold) between [0,100)
String left = '>=';
String right = '<=';
String whereS1 = whereS[1].toString();
if (whereS1.startsWith('(')) {
left = '>';
}
whereS1 = whereS1.substring(1);
if (whereS1.endsWith(')')) {
right = '<';
}
whereS1 = whereS1.substring(0, whereS1.length - 1);
List whereS1A = whereS1.split(',');
if (!isDataWhereMatchOne(dataRow, '${whereS[0]}$left${whereS1A[0]}')) {
return false;
}
if (!isDataWhereMatchOne(dataRow, '${whereS[0]}$right${whereS1A[1]}')) {
return false;
}
return true;
}
}