Exemple #1
0
            public void GenerateOutput(
#if VISUALSTUDIO_10_0
                ProjectItemElement itemElement,
#else
                BuildItem buildItem,
#endif
                Stream outputStream,
                IDictionary <string, Stream> inputFormatStreams,
                string defaultNamespace,
                IORMGeneratorItemProperties itemProperties)
            {
                this.EnsureTransform();
                Stream inputStream = inputFormatStreams[this._sourceInputFormat];

                XsltArgumentList argumentList = new XsltArgumentList();

                argumentList.AddParam("DefaultNamespace", string.Empty, defaultNamespace);
                argumentList.AddExtensionObject("urn:ORMCustomTool:ItemProperties", itemProperties);

                string[] referenceFormats = this._referenceInputFormats;
                if (referenceFormats != null)
                {
                    for (int i = 0; i < referenceFormats.Length; i++)
                    {
                        string referenceFormat = referenceFormats[i];
                        Stream referenceStream = inputFormatStreams[referenceFormat];
                        using (XmlReader referenceReader = XmlReader.Create(referenceStream))
                        {
                            argumentList.AddParam(referenceFormat, string.Empty, new XPathDocument(referenceReader).CreateNavigator().Select(DocumentElementXPathExpression));
                        }
                        referenceStream.Seek(0, SeekOrigin.Begin);
                    }
                }

                XmlReader inputReader  = null;
                XmlWriter outputWriter = null;

                try
                {
                    inputReader  = XmlReader.Create(inputStream, XmlReaderSettings);
                    outputWriter = XmlWriter.Create(outputStream, this._xmlWriterSettings);
                    this._transform.Transform(inputReader, argumentList, outputWriter);
                }
                finally
                {
                    if (inputReader != null)
                    {
                        inputReader.Close();
                    }
                    if (outputWriter != null)
                    {
                        outputWriter.Close();
                    }
                    inputStream.Seek(0, SeekOrigin.Begin);
                }
            }
Exemple #2
0
            public void GenerateOutput(
#if VISUALSTUDIO_10_0
                ProjectItemElement itemElement,
#else
                BuildItem buildItem,
#endif
                Stream outputStream,
                GetFormatStream inputFormatStreams,
                string defaultNamespace,
                IORMGeneratorItemProperties itemProperties,
                GeneratorTarget[] targetInstance)
            {
                this.EnsureTransform();
                Stream inputStream = inputFormatStreams(this._sourceInputFormat);

                XsltArgumentList argumentList = new XsltArgumentList();

                argumentList.AddParam("DefaultNamespace", string.Empty, defaultNamespace);
                argumentList.AddExtensionObject("urn:ORMCustomTool:ItemProperties", itemProperties);

                string[] referenceFormats = this._referenceInputFormats;
                if (referenceFormats != null)
                {
                    for (int i = 0; i < referenceFormats.Length; ++i)
                    {
                        string referenceFormat = referenceFormats[i];
                        Stream referenceStream = inputFormatStreams(referenceFormat);
                        using (XmlReader referenceReader = XmlReader.Create(referenceStream))
                        {
                            argumentList.AddParam(referenceFormat, string.Empty, new XPathDocument(referenceReader).CreateNavigator().Select(DocumentElementXPathExpression));
                        }
                        referenceStream.Seek(0, SeekOrigin.Begin);
                    }
                }

                if (targetInstance != null)
                {
                    List <string> placeholders = null;
                    for (int i = 0; i < targetInstance.Length; ++i)
                    {
                        GeneratorTarget target             = targetInstance[i];
                        string          targetType         = target.TargetType;
                        string          instructionText    = null;
                        bool            isLocalPlaceholder = false;
                        if (target.TargetName == null)
                        {
                            (placeholders ?? (placeholders = new List <string>())).Add(targetType);
                            IList <string> localTargetTypes = _generatorTargetTypes;
                            int            targetTypeCount;
                            if (0 != (targetTypeCount = localTargetTypes.Count))
                            {
                                for (int j = 0; j < targetTypeCount; ++j)
                                {
                                    if (targetType == localTargetTypes[j])
                                    {
                                        isLocalPlaceholder = true;
                                        instructionText    = _generatorTargetInstructions[j];
                                        break;
                                    }
                                }
                            }
                        }
                        argumentList.AddParam(targetType, string.Empty, target.TargetId ?? (isLocalPlaceholder ? instructionText : null) ?? string.Empty);
                    }

                    if (placeholders != null)
                    {
                        argumentList.AddParam("_GeneratorPlaceholders", string.Empty, placeholders.Count == 1 ? placeholders[0] :
#if VISUALSTUDIO_10_0
                                              string.Join <string>(" ", placeholders)
#else
                                              string.Join(" ", placeholders.ToArray())
#endif
                                              );
                    }
                }

                XmlReader inputReader  = null;
                XmlWriter outputWriter = null;
                try
                {
                    inputReader  = XmlReader.Create(inputStream, XmlReaderSettings);
                    outputWriter = XmlWriter.Create(outputStream, this._xmlWriterSettings);
                    this._transform.Transform(inputReader, argumentList, outputWriter);
                }
                finally
                {
                    if (inputReader != null)
                    {
                        inputReader.Close();
                    }
                    if (outputWriter != null)
                    {
                        outputWriter.Close();
                    }
                    inputStream.Seek(0, SeekOrigin.Begin);
                }
            }