Page tree
Skip to end of metadata
Go to start of metadata

Table of Contents

General

LemonTree provides the possibility to filter / sort  the Impacted Elements and Impacted Diagrams. A filter expression can be built from multiple logical expression and can be saved for later use. A suggestion list will provide keywords and predefined filters.

Basically, a filter is used to reduce the Impacted Elements and Impacted Diagrams to a specfic set of elements or diagrams. Every element or diagram, which matches a given filter expression will be shown. If an element or diagram is not matched by the filter or is needed for (hierarchical) visualization, the element or diagram will be grayed out.

In the filter text box the following keys can be used:

  • "Arrow down", "Arrow up" to navigate in the dropdown list.
  • "Tab" to select the highlighted element
  • "Enter" to apply the filter query

It's also possible to select the suggested keywords via mouse from the dropdown list.

Fallback search

If LemonTree is not able to parse the query a fallback search is executed (on "Enter"). That means LemonTree searches the entered string in the old fashioned way in the elements properties (like "Name", "UmlType", "ChangedType", etc.).

Filter Keywords

The following keywords are used to build filter expressions:

KeywordDescriptionExampleResultRemarks
AuthorUsed for filtering by AuthorAuthor: "Mr. LemonTree"Shows all elements where the author property contains "Mr. LemonTree"

ChangeType

Used for filtering by Change TypesChangeType: RemovedShows all removed elements
NameUsed for filtering by NameName: ConfigureShows all elements, where the name contains "Configure"

Sort By

Used for sorting by a keyword

ChangeType: Removed SORT BY: UmlTypeShows all removed elements, sorted by the UML Type

Stereotype

Used for filtering by StereotypeStereotype: BlockShows all elements with the stereotype "Block"
UmlTypeUsed for filtering by UML TypeUmlType: ActivityShows all Activites
GUIDUsed for filtering by GUIDGuid: {FB95A4B4-66F5-4e21-B8E0-22ADEE0BB15F} Shows element with GUID.New in LemonTree 2.1.4
ChangeInPossibility to filter for changes in specific properties of elementsChangeIn: CodeShows elements where the property "Code" has changed.New in LemonTree 2.1.4

Logical Operands

ANDUsed for combining two logical expressions, where both have to be trueChangeType: Removed AND UmlType: ActivityShows all removed Activities
NOTUsed for negating a logical expressionNOT ChangeType: RemovedShows all elements, which were not removed
ORUsed for combining two logical expressions, where only one of them has to be trueChangeType: New OR ChangeType: RemovedShows all elements, which are either new or removed

Filtering specific diff version

For Change Types it is also possible to apply the filter to a specific version of the diff (A = left Model Browser or B = right Model Browser). To use this, simply add the letter of the version to the ChangeType.

For example:
ChangeType: RemovedA → This shows the elements, which are removed only in version A.

Predefined Filters

Some filters are predefined, which can be used as shortcuts. The following predefined filters are available:

Predefined FilterShortcut forExampleResult
#NewChangeType: New#NewShows all new elements
#ChildModifiedChangeType: ChildModified#ChildModifiedShows all elements, where at least one child element has been modified (even if the element itself was not changed)
#ConflictedChangeType: Conflicted#Conflicted AND NOT UmlType: ClassShows all conflicted elements, which are not a class

#Modified

ChangeType: Modified#Modified SORT BY NameShows all modified elements, sort by the name
#MovedChangeType: Moved#Moved AND NOT Stereotype: "Block"Shows all elements, which were moved and do not have the stereotype "Block"
#RemovedChangeType: Removed#Removed AND Author: "LieberLieber"Shows all removed elements, which were created by the author "LieberLieber"
#Reviewed-NOT #ReviewedShows all elements, which were not marked as reviewed
#UnmodifiedChangeType: Unmodified#UnmodifiedShows all elements, with the ChangeType "Unmodified"

Filter Flags

Filter flags are used to apply additional settings for the filtering mechanism. They are marked with "$" and are also provided in the suggestion list. A flag can be added at the end of a filter expression and can't be negated.

Filter FlagDescriptionExampleResult
$HideGraphicalChanges

This flag hides changes that are only graphical. If an element hasn't changed itself but the Diagram Representation of the element has.

#Modified $HideGraphicalChangesShows all modified elements, where only the element has been changed (and not its related Diagram Representation)
$OnlyMatchingChildElements

Per default, child elements, which do not match a given filter expression, are only grayed out. To let them completely disappear the filter flag is needed. 

#New and UmlType: Class $OnlyMatchingChildElementsShows all new classes and hides the elements, which are not matched by the filter

