private bool writeConsumersAndServices(XmlWriter wr, BusinessUnitEntity businessUnit = null) { foreach (ServiceDomainEntity dom in SoaBrowser.AllServiceDomains) { wr.WriteStartElement("ServiceDomain"); wr.WriteAttributeString("name", dom.Name); for (int i = 0; i <= 1; i++) { BusinessUnitEntity[] buArray = m_BusinessUnits[i]; string buNodeName = (i == 0) ? "BusinessUnit" : "ExternalOrganization"; foreach (BusinessUnitEntity bu in m_BusinessUnits[i]) { if ((businessUnit != null) && (businessUnit != bu)) continue; // do only one if specified wr.WriteStartElement(buNodeName); string buName = (i == 0) ? bu.Name : bu.Organization.Name; wr.WriteAttributeString("name", buName); wr.WriteStartElement("Applications"); // "Services" foreach (ApplEntity appl in bu.DeployedAppsInDomain(dom)) { wr.WriteStartElement("Application"); wr.WriteAttributeString("name", appl.DisplayNameReport); wr.WriteStartElement("Services"); foreach (EndpointEntity ep in appl.ConsumedEndpoints) { wr.WriteStartElement("Service"); wr.WriteElementString("consumingApplicationVersion", appl.Version); wr.WriteElementString("name", ep.ServiceName); wr.WriteElementString("version", ep.Parent.Version); wr.WriteElementString("targetNamespace", ep.Parent.TargetNamespace); wr.WriteElementString("endpointName", ep.IntermediaryGivenName); wr.WriteElementString("gateway", ep.Intermediary.Name); wr.WriteElementString("resolutionPath", ep.ResolutionPath); wr.WriteElementString("application", ep.ProvidingApplication.DisplayNameReport); wr.WriteElementString("applicationVersion", ep.ProvidingApplication.Version); wr.WriteElementString("businessUnit", ep.ProvidingApplication.BusinessUnit.Name); wr.WriteElementString("organization", ep.ProvidingApplication.BusinessUnit.Organization.Name); wr.WriteEndElement(); // Service } wr.WriteEndElement(); // Services wr.WriteEndElement(); // Application } wr.WriteEndElement(); // Applications wr.WriteEndElement(); // BusinessUnit } } wr.WriteEndElement(); // ServiceDomain } return true; }
private bool writeEndpoints(XmlWriter wr, BusinessUnitEntity businessUnit = null) { foreach (ServiceDomainEntity dom in SoaBrowser.AllServiceDomains) { wr.WriteStartElement("ServiceDomain"); wr.WriteAttributeString("name", dom.Name); for (int i = 0; i <= 1; i++) { BusinessUnitEntity[] buArray = m_BusinessUnits[i]; string buNodeName = (i == 0) ? "BusinessUnit" : "ExternalOrganization"; foreach (BusinessUnitEntity bu in m_BusinessUnits[i]) { if ((businessUnit != null) && (businessUnit != bu)) continue; // do only one if specified wr.WriteStartElement(buNodeName); string buName = (i == 0) ? bu.Name : bu.Organization.Name; wr.WriteAttributeString("name", buName); wr.WriteStartElement("Services"); // "Services" foreach(ApplEntity appl in bu.DeployedAppsInDomain(dom)) { foreach (ServiceEntity srv in appl.DeployedServices) { wr.WriteStartElement("Service"); wr.WriteAttributeString("name", srv.Name); wr.WriteAttributeString("application", appl.DisplayNameReport); wr.WriteStartElement("Endpoints"); foreach (EndpointEntity ep in srv.Endpoints) ep.SerializeInXml(wr, "Endpoint", appl.Version, srv.Version); wr.WriteEndElement(); wr.WriteEndElement(); } } wr.WriteEndElement(); wr.WriteEndElement(); } } wr.WriteEndElement(); } return true; }
private bool repServicesAndConsumers(DirectoryInfo outDir, bool daily = false, BusinessUnitEntity bu = null) { string xlsFilename = "consumed-per-service.xsl"; string fileAddon = daily ? "_" + DateTime.Now.ToShortDateString() : ""; bool isPrivate = bu != null; try { string repName = "Services-ConsumedPerService"; FileStream file = createReportFile(outDir, repName, fileAddon); XmlWriter wr = writeReportPreamble(repName, file); bool reportOK = writeServicesAndConsumers(wr, bu); writePostambleAndClose(file, wr); if ((reportOK) && (xlsFilename != null)) transformToHTML(outDir, repName, file.Name, xlsFilename, isPrivate); } catch (Exception ex) { string m_lastError = "Error occured: " + ex.Message; if (ex.InnerException != null) m_lastError += ex.InnerException.Message; if (m_logStream != null) m_logStream.WriteLine(m_lastError); } return true; }