IfcDoc.DocumentationISO.FormatTemplate C# (CSharp) Method

FormatTemplate() private static method

private static FormatTemplate ( DocProject docProject, DocTemplateDefinition def, List listFigures, List listTables, DocObject>.Dictionary mapEntity, string>.Dictionary mapSchema, bool>.Dictionary included, string path ) : string
docProject DocProject
def DocTemplateDefinition
listFigures List
listTables List
mapEntity DocObject>.Dictionary
mapSchema string>.Dictionary
included bool>.Dictionary
path string
return string
        private static string FormatTemplate(
            DocProject docProject, 
            DocTemplateDefinition def, 
            List<ContentRef> listFigures, 
            List<ContentRef> listTables, 
            Dictionary<string, DocObject> mapEntity, 
            Dictionary<string, string> mapSchema, 
            Dictionary<DocObject, bool> included,
            string path)
        {
            // format content
            StringBuilder sb = new StringBuilder();

            // 1. manual content
            sb.Append(def.Documentation);

            // 2. instance diagram
            sb.Append(FormatDiagram(docProject, def, null, listFigures, mapEntity, mapSchema, path));

            // 3. entity list
            {
                foreach (DocModelView docView in docProject.ModelViews)
                {
                    if ((included == null || included.ContainsKey(docView)) && docView.Exchanges.Count > 0)
                    {
                        SortedList<string, DocTemplateUsage> mapUsage = new SortedList<string, DocTemplateUsage>();

                        foreach (DocConceptRoot docRoot in docView.ConceptRoots)
                        {
                            foreach (DocTemplateUsage docUsage in docRoot.Concepts)
                            {
                                if (docUsage.Definition == def && !mapUsage.ContainsKey(docRoot.ApplicableEntity.Name))
                                {
                                    mapUsage.Add(docRoot.ApplicableEntity.Name, docUsage);
                                }
                            }
                        }

                        if (mapUsage.Count > 0)
                        {
                            sb.AppendLine("<hr/>");
                            sb.AppendLine("<h4>" + docView.Name + "</h4>");

                            int cExchange = docView.Exchanges.Count;

                            sb.AppendLine("<table class=\"exchange\">");
                            sb.Append("<tr><th>Entity</th>");

                            if (true)//Properties.Settings.Default.Requirement)
                            {
                                foreach (DocExchangeDefinition docExchange in docView.Exchanges)
                                {
                                    sb.Append("<th><a href=\"../views/");
                                    sb.Append(MakeLinkName(docView));
                                    sb.Append("/");
                                    sb.Append(MakeLinkName(docExchange));
                                    sb.Append(".htm\"><img width=\"16\" src=\"../../img/mvd-");
                                    sb.Append(MakeLinkName(docExchange));
                                    sb.Append(".png\" title=\"");
                                    sb.Append(docExchange.Name);
                                    sb.Append("\"/></a></th>");
                                    sb.AppendLine();
                                }
                            }
                            sb.Append("</tr>");

                            foreach (string entname in mapUsage.Keys)
                            {
                                DocTemplateUsage docUsage = mapUsage[entname];
                                if (docUsage.Definition == def)
                                {
                                    sb.Append("<tr><td><i>");
                                    sb.Append(entname);
                                    sb.Append("</i></td>");

                                    if (true)//Properties.Settings.Default.Requirement)
                                    {
                                        foreach (DocExchangeDefinition docExchange in docView.Exchanges)
                                        {
                                            sb.Append("<td>");

                                            DocExchangeRequirementEnum reqImport = DocExchangeRequirementEnum.NotRelevant;
                                            DocExchangeRequirementEnum reqExport = DocExchangeRequirementEnum.NotRelevant;

                                            foreach (DocExchangeItem dti in docUsage.Exchanges)
                                            {
                                                if (dti.Exchange == docExchange)
                                                {
                                                    if (dti.Applicability == DocExchangeApplicabilityEnum.Import)
                                                    {
                                                        reqImport = dti.Requirement;
                                                    }
                                                    else if (dti.Applicability == DocExchangeApplicabilityEnum.Export)
                                                    {
                                                        reqExport = dti.Requirement;
                                                    }
                                                }
                                            }

                                            AppendRequirement(sb, reqImport, 2);
                                            sb.Append("<br/>");
                                            AppendRequirement(sb, reqExport, 2);

                                            sb.Append("</td>");
                                            sb.AppendLine();
                                        }
                                    }

                                    sb.AppendLine("</tr>");
                                }
                            }

                            sb.AppendLine("</table>");
                        }
                    }
                }

            }

            return sb.ToString();
        }