Example #1
0
        private void OpenFile(string filename, string nodePath, SharpRowReader rowReader)
        {
            if (!string.IsNullOrEmpty(nodePath))
            {
                var node = _nodes.GetNode(nodePath);
                if (node == null)
                {
                    _nodes.Add(new SharpNode
                    {
                        Path = nodePath,
                        Name = SharpNode.GetNodeName(nodePath)
                    });
                }
            }

            _stream = new FileStream(filename, FileMode.Open, FileAccess.Read);
            _rows   = new SharpRowStream
            {
                Nodes        = _nodes,
                StreamNode   = string.IsNullOrEmpty(nodePath) ? null : _nodes.GetNode(nodePath),
                StreamSource = rowReader(_stream, _nodes)
            };
        }
Example #2
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);
            }
        }