/// <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); }
/// <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); } }
/// <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); } }