Пример #1
0
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            String propertyName = propertyNameGetter.Get(auditCfg);

            CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName);
            parameters.AddWhereWithParams(propertyName, "in (", values, ")");
        }
Пример #2
0
        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());
        }
Пример #3
0
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            String propertyName = propertyNameGetter.Get(auditCfg);

            CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName);

            // This will be the aggregated query, containing all the specified conditions
            QueryBuilder subQb = qb.NewSubQueryBuilder();

            // Adding all specified conditions both to the main query, as well as to the
            // aggregated one.
            foreach (IAuditCriterion versionsCriteria in criterions)
            {
                versionsCriteria.AddToQuery(auditCfg, entityName, qb, parameters);
                versionsCriteria.AddToQuery(auditCfg, 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;
            }

            // Adding the constrain on the result of the aggregated criteria
            parameters.AddWhere(propertyName, "=", subQb);
        }
        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);
        }
Пример #5
0
        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);
        }
Пример #7
0
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            String propertyName = propertyNameGetter.Get(auditCfg);
            RelationDescription relatedEntity = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName);

            if (relatedEntity == null)
            {
                parameters.AddWhereWithParam(propertyName, "=", null);
            }
            else
            {
                relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, null, propertyName, true);
            }
        }
        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);
            }
        }
Пример #9
0
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            String propertyName = propertyNameGetter.Get(auditCfg);

            RelationDescription 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.");
            }
            else
            {
                relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, id, propertyName, equals);
            }
        }
Пример #10
0
        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(), ")");
                }
            }
        }
Пример #12
0
        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));
            }
        }
Пример #13
0
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            String propertyName = propertyNameGetter.Get(auditCfg);

            RelationDescription 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.");
                }

                Object id = relatedEntity.IdMapper.MapToIdFromEntity(value);

                relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, id, propertyName, "=".Equals(op));
            }
        }