public override object EvalExpression(IDmlfNamespace ns) { var inner = Argument.EvalExpression(ns); var dt = inner as DateTime?; if (dt.HasValue) return (int)dt.Value.DayOfWeek; return null; }
public override object EvalExpression(IDmlfNamespace ns) { var inner = Argument.EvalExpression(ns); var dt = ExtractDate(inner); if (dt.HasValue) { return((int)dt.Value.DayOfWeek); } return(null); }
public override object EvalExpression(IDmlfNamespace ns) { var inner = Argument.EvalExpression(ns); var dt = inner as DateTime?; if (dt.HasValue) { return(dt.Value.Day); } return(null); }
public override bool EvalCondition(IDmlfNamespace ns) { if (Value == null) { return(false); } object val = Expr.EvalExpression(ns); if (val == null) { return(false); } return(Test(Convert.ToString(val, CultureInfo.InvariantCulture))); }
protected bool EvalBetween(IDmlfNamespace ns) { var cond = new DmlfAndCondition(); cond.Conditions.Add(new DmlfRelationCondition { LeftExpr = LowerBound, Relation = "<=", RightExpr = Expr, }); cond.Conditions.Add(new DmlfRelationCondition { LeftExpr = Expr, Relation = "<=", RightExpr = UpperBound, }); return(cond.EvalCondition(ns)); }
public override object EvalExpression(IDmlfNamespace ns) { switch (FuncName.ToUpper()) { case "LTRIM": return(Arguments[0].EvalExpression(ns)?.ToString()?.TrimStart()); case "RTRIM": return(Arguments[0].EvalExpression(ns)?.ToString()?.TrimEnd()); case "DATEPART": string partName = Arguments[0].EvalExpression(ns)?.ToString(); var date = ExtractDate(Arguments[1].EvalExpression(ns)); switch (partName?.ToUpper() ?? "") { case "HOUR": return(date?.Hour); case "MINUTE": return(date?.Minute); case "SECOND": return(date?.Second); case "YEAR": return(date?.Year); case "MONTH": return(date?.Month); case "DAY": return(date?.Day); } return(0); case "MONTH": return(ExtractDate(Arguments[0].EvalExpression(ns))?.Month); case "YEAR": return(ExtractDate(Arguments[0].EvalExpression(ns))?.Year); } return(base.EvalExpression(ns)); }
public virtual object EvalExpression(IDmlfNamespace ns) { throw new InternalError("DBSH-00157 Eval not implemented:" + GetType().FullName); }
public override bool EvalCondition(IDmlfNamespace ns) { object value = Expr.EvalExpression(ns); return value != null && value != DBNull.Value; }
public override bool EvalCondition(IDmlfNamespace ns) { return Conditions.Any(x => x.EvalCondition(ns)); }
public override bool EvalCondition(IDmlfNamespace ns) { return !Expr.EvalCondition(ns); }
public override bool EvalCondition(IDmlfNamespace ns) { return EvalRelation(LeftExpr, RightExpr, Relation, ns); }
public override bool EvalCondition(IDmlfNamespace ns) { return(Conditions.Any(x => x.EvalCondition(ns))); }
public override bool EvalCondition(IDmlfNamespace ns) { return(!Expr.EvalCondition(ns)); }
public static bool EvalRelation(DmlfExpression leftExpr, DmlfExpression rightExpr, string relation, IDmlfNamespace ns) { object left = leftExpr.EvalExpression(ns); object right = rightExpr.EvalExpression(ns); if (left == null || right == null) { return(false); } left = ConvertBoolToInt(left); right = ConvertBoolToInt(right); var leftType = left.GetType(); var rightType = right.GetType(); string leftStr = Convert.ToString(left, CultureInfo.InvariantCulture); string rightStr = Convert.ToString(right, CultureInfo.InvariantCulture); if (leftStr.ToLower() == "true" && rightStr == "1" && relation == "=") { return(true); } if (rightStr.ToLower() == "true" && leftStr == "1" && relation == "=") { return(true); } if (leftStr.ToLower() == "false" && rightStr == "0" && relation == "=") { return(true); } if (rightStr.ToLower() == "false" && leftStr == "0" && relation == "=") { return(true); } if (leftType.IsNumberType() || rightType.IsNumberType()) { double leftValue, rightValue; if (Double.TryParse(leftStr, NumberStyles.Number, CultureInfo.InvariantCulture, out leftValue) && Double.TryParse(rightStr, NumberStyles.Number, CultureInfo.InvariantCulture, out rightValue)) { switch (relation) { case "=": return(leftValue == rightValue); case "<=": return(leftValue <= rightValue); case ">=": return(leftValue >= rightValue); case "<": return(leftValue < rightValue); case ">": return(leftValue > rightValue); case "<>": return(leftValue != rightValue); } } } if (leftType == typeof(DateTime) || rightType == typeof(DateTime)) { DateTime?leftValue = null, rightValue = null; DateTime tmp; if (leftType == typeof(DateTime)) { leftValue = (DateTime)left; } else if (DateTime.TryParse(leftStr, CultureInfo.InvariantCulture, DateTimeStyles.None, out tmp)) { leftValue = tmp; } if (rightType == typeof(DateTime)) { rightValue = (DateTime)right; } else if (DateTime.TryParse(rightStr, CultureInfo.InvariantCulture, DateTimeStyles.None, out tmp)) { rightValue = tmp; } if (leftValue.HasValue && rightValue.HasValue) { switch (relation) { case "=": return(leftValue == rightValue); case "<=": return(leftValue <= rightValue); case ">=": return(leftValue >= rightValue); case "<": return(leftValue < rightValue); case ">": return(leftValue > rightValue); case "<>": return(leftValue != rightValue); } } } switch (relation) { case "=": return(System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) == 0); case "<=": return(System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) <= 0); case ">=": return(System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) >= 0); case "<": return(System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) < 0); case ">": return(System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) > 0); case "<>": return(System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) != 0); } return(false); }
public override bool EvalCondition(IDmlfNamespace ns) { return(EvalRelation(LeftExpr, RightExpr, Relation, ns)); }
public override bool EvalCondition(IDmlfNamespace ns) { return(EvalBetween(ns)); }
public virtual bool EvalCondition(IDmlfNamespace ns) { throw new InternalError("DBSH-00156 Eval not implemented:" + GetType().FullName); }
public override bool EvalCondition(IDmlfNamespace ns) { return DmlfRelationCondition.EvalRelation(LeftExpr, RightExpr, "<=", ns); }
public override bool EvalCondition(IDmlfNamespace ns) { return(false); }
public static bool EvalRelation(DmlfExpression leftExpr, DmlfExpression rightExpr, string relation, IDmlfNamespace ns) { object left = leftExpr.EvalExpression(ns); object right = rightExpr.EvalExpression(ns); if (left == null || right == null) return false; left = ConvertBoolToInt(left); right = ConvertBoolToInt(right); var leftType = left.GetType(); var rightType = right.GetType(); string leftStr = Convert.ToString(left, CultureInfo.InvariantCulture); string rightStr = Convert.ToString(right, CultureInfo.InvariantCulture); if (leftStr.ToLower() == "true" && rightStr == "1" && relation == "=") return true; if (rightStr.ToLower() == "true" && leftStr == "1" && relation == "=") return true; if (leftStr.ToLower() == "false" && rightStr == "0" && relation == "=") return true; if (rightStr.ToLower() == "false" && leftStr == "0" && relation == "=") return true; if (leftType.IsNumberType() || rightType.IsNumberType()) { double leftValue, rightValue; if (Double.TryParse(leftStr, NumberStyles.Number, CultureInfo.InvariantCulture, out leftValue) && Double.TryParse(rightStr, NumberStyles.Number, CultureInfo.InvariantCulture, out rightValue)) { switch (relation) { case "=": return leftValue == rightValue; case "<=": return leftValue <= rightValue; case ">=": return leftValue >= rightValue; case "<": return leftValue < rightValue; case ">": return leftValue > rightValue; case "<>": return leftValue != rightValue; } } } if (leftType == typeof(DateTime) || rightType == typeof(DateTime)) { DateTime? leftValue = null, rightValue = null; DateTime tmp; if (leftType == typeof (DateTime)) { leftValue = (DateTime) left; } else if (DateTime.TryParse(leftStr, CultureInfo.InvariantCulture, DateTimeStyles.None, out tmp)) { leftValue = tmp; } if (rightType == typeof (DateTime)) { rightValue = (DateTime) right; } else if (DateTime.TryParse(rightStr, CultureInfo.InvariantCulture, DateTimeStyles.None, out tmp)) { rightValue = tmp; } if (leftValue.HasValue && rightValue.HasValue) { switch (relation) { case "=": return leftValue == rightValue; case "<=": return leftValue <= rightValue; case ">=": return leftValue >= rightValue; case "<": return leftValue < rightValue; case ">": return leftValue > rightValue; case "<>": return leftValue != rightValue; } } } switch (relation) { case "=": return System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) == 0; case "<=": return System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) <= 0; case ">=": return System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) >= 0; case "<": return System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) < 0; case ">": return System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) > 0; case "<>": return System.String.Compare(leftStr, rightStr, System.StringComparison.OrdinalIgnoreCase) != 0; } return false; }
public override bool EvalCondition(IDmlfNamespace ns) { object value = Expr.EvalExpression(ns); return(value != null && value != DBNull.Value); }
public override bool EvalCondition(IDmlfNamespace ns) { if (Value == null) return false; object val = Expr.EvalExpression(ns); if (val == null) return false; return Test(Convert.ToString(val, CultureInfo.InvariantCulture)); }
public override object EvalExpression(IDmlfNamespace ns) { return Value; }
public override bool EvalCondition(IDmlfNamespace ns) { return false; }
public override object EvalExpression(IDmlfNamespace ns) { return(ns.GetValue(Value)); }
public override object EvalExpression(IDmlfNamespace ns) { return((int)Value); }
public override object EvalExpression(IDmlfNamespace ns) { return ns.GetValue(Value); }