/// <summary>
        /// Queries the data store using the specified <see cref="WitsmlQueryParser" />.
        /// </summary>
        /// <param name="parser">The query parser.</param>
        /// <param name="objectMappingKey">The object mapping key.</param>
        /// <returns>The query results collection.</returns>
        /// <exception cref="WitsmlException"></exception>
        protected virtual List <T> QueryEntities(WitsmlQueryParser parser, string objectMappingKey)
        {
            if (OptionsIn.RequestObjectSelectionCapability.True.Equals(parser.RequestObjectSelectionCapability()))
            {
                Logger.DebugFormat("Requesting {0} query template.", objectMappingKey);
                var template = CreateQueryTemplate();
                return(template.AsList());
            }

            var returnElements = parser.ReturnElements();

            Logger.DebugFormat("Querying with return elements '{0}'", returnElements);

            try
            {
                Logger.DebugFormat("Querying {0} data object.", objectMappingKey);
                return(GetAll(parser));
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Error querying {0} data object: {1}", objectMappingKey, ex);

                if (ex is WitsmlException)
                {
                    throw;
                }

                throw new WitsmlException(ErrorCodes.ErrorReadingFromDataStore, ex);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Queries the data store with Mongo Bson filter and projection.
        /// </summary>
        /// <param name="parser">The parser.</param>
        /// <returns>The query results collection.</returns>
        /// <exception cref="WitsmlException"></exception>
        protected List <T> QueryEntities(WitsmlQueryParser parser)
        {
            try
            {
                if (OptionsIn.RequestObjectSelectionCapability.True.Equals(parser.RequestObjectSelectionCapability()))
                {
                    Logger.DebugFormat("Requesting {0} query template.", DbCollectionName);
                    var queryTemplate = CreateQueryTemplate();
                    return(queryTemplate.AsList());
                }

                var returnElements = parser.ReturnElements();
                Logger.DebugFormat("Querying with return elements '{0}'", returnElements);

                var fields  = GetProjectionPropertyNames(parser);
                var ignored = GetIgnoredElementNamesForQuery(parser);

                Logger.DebugFormat("Querying {0} MongoDb collection.", DbCollectionName);
                var query = new MongoDbQuery <T>(Container, GetCollection(), parser, fields, ignored);
                return(FilterRecurringElements(query));
            }
            catch (MongoException ex)
            {
                Logger.ErrorFormat("Error querying {0} MongoDb collection: {1}", DbCollectionName, ex);
                throw new WitsmlException(ErrorCodes.ErrorReadingFromDataStore, ex);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Queries the data store using the specified <see cref="WitsmlQueryParser" />.
        /// </summary>
        /// <param name="parser">The query parser.</param>
        /// <param name="objectType">The object type.</param>
        /// <returns>The query results collection.</returns>
        /// <exception cref="WitsmlException"></exception>
        protected virtual List <T> QueryEntities(WitsmlQueryParser parser, string objectType)
        {
            //var mapping = GetMapping(objectType);

            if (OptionsIn.RequestObjectSelectionCapability.True.Equals(parser.RequestObjectSelectionCapability()))
            {
                Logger.DebugFormat("Requesting {0} query template.", objectType);
                var template = CreateQueryTemplate();
                return(template.AsList());
            }

            var returnElements = parser.ReturnElements();

            Logger.DebugFormat("Querying with return elements '{0}'", returnElements);

            try
            {
                //var fields = GetProjectionPropertyNames(parser);
                //var ignored = GetIgnoredElementNamesForQuery(parser);

                Logger.DebugFormat("Querying {0} data object.", objectType);

                //var query = new SqlQuery<T>(Container, GetDatabase(), mapping, parser, fields, ignored);
                //return query.Execute();

                return(GetAll(parser));
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Error querying {0} data object: {1}", objectType, ex);

                if (ex is WitsmlException)
                {
                    throw;
                }
                throw new WitsmlException(ErrorCodes.ErrorReadingFromDataStore, ex);
            }
        }