Skip to content

Commit

Permalink
Code Refactoring. TOC formatting updated to make Additions /Deletions…
Browse files Browse the repository at this point in the history
… color coded.
  • Loading branch information
NileshGhodekar committed Feb 7, 2017
1 parent 81d3dbc commit ce9381c
Show file tree
Hide file tree
Showing 13 changed files with 1,298 additions and 2,157 deletions.
383 changes: 44 additions & 339 deletions src/AzureADConnectSyncDocumenter/ActiveDirectoryConnectorDocumenter.cs

Large diffs are not rendered by default.

223 changes: 83 additions & 140 deletions src/AzureADConnectSyncDocumenter/AzureADConnectSyncDocumenter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace AzureADConnectConfigDocumenter
using System.IO;
using System.Linq;
using System.Web.UI;
using System.Xml.Linq;
using System.Xml.XPath;

/// <summary>
Expand Down Expand Up @@ -111,8 +112,7 @@ public override Tuple<string, string> GetReport()
{
Logger.Instance.WriteMethodEntry();

string report;
string toc;
Tuple<string, string> report;

try
{
Expand All @@ -121,7 +121,7 @@ public override Tuple<string, string> GetReport()

this.ReportWriter.WriteFullBeginTag("html");

Documenter.WriteReportHeader(this.ReportWriter);
this.WriteReportHeader();

this.ReportWriter.WriteFullBeginTag("body");

Expand All @@ -130,7 +130,7 @@ public override Tuple<string, string> GetReport()
this.ReportWriter.WriteEndTag("h1");
this.ReportWriter.WriteLine();

Documenter.WriteDocumenterInfo(this.ReportWriter);
this.WriteDocumenterInfo();

string syncVersionXPath = "//mv-data//parameter-values/parameter[@name = 'Microsoft.Synchronize.ServerConfigurationVersion']";

Expand Down Expand Up @@ -174,19 +174,8 @@ public override Tuple<string, string> GetReport()
this.ReportWriter.WriteLine("##TOC##");

var sectionTitle = "AAD Connect Sync Service Configuration";
this.ReportToCWriter.WriteBeginTag("span");
this.ReportToCWriter.WriteAttribute("class", "toc1");
this.ReportToCWriter.Write(HtmlTextWriter.TagRightChar);
Documenter.WriteJumpToBookmarkLocation(this.ReportToCWriter, sectionTitle, null, "TOC");
this.ReportToCWriter.WriteEndTag("span");
this.ReportToCWriter.WriteBeginTag("br");
this.ReportToCWriter.Write(HtmlTextWriter.SelfClosingTagEnd);
this.ReportToCWriter.WriteLine();

this.ReportWriter.WriteFullBeginTag("h1");
Documenter.WriteBookmarkLocation(this.ReportWriter, sectionTitle, null, "TOC");
this.ReportWriter.WriteEndTag("h1");
this.ReportWriter.WriteLine();
this.WriteSectionHeader(sectionTitle, 1);

this.ProcessGlobalSettings();
this.ProcessMetaverseConfiguration();
Expand All @@ -202,22 +191,12 @@ public override Tuple<string, string> GetReport()

this.ReportWriter.WriteEndTag("html");

this.ReportWriter.Close();
this.ReportToCWriter.Close();

using (var reportReader = new StreamReader(this.ReportFileName))
{
report = reportReader.ReadToEnd();
using (var tocReader = new StreamReader(this.ReportToCFileName))
{
toc = tocReader.ReadToEnd();
}
}
report = this.GetReportTuple();

Logger.Instance.WriteMethodExit();
}

return new Tuple<string, string>(report, toc);
return report;
}

