public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, _propertyNameGetter); CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName); parameters.AddWhereWithFunction(propertyName, " lower ", " like ", _value.ToLower()); }
public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, propertyNameGetter); CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName); CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, otherPropertyName); parameters.AddWhere(propertyName, op, otherPropertyName); }
public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, propertyNameGetter); CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName); var subParams = parameters.AddSubParameters(Parameters.AND); subParams.AddWhereWithParam(propertyName, ">=", lo); subParams.AddWhereWithParam(propertyName, "<=", hi); }
public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, propertyNameGetter); var relatedEntity = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName); if (relatedEntity == null) { throw new AuditException("This criterion can only be used on a property that is " + "a relation to another property."); } relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, id, null, equals); }
public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, propertyNameGetter); var relatedEntity = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName); if (relatedEntity == null) { parameters.AddNotNullRestriction(propertyName, true); } else { relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, null, null, false); } }
public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, propertyNameGetter); CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName); // Make sure our conditions are ANDed together even if the parent Parameters have a different connective var subParams = parameters.AddSubParameters(Parameters.AND); // This will be the aggregated query, containing all the specified conditions var subQb = qb.NewSubQueryBuilder(); // Adding all specified conditions both to the main query, as well as to the // aggregated one. foreach (var versionsCriteria in criterions) { versionsCriteria.AddToQuery(auditCfg, versionsReader, entityName, qb, subParams); versionsCriteria.AddToQuery(auditCfg, versionsReader, entityName, subQb, subQb.RootParameters); } // Setting the desired projection of the aggregated query switch (mode) { case AggregatedMode.Min: subQb.AddProjection("min", propertyName, false); break; case AggregatedMode.Max: subQb.AddProjection("max", propertyName, false); break; } // Correlating subquery with the outer query by entity id. if (correlate) { var originalIdPropertyName = auditCfg.AuditEntCfg.OriginalIdPropName; auditCfg.EntCfg[entityName].IdMapper.AddIdsEqualToQuery(subQb.RootParameters, subQb.RootAlias + "." + originalIdPropertyName, qb.RootAlias + "." + originalIdPropertyName); } // Adding the constrain on the result of the aggregated criteria subParams.AddWhere(propertyName, "=", subQb); }
public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { if (parameterValues.Length == 0) { parameters.AddWhere("1", false, "=", "0", false); return; } var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, propertyNameGetter); var relEntityDesc = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName); if (relEntityDesc == null) { parameters.AddWhereWithParams(propertyName, "in (", parameterValues, ")"); } else { //move to IIdMapper when allowing more id sort of queries later var dic = new Dictionary <QueryParameterData, IList <object> >(); for (var i = 0; i < parameterValues.Length; i++) { var id = relEntityDesc.IdMapper.MapToIdFromEntity(parameterValues[i]); var queryParams = relEntityDesc.IdMapper.MapToQueryParametersFromId(id); foreach (var queryParam in queryParams) { if (i == 0) { dic[queryParam] = new List <object>(); } dic[queryParam].Add(queryParam.Value); } } foreach (var paramNameAndValue in dic) { parameters.AddWhereWithParams(paramNameAndValue.Key.GetProperty(null), "in (", paramNameAndValue.Value.ToArray(), ")"); } } }
public void AddToQuery(AuditConfiguration auditCfg, IAuditReaderImplementor versionsReader, string entityName, QueryBuilder qb, Parameters parameters) { var propertyName = CriteriaTools.DeterminePropertyName(auditCfg, versionsReader, entityName, propertyNameGetter); var relatedEntity = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName); if (relatedEntity == null) { parameters.AddWhereWithParam(propertyName, op, value); } else { if (!"=".Equals(op) && !"<>".Equals(op)) { throw new AuditException("This type of operation: " + op + " (" + entityName + "." + propertyName + ") isn't supported and can't be used in queries."); } var id = relatedEntity.IdMapper.MapToIdFromEntity(value); relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, id, null, "=".Equals(op)); } }