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();
}