/// <summary>
Expand Down Expand Up @@ -349,72 +328,11 @@ private void PrintGlobalSettings()
{
var sectionTitle = "Global Settings";

#region toc

this.ReportToCWriter.WriteBeginTag("span");
this.ReportToCWriter.WriteAttribute("class", "toc2");
this.ReportToCWriter.Write(HtmlTextWriter.TagRightChar);
Documenter.WriteJumpToBookmarkLocation(this.ReportToCWriter, sectionTitle, null, "TOC");
this.ReportToCWriter.WriteEndTag("span");
this.ReportToCWriter.WriteBeginTag("br");
this.ReportToCWriter.Write(HtmlTextWriter.SelfClosingTagEnd);
this.ReportToCWriter.WriteLine();

#endregion toc

#region section

this.ReportWriter.WriteFullBeginTag("h2");
Documenter.WriteBookmarkLocation(this.ReportWriter, sectionTitle, null, "TOC");
this.ReportWriter.WriteEndTag("h2");

#endregion section

#region table

this.ReportWriter.WriteBeginTag("table");
this.ReportWriter.WriteAttribute("class", "outer-table" + " " + this.GetCssVisibilityClass());
this.ReportWriter.Write(HtmlTextWriter.TagRightChar);
{
#region thead

this.ReportWriter.WriteBeginTag("thead");
this.ReportWriter.Write(HtmlTextWriter.TagRightChar);
{
this.ReportWriter.WriteBeginTag("tr");
this.ReportWriter.Write(HtmlTextWriter.TagRightChar);
{
this.ReportWriter.WriteBeginTag("th");
this.ReportWriter.WriteAttribute("class", "column-th");
this.ReportWriter.Write(HtmlTextWriter.TagRightChar);
this.ReportWriter.Write("Setting");
this.ReportWriter.WriteEndTag("th");

this.ReportWriter.WriteBeginTag("th");
this.ReportWriter.WriteAttribute("class", "column-th");
this.ReportWriter.Write(HtmlTextWriter.TagRightChar);
this.ReportWriter.Write("Value");
this.ReportWriter.WriteEndTag("th");
}

this.ReportWriter.WriteEndTag("tr");
this.ReportWriter.WriteLine();
}

this.ReportWriter.WriteEndTag("thead");

#endregion thead
}

#region rows

this.WriteRows(this.DiffgramDataSet.Tables[0].Rows);

#endregion rows
this.WriteSectionHeader(sectionTitle, 2);

this.ReportWriter.WriteEndTag("table");
var headerTable = this.GetSimpleSettingsHeaderTable(new string[] { "Setting", "Value" });

#endregion table
this.WriteTable(this.DiffgramDataSet.Tables[0], headerTable);
}
finally
{
Expand Down Expand Up @@ -467,35 +385,6 @@ private void ProcessConnectorConfigurations()
orderby name
select connector;

foreach (var connector in pilot)
{
var connectorName = (string)connector.Element("name");
var connectorCategory = (string)connector.Element("category");

switch (connectorCategory.ToUpperInvariant())
{
case "AD":
{
var connectorDocumenter = new ActiveDirectoryConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, false);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
}

break;

default:
{
var connectorDocumenter = new Extensible2ConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, false);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
}

break;
}
}

// Sort by name
production = from connector in production
let name = (string)connector.Element("name")
Expand All @@ -505,35 +394,89 @@ orderby name
var pilotConnectors = from pilotConnector in pilot
select (string)pilotConnector.Element("name");

foreach (var connector in pilot)
{
var configEnvironment = production.Any(productionConnector => (string)productionConnector.Element("name") == (string)connector.Element("name")) ? ConfigEnvironment.PilotAndProduction : ConfigEnvironment.PilotOnly;
this.ProcessConnectorConfiguration(connector, configEnvironment);
}

production = production.Where(productionConnector => !pilotConnectors.Contains((string)productionConnector.Element("name")));

foreach (var connector in production)
{
var connectorName = (string)connector.Element("name");
var connectorCategory = (string)connector.Element("category");
this.ProcessConnectorConfiguration(connector, ConfigEnvironment.ProductionOnly);
}
}
finally
{
Logger.Instance.WriteMethodExit();
}
}

switch (connectorCategory.ToUpperInvariant())
{
case "AD":
{
var connectorDocumenter = new ActiveDirectoryConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, true);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
}
/// <summary>
/// Processes the connector configuration of specified connector.
/// </summary>
/// <param name="connector"> The connector config node</param>
/// <param name="configEnvironment">The config environment.</param>
private void ProcessConnectorConfiguration(XElement connector, ConfigEnvironment configEnvironment)
{
Logger.Instance.WriteMethodEntry();

try
{
var connectorName = (string)connector.Element("name");
var connectorCategory = (string)connector.Element("category");

break;
switch (connectorCategory.ToUpperInvariant())
{
case "AD":
{
var connectorDocumenter = new ActiveDirectoryConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
}

default:
break;
case "EXTENSIBLE2":
{
var connectorSubType = (string)connector.Element("subtype");
switch (connectorSubType.ToUpperInvariant())
{
var connectorDocumenter = new Extensible2ConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, true);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
case "WINDOWS AZURE ACTIVE DIRECTORY (MICROSOFT)":
{
var connectorDocumenter = new AzureActiveDirectoryConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
}

break;
case "POWERSHELL (MICROSOFT)":
case "GENERIC LDAP (MICROSOFT)":
case "GENERIC SQL (MICROSOFT)":
default:
{
var connectorDocumenter = new Extensible2ConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
}

break;
}
}

break;
default:
{
var connectorDocumenter = new Extensible2ConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
var report = connectorDocumenter.GetReport();
this.ReportWriter.Write(report.Item1);
this.ReportToCWriter.Write(report.Item2);
}

break;
}
break;
}
}
finally
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
<Link>VersionInfo.cs</Link>
</Compile>
<Compile Include="ActiveDirectoryConnectorDocumenter.cs" />
<Compile Include="AzureActiveDirectoryConnectorDocumenter.cs" />
<Compile Include="AzureADConnectSyncDocumenter.cs" />
<Compile Include="ConnectorDocumenter.cs" />
<Compile Include="Documenter.cs" />
Expand Down
Loading

0 comments on commit ce9381c

Please sign in to comment.