From d1007266c9dd7a462552a0e15745d17057136ed9 Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Tue, 19 Nov 2013 09:55:23 +1100 Subject: [PATCH] Include LumenWorks Framework Dependency Disco.BI Dependency for CSV Parsing. --- Disco.BI/Disco.BI.csproj | 7 +- .../LumenWorks.Framework.IO.XML | 1538 +++++++++++++++++ .../LumenWorks.Framework.IO.dll | Bin 0 -> 37888 bytes .../LumenWorks.Framework.IO.pdb | Bin 0 -> 99840 bytes 4 files changed, 1542 insertions(+), 3 deletions(-) create mode 100644 Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.XML create mode 100644 Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.dll create mode 100644 Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.pdb diff --git a/Disco.BI/Disco.BI.csproj b/Disco.BI/Disco.BI.csproj index fe5ba976..937ee5f6 100644 --- a/Disco.BI/Disco.BI.csproj +++ b/Disco.BI/Disco.BI.csproj @@ -46,8 +46,9 @@ ..\Resources\Libraries\iTextSharp\itextsharp.dll - - ..\..\..\Resources\Libraries\LumenWorks.Framework.IO\LumenWorks.Framework.IO.dll + + False + ..\Resources\Libraries\LumenWorks.Framework.IO\LumenWorks.Framework.IO.dll False @@ -254,7 +255,7 @@ - + diff --git a/Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.XML b/Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.XML new file mode 100644 index 00000000..74455f84 --- /dev/null +++ b/Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.XML @@ -0,0 +1,1538 @@ + + + + LumenWorks.Framework.IO + + + + + Represents a reader that provides fast, cached, dynamic access to CSV data. + + The number of records is limited to - 1. + + + + Represents a reader that provides fast, non-cached, forward-only access to CSV data. + + + + + Defines the default buffer size. + + + + + Defines the default delimiter character separating each field. + + + + + Defines the default quote character wrapping every field. + + + + + Defines the default escape character letting insert quotation characters inside a quoted field. + + + + + Defines the default comment character indicating that a line is commented out. + + + + + Contains the field header comparer. + + + + + Contains the pointing to the CSV file. + + + + + Contains the buffer size. + + + + + Contains the comment character indicating that a line is commented out. + + + + + Contains the escape character letting insert quotation characters inside a quoted field. + + + + + Contains the delimiter character separating each field. + + + + + Contains the quotation character wrapping every field. + + + + + Determines which values should be trimmed. + + + + + Indicates if field names are located on the first non commented line. + + + + + Contains the default action to take when a parsing error has occured. + + + + + Contains the action to take when a field is missing. + + + + + Indicates if the reader supports multiline. + + + + + Indicates if the reader will skip empty lines. + + + + + Indicates if the class is initialized. + + + + + Contains the field headers. + + + + + Contains the dictionary of field indexes by header. The key is the field name and the value is its index. + + + + + Contains the current record index in the CSV file. + A value of means that the reader has not been initialized yet. + Otherwise, a negative value means that no record has been read yet. + + + + + Contains the starting position of the next unread field. + + + + + Contains the index of the next unread field. + + + + + Contains the array of the field values for the current record. + A null value indicates that the field have not been parsed. + + + + + Contains the maximum number of fields to retrieve for each record. + + + + + Contains the read buffer. + + + + + Contains the current read buffer length. + + + + + Indicates if the end of the reader has been reached. + + + + + Indicates if the last read operation reached an EOL character. + + + + + Indicates if the first record is in cache. + This can happen when initializing a reader with no headers + because one record must be read to get the field count automatically + + + + + Indicates if one or more field are missing for the current record. + Resets after each successful record read. + + + + + Indicates if a parse error occured for the current record. + Resets after each successful record read. + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The buffer size in bytes. + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + The buffer size in bytes. + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + The quotation character wrapping every field (default is '''). + + The escape character letting insert quotation characters inside a quoted field (default is '\'). + If no escape character, set to '\0' to gain some performance. + + The comment character indicating that a line is commented out (default is '#'). + Determines which values should be trimmed. + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + The quotation character wrapping every field (default is '''). + + The escape character letting insert quotation characters inside a quoted field (default is '\'). + If no escape character, set to '\0' to gain some performance. + + The comment character indicating that a line is commented out (default is '#'). + Determines which values should be trimmed. + The buffer size in bytes. + + is a . + + + must be 1 or more. + + + + + Raises the event. + + The that contains the event data. + + + + Gets the field headers. + + The field headers or an empty array if headers are not supported. + + The instance has been disposed of. + + + + + Ensures that the reader is initialized. + + + + + Gets the field index for the provided header. + + The header to look for. + The field index for the provided header. -1 if not found. + + The instance has been disposed of. + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + The one-dimensional that is the destination of the fields of the current record. + + is . + + + The number of fields in the record is greater than the available space from to the end of . + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + The one-dimensional that is the destination of the fields of the current record. + The zero-based index in at which copying begins. + + is . + + + is les than zero or is equal to or greater than the length . + + + No current record. + + + The number of fields in the record is greater than the available space from to the end of . + + + + + Gets the current raw CSV data. + + Used for exception handling purpose. + The current raw CSV data. + + + + Indicates whether the specified Unicode character is categorized as white space. + + A Unicode character. + if is white space; otherwise, . + + + + Moves to the specified record index. + + The record index. + true if the operation was successful; otherwise, false. + + The instance has been disposed of. + + + + + Parses a new line delimiter. + + The starting position of the parsing. Will contain the resulting end position. + if a new line delimiter was found; otherwise, . + + The instance has been disposed of. + + + + + Determines whether the character at the specified position is a new line delimiter. + + The position of the character to verify. + + if the character at the specified position is a new line delimiter; otherwise, . + + + + + Fills the buffer with data from the reader. + + if data was successfully read; otherwise, . + + The instance has been disposed of. + + + + + Reads the field at the specified index. + Any unread fields with an inferior index will also be read as part of the required parsing. + + The field index. + Indicates if the reader is currently initializing. + Indicates if the value(s) are discarded. + + The field at the specified index. + A indicates that an error occured or that the last field has been reached during initialization. + + + is out of range. + + + There is no current record. + + + The CSV data appears to be missing a field. + + + The CSV data appears to be malformed. + + + The instance has been disposed of. + + + + + Reads the next record. + + if a record has been successfully reads; otherwise, . + + The instance has been disposed of. + + + + + Reads the next record. + + + Indicates if the reader will proceed to the next record after having read headers. + if it stops after having read headers; otherwise, . + + + Indicates if the reader will skip directly to the next line without parsing the current one. + To be used when an error occurs. + + if a record has been successfully reads; otherwise, . + + The instance has been disposed of. + + + + + Skips empty and commented lines. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Worker method. + Skips empty and commented lines. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + + The instance has been disposed of. + + + + + Skips whitespace characters. + + The starting position of the parsing. Will contain the resulting end position. + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Skips ahead to the next NewLine character. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Handles a parsing error. + + The parsing error that occured. + The current position in the buffer. + + is . + + + + + Handles a missing field error. + + The partially parsed value, if available. + The missing field index. + The current position in the raw data. + + The resulting value according to . + If the action is set to , + then the parse error will be handled according to . + + + + + Validates the state of the data reader. + + The validations to accomplish. + + No current record. + + + This operation is invalid when the reader is closed. + + + + + Copy the value of the specified field to an array. + + The index of the field. + The offset in the field value. + The destination array where the field value will be copied. + The destination array offset. + The number of characters to copy from the field value. + + + + + Returns an that can iterate through CSV records. + + An that can iterate through CSV records. + + The instance has been disposed of. + + + + + Returns an that can iterate through CSV records. + + An that can iterate through CSV records. + + The instance has been disposed of. + + + + + Returns an that can iterate through CSV records. + + An that can iterate through CSV records. + + The instance has been disposed of. + + + + + Contains the disposed status flag. + + + + + Contains the locking object for multi-threading purpose. + + + + + Raises the event. + + A that contains the event data. + + + + Checks if the instance has been disposed of, and if it has, throws an ; otherwise, does nothing. + + + The instance has been disposed of. + + + Derived classes should call this method at the start of all methods and properties that should not be accessed after a call to . + + + + + Releases all resources used by the instance. + + + Calls with the disposing parameter set to to free unmanaged and managed resources. + + + + + Releases the unmanaged resources used by this instance and optionally releases the managed resources. + + + to release both managed and unmanaged resources; to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the instance is reclaimed by garbage collection. + + + + + Occurs when there is an error while parsing the CSV stream. + + + + + Gets the comment character indicating that a line is commented out. + + The comment character indicating that a line is commented out. + + + + Gets the escape character letting insert quotation characters inside a quoted field. + + The escape character letting insert quotation characters inside a quoted field. + + + + Gets the delimiter character separating each field. + + The delimiter character separating each field. + + + + Gets the quotation character wrapping every field. + + The quotation character wrapping every field. + + + + Indicates if field names are located on the first non commented line. + + if field names are located on the first non commented line, otherwise, . + + + + Indicates if spaces at the start and end of a field are trimmed. + + if spaces at the start and end of a field are trimmed, otherwise, . + + + + Gets the buffer size. + + + + + Gets or sets the default action to take when a parsing error has occured. + + The default action to take when a parsing error has occured. + + + + Gets or sets the action to take when a field is missing. + + The action to take when a field is missing. + + + + Gets or sets a value indicating if the reader supports multiline fields. + + A value indicating if the reader supports multiline field. + + + + Gets or sets a value indicating if the reader will skip empty lines. + + A value indicating if the reader will skip empty lines. + + + + Gets or sets the default header name when it is an empty string or only whitespaces. + The header index will be appended to the specified name. + + The default header name when it is an empty string or only whitespaces. + + + + Gets the maximum number of fields to retrieve for each record. + + The maximum number of fields to retrieve for each record. + + The instance has been disposed of. + + + + + Gets a value that indicates whether the current stream position is at the end of the stream. + + if the current stream position is at the end of the stream; otherwise . + + + + Gets the current record index in the CSV file. + + The current record index in the CSV file. + + + + Indicates if one or more field are missing for the current record. + Resets after each successful record read. + + + + + Indicates if a parse error occured for the current record. + Resets after each successful record read. + + + + + Gets the field with the specified name and record position. must be . + + + The field with the specified name and record position. + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Gets the field at the specified index and record position. + + + The field at the specified index and record position. + A is returned if the field cannot be found for the record. + + + must be included in [0, [. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Gets the field with the specified name. must be . + + + The field with the specified name. + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Gets the field at the specified index. + + The field at the specified index. + + must be included in [0, [. + + + No record read yet. Call ReadLine() first. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Occurs when the instance is disposed of. + + + + + Gets a value indicating whether the instance has been disposed of. + + + if the instance has been disposed of; otherwise, . + + + + + Defines the data reader validations. + + + + + No validation. + + + + + Validate that the data reader is initialized. + + + + + Validate that the data reader is not closed. + + + + + Supports a simple iteration over the records of a . + + + + + Contains the enumerated . + + + + + Contains the current record. + + + + + Contains the current record index. + + + + + Initializes a new instance of the class. + + The to iterate over. + + is a . + + + + + Advances the enumerator to the next record of the CSV. + + if the enumerator was successfully advanced to the next record, if the enumerator has passed the end of the CSV. + + + + Sets the enumerator to its initial position, which is before the first record in the CSV. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets the current record. + + + + + Gets the current record. + + + + + Contains the cached records. + + + + + Contains the current record index (inside the cached records array). + + + + + Indicates if a new record is being read from the CSV stream. + + + + + Contains the binding list linked to this reader. + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The buffer size in bytes. + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + The buffer size in bytes. + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + The quotation character wrapping every field (default is '''). + + The escape character letting insert quotation characters inside a quoted field (default is '\'). + If no escape character, set to '\0' to gain some performance. + + The comment character indicating that a line is commented out (default is '#'). + Determines how values should be trimmed. + + is a . + + + Cannot read from . + + + + + Initializes a new instance of the CsvReader class. + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field (default is ','). + The quotation character wrapping every field (default is '''). + + The escape character letting insert quotation characters inside a quoted field (default is '\'). + If no escape character, set to '\0' to gain some performance. + + The comment character indicating that a line is commented out (default is '#'). + if spaces at the start and end of a field are trimmed, otherwise, . Default is . + The buffer size in bytes. + + is a . + + + must be 1 or more. + + + + + Reads the CSV stream from the current position to the end of the stream. + + + The instance has been disposed of. + + + + + Reads the next record. + + + Indicates if the reader will proceed to the next record after having read headers. + if it stops after having read headers; otherwise, . + + + Indicates if the reader will skip directly to the next line without parsing the current one. + To be used when an error occurs. + + if a record has been successfully reads; otherwise, . + + The instance has been disposed of. + + + + + Moves before the first record. + + + + + Moves to the last record read so far. + + + + + Moves to the specified record index. + + The record index. + true if the operation was successful; otherwise, false. + + The instance has been disposed of. + + + + + Gets the current record index in the CSV file. + + The current record index in the CSV file. + + + + Gets a value that indicates whether the current stream position is at the end of the stream. + + if the current stream position is at the end of the stream; otherwise . + + + + Gets the field at the specified index. + + The field at the specified index. + + must be included in [0, [. + + + No record read yet. Call ReadLine() first. + + + The CSV data appears to be missing a field. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Represents a binding list wrapper for a CSV reader. + + + + + Contains the linked CSV reader. + + + + + Contains the cached record count. + + + + + Contains the cached property descriptors. + + + + + Contains the current sort property. + + + + + Contains the current sort direction. + + + + + Initializes a new instance of the CsvBindingList class. + + + + + + Represents a CSV field property descriptor. + + + + + Contains the field index. + + + + + Initializes a new instance of the CsvPropertyDescriptor class. + + The field name. + The field index. + + + + Gets the field index. + + The field index. + + + + Represents a CSV record comparer. + + + + + Contains the field index of the values to compare. + + + + + Contains the sort direction. + + + + + Initializes a new instance of the CsvRecordComparer class. + + The field index of the values to compare. + The sort direction. + + + + Provides data for the event. + + + + + Contains the error that occured. + + + + + Contains the action to take. + + + + + Initializes a new instance of the ParseErrorEventArgs class. + + The error that occured. + The default action to take. + + + + Gets the error that occured. + + The error that occured. + + + + Gets or sets the action to take. + + The action to take. + + + + Represents the exception that is thrown when a CSV file is malformed. + + + + + Contains the message that describes the error. + + + + + Contains the raw data when the error occured. + + + + + Contains the current field index. + + + + + Contains the current record index. + + + + + Contains the current position in the raw data. + + + + + Initializes a new instance of the MalformedCsvException class. + + + + + Initializes a new instance of the MalformedCsvException class. + + The message that describes the error. + + + + Initializes a new instance of the MalformedCsvException class. + + The message that describes the error. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the MalformedCsvException class. + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + Initializes a new instance of the MalformedCsvException class. + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the MalformedCsvException class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + Gets the raw data when the error occured. + + The raw data when the error occured. + + + + Gets the current position in the raw data. + + The current position in the raw data. + + + + Gets the current record index. + + The current record index. + + + + Gets the current field index. + + The current record index. + + + + Gets a message that describes the current exception. + + A message that describes the current exception. + + + + Represents the exception that is thrown when a there is a missing field in a record of the CSV file. + + + MissingFieldException would have been a better name, but there is already a . + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + The message that describes the error. + + + + Initializes a new instance of the MissingFieldCsvException class. + + The message that describes the error. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the MissingFieldCsvException class. + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + Initializes a new instance of the MissingFieldCsvException class. + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the MissingFieldCsvException class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + Specifies the action to take when a field is missing. + + + + + Treat as a parsing error. + + + + + Replaces by an empty value. + + + + + Replaces by a null value (). + + + + + Specifies the action to take when a parsing error has occured. + + + + + Raises the event. + + + + + Tries to advance to next line. + + + + + Throws an exception. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Buffer size must be 1 or more.. + + + + + Looks up a localized string similar to Cannot move to a previous record in forward-only mode.. + + + + + Looks up a localized string similar to Cannot read record at index '{0}'.. + + + + + Looks up a localized string similar to Enumeration has either not started or has already finished.. + + + + + Looks up a localized string similar to Collection was modified; enumeration operation may not execute.. + + + + + Looks up a localized string similar to '{0}' field header not found.. + + + + + Looks up a localized string similar to Field index must be included in [0, FieldCount[. Specified field index was : '{0}'.. + + + + + Looks up a localized string similar to The CSV appears to be corrupt near record '{0}' field '{1} at position '{2}'. Current raw data : '{3}'.. + + + + + Looks up a localized string similar to '{0}' is not a supported missing field action.. + + + + + Looks up a localized string similar to No current record.. + + + + + Looks up a localized string similar to The CSV does not have headers (CsvReader.HasHeaders property is false).. + + + + + Looks up a localized string similar to The number of fields in the record is greater than the available space from index to the end of the destination array.. + + + + + Looks up a localized string similar to '{0}' is not a valid ParseErrorAction while inside a ParseError event.. + + + + + Looks up a localized string similar to '{0}' is not a supported ParseErrorAction.. + + + + + Looks up a localized string similar to This operation is invalid when the reader is closed.. + + + + + Looks up a localized string similar to Record index must be 0 or more.. + + + + diff --git a/Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.dll b/Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.dll new file mode 100644 index 0000000000000000000000000000000000000000..ce70532853dbe6a2044bc753ab2a8c7d77233a7e GIT binary patch literal 37888 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 AbN~PV literal 0 HcmV?d00001 diff --git a/Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.pdb b/Resources/Libraries/LumenWorks.Framework.IO/LumenWorks.Framework.IO.pdb new file mode 100644 index 0000000000000000000000000000000000000000..3a894bb2932fdf88f651ddd58b85a1da18881df4 GIT binary patch literal 99840 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 HB`xq@S67H} literal 0 HcmV?d00001