Search Large Properties Overview



  • Ever lost some source code and created a new one,
  • Ever searched for hours for some bullet proof code you were proud of but couldn't find it again
  • Ever want to use a message you know has been created but for the life of you can’t find it... 
    then maybe Search Large Properties is for you.


This model api tool allows you to select which object type(s) you want to search, secondly in which Library(s) and lastly what text string to search for within the found large properties. The results are loaded into a grid where their large properties can be viewed in more detail via double clicking the row and finally creating a Plex list of the found objects if desired.

A enhancement request has been submitted (20034239-1: RUN ASSOCIATED EDITOR) to CA for a new model api method to run the associated object editor but we will have to wait and see on that one..

Add-In Setting


Instructions

Launch application from Plex Add-In tool bar. If you are unable to see the Add-In toolbar from View, Toolbars… menu option choose Show toolbar.

Alert Message “Application Models Dialog”


This message is to alert the developer to the current application models found in their template plex.in file (found in CA Plex installation directory).

System Section: [Options]
System Key: GMFileX

which will make up the list of libraries shown in the combo box.



If you don’t see all your models that you want termed as application models you need to copy GMFile settings from your user plex.ini file to your template plex.ini file found in the CA Plex installation directory.

It is important to have a complete list because not only does this define which models are application models but also the logic is anything else must be a shipped library

Search Criteria Entry


  1. Object Type multi select list box: Choose the object type you want the search to restrict on. Listed are all the object types currently supporting a large property that can be retrieved by model api methods. Please be aware of the performance issues of choosing some of the object types that exist in your model. To give you an idea it takes about 2.5 hours to search 50,000 functions with performance being affected by the size of the large properties retrieved more than the number of objects. See Performance Matrix
  2. Library editable combo: Select one of the following options or enter a library name you are interested in making sure you get the case correct: 
    • Host Model – Only objects belonging to the current local model will be included in the search 
    • Application Model(s) - Only objects belonging to any of the application models (See Alert Message “Application Models Dialog”) will be included in the search 
    • Shipped Libraries - Only objects belonging to any of the NON application models (See Alert Message “Application Models Dialog”) will be included in the search 
    • All Libraries – No library restriction 
  3. FindString edit box: Enter the text string you are wanting to search for within the found large properties. 
  4. Ignore Case check box: By default the text string search argument will be case insensitive but if you wish you can search for a text string matching case also by un-checking the check box. 
  5. Use Wildcard ‘+’ check box: By default only one search string argument will be conducted but you can write up to 10 search strings and if any are matched the large property is counted as a hit, for example entering “hour+min+sec” consists of 3 search strings and if any of them are found with in the large property it is considered a hit. 
  6. Press OK button or Enter button to start the search

Understanding the Results

  1. The search above was to find source code in any model (local model and any libraries attached) containing the string ‘hour’ (one search argument, case insensitive) 
  2. The search took 2 seconds resulting in 10 hits which are displayed in the grid 
  3. Search results are populated into the sortable multi select grid where you can double click a row to view the large property in full 
  4. The panel can be re-sized to fit the results grid 
  5. You have the option of creating a Plex list of the results in the current local model for further investigation within the CA Plex IDE

Edit Large Property

By double clicking the grid row you can view the large property in a re-sizeable multi line edit box where you can copy and paste into another editor for further investigation. See Edit Large Property

Note: You can toggle between Full Large Property mode and Local Modifications mode which is useful when comparing a function large property between versions.



Performance

“Good things come to those who wait” is a phrase propounding the virtue of patience OR a pint of Guinness which ever you prefer

Searching can take hours if you search on Functions, Panels, Values simply because of the sheer number of them and sizes of the large properties.
At least you can run a search in the back ground or conduct the search at the end of the day, but what you can be sure of is the results will not contain human error and you can arguably have greater confidence in the results in contrast to you picking through the model(s) yourself. You could argue with your boss that you were working after hours also ;)

Silly jokes aside performance is not great but the results are, remembering you can enter 10 search arguments to be conducted at the same time OR you can look at exporting all the large properties as text files as snap shots of the model which then can be searched using windows desktop search or equivalent such as Total Commander

Earlier versions of the model api did lead to gpfs which would have been very frustrating had a process been running for hours for it then to fail but version3.0 of the model api has greater error handling and reduced memory leaks etc

Performance Matrix 2011

Search Object Type Number of LP Searched Number of LP returned by Safearray Average Response Time
Message 10,353 10,353 33 secs
Message 286 10,353 33 secs
Message 9,015 10,353 35 secs
Source Code 4,355 4,355 22 secs
Source Code 1,001 4,355 19 secs
Source Code 1,442 4,355 22 secs
Function (approx 8000 Websydian) 33,152 36,456 4hrs 35mins

Performance Matrix 2014 - CPU 3.30GHz, 8GB RAM, 64-Bit Windows7 

Search Object TypeNumber of LP SearchedNumber of LP returned by SafearrayAverage Response Time
Message9825982527 secs
Message8170982524 secs
Source Code4140414011 secs
Source Code160141406 secs
Panel3101403237minutes
Function (No Websydian)24,82733,34944minutes

Function (approx 8000 Websydian)33,15236,7181hr 32mins