Difference to Predefined Filters and Keywords

  • Filter flags cannot be negated with "NOT" or can't be concatenated with boolean operators like "AND" and "OR".
  • Filter flags have to be placed at the end of the filter.

Filtering of Diagram Representations

A filter expression will also be applied to the Diagram Representation, in combination with the element. For example:

The note element "double click to open diagram of the called activity" was not modified, but its Diagram Representation was.

If the filter matches either the Element or the Diagram Representation, it will be matched by the filter.

Managing Filters

When clicking on the filter symbol  a menu is opened where it is possible to save the current filter and select saved filters.

With theicon it is possible to save the current filter and define a name for it:

The filter will be available for selection in the "Private Filters" section.

To edit the name of a filter, select the  icon.
To delete a filter, select the icon.

Private and Public Filters

A LemonTree user is able to define, edit and delete private filters.

Public filters are defined in a CSV file, which can be placed f.e. on a network share directory. The path to this shared filter definition is configured in the directory  %appdata%\LieberLieber\LemonTree\Configuration.xml:


By default, LemonTree creates an example filter file called PublicFiltersDemo.csv in the directory %appdata%\LieberLieber\LemonTree\Filters\.
This demo file can be used as a template for creating a public filter definition.

Structure of the .csv file

The .csv file must have a certain structure.

"impacted element" and "impacted diagrams" are the headers which then contain a number of filters that are saved for the Impacted Elements or Impacted Diagrams list.

The element %Name of the Filter% is displayed in the filter box, the %Filter query% is placed in the textbox and executed when clicked on the filters name.

Structure:

impacted element

%Name of the filter%;%Filter query%

%Name of the filter%;%Filter query%


impacted diagrams

%Name of the filter%;%Filter query%

%Name of the filter%;%Filter query%

The example file is automatically created with LT startup if it's not existing.

LemonTree reads the public filter file on startup. If you change that file and want the filters to be displayed you have to restart LemonTree.

Example Filter Creation

In this example we want to find all elements containing "Display" in the name and sort it by the name.

1. We type "Na": LemonTree suggests the keyword "Name:"

2. The "Tab" key selects "Name: " 

3. When typing "Disp" LemonTree suggests elements that contain the string:

4. We can select a suggested element, but we want all elements which contain "Display" so we type "Display" and "Space". LemonTree suggests other keywords:

5. We navigate via "Arrow down" to "Sort by" and klick "Tab" to select it. (Alternatively, you can also click the suggestion list entry)

6. LemonTree now suggests the possible keywords for sorting. We select "Name" via "Tab" and hit "Enter" or click the  button to execute the search.

7. Result:

Note: Also the grouping element "MainState" and "Signals" are shown (grayed out) because they have at least one child element with "Display" in its name.

Examples

Show All Diagrams, With Elements That Are Directly Changed (Not Child Modified)

  1. Before using a filter:


  2. The filter NOT #ChildModified is applied.

  3. Result:

    The Activity "main" is no longer matched by the filter. Since its grouping element is matching the filter, it is still displayed grayed out.

  4. The flag $OnlyMatchingChildElements is added to the filter expression.

  5. Result:

    The Activity "main", which was previously grayed out, is now hidden.

  6. The goal now is to also hide the diagram "Main". It is still displayed because Unmodified equals "NOT ChildModified".

  7. In order to hide the grouping diagram, the expression AND NOT #Unmodified has to be added.

    The expression has to be added before the flag $OnlyMatchingChildElements.

  8. Result:

    Only diagrams with directly changed child elements are displayed.

Final filter: NOT #ChildModified AND NOT #Unmodified $OnlyMatchingChildElements

Hide Elements, Which Were Already Reviewed

  1. Before the filter:


  2. Enter the filter "NOT #Reviewed".

  3. Result:

    The child element of the CallOperation "WriteLL" is grayed out, because it was already reviewed.

  4. If you want to reduce the list to elements, which were not reviewed, the flag $OnlyMatchingChildElements needs to be added.

  5. Result:


    The reviewed connector is now hidden.

Final filter: NOT #Reviewed $OnlyMatchingChildElements 

Hide Elements, Where Only the DiagramRepresentation Was Modified

  1. The filter #Modified is already set:


  2. However, there are two elements which are only modified in their Diagram Representation.

  3. To hide them, add the flag $HideGraphicalChanges to the end of the filter expression.

  4. Result:

    The two elements with the graphical modifications are now hidden.

Final filter: #Modified $OnlyMatchingChildElements $HideGraphicalChanges 


  • No labels