private void ProcessConnectorConfiguration()

in src/MIMConfigDocumenter/MIMSyncConfigDocumenter.cs [303:378]


        private void ProcessConnectorConfiguration(XElement connector, ConfigEnvironment configEnvironment)
        {
            Logger.Instance.WriteMethodEntry();

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

                switch (connectorCategory.ToUpperInvariant())
                {
                    case "AD":
                        connectorDocumenter = new ActiveDirectoryConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                        break;
                    case "AD GAL":
                        connectorDocumenter = new ActiveDirectoryGALConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                        break;
                    case "ADAM":
                        connectorDocumenter = new ActiveDirectoryLDSConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                        break;
                    case "FIM":
                        connectorDocumenter = new FIMConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                        break;
                    case "MSSQL":
                    case "ORACLE":
                    case "DB2":
                        connectorDocumenter = new DatabaseConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                        break;
                    case "EXTENSIBLE2":
                        {
                            var connectorSubType = (string)connector.Element("subtype");
                            switch (connectorSubType.ToUpperInvariant())
                            {
                                case "WINDOWS AZURE ACTIVE DIRECTORY (MICROSOFT)":
                                    connectorDocumenter = new AzureActiveDirectoryConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                                    break;
                                case "POWERSHELL (MICROSOFT)":
                                    connectorDocumenter = new PowerShellConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                                    break;
                                case "GENERIC SQL (MICROSOFT)":
                                    connectorDocumenter = new GenericSqlConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                                    break;
                                case "GENERIC LDAP (MICROSOFT)":
                                    connectorDocumenter = new GenericLdapConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                                    break;
                                case "MICROSOFT WEB SERVICE ECMA2 CONNECTOR (MICROSOFT)":
                                    connectorDocumenter = new WebServicesConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                                    break;
                                default:
                                    if (!string.IsNullOrEmpty(connectorSubType))
                                    {
                                        Logger.Instance.WriteWarning("ECMA2 Connector of subtype '{0}' is currently not supported. The connector '{1}' with be treated as a generic ECMA2 connector.", connectorSubType, connectorName);
                                    }

                                    connectorDocumenter = new Extensible2ConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                                    break;
                            }
                        }

                        break;
                    default:
                        Logger.Instance.WriteWarning("Connector of type '{0}' is currently not supported. The connector '{1}' with be treated as a generic ECMA2 connector. Documentation may not be complete.", connectorCategory, connectorName);
                        connectorDocumenter = new Extensible2ConnectorDocumenter(this.PilotXml, this.ProductionXml, connectorName, configEnvironment);
                        break;
                }

                var report = connectorDocumenter.GetReport();
                this.ReportWriter.Write(report.Item1);
                this.ReportToCWriter.Write(report.Item2);
            }
            finally
            {
                Logger.Instance.WriteMethodExit();
            }
        }