Exemple #1
0
        /// <summary>
        /// Creates the result for singe query response.
        /// </summary>
        /// <param name="json">
        /// The json.
        /// </param>
        /// <returns>
        /// The <see cref="UPCRMResult"/>.
        /// </returns>
        public virtual UPCRMResult CreateResultForSingeQueryResponse(Dictionary <string, object> json)
        {
            var serverResult = new UPCRMResult(this.ContainerMetaInfo, json);

            serverResult.Log();

            UPCRMDataStore.DefaultStore.VirtualInfoAreaCache.ApplyResult(serverResult);

            if (this.SkipLocalMerge || serverResult.RowCount == 0)
            {
                return(serverResult);
            }

            UPCRMResult localResult;

            if (this.LocalMergeResult != null)
            {
                localResult = this.LocalMergeResult;
            }
            else if (!string.IsNullOrEmpty(this.RecordIdentification))
            {
                localResult = this.ContainerMetaInfo.ReadRecord(this.RecordIdentification.RecordId());
            }
            else
            {
                localResult = this.ContainerMetaInfo.Find();
            }

            if (localResult == null || localResult.RowCount == 0)
            {
                return(serverResult);
            }

            var allLocalResultRows = new Dictionary <string, object>();

            for (var j = 0; j < localResult.RowCount; j++)
            {
                var localResultRow = localResult.ResultRowAtIndex(j);
                allLocalResultRows[localResultRow.RootRecordId] = localResultRow;
            }

            var mergedResult = new UPCRMMergedResult(this.ContainerMetaInfo);

            mergedResult.MergeServerResultWithLocalResults(serverResult, allLocalResultRows);
            return(mergedResult);
        }
Exemple #2
0
        /// <summary>
        /// Processes the result.
        /// </summary>
        /// <param name="dataDictionary">
        /// The data dictionary.
        /// </param>
        private void ProcessResult(Dictionary <string, object> dataDictionary)
        {
            if (this.Canceled)
            {
                return;
            }

            var resultSet = dataDictionary.ValueOrDefault("resultSet") as DatabaseRecordSet;

            this.containerMetaInfo.BuildResultMetaInfoResult(this.query, resultSet);
            var result = new UPCRMResult(this.containerMetaInfo, resultSet);

            result.Log();

            // Inform the handler about success
            this.SearchOperationHandler.SearchOperationDidFinishWithResult(this, result);
            this.FinishProcessing();
        }