/// <summary>
        /// Validates the data object properties using .NET validation attributes.
        /// </summary>
        /// <returns>A collection of validation results.</returns>
        protected virtual IEnumerable <ValidationResult> ValidateProperties()
        {
            IList <ValidationResult> results;

            DataObjectValidator.TryValidate(DataObject, out results);
            WitsmlValidator.ValidateResults(Context.Function, results);
            yield break;
        }
        /// <summary>
        /// Validates the updated entity.
        /// </summary>
        /// <param name="function">The WITSML API function.</param>
        /// <param name="uri">The URI.</param>
        protected virtual void ValidateUpdatedEntity(Functions function, EtpUri uri)
        {
            IList <ValidationResult> results;

            var entity = Get(uri);

            DataObjectValidator.TryValidate(entity, out results);
            WitsmlValidator.ValidateResults(function, results);
        }
        /// <summary>
        /// Validates the specified data object while executing a WITSML API method.
        /// </summary>
        /// <param name="function">The WITSML API method.</param>
        /// <param name="parser">The input template parser.</param>
        /// <param name="dataObject">The data object.</param>
        /// <exception cref="PDS.WITSMLstudio.WitsmlException">If any validation errors are detected.</exception>
        public void Validate(Functions function, WitsmlQueryParser parser, T dataObject)
        {
            Logger.DebugFormat("Validating data object for {0}; Type: {1}", function, typeof(T).FullName);

            Context.Function = function;
            DataObject       = dataObject;
            Parser           = parser;
            ConfigureContext();

            IList <ValidationResult> results;

            DataObjectValidator.TryValidate(this, out results);
            WitsmlValidator.ValidateResults(function, results);

            WitsmlOperationContext.Current.Warnings.AddRange(Context.Warnings);
        }
Exemple #4
0
        /// <summary>
        /// Returns one or more WITSML data-objects from the server.
        /// </summary>
        /// <param name="request">The request object encapsulating the method input parameters.</param>
        /// <returns>
        /// A positive value indicating success along with one or more WITSML data-objects from the server, or a negative value indicating an error.
        /// </returns>
        public WMLS_GetFromStoreResponse WMLS_GetFromStore(WMLS_GetFromStoreRequest request)
        {
            var context = WitsmlOperationContext.Current.Request = request.ToContext();
            var version = string.Empty;

            try
            {
                _log.Debug(WebOperationContext.Current.ToLogMessage());
                _log.Debug(context);

                UserAuthorizationProvider.CheckSoapAccess();
                WitsmlValidator.ValidateRequest(CapServerProviders);
                version = WitsmlOperationContext.Current.DataSchemaVersion;

                var dataProvider = Container.Resolve <IWitsmlDataProvider>(new ObjectName(context.ObjectType, ObjectFamilies.Witsml, version));
                var result       = dataProvider.GetFromStore(context);

                var response = new WMLS_GetFromStoreResponse(
                    (short)result.Code,
                    GetXmlOut(request, result.Results),
                    result.Message);

                _log.Debug(response.ToLogMessage());

                return(response);
            }
            catch (ContainerException)
            {
                var response = new WMLS_GetFromStoreResponse((short)ErrorCodes.DataObjectNotSupported, string.Empty,
                                                             "WITSML object type not supported: " + context.ObjectType + "; Version: " + version);

                _log.Error(response.ToLogMessage(_log.IsWarnEnabled));

                return(response);
            }
            catch (WitsmlException ex)
            {
                var errorCode = ex.ErrorCode.CorrectNonConformingErrorCodes(WitsmlOperationContext.Current.RequestCompressed);
                var response  = new WMLS_GetFromStoreResponse((short)errorCode, string.Empty, ex.Message);
                _log.Error(response.ToLogMessage(_log.IsWarnEnabled));
                return(response);
            }
        }
Exemple #5
0
        /// <summary>
        /// Returns the response for deleting one WITSML data-object to the server.
        /// </summary>
        /// <param name="request">he request object encapsulating the method input parameters.</param>
        /// <returns>A positive value indicates a success; a negative value indicates an error.</returns>
        public WMLS_DeleteFromStoreResponse WMLS_DeleteFromStore(WMLS_DeleteFromStoreRequest request)
        {
            var context = WitsmlOperationContext.Current.Request = request.ToContext();
            var version = string.Empty;

            try
            {
                _log.Debug(WebOperationContext.Current.ToLogMessage());
                _log.Debug(context);

                UserAuthorizationProvider.CheckSoapAccess();
                WitsmlValidator.ValidateRequest(CapServerProviders);
                version = WitsmlOperationContext.Current.DataSchemaVersion;
                var family = ObjectTypes.GetFamily(WitsmlOperationContext.Current.Document.Root);

                var dataWriter = Container.Resolve <IWitsmlDataProvider>(new ObjectName(context.ObjectType, family, version));
                var result     = dataWriter.DeleteFromStore(context);

                var response = new WMLS_DeleteFromStoreResponse((short)result.Code, result.Message);
                _log.Debug(response.ToLogMessage());
                return(response);
            }
            catch (ContainerException)
            {
                var response = new WMLS_DeleteFromStoreResponse((short)ErrorCodes.DataObjectNotSupported,
                                                                "WITSML object type not supported: " + context.ObjectType + "; Version: " + version);

                _log.Error(response.ToLogMessage(_log.IsWarnEnabled));

                return(response);
            }
            catch (WitsmlException ex)
            {
                var response = new WMLS_DeleteFromStoreResponse((short)ex.ErrorCode, ex.Message);
                _log.Error(response.ToLogMessage(_log.IsWarnEnabled));
                return(response);
            }
        }