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.iface.Interface;
19 import com.eviware.soapui.model.mock.MockService;
20 import com.eviware.soapui.model.project.Project;
21 import com.eviware.soapui.model.project.ProjectListener;
22 import com.eviware.soapui.model.testsuite.TestSuite;
23 import com.eviware.soapui.model.tree.AbstractModelItemTreeNode;
24 import com.eviware.soapui.model.tree.SoapUITreeNode;
25 import com.eviware.soapui.settings.UISettings;
26
27 /***
28 * SoapUITreeNode for Project implementations
29 *
30 * @author Ole.Matzura
31 */
32
33 public class ProjectTreeNode extends AbstractModelItemTreeNode<Project>
34 {
35 private InternalProjectListener internalProjectListener;
36 private List<InterfaceTreeNode> interfaceNodes = new ArrayList<InterfaceTreeNode>();
37 private List<TestSuiteTreeNode> testSuiteNodes = new ArrayList<TestSuiteTreeNode>();
38 private List<MockServiceTreeNode> mockServiceNodes = new ArrayList<MockServiceTreeNode>();
39
40 public ProjectTreeNode( Project project, WorkspaceTreeNode workspaceNode )
41 {
42 super( project, workspaceNode.getWorkspace(), workspaceNode.getTreeModel() );
43
44 if( !project.isOpen() )
45 return;
46
47 internalProjectListener = new InternalProjectListener();
48 project.addProjectListener( internalProjectListener);
49
50 for( int c = 0; c < project.getInterfaceCount(); c++ )
51 {
52 interfaceNodes.add( new InterfaceTreeNode( project.getInterfaceAt( c ), getTreeModel() ));
53 }
54
55 for( int c = 0; c < project.getTestSuiteCount(); c++ )
56 {
57 testSuiteNodes.add( new TestSuiteTreeNode( project.getTestSuiteAt( c ), getTreeModel() ));
58 }
59
60 for( int c = 0; c < project.getMockServiceCount(); c++ )
61 {
62 mockServiceNodes.add( new MockServiceTreeNode( project.getMockServiceAt( c ), getTreeModel() ));
63 }
64
65 getTreeModel().mapModelItems( interfaceNodes );
66 getTreeModel().mapModelItems( testSuiteNodes );
67 getTreeModel().mapModelItems( mockServiceNodes );
68
69 initOrdering( testSuiteNodes, UISettings.ORDER_TESTSUITES );
70 }
71
72 public void release()
73 {
74 super.release();
75
76 getProject().removeProjectListener( internalProjectListener );
77
78 for( InterfaceTreeNode treeNode : interfaceNodes )
79 treeNode.release();
80
81 for( TestSuiteTreeNode treeNode : testSuiteNodes )
82 treeNode.release();
83
84 for( MockServiceTreeNode treeNode : mockServiceNodes )
85 treeNode.release();
86 }
87
88 public int getChildCount()
89 {
90 return interfaceNodes.size() + testSuiteNodes.size() + mockServiceNodes.size();
91 }
92
93 public int getIndexOfChild(Object child)
94 {
95 int index = interfaceNodes.indexOf( child );
96 if( index >= 0 ) return index;
97
98 index = testSuiteNodes.indexOf( child );
99 if( index >= 0 ) return index + interfaceNodes.size();
100
101 index = mockServiceNodes.indexOf( child );
102 if( index >= 0 ) return index + interfaceNodes.size() + testSuiteNodes.size();
103
104 return -1;
105 }
106
107 public SoapUITreeNode getChildNode(int index)
108 {
109 if( index < interfaceNodes.size() )
110 return interfaceNodes.get( index );
111 else if( index < testSuiteNodes.size()+interfaceNodes.size() )
112 return testSuiteNodes.get( index-interfaceNodes.size() );
113 else
114 return mockServiceNodes.get( index- interfaceNodes.size() - testSuiteNodes.size() );
115 }
116
117 public Project getProject()
118 {
119 return (Project) getModelItem();
120 }
121
122
123
124
125
126
127 private class InternalProjectListener implements ProjectListener
128 {
129 public void interfaceAdded(Interface iface)
130 {
131 InterfaceTreeNode interfaceTreeNode = new InterfaceTreeNode( iface, getTreeModel() );
132 interfaceNodes.add( interfaceTreeNode);
133 getTreeModel().notifyNodeInserted( interfaceTreeNode );
134 }
135
136 public void interfaceRemoved(Interface iface)
137 {
138 SoapUITreeNode treeNode = getTreeModel().getTreeNode( iface );
139 if( interfaceNodes.contains( treeNode ))
140 {
141 getTreeModel().notifyNodeRemoved( treeNode );
142 interfaceNodes.remove( treeNode);
143 }
144 else throw new RuntimeException( "Removing unkown interface" );
145 }
146
147 public void testSuiteAdded(TestSuite testSuite)
148 {
149 TestSuiteTreeNode testSuiteNode = new TestSuiteTreeNode( testSuite, getTreeModel() );
150 testSuiteNodes.add( testSuiteNode );
151 reorder(false);
152 getTreeModel().notifyNodeInserted( testSuiteNode );
153 }
154
155 public void testSuiteRemoved(TestSuite testSuite)
156 {
157 SoapUITreeNode treeNode = getTreeModel().getTreeNode( testSuite );
158 if( testSuiteNodes.contains( treeNode ))
159 {
160 getTreeModel().notifyNodeRemoved( treeNode );
161 testSuiteNodes.remove( treeNode);
162 }
163 else throw new RuntimeException( "Removing unkown testSuite" );
164 }
165
166 public void mockServiceAdded( MockService mockService )
167 {
168 MockServiceTreeNode mockServiceNode = new MockServiceTreeNode( mockService, getTreeModel() );
169 mockServiceNodes.add( mockServiceNode );
170 getTreeModel().notifyNodeInserted( mockServiceNode );
171 }
172
173 public void mockServiceRemoved( MockService mockService )
174 {
175 SoapUITreeNode treeNode = getTreeModel().getTreeNode( mockService );
176 if( mockServiceNodes.contains( treeNode ))
177 {
178 getTreeModel().notifyNodeRemoved( treeNode );
179 mockServiceNodes.remove( treeNode);
180 }
181 else throw new RuntimeException( "Removing unkown mockService" );
182 }
183
184 public void interfaceUpdated( Interface iface )
185 {
186 }
187 }
188
189 }