Ejemplo n.º 1
0
 public void ReadRowset(XmlReader reader, InlineErrorHandlingType inlineErrorHandling, DataTable inTable, bool doCreate, bool schemaOnly, Dictionary <string, bool> columnsToConvertTimeFor)
 {
     if (doCreate)
     {
         this.CreateDataset(reader, inlineErrorHandling == InlineErrorHandlingType.Throw || inlineErrorHandling == InlineErrorHandlingType.StoreInErrorsCollection, inTable, columnsToConvertTimeFor);
     }
     if (!schemaOnly)
     {
         RowsetFormatter.PopulateDataset(reader, inlineErrorHandling, (inTable == null) ? this.rowsetDataset.Tables["rowsetTable"] : inTable);
     }
 }
Ejemplo n.º 2
0
        public ResultsetFormatter ReadDiscoverResponse(XmlReader reader, InlineErrorHandlingType inlineErrorHandling, DataTable inTable, bool schemaOnly, Dictionary <string, bool> columnsToConvertTimeFor)
        {
            ResultsetFormatter result;

            try
            {
                ResultsetFormatter resultsetFormatter = SoapFormatter.ReadDiscoverResponsePrivate(reader, inlineErrorHandling, inTable, schemaOnly, columnsToConvertTimeFor);
                result = resultsetFormatter;
            }
            catch (XmlException innerException)
            {
                throw new AdomdUnknownResponseException(XmlaSR.UnknownServerResponseFormat, innerException);
            }
            catch (IOException innerException2)
            {
                if (this.client != null)
                {
                    this.client.Disconnect(false);
                }
                throw new AdomdConnectionException(XmlaSR.ConnectionBroken, innerException2);
            }
            catch (AdomdUnknownResponseException)
            {
                throw;
            }
            catch (XmlaException)
            {
                throw;
            }
            catch
            {
                if (this.client != null)
                {
                    this.client.Disconnect(false);
                }
                throw;
            }
            finally
            {
                this.EndReceival(reader);
            }
            return(result);
        }
Ejemplo n.º 3
0
 public ResultsetFormatter ReadDiscoverResponse(XmlReader reader, InlineErrorHandlingType inlineErrorHandling, DataTable inTable, Dictionary <string, bool> columnsToConvertTimeFor)
 {
     return(this.ReadDiscoverResponse(reader, inlineErrorHandling, inTable, false, columnsToConvertTimeFor));
 }
Ejemplo n.º 4
0
        public ResultsetFormatter ReadResponse(XmlReader reader, InlineErrorHandlingType inlineErrorHandling)
        {
            ResultsetFormatter result;

            try
            {
                ResultsetFormatter resultsetFormatter = null;
                if (XmlaClient.IsExecuteResponseS(reader))
                {
                    resultsetFormatter = SoapFormatter.ReadExecuteResponsePrivate(reader, inlineErrorHandling);
                }
                else if (XmlaClient.IsDiscoverResponseS(reader))
                {
                    resultsetFormatter = SoapFormatter.ReadDiscoverResponsePrivate(reader, inlineErrorHandling, null, false, null);
                }
                else
                {
                    if (!XmlaClient.IsEmptyResultS(reader))
                    {
                        throw new AdomdUnknownResponseException(XmlaSR.UnknownServerResponseFormat, string.Format(CultureInfo.InvariantCulture, "Expected execute or discover response, or empty result, got {0}", new object[]
                        {
                            reader.Name
                        }));
                    }
                    XmlaClient.ReadEmptyRootS(reader);
                }
                result = resultsetFormatter;
            }
            catch (XmlException innerException)
            {
                throw new AdomdUnknownResponseException(XmlaSR.UnknownServerResponseFormat, innerException);
            }
            catch (IOException innerException2)
            {
                if (this.client != null)
                {
                    this.client.Disconnect(false);
                }
                throw new AdomdConnectionException(XmlaSR.ConnectionBroken, innerException2);
            }
            catch (AdomdUnknownResponseException)
            {
                throw;
            }
            catch (XmlaException)
            {
                throw;
            }
            catch
            {
                if (this.client != null)
                {
                    this.client.Disconnect(false);
                }
                throw;
            }
            finally
            {
                this.EndReceival(reader);
            }
            return(result);
        }
Ejemplo n.º 5
0
        private static ResultsetFormatter ReadRowsetResponsePrivate(XmlReader reader, InlineErrorHandlingType inlineErrorHandling, DataTable inTable, bool schemaOnly, Dictionary <string, bool> columnsToConvertTimeFor)
        {
            RowsetFormatter rowsetFormatter = new RowsetFormatter();

            if (reader.IsEmptyElement)
            {
                reader.Skip();
            }
            else
            {
                XmlaClient.StartRowsetResponseS(reader);
                rowsetFormatter.ReadRowset(reader, inlineErrorHandling, inTable, inTable == null || inTable.Columns.Count <= 1, schemaOnly, columnsToConvertTimeFor);
                XmlaClient.EndRowsetResponseS(reader);
            }
            return(rowsetFormatter);
        }
Ejemplo n.º 6
0
 private static ResultsetFormatter ReadDiscoverResponsePrivate(XmlReader reader, InlineErrorHandlingType inlineErrorHandling, DataTable inTable, bool schemaOnly, Dictionary <string, bool> columnsToConvertTimeFor)
 {
     XmlaClient.StartDiscoverResponseS(reader);
     if (XmlaClient.IsRowsetResponseS(reader))
     {
         return(SoapFormatter.ReadRowsetResponsePrivate(reader, inlineErrorHandling, inTable, schemaOnly, columnsToConvertTimeFor));
     }
     if (!XmlaClient.IsEmptyResultS(reader))
     {
         throw new AdomdUnknownResponseException(XmlaSR.UnknownServerResponseFormat, string.Format("Expected rowset or empty result, got {0}", reader.Name));
     }
     XmlaClient.ReadEmptyRootS(reader);
     XmlaClient.EndDiscoverResponseS(reader);
     return(null);
 }
Ejemplo n.º 7
0
 private static ResultsetFormatter ReadExecuteResponsePrivate(XmlReader reader, InlineErrorHandlingType inlineErrorHandling)
 {
     XmlaClient.StartExecuteResponseS(reader);
     if (XmlaClient.IsDatasetResponseS(reader))
     {
         return(SoapFormatter.ReadDataSetResponsePrivate(reader));
     }
     if (XmlaClient.IsRowsetResponseS(reader))
     {
         return(SoapFormatter.ReadRowsetResponsePrivate(reader, inlineErrorHandling, null, false, null));
     }
     if (!XmlaClient.IsEmptyResultS(reader))
     {
         throw new AdomdUnknownResponseException(XmlaSR.UnknownServerResponseFormat, string.Format("Expected dataset, rowset, or empty result, got {0}", reader.Name));
     }
     XmlaClient.ReadEmptyRootS(reader);
     XmlaClient.EndExecuteResponseS(reader);
     return(null);
 }
Ejemplo n.º 8
0
        private static void PopulateRow(XmlReader reader, DataTable datatable, InlineErrorHandlingType inlineErrorHandling, int parentRowIndex, DataColumn parentColumn)
        {
            DataRow dataRow = RowsetFormatter.CreateNewRow(datatable, parentColumn, parentRowIndex);

            while (reader.IsStartElement())
            {
                FormattersHelpers.CheckException(reader);
                if (!FormattersHelpers.IsNullContentElement(reader))
                {
                    string     localName  = reader.LocalName;
                    DataColumn dataColumn = datatable.Columns[localName];
                    if (dataColumn == null)
                    {
                        throw new AdomdUnknownResponseException(XmlaSR.UnknownServerResponseFormat, string.Format(CultureInfo.InvariantCulture, "Unknown column {0}", new object[]
                        {
                            localName
                        }));
                    }
                    string columnNamespace = FormattersHelpers.GetColumnNamespace(dataColumn);
                    if (reader.NamespaceURI == columnNamespace)
                    {
                        if (RowsetFormatter.IsNestedColumn(dataColumn))
                        {
                            DataTable dataTable = RowsetFormatter.FindNestedTable(dataColumn);
                            if (dataTable != null)
                            {
                                RowsetFormatter.PopulateMultiRow(reader, localName, columnNamespace, dataTable, inlineErrorHandling, (int)dataRow[dataColumn]);
                            }
                            else
                            {
                                reader.Skip();
                            }
                        }
                        else
                        {
                            Type   elementType        = FormattersHelpers.GetElementType(reader, "http://www.w3.org/2001/XMLSchema-instance", dataColumn);
                            bool   throwOnInlineError = inlineErrorHandling == InlineErrorHandlingType.Throw;
                            object obj = FormattersHelpers.ReadRowsetProperty(reader, localName, columnNamespace, elementType, throwOnInlineError, elementType.IsArray && FormattersHelpers.GetColumnXsdTypeName(dataColumn) != "base64Binary", FormattersHelpers.GetConvertToLocalTime(dataColumn));
                            if (inlineErrorHandling == InlineErrorHandlingType.StoreInErrorsCollection)
                            {
                                XmlaError xmlaError = obj as XmlaError;
                                if (xmlaError == null)
                                {
                                    dataRow[localName] = obj;
                                }
                                else
                                {
                                    dataRow.SetColumnError(localName, xmlaError.Description);
                                }
                            }
                            else
                            {
                                dataRow[localName] = obj;
                            }
                        }
                    }
                    else
                    {
                        reader.Skip();
                    }
                }
                else
                {
                    reader.Skip();
                }
            }
            datatable.Rows.Add(dataRow);
        }
Ejemplo n.º 9
0
        private static void PopulateMultiRow(XmlReader reader, string elementName, string elementNamespace, DataTable datatable, InlineErrorHandlingType inlineErrorHandling, int parentRowIndex)
        {
            DataColumn parentColumn = null;

            if (parentRowIndex >= 0 && datatable.Columns.Contains(datatable.TableName))
            {
                parentColumn = datatable.Columns[datatable.TableName];
            }
            while (reader.IsStartElement(elementName, elementNamespace))
            {
                if (reader.IsEmptyElement)
                {
                    reader.ReadStartElement();
                    DataRow row = RowsetFormatter.CreateNewRow(datatable, parentColumn, parentRowIndex);
                    datatable.Rows.Add(row);
                }
                else
                {
                    reader.ReadStartElement();
                    RowsetFormatter.PopulateRow(reader, datatable, inlineErrorHandling, parentRowIndex, parentColumn);
                    reader.ReadEndElement();
                }
            }
            FormattersHelpers.CheckException(reader);
        }
Ejemplo n.º 10
0
 private static void PopulateDataset(XmlReader reader, InlineErrorHandlingType inlineErrorHandling, DataTable inTable)
 {
     RowsetFormatter.PopulateMultiRow(reader, FormattersHelpers.RowElement, FormattersHelpers.RowElementNamespace, inTable, inlineErrorHandling, -1);
 }
Ejemplo n.º 11
0
        internal static void PopulateDataset(XmlReader reader, string rowElementName, string rowNamespace, InlineErrorHandlingType inlineErrorHandling, DataTable inTable)
        {
            DataSet dataSet = inTable.DataSet;

            if (dataSet != null)
            {
                IEnumerator enumerator = dataSet.Tables.GetEnumerator();
                {
                    while (enumerator.MoveNext())
                    {
                        DataTable dataTable = (DataTable)enumerator.Current;
                        dataTable.BeginLoadData();
                    }
                    goto IL_50;
                }
            }
            inTable.BeginLoadData();
IL_50:
            RowsetFormatter.PopulateMultiRow(reader, rowElementName, rowNamespace, inTable, inlineErrorHandling, -1);
            if (dataSet != null)
            {
                IEnumerator enumerator2 = dataSet.Tables.GetEnumerator();
                {
                    while (enumerator2.MoveNext())
                    {
                        DataTable dataTable2 = (DataTable)enumerator2.Current;
                        dataTable2.EndLoadData();
                    }
                    return;
                }
            }
            inTable.EndLoadData();
        }