0

I am trying to capture all associated elements outside the nested for each loop by storing values using the Object Factory method.

The linking of elements are shown below screenshot. enter image description here

I want the output like shown below

Intended output:

[
{Third-Level-ID=EL-234, Second-Level-ID=EL-229, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-235, Second-Level-ID=EL-229, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-236, Second-Level-ID=EL-229, First-Level-ID=EL-213},
{Third-Level-ID=EL-233, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-237, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-238, Second-Level-ID=EL-230, First-Level-ID=EL-213},
{Third-Level-ID=EL-239, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=NO-VAL, Second-Level-ID=EL-231, First-Level-ID=EL-213}
]

However, I am getting the below output by using the below code.

Current Output

[
{Third-Level-ID=EL-234, Second-Level-ID=EL-229, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-238, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=NO-VAL, Second-Level-ID=EL-231, First-Level-ID=EL-213}
]

The code which I am using is given below.

#set($projectId = $page.getReference.projectId())
#set($project = $projectService.getProject($projectId))
#set($documentNames = "Specification-Dummy-First-Level Specification-Dummy-Second-Level Specification-Dummy-Third-Level ")
#set($customerReqs = $trackerService.queryWorkItems($project, "reqType.KEY:customerrequirement  AND document.title:($documentNames)", "document.title"))



    ##First Level Velocity Script Starts Here------------------------
    #set($first_level_crs_pobject = $customerReqs.get(2))
    #set($first_level_crs_id = $first_level_crs_pobject.getId())
    #set($first_level_element_title = $first_level_crs_pobject.getTitle())
    #set($first_link =$first_level_crs_pobject.getLinkedWorkItemsStructsBack())
    
    #set($emptyArray = [])
        ##Second Level  Velocity Script Starts Here------------------------
        #set($second_level_array_size = $first_link.size())
                
            #foreach($sl in $first_link) ##Second-Level For-Each Starts Here------------------------
                
                #set($new_object_first = $objectFactory.newMap())

                #set($second_level_first_elem_pobject = $sl.getLinkedItem())
                #set($second_level_first_elem_ID = $second_level_first_elem_pobject.getId())
                #set($second_level_first_elem_title = $second_level_first_elem_pobject.getTitle())
                #set($second_link = $second_level_first_elem_pobject.getLinkedWorkItemsStructsBack())   
                
                #set($dummy = $new_object_first.put("Second-Level-ID",$second_level_first_elem_ID))
                #set($dummy = $new_object_first.put("First-Level-ID",$first_level_crs_id))
                
                #set($third_level_array_size = $second_link.size())
                
                #if($third_level_array_size == 0)
                    #set($dummy = $new_object_first.put("Third-Level-ID","NO-VAL") )
                #else
                     #foreach($tl in $second_link )
                        #set($third_level_first_elem_pobject = $tl.getLinkedItem())
                        #set($third_level_first_elem_id = $third_level_first_elem_pobject.getId())
                        #set($third_level_first_elem_title = $third_level_first_elem_pobject.getTitle())
                        
                        #set($dummy = $new_object_first.put("Third-Level-ID",$third_level_first_elem_id))
                        
                        #set($third_link = $third_level_first_elem_pobject.getLinkedWorkItemsStructsBack())
                        
                        #set($fourth_level_array_size = $third_link.size())                      
                     #end ##foreach($tl in $second_link ) ends here
                #end ##if($third_level_array_size == 0)      
                #set( $void = $emptyArray.add($new_object_first))
            #end##foreach($sl in $first_link)  Second-Level For Each Ends Here
        <table border = 1>
                <tr><td>Final Array of Object </td><td>$emptyArray</td></tr>
        </table>

Can you please help?

Peter Parker
  • 29,093
  • 5
  • 52
  • 80

1 Answers1

2

You are overwriting the content of $new_object_first in every 2nd-level loop and adding therefore only the last iteration of each 2nd-level loop. You need to add to $emptyArray directly after setting "Third-Level-ID" and then reinitializing the whole $new_object_first with first and second level values.

Peter Parker
  • 29,093
  • 5
  • 52
  • 80