/// <summary> /// Constructor de la clase para una expresion binaria (de dos operandos) /// en donde el segundo operando es un long (un valor para por ejemplo /// "campo = 51321312"). /// </summary> public ExpresionSimple(EOperadorSimple op, string atributo, long valor) { _strvalor = valor.ToString(); _op = op; _atributo = atributo; _valor = valor; }
/// <summary> /// Constructor de la clase para una expresion binaria (de dos operandos) /// en donde el segundo operando es un Guid (un valor para por ejemplo /// "Id = '5C2671ED-3953-47E3-A565-0257A6B8B312'"). /// </summary> public ExpresionSimple(EOperadorSimple op, string atributo, Guid valor) { _strvalor = string.Format("'{0}'", valor); _op = op; _atributo = atributo; _valor = valor; }
/// <summary> /// Método helper que termina de armar el operador necesario. /// </summary> private static ICriterioConsulta ArmarTodo(EOperadorSimple op, string atributo, object valor) { try { if (valor is string) return new ExpresionSimple(op, atributo, (string)valor); if (valor is Guid) return new ExpresionSimple(op, atributo, (Guid)valor); if (valor is bool) return new ExpresionSimple(op, atributo, (bool)valor); if (valor is int) return new ExpresionSimple(op, atributo, (int)valor); if (valor is long) return new ExpresionSimple(op, atributo, (long)valor); if (valor is double) return new ExpresionSimple(op, atributo, (double)valor); if (valor is DateTime) return new ExpresionSimple(op, atributo, (DateTime)valor); if (valor is Enum) return new ExpresionSimple(op, atributo, (Enum)valor); if (valor is IEntidadIdentificable) return new ExpresionSimple(op, atributo, (IEntidadIdentificable)valor); return new ExpresionSimple(op, atributo, valor.ToString()); } catch (Exception e) { throw new PersistErrorException("OPERANDO-TIPO-NOK", e.ToString()); } }
/// <summary> /// Este método devuelve el operador SQL correspondiente al operador /// enum que representa a la operacion simple (comparación) pasada /// como argumento. /// </summary> /// <param name="op"> /// Enum que representa a la operacion simple. /// </param> /// <returns> /// Cadena que reprsenta al operador como un string (para SQL Where). /// </returns> private static string GetOpString(EOperadorSimple op) { switch (op) { case EOperadorSimple.IGUAL: return "="; case EOperadorSimple.DISTINTO: return "<>"; case EOperadorSimple.LIKE: return "like"; case EOperadorSimple.MAYORIGUAL: return ">="; case EOperadorSimple.MAYORQUE: return ">"; case EOperadorSimple.MENORIGUAL: return "<="; case EOperadorSimple.MENORQUE: return "<"; } throw new PersistErrorException("OPERANDO-NOK"); }
/// <summary> /// Constructor de la clase para una expresion binaria (de dos operandos) /// donde el segundo operando es clase persistente (IEntidadIdentificable /// para por ejemplo "campo = unaCuenta"). En este caso se toma su Id para /// la cadena where y se toma ek propio objeto para el NHicriteria. /// </summary> public ExpresionSimple(EOperadorSimple op, string atributo, IEntidadIdentificable valor) { _strvalor = string.Format("'{0}'", valor.Id); _op = op; _atributo = atributo; _valor = valor; }
/// <summary> /// Constructor de la clase para una expresion binaria (de dos operandos) /// en donde el segundo operando es un double (un valor para por ejemplo /// "campo = 1" -porque true=1 y false=0-). /// </summary> public ExpresionSimple(EOperadorSimple op, string atributo, bool valor) { _strvalor = ((valor) ? "1" : "0"); _op = op; _atributo = atributo; _valor = valor; }