public IEntityAuditQuery <TEntity> AddOrder(IAuditOrder order)
        {
            hasOrder = true;
            var orderData    = order.GetData(auditConfiguration);
            var propertyName = CriteriaTools.DeterminePropertyName(AuditConfiguration, versionsReader, entityName, orderData.Item1);

            queryBuilder.AddOrder(propertyName, orderData.Item2);
            return(this);
        }
        public IEntityAuditQuery <TEntity> AddOrder(IAuditOrder order)
        {
            _hasOrders = true;
            var orderData    = order.GetData(_auditConfiguration);
            var propertyName = CriteriaTools.DeterminePropertyName(_auditConfiguration, _auditReader, _entityName, orderData.Item1);

            _queryBuilder.AddOrder(_alias, propertyName, orderData.Item2);
            return(this);
        }
        public IAuditQuery AddOrder(IAuditOrder order)
        {
            hasOrder = true;

            Pair <String, Boolean> orderData = order.getData(verCfg);

            qb.AddOrder(orderData.First, orderData.Second);
            return(this);
        }
        public IEntityAuditQuery <TEntity> AddOrder(IAuditOrder order)
        {
            _hasOrder = true;
            var orderData    = order.GetData(AuditConfiguration);
            var propertyName = CriteriaTools.DeterminePropertyName(AuditConfiguration, _versionsReader, EntityName, orderData.Item1);

            QueryBuilder.AddOrder(QueryConstants.ReferencedEntityAlias, propertyName, orderData.Item2);
            return(this);
        }
        public IAuditQuery AddOrder(IAuditOrder order)
        {
            HasOrder = true;
            var orderData    = order.GetData(VerCfg);
            var propertyName = CriteriaTools.DeterminePropertyName(VerCfg, VersionsReader, EntityName, orderData.Item1);

            QueryBuilder.AddOrder(propertyName, orderData.Item2);
            return(this);
        }
        protected void AddOrders()
        {
            if (_hasOrder)
            {
                return;
            }
            var revisionPropertyPath = AuditConfiguration.AuditEntCfg.RevisionNumberPath;

            QueryBuilder.AddOrder(QueryConstants.ReferencedEntityAlias, revisionPropertyPath, true);
        }
示例#7
0
        protected override void FillResult(IList result)
        {
            var verEntCfg = VerCfg.AuditEntCfg;

            /*
             * The query that should be executed in the versions table:
             * SELECT e (unless another projection is specified) FROM ent_ver e, rev_entity r WHERE
             * e.revision_type != DEL (if selectDeletedEntities == false) AND
             * e.revision = r.revision AND
             * (all specified conditions, transformed, on the "e" entity)
             * ORDER BY e.revision ASC (unless another order or projection is specified)
             */
            if (!_selectDeletedEntities)
            {
                // e.revision_type != DEL AND
                QueryBuilder.RootParameters.AddWhereWithParam(verEntCfg.RevisionTypePropName, "<>", RevisionType.Deleted);
            }

            // all specified conditions, transformed
            foreach (var criterion in Criterions)
            {
                criterion.AddToQuery(VerCfg, VersionsReader, EntityName, QueryBuilder, QueryBuilder.RootParameters);
            }

            if (!HasProjection() && !HasOrder)
            {
                var revisionPropertyPath = verEntCfg.RevisionNumberPath;
                QueryBuilder.AddOrder(QueryConstants.ReferencedEntityAlias, revisionPropertyPath, true);
            }

            if (!_selectEntitiesOnly)
            {
                QueryBuilder.AddFrom(VerCfg.AuditEntCfg.RevisionInfoEntityFullClassName(), QueryConstants.RevisionAlias, true);
                QueryBuilder.RootParameters.AddWhere(VerCfg.AuditEntCfg.RevisionNumberPath, true, "=", QueryConstants.RevisionAlias + ".id", false);
            }

            if (HasProjection())
            {
                BuildAndExecuteQuery(result);
                return;
            }
            var internalResult = new ArrayList();

            BuildAndExecuteQuery(internalResult);

            var revisionTypePropertyName = verEntCfg.RevisionTypePropName;

            foreach (var resultRow in internalResult)
            {
                IDictionary versionsEntity;
                object      revisionData = null;

                if (_selectEntitiesOnly)
                {
                    versionsEntity = (IDictionary)resultRow;
                }
                else
                {
                    var arrayResultRow = (Object[])resultRow;
                    versionsEntity = (IDictionary)arrayResultRow[0];
                    revisionData   = arrayResultRow[1];
                }

                var revision = revisionNumber(versionsEntity);

                var entity = EntityInstantiator.CreateInstanceFromVersionsEntity(EntityName, versionsEntity, revision);

                result.Add(_selectEntitiesOnly
                                                                 ? entity
                                                                 : new[] { entity, revisionData, versionsEntity[revisionTypePropertyName] });
            }
        }