/* Get TypeElement from a XElement*/ private static TypeElement GetTypeElementFromXElement(XElement parentElement) { TypeElement parent = new TypeElement(); parent.TypeName = parentElement.Element("name").Value; parent.Namespace = parentElement.Element("namespace").Value; parent.FileName = parentElement.Element("filename").Value; parent.Type = parentElement.Element("definedType").Value; return(parent); }
/* load XElement from TypeElement */ private void LoadXElemenFromTypeElement(TypeElement child, XElement childElement) { XElement name = new XElement("name"); name.Value = child.TypeName; childElement.Add(name); XElement namespce = new XElement("namespace"); // namespce.Value = te.Namespace; childElement.Add(namespce); XElement filename = new XElement("filename"); filename.Value = child.FileName; childElement.Add(filename); XElement definedType = new XElement("definedType"); definedType.Value = child.Type; childElement.Add(definedType); }
static void Main(string[] args) { RelationshipTable table = new RelationshipTable(); TypeElement parent = new TypeElement(); parent.FileName = "Test.cs"; parent.TypeName = "Test"; parent.Type = "class"; TypeElement child = new TypeElement(); child.FileName = "Test.cs"; child.TypeName = "Test"; child.Type = "class"; table.add(parent, child); Console.WriteLine(table.PackageDependencyXMLRepresentation()); Console.WriteLine(table.ToXMLString()); }
/* Get Relationship table from the xml string */ public static RelationshipTable loadFromXML(string xml) { RelationshipTable table = new RelationshipTable(); XDocument doc = XDocument.Parse(xml); XElement root = doc.Element("RelationshipInfo"); foreach (XElement dependency in root.Elements("Dependency")) { XElement childElement = dependency.Element("child"); TypeElement child = GetTypeElementFromXElement(childElement); foreach (XElement relationshipElement in childElement.Elements("Relationship")) { XElement parentElement = relationshipElement.Element("parent"); TypeElement parent = GetTypeElementFromXElement(parentElement); table.add(child, parent); } } return(table); }
/* Add Relationship into the relationship table. */ public bool add(TypeElement child, TypeElement parent) { if (relationshipTable.Keys.Contains(child)) { foreach (TypeElement te in relationshipTable[child]) { if (te == parent) // Don't Add if its already existing { return(false); } } relationshipTable[child].Add(parent); return(true); } List <TypeElement> parents = new List <TypeElement>(); parents.Add(parent); relationshipTable[child] = parents; return(true); }
public bool add(TypeElement element) { return(add(element.TypeName, element.Type, element.Namespace, element.FileName)); }