/// <summary> /// Checks and complete the request. /// </summary> /// <param name="request">Request to check.</param> /// <returns>Request checked.</returns> private Request CheckRequest(Request request) { Request lResult = null; // Get the sequence and ticket from the connected agent. if (request.Agent != null) { // Sequence. request.Sequence = request.Agent.Sequence; request.Agent.Sequence++; // Ticket. request.Ticket = request.Agent.Ticket; } else { // Exception: 'MVAgentValidation' service does not need Agent. if ((request.IsQuery) || ((request.IsService) && (request.Service.Name != VALIDATION_SERVICE_NAME))) { string lMessage = CultureManager.TranslateString(LanguageConstantKeys.L_LOGIN_ERROR, LanguageConstantValues.L_LOGIN_ERROR); throw new RequestException(lMessage); } } // Application. if ((request.Application == null) || request.Application.Length == 0) { request.Application = this.Application; } // VersionDTD. if ((request.VersionDTD == null) || request.VersionDTD.Length == 0) { request.VersionDTD = this.VersionDTD; } // ConnectionString. request.ConnectionString = this.ConnectionString; if ((request.ConnectionString == null) || request.ConnectionString.Length == 0) { request.ConnectionString = this.ConnectionString; } lResult = request; return lResult; }
/// <summary> /// Sends and receives data. /// </summary> /// <param name="request">Data to send.</param> /// <returns>Data received.</returns> private Response Send(Request request) { // Hourglass System.Windows.Forms.Cursor lCurrentCursor = System.Windows.Forms.Cursor.Current; System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; Response lResult = null; if ((this.Connection != null) && (request != null)) { lResult = new Response(); // Check the info. of Request. CheckRequest(request); // Data To Send ... StringBuilder lSendData = XMLRequestSerializer.SerializeRoot(null as StringBuilder, request); // Send & Received Data ... StringBuilder lReceivedData = new StringBuilder(this.Connection.Send(lSendData.ToString())); // Throw a ResponseException if have error. lResult = XMLResponseSerializer.Deserialize(lReceivedData.ToString()); // Save Ticket ... if (lResult.Ticket != null) { request.Agent.Ticket = lResult.Ticket; } } else { // Hourglass System.Windows.Forms.Cursor.Current = lCurrentCursor; string lMessageError = CultureManager.TranslateString(LanguageConstantKeys.L_ERROR_REQUEST, LanguageConstantValues.L_ERROR_REQUEST); RequestException lrequestException = new RequestException(lMessageError); lrequestException.Number = 999; throw lrequestException; } // Hourglass System.Windows.Forms.Cursor.Current = lCurrentCursor; return lResult; }
/// <summary> /// Executes a query. /// </summary> /// <param name="agent">Agent who executes the query.</param> /// <param name="className">Class name to query.</param> /// <param name="alternateKeyName">Indicates the alternate key name of the .</param> /// <param name="displaySet">DisplaySet</param> /// <param name="queryInstance">Query to execute.</param> /// <param name="orderCriteria">Order criteria.</param> /// <param name="navigationalFiltering">Navigational Filtering object.</param> /// <returns>DataTable with rows of result Query.</returns> private DataTable ExecuteQuery( Oid agent, string className, string alternateKeyName, string displaySet, QueryInstance queryInstance, string orderCriteria, NavigationalFiltering navigationalFiltering) { //Create the Query Request. QueryRequest lQueryRequest = new QueryRequest( className, displaySet, queryInstance, orderCriteria, navigationalFiltering); lQueryRequest.AlternateKeyName = alternateKeyName; // Create the Request. Request lRequest = new Request(lQueryRequest, agent); // Send Request to Server. Response lResponse = this.Send(lRequest); if ((lResponse != null) && (lResponse.Query != null)) { return lResponse.Query.Data; } return null; }