using System; using System.Collections.Generic; using System.Text; using System.Xml; namespace sharpcomparer { public class Project { private const string PROJECTS_FILENAME = "projects.xml"; private string name; private DatabaseRegistration leftDatabase; private DatabaseRegistration rightDatabase; public string Name { get { return name; } set { name = value; } } public DatabaseRegistration LeftDatabase { get { return leftDatabase; } set { leftDatabase = value; } } public DatabaseRegistration RightDatabase { get { return rightDatabase; } set { rightDatabase = value; } } public Project(string name) { this.name = name; } public static List Load() { List projects = new List(); XmlDocument document = new XmlDocument(); document.Load(PROJECTS_FILENAME); foreach (XmlNode registrationsNode in document.ChildNodes) { if (registrationsNode.Name == "Projects") { foreach (XmlNode node in registrationsNode.ChildNodes) { string name = node.Attributes["Name"].Value; Project project = new Project(name); foreach (XmlNode databaseNode in node.ChildNodes) { DatabaseRegistration database = new DatabaseRegistration( databaseNode.Attributes["Name"].Value, databaseNode.Attributes["Server"].Value, databaseNode.Attributes["IntegratedSecurity"] == null ? false : Convert.ToBoolean(databaseNode.Attributes["IntegratedSecurity"].Value), databaseNode.Attributes["Database"].Value, databaseNode.Attributes["Username"].Value, databaseNode.Attributes["Password"].Value); if (project.LeftDatabase == null) project.leftDatabase = database; else project.rightDatabase = database; } projects.Add(project); } } } return projects; } public static void Write(List projects) { XmlDocument document = new XmlDocument(); XmlDeclaration declaration = document.CreateXmlDeclaration("1.0", null, null); XmlElement projectsNode = document.CreateElement("Projects"); document.InsertBefore(declaration, document.DocumentElement); document.AppendChild(projectsNode); foreach (Project project in projects) { XmlElement projectNode = document.CreateElement("Project"); projectNode.SetAttribute("Name", project.Name); projectsNode.AppendChild(projectNode); XmlElement leftRegistration = document.CreateElement("DatabaseRegistration"); leftRegistration.SetAttribute("Name", project.leftDatabase.Name); leftRegistration.SetAttribute("Server", project.leftDatabase.DataSource); leftRegistration.SetAttribute("IntegratedSecurity", project.leftDatabase.IntegratedSecurity.ToString()); leftRegistration.SetAttribute("Database", project.leftDatabase.InitialCatalog); leftRegistration.SetAttribute("Username", project.leftDatabase.UserID); leftRegistration.SetAttribute("Password", project.leftDatabase.Password); projectNode.AppendChild(leftRegistration); XmlElement rightRegistration = document.CreateElement("DatabaseRegistration"); rightRegistration.SetAttribute("Name", project.rightDatabase.Name); rightRegistration.SetAttribute("Server", project.rightDatabase.DataSource); rightRegistration.SetAttribute("IntegratedSecurity", project.rightDatabase.IntegratedSecurity.ToString()); rightRegistration.SetAttribute("Database", project.rightDatabase.InitialCatalog); rightRegistration.SetAttribute("Username", project.rightDatabase.UserID); rightRegistration.SetAttribute("Password", project.rightDatabase.Password); projectNode.AppendChild(rightRegistration); } document.Save(PROJECTS_FILENAME); } } }