/// <summary> /// Creates data for the package dependency analysis /// </summary> /// <param name="relationName">1 of the 4 relations</param> /// <param name="semi">current semi</param> /// <param name="parentServerIndex">the index of the analyzed data where the server information is stored</param> private void createPackageAnalysisList(string relationName, CSsemi.CSemiExp semi, int parentServerIndex) { try { PackageDependencyElem packageelem = new PackageDependencyElem(); int parentServerNameIndex = 0; int childServerNameIndex = 0; int childTypeBeginLine = repo_.semi.lineCount - 1; int childIndexInRepo = 0; if (relationName.Equals("Inheritance")) { childIndexInRepo = findChildTypeIndexInheritance(semi[0], childTypeBeginLine); } else { childIndexInRepo = findChildTypeIndex(semi[0]); } parentServerNameIndex = findServerIndex(parentServerIndex); childServerNameIndex = findServerIndex(childIndexInRepo); string parentPackage = repo_.analyzedata[parentServerNameIndex].packageName; string childPackage = repo_.analyzedata[childServerNameIndex].packageName; packageelem.parentPackage = parentPackage; packageelem.parentServerName = repo_.analyzedata[parentServerNameIndex].serverName; if (!parentPackage.Equals(childPackage)) { packageelem.typeName1 = semi[1]; packageelem.typeName2 = semi[0]; packageelem.relationship = relationName; packageelem.childPackageName = childPackage; packageelem.childServerName = repo_.analyzedata[childServerNameIndex].serverName; if (repo_.packagedata.Count > 0) { for (int i = 0; i < repo_.packagedata.Count;) { PackageDependencyElem curr = repo_.packagedata[i]; if (packageelem.isEqual(curr)) { break; } else { repo_.packagedata.Add(packageelem); break; } } } else { repo_.packagedata.Add(packageelem); } } //} } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public bool isEqual(PackageDependencyElem temp) { if (this.parentServerName == temp.parentServerName && this.parentPackage == temp.parentPackage && this.childPackageName == temp.childPackageName && this.childServerName == temp.childServerName) { return(true); } return(false); }
/// <summary> /// stores the semi into the Inheritance element /// </summary> /// <param name="semi">the semi to be stored</param> public override void doActionInheritance(CSsemi.CSemiExp semi) { InheritanceElem inheritanceelem = new InheritanceElem(); PackageDependencyElem packageelem = new PackageDependencyElem(); Elem elem = new Elem(); bool existingParent = false; for (int i = 0; i < repo_.analyzedata.Count; i++) { elem = repo_.analyzedata[i]; if (elem.type == "class" && semi[1] == elem.name) { for (int j = 0; j < repo_.inheritancedata.Count; j++) { inheritanceelem = repo_.inheritancedata[j]; if (semi[1] == inheritanceelem.parent) { existingParent = true; int index = repo_.inheritancedata.IndexOf(inheritanceelem); inheritanceelem.children.Add(semi[0]); inheritanceelem.childcount++; repo_.inheritancedata.Remove(inheritanceelem); repo_.inheritancedata.Insert(index, inheritanceelem); } } if (!existingParent) { inheritanceelem = new InheritanceElem(); inheritanceelem.children.Add(semi[0]); inheritanceelem.parent = semi[1]; inheritanceelem.childcount++; repo_.inheritancedata.Add(inheritanceelem); } createPackageAnalysisList("Inheritance", semi, i); } } }
/// <summary> /// Creates data for the package dependency analysis /// </summary> /// <param name="relationName">1 of the 4 relations</param> /// <param name="semi">current semi</param> /// <param name="parentServerIndex">the index of the analyzed data where the server information is stored</param> private void createPackageAnalysisList(string relationName, CSsemi.CSemiExp semi, int parentServerIndex) { try { PackageDependencyElem packageelem = new PackageDependencyElem(); int parentServerNameIndex = 0; int childServerNameIndex = 0; int childTypeBeginLine = repo_.semi.lineCount - 1; int childIndexInRepo = 0; if (relationName.Equals("Inheritance")) childIndexInRepo = findChildTypeIndexInheritance(semi[0], childTypeBeginLine); else childIndexInRepo = findChildTypeIndex(semi[0]); parentServerNameIndex = findServerIndex(parentServerIndex); childServerNameIndex = findServerIndex(childIndexInRepo); string parentPackage = repo_.analyzedata[parentServerNameIndex].packageName; string childPackage = repo_.analyzedata[childServerNameIndex].packageName; packageelem.parentPackage = parentPackage; packageelem.parentServerName = repo_.analyzedata[parentServerNameIndex].serverName; if (!parentPackage.Equals(childPackage)) { packageelem.typeName1 = semi[1]; packageelem.typeName2 = semi[0]; packageelem.relationship = relationName; packageelem.childPackageName = childPackage; packageelem.childServerName = repo_.analyzedata[childServerNameIndex].serverName; if (repo_.packagedata.Count > 0) for (int i = 0; i < repo_.packagedata.Count;) { PackageDependencyElem curr = repo_.packagedata[i]; if (packageelem.isEqual(curr)) break; else { repo_.packagedata.Add(packageelem); break; } } else repo_.packagedata.Add(packageelem); } //} } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public bool isEqual(PackageDependencyElem temp) { if (this.parentServerName == temp.parentServerName && this.parentPackage == temp.parentPackage && this.childPackageName == temp.childPackageName && this.childServerName == temp.childServerName) return true; return false; }