Exemple #1
0
        public void OpenDelimitedFile(string rootNodePath, string filename, Encoding encoding = null)
        {
            using (var source = new FileStream(filename, FileMode.Open, FileAccess.Read))
            {
                if (!SkipReadHeader)
                {
                    var headerReader = new StreamReader(source);
                    DefaultHeaderLine = headerReader.ReadLine();
                }

                var mapNode = FormatReader.LoadHeaderLine(DefaultHeaderLine, _delimiter, _nodes, rootNodePath, _aliases);
                _mapSets[rootNodePath] = mapNode;

                _stream = new FileStream(filename, FileMode.Open, FileAccess.Read);
                _rows   = new SharpRowStream
                {
                    Nodes        = _nodes,
                    StreamNode   = _nodes.GetNode(rootNodePath),
                    StreamSource = new FlatReader(_stream, mapNode, encoding, SkipEmptyRows)
                };

                // Create node rows for parents of map node
                var nodes = new List <SharpNode> {
                    mapNode.Parent
                };
                while (nodes[0].Parent != null)
                {
                    nodes.Insert(0, nodes[0].Parent);
                }

                nodes.Remove(nodes.Last());

                var rows = nodes.Select(n => new SharpNodeRow(n)).ToList();
                _rows.AddRange(rows);
            }
        }
Exemple #2
0
        public void LoadDelimitedFile(string rootNodePath, string filename, Encoding encoding = null)
        {
            using (var source = new FileStream(filename, FileMode.Open, FileAccess.Read))
            {
                if (!SkipReadHeader)
                {
                    var headerReader = new StreamReader(source);
                    DefaultHeaderLine = headerReader.ReadLine();
                }

                var mapNode = FormatReader.LoadHeaderLine(DefaultHeaderLine, _delimiter, _nodes, rootNodePath, _aliases);
                _mapSets[rootNodePath] = mapNode;

                // Create node rows for parents of map node
                var nodes = new List <SharpNode> {
                    mapNode.Parent
                };
                while (nodes[0].Parent != null)
                {
                    nodes.Insert(0, nodes[0].Parent);
                }

                nodes.Remove(nodes.Last());
                var rows = nodes.Select(n => new SharpNodeRow(n)).ToList();
                _rows.AddRange(rows);

                source.Seek(0, SeekOrigin.Begin);
                using (var reader = new FlatReader(source, mapNode, encoding, SkipEmptyRows))
                {
                    reader.SkipLines = SkipReadHeader ? 0 : 1;
                    _rows.InsertRows(reader.GetEnumerator(), rootRow: rows.Last());
                }

                _rows.SubmitChanges();
            }
        }