Exemple #1
0
        private DuplicatesGroupResponse ConvertServerEntityToClientEntity(EntitySchemaQuery esq,
                                                                          List <EntityDuplicatesGroup> entityGroups)
        {
            DuplicatesGroupResponse result = new DuplicatesGroupResponse()
            {
                Groups = new Collection <EntityClientDuplicatesGroup>()
            };
            Dictionary <string, string> serverToClientColumnNameMap = GetQueryColumns(esq);

            foreach (EntityDuplicatesGroup groupItem in entityGroups)
            {
                EntityCollection convertedEntities =
                    QueryExtension.GetEntityCollection(groupItem.Duplicates,
                                                       serverToClientColumnNameMap);
                EntityClientDuplicatesGroup clientGroup = new EntityClientDuplicatesGroup()
                {
                    GroupId = groupItem.GroupId,
                    Rows    = convertedEntities
                };
                result.Groups.Add(clientGroup);
            }
            if (result.Groups.Any())
            {
                Dictionary <string, object> columnConfig =
                    QueryExtension.GetColumnConfig(esq, serverToClientColumnNameMap);
                result.RowConfig = columnConfig;
            }
            result.Groups.OrderBy(group => group.GroupId);
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// Returns groups of duplicates.
        /// </summary>
        /// <param name="schemaName">Schema name.</param>
        /// <param name="columns">Requested columns.</param>
        /// <param name="offset">Start position for groups.</param>
        /// <returns>Instance <see cref="DuplicatesGroupResponse"/> contains groups of duplicates.</returns>
        public virtual DuplicatesGroupResponse GetDeduplicationResults(string schemaName, string[] columns,
                                                                       int offset)
        {
            offset = offset == 0 ? 1 : offset;
            List <InitialResultItem> initialResults = GetInitialResults(schemaName, offset);
            DuplicatesGroupResponse  result         = new DuplicatesGroupResponse();

            if (initialResults.Any())
            {
                int groupIdMax = initialResults.Max(initialItem => initialItem.GroupId);
                RemoveInappropriateRecordsByRight(schemaName, initialResults);
                EntitySchemaQuery        esqEntityResults = GetEsqForInitialRecords(schemaName, offset, columns);
                EntitySchemaQueryOptions options          = new EntitySchemaQueryOptions {
                    PageableDirection       = PageableSelectDirection.First,
                    PageableRowCount        = RowsPerRequest,
                    PageableConditionValues = new Dictionary <string, object>()
                };
                Core.Entities.EntityCollection entityResults = esqEntityResults.GetEntityCollection(_userConnection, options);
                List <EntityDuplicatesGroup>   entityGroups  = GroupEntityResults(initialResults, entityResults);
                PrepareResults(entityGroups);
                result = ConvertServerEntityToClientEntity(esqEntityResults, entityGroups);
                if (initialResults.Select(group => group.GroupId).Distinct().Count() == GroupsPerRequest)
                {
                    result.NextOffset = groupIdMax;
                    result.NextOffset++;
                }
            }
            return(result);
        }
        public string GetDeduplicationResults(string schemaName, string[] columns, int offset)
        {
            DeduplicationProcessing deduplicationProcessing =
                ClassFactory.Get <DeduplicationProcessing>(new ConstructorArgument("userConnection", UserConnection));
            DuplicatesGroupResponse objectResult =
                deduplicationProcessing.GetDeduplicationResults(schemaName, columns, offset);
            string result = JsonConvert.SerializeObject(objectResult);

            return(result);
        }