Book a Demo

Author Topic: Adding a new column to search results  (Read 3643 times)

mehdidarabi

  • EA Novice
  • *
  • Posts: 4
  • Karma: +0/-0
    • View Profile
Adding a new column to search results
« on: January 07, 2014, 11:38:42 am »
Is there any way to add a new column to the search results showing the components’ path ? (where they are currently located on  Project browser)

I know that by simply right clicking on the item >> Find in Project browser can help me identifying the path for individual items. However, I need the path to show up on the search result page for multiple items on search results.

has anyone setup a SQL query to create this before?

Any tips will be highly appreciated  :D

qwerty

  • EA Guru
  • *****
  • Posts: 13584
  • Karma: +397/-301
  • I'm no guru at all
    • View Profile
Re: Adding a new column to search results
« Reply #1 on: January 07, 2014, 12:24:13 pm »
That would be a tough one. I remember some discussion about getting the path via SQL (where Geert and Helmut posted some ideas). But there's probably no simple solution. It's likely easier to write an add-in search which can do the path traversal and supply that with the result.

q.

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 13523
  • Karma: +574/-33
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: Adding a new column to search results
« Reply #2 on: January 07, 2014, 05:56:35 pm »
The problem with the path is that, no matter how you do it, there is no fast method to provide the path for all results.

My workaround is to provide some (usually 3) levels of parent packages to give the user an idea of where this element is coming from.

Geert

mehdidarabi

  • EA Novice
  • *
  • Posts: 4
  • Karma: +0/-0
    • View Profile
Re: Adding a new column to search results
« Reply #3 on: January 16, 2014, 10:30:02 am »
Thanks guys for your response.

Geert, is your workaround done via Add-in search or SQL script? I have never created an Add-in search. Are you able to guide me to a source where i can do this? or perhaps providing your SQL script (if done in SQL) if possible please? :P

Cheers,
Mehdi

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 13523
  • Karma: +574/-33
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: Adding a new column to search results
« Reply #4 on: January 16, 2014, 05:41:58 pm »
Hi,

The example below is from our search called "All by Stereotype". It searches all elements, operations, attributes, connectors and diagrams that have a stereotype that matches the search term.
The query is a union of different queries for each type of result.
It might be that it won't work on .eap files. I remember having some problems with the joins. In that case you can create individual searches for each part.
Anyway, because of the different types of results it looked like a good example.

You can simply add more layers of parent package by adding more left joins to t_package.

Code: [Select]
select o.ea_guid as CLASSGUID,'Operation' as CLASSTYPE,o.name as Name,o.Stereotype, class.name as ClassName ,
package.name as PackageName,package_p1.name as PackageLevel1 ,package_p2.name as PackageLevel2,
package_p3.name as PackageLevel3
from t_operation as o
join t_object as class on (o.object_id = class.object_id)
join t_package as package on (class.package_id = package.package_id)
left join t_xref as xref on xref.Client = o.ea_guid
left join t_package as package_p1 on (package_p1.package_id = package.parent_id)
left join t_package as package_p2 on (package_p2.package_id = package_p1.parent_id)
left join t_package as package_p3 on (package_p3.package_id = package_p2.parent_id)
where
o.Stereotype like '<Search Term>'
or
(xref.Name = 'StereoTypes'
and xref.Description like '#WC#Name=<Search Term>;#WC#' )

union

select a.ea_guid as CLASSGUID,'Attribute' as CLASSTYPE,a.name as Name,a.Stereotype, class.name as ClassName ,
package.name as PackageName ,package_p1.name as PackageLevel1,package_p2.name as PackageLevel2,
package_p3.name as PackageLevel3
from t_attribute as a
join t_object as class on (a.object_id = class.object_id)
join t_package as package on (class.package_id = package.package_id)
left join t_xref as xref on xref.Client = a.ea_guid
left join t_package as package_p1 on (package_p1.package_id = package.parent_id)
left join t_package as package_p2 on (package_p2.package_id = package_p1.parent_id)
left join t_package as package_p3 on (package_p3.package_id = package_p2.parent_id)
where
a.Stereotype like '<Search Term>'
or
(xref.Name = 'StereoTypes'
and xref.Description like '#WC#Name=<Search Term>;#WC#')

union

select e.ea_guid as CLASSGUID, e.object_type as CLASSTYPE,e.name as Name,e.Stereotype, e.Name as ClassName ,
package.name as PackageName ,package_p1.name as PackageLevel1,package_p2.name as PackageLevel2,
package_p3.name as PackageLevel3
from t_object as e
join t_package as package on (e.package_id = package.package_id)
left join t_xref as xref on xref.Client = e.ea_guid
left join t_package as package_p1 on (package_p1.package_id = package.parent_id)
left join t_package as package_p2 on (package_p2.package_id = package_p1.parent_id)
left join t_package as package_p3 on (package_p3.package_id = package_p2.parent_id)
where
e.Stereotype like '<Search Term>'
or
(xref.Name = 'StereoTypes'
and xref.Description like '#WC#Name=<Search Term>;#WC#')

union

select d.ea_guid as CLASSGUID, d.Diagram_Type as CLASSTYPE,d.name as Name,d.Stereotype, d.Name as ClassName ,
package.name as PackageName ,package_p1.name as PackageLevel1,package_p2.name as PackageLevel2,
package_p3.name as PackageLevel3
from t_diagram as d
join t_package as package on (d.package_id = package.package_id)
left join t_xref as xref on xref.Client = d.ea_guid
left join t_package as package_p1 on (package_p1.package_id = package.parent_id)
left join t_package as package_p2 on (package_p2.package_id = package_p1.parent_id)
left join t_package as package_p3 on (package_p3.package_id = package_p2.parent_id)
where
d.Stereotype like '<Search Term>'
or
(xref.Name = 'StereoTypes'
and xref.Description like '#WC#Name=<Search Term>;#WC#')

union

select c.ea_guid as CLASSGUID, c.Connector_Type as ClassType,
isnull(c.name,source.name + '.' + target.name) as Name,c.Stereotype, source.Name as ClassName ,package.name as PackageName ,
package_p1.name as PackageLevel1,package_p2.name as PackageLevel2,package_p3.name as PackageLevel3
from t_connector as c
join t_object as source on (c.Start_Object_ID = source.Object_ID)
join t_object as target on (c.End_Object_ID = target.Object_ID)
join t_package as package on (source.package_id = package.package_id)
left join t_xref as xref on xref.Client = c.ea_guid
left join t_package as package_p1 on (package_p1.package_id = package.parent_id)
left join t_package as package_p2 on (package_p2.package_id = package_p1.parent_id)
left join t_package as package_p3 on (package_p3.package_id = package_p2.parent_id)
where
c.Stereotype like '<Search Term>'
or
(xref.Name = 'StereoTypes'
and xref.Description like '#WC#Name=<Search Term>;#WC#')