Ejemplo n.º 1
0
        /// <summary>
        /// Loads the database for this instance.
        /// may be called multiple times, if uploading multiple CSV files.
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public override bool LoadSchema(string fileName)
        {
            //enforce that the filename must be a known configuration.
            if (!FileIsKnown(fileName))
            {
                return(false);
            }

            using (var dbPreview = new CsvReader(new StreamReader(fileName), true))
            {
                if (CsvDataToImport == null)
                {
                    CsvDataToImport = new List <CSVInstance>();
                    DataNodes       = new List <DataNode>();
                }

                //a local tableNode object, which will track this one of multiple CSV files that may be imported
                var tableNodes = new List <DataNode>();
                CsvDataToImport.Add(new CSVInstance(fileName)
                {
                    TableNodes = tableNodes, RecordType = GetRecordTypeFromFilename(fileName)
                });

                var currentIndex = 0;
                var tableItem    = new DataNode
                {
                    Name = Path.GetFileNameWithoutExtension(fileName)
                };

                var firstRow = dbPreview.ElementAtOrDefault(0);
                if (firstRow != null)
                {
                    foreach (var columnName in dbPreview.GetFieldHeaders())
                    {
                        var childItem = new DataNode
                        {
                            Name     = columnName,
                            NodeType = typeof(string),
                            Value    = firstRow[currentIndex] ?? string.Empty
                        };
                        childItem.Parent.Add(tableItem);
                        tableItem.Children.Add(childItem);
                        currentIndex++;
                    }

                    tableNodes.Add(tableItem);
                    DataNodes.Add(tableItem);   //this is to maintain compatibility with the base Excavator object.
                }

                return(tableNodes.Count() > 0 ? true : false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads the database for this instance.
        /// may be called multiple times, if uploading multiple CSV files.
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public override bool LoadSchema( string fileName )
        {
            //enforce that the filename must be a known configuration.
            if ( !FileIsKnown( fileName ) )
                return false;

            var dbPreview = new CsvReader( new StreamReader( fileName ), true );

            if ( CsvDataToImport == null )
            {
                CsvDataToImport = new List<CsvDataModel>();
                TableNodes = new List<DatabaseNode>();
            }

            //a local tableNode object, which will track this one of multiple CSV files that may be imported
            List<DatabaseNode> tableNodes = new List<DatabaseNode>();
            CsvDataToImport.Add( new CsvDataModel( fileName ) { TableNodes = tableNodes, RecordType = GetRecordTypeFromFilename( fileName ) } );

            var tableItem = new DatabaseNode();
            tableItem.Name = Path.GetFileNameWithoutExtension( fileName );
            int currentIndex = 0;

            var firstRow = dbPreview.ElementAtOrDefault( 0 );
            if ( firstRow != null )
            {
                foreach ( var columnName in dbPreview.GetFieldHeaders() )
                {
                    var childItem = new DatabaseNode();
                    childItem.Name = columnName;
                    childItem.NodeType = typeof( string );
                    childItem.Value = firstRow[currentIndex] ?? string.Empty;
                    childItem.Table.Add( tableItem );
                    tableItem.Columns.Add( childItem );
                    currentIndex++;
                }

                tableNodes.Add( tableItem );
                TableNodes.Add( tableItem ); //this is to maintain compatibility with the base Excavator object.
            }

            return tableNodes.Count() > 0 ? true : false;
        }