| [highlight]Access way[/highlight] | [highlight]ID[/highlight] | [highlight]PARENT_ID[/highlight] |
| EA.Element (using GetElementSET) | fake one (i mean not useful) | PackageID |
| EA.Package (using GetPackageByID) | PackageID | ParentID |
| DB t_object | PDATA1 | PackageID |
| DB t_package | PackageID | ParentID |
/// <summary>
/// returns an xml document with a flat list of the owned elements modified after the given date
/// </summary>
/// <param name="modifiedAfter">the date after wich the elements should be modified</param>
/// <returns>the owned elements in xml format</returns>
public XmlDocument exportOwnedElements(DateTime modifiedAfter)
{
string sqlDateModified = modifiedAfter.ToString("yyyy-MM-dd");
string sqlQuery =
" SELECT o.Object_ID as ID,o.Object_Type as Type,isNull(o.Name,'') as Name,ISNULL(t.value,0) as ImportanceLevel,isnull(o.Author,'') as Author,o.CreatedDate as Created,o.ModifiedDate as Modified,isnull(o.Note,'') as Documentation,isnull(o.Package_ID,'') as ParentID,isnull(p.name,'') as ParentName " +
" ,isnull(p9.Name +'.','') + isnull(p8.Name+'.','')+ isnull(p7.Name+'.','')+ isnull(p6.Name+'.','') " +
" + isnull(p5.Name+'.','')+ isnull(p4.Name+'.','')+ isnull(p3.Name+'.','')+ isnull(p2.Name+'.','')+ isnull(p.Name,'') as QualifiedName " +
" FROM ((((((((((t_object as o " +
" left join t_objectproperties t on t.Object_ID = o.Object_ID )" +
" left join t_package p on o.Package_ID = p.Package_ID )" +
" left join t_package p2 on p.Parent_ID = p2.Package_ID )" +
" left join t_package p3 on p2.Parent_ID = p3.Package_ID )" +
" left join t_package p4 on p3.Parent_ID = p4.Package_ID )" +
" left join t_package p5 on p4.Parent_ID = p5.Package_ID )" +
" left join t_package p6 on p5.Parent_ID = p6.Package_ID )" +
" left join t_package p7 on p6.Parent_ID = p7.Package_ID )" +
" left join t_package p8 on p7.Parent_ID = p8.Package_ID )" +
" left join t_package p9 on p8.Parent_ID = p9.Package_ID )" +
" where (t.Property = 'ImportanceLevel' or t.Property is null)" +
" and o.ModifiedDate > '" + sqlDateModified + "' " +
" and (p.package_ID = " + this.getPackageID() + " " +
" or p2.package_ID = " + this.getPackageID() + " " +
" or p3.package_ID = " + this.getPackageID() + " " +
" or p4.package_ID = " + this.getPackageID() + " " +
" or p5.package_ID = " + this.getPackageID() + " " +
" or p6.package_ID = " + this.getPackageID() + " " +
" or p7.package_ID = " + this.getPackageID() + " " +
" or p8.package_ID = " + this.getPackageID() + " " +
" or p9.package_ID = " + this.getPackageID() + " ) " +
" order by QualifiedName";
return ((EAModel)this.model).SQLQuery(sqlQuery);
}It's not complete nor ideal, but it was good enough, and it cuts the execution time from more then an hour to a couple of seconds.