1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.model.tree.nodes;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 import com.eviware.soapui.model.testsuite.LoadTest;
19 import com.eviware.soapui.model.testsuite.TestCase;
20 import com.eviware.soapui.model.testsuite.TestStep;
21 import com.eviware.soapui.model.testsuite.TestSuite;
22 import com.eviware.soapui.model.testsuite.TestSuiteListener;
23 import com.eviware.soapui.model.tree.AbstractModelItemTreeNode;
24 import com.eviware.soapui.model.tree.SoapUITreeModel;
25 import com.eviware.soapui.model.tree.SoapUITreeNode;
26
27 /***
28 * SoapUITreeNode for TestSuite implementations
29 *
30 * @author Ole.Matzura
31 */
32
33 public class TestSuiteTreeNode extends AbstractModelItemTreeNode<TestSuite>
34 {
35 private InternalTestSuiteListener internalTestSuiteListener = new InternalTestSuiteListener();;
36 private ReorderPropertyChangeListener propertyChangeListener = new ReorderPropertyChangeListener();
37 private List<TestCaseTreeNode> testCaseNodes = new ArrayList<TestCaseTreeNode>();
38
39 public TestSuiteTreeNode(TestSuite testSuite, SoapUITreeModel treeModel )
40 {
41 super( testSuite, testSuite.getProject(), treeModel );
42
43 testSuite.addTestSuiteListener( internalTestSuiteListener );
44
45 for( int c = 0; c < testSuite.getTestCaseCount(); c++ )
46 {
47 TestCase testCase = testSuite.getTestCaseAt( c );
48 testCase.addPropertyChangeListener( TestCase.NAME_PROPERTY, propertyChangeListener );
49 testCaseNodes.add( new TestCaseTreeNode( testCase, getTreeModel() ));
50 }
51
52 getTreeModel().mapModelItems( testCaseNodes );
53 }
54
55 public void release()
56 {
57 super.release();
58
59 getTestSuite().removeTestSuiteListener( internalTestSuiteListener );
60
61 for( TestCaseTreeNode treeNode : testCaseNodes )
62 {
63 treeNode.getModelItem().removePropertyChangeListener( propertyChangeListener );
64 treeNode.release();
65 }
66 }
67
68 @Override
69 public int getChildCount()
70 {
71 return testCaseNodes.size();
72 }
73
74 @Override
75 public SoapUITreeNode getChildNode( int index )
76 {
77 return testCaseNodes.get( index );
78 }
79
80 @Override
81 public int getIndexOfChild( Object child )
82 {
83 return testCaseNodes.indexOf( child );
84 }
85
86 public TestSuite getTestSuite()
87 {
88 return (TestSuite) getModelItem();
89 }
90
91 private class InternalTestSuiteListener implements TestSuiteListener
92 {
93 public void testCaseAdded(TestCase testCase)
94 {
95 TestCaseTreeNode testCaseTreeNode = new TestCaseTreeNode( testCase, getTreeModel() );
96 testCaseNodes.add( testCase.getTestSuite().getIndexOfTestCase(testCase), testCaseTreeNode );
97
98 testCase.addPropertyChangeListener( TestCase.NAME_PROPERTY, propertyChangeListener );
99 getTreeModel().notifyNodeInserted( testCaseTreeNode );
100 }
101
102 public void testCaseRemoved(TestCase testCase)
103 {
104 SoapUITreeNode treeNode = getTreeModel().getTreeNode( testCase );
105 if( testCaseNodes.contains( treeNode ))
106 {
107 getTreeModel().notifyNodeRemoved( treeNode );
108 testCaseNodes.remove( treeNode );
109 testCase.removePropertyChangeListener( propertyChangeListener );
110 }
111 else throw new RuntimeException( "Removing unknown TestCase" );
112 }
113
114 public void testStepAdded(TestStep testStep, int index)
115 {
116 TestCaseTreeNode testCaseTreeNode = (TestCaseTreeNode) getTreeModel().getTreeNode( testStep.getTestCase() );
117 testCaseTreeNode.testStepInserted( testStep, index );
118 }
119
120 public void testStepRemoved(TestStep testStep, int index)
121 {
122 TestCaseTreeNode testCaseTreeNode = (TestCaseTreeNode) getTreeModel().getTreeNode( testStep.getTestCase() );
123 testCaseTreeNode.testStepRemoved( testStep, index );
124 }
125
126 public void loadTestAdded(LoadTest loadTest)
127 {
128 TestCaseTreeNode testCaseTreeNode = (TestCaseTreeNode) getTreeModel().getTreeNode( loadTest.getTestCase() );
129 testCaseTreeNode.loadTestInserted( loadTest );
130 }
131
132 public void loadTestRemoved(LoadTest loadTest)
133 {
134 TestCaseTreeNode testCaseTreeNode = (TestCaseTreeNode) getTreeModel().getTreeNode( loadTest.getTestCase() );
135 testCaseTreeNode.loadTestRemoved( loadTest );
136 }
137
138 public void testStepMoved(TestStep testStep, int fromIndex, int offset)
139 {
140 TestCaseTreeNode testCaseTreeNode = (TestCaseTreeNode) getTreeModel().getTreeNode( testStep.getTestCase() );
141 testCaseTreeNode.testStepMoved( testStep, fromIndex, offset );
142 }
143
144 public void testCaseMoved( TestCase testCase, int index, int offset )
145 {
146 testCaseRemoved( testCase );
147 testCaseAdded( testCase );
148 }
149 }
150 }