Beispiel #1
0
        public TStream StreamFilledFrames(FilledProjectionFrame filledFrame, string nmspc)
        {
            var stream = _writer.Open(nmspc);

            StreamFilledFrame(filledFrame);
            _writer.Close();
            return(stream);
        }
Beispiel #2
0
        private FilledProjectionFrame FillFrame(FrameNode frame)
        {
            FilledProjectionFrame filledFrame;

            if (frame.MatchedElement is ResourceProjectionElement)
            {
                var filler = _cachier.GetLater(
                    (frame.MatchedElement as ResourceProjectionElement).ResourceType, frame.Key);
                filledFrame = new FilledProjectionFrame(frame.MatchedElement, frame.Key, filler);
            }
            else
            {
                filledFrame = new FilledProjectionFrame(frame.MatchedElement, frame.Key);
            }
            var childFrames = frame.ChildNodes.Select(FillFrame).ToArray();

            filledFrame.ChildFrames = childFrames;
            return(filledFrame);
        }
Beispiel #3
0
        private void StreamFilledFrame(FilledProjectionFrame filledFrame)
        {
            _writer.StartWritingNode(filledFrame.Name, filledFrame.Key);
            foreach (var key in filledFrame.Keys.Where(k => k != "Id" && k != RegistrationStorage.DefinitlyNoChildren))
            {
                _writer.WriteAttribute(key, filledFrame[key]);
            }
            if (filledFrame.ChildFrames.Any())
            {
                foreach (var child in filledFrame.ChildFrames)
                {
                    StreamFilledFrame(child);
                }
            }
            else
            {
                if ((bool)filledFrame[RegistrationStorage.DefinitlyNoChildren])
                {
                    _writer.WriteAttribute(RegistrationStorage.DefinitlyNoChildren, true);
                }
            }

            _writer.EndWritingNode();
        }