Package com.eviware.soapui.model.tree.nodes

Source Code of com.eviware.soapui.model.tree.nodes.TestSuiteTreeNode

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.model.tree.nodes;

import java.util.ArrayList;
import java.util.List;

import com.eviware.soapui.model.testsuite.LoadTest;
import com.eviware.soapui.model.testsuite.TestCase;
import com.eviware.soapui.model.testsuite.TestStep;
import com.eviware.soapui.model.testsuite.TestSuite;
import com.eviware.soapui.model.testsuite.TestSuiteListener;
import com.eviware.soapui.model.tree.AbstractModelItemTreeNode;
import com.eviware.soapui.model.tree.SoapUITreeModel;
import com.eviware.soapui.model.tree.SoapUITreeNode;
import com.eviware.soapui.security.SecurityTest;

/**
* SoapUITreeNode for TestSuite implementations
*
* @author Ole.Matzura
*/

public class TestSuiteTreeNode extends AbstractModelItemTreeNode<TestSuite>
{
  private InternalTestSuiteListener internalTestSuiteListener = new InternalTestSuiteListener();;
  private ReorderPropertyChangeListener propertyChangeListener = new ReorderPropertyChangeListener();
  private List<TestCaseTreeNode> testCaseNodes = new ArrayList<TestCaseTreeNode>();
  private PropertiesTreeNode<?> propertiesTreeNode;

  public TestSuiteTreeNode( TestSuite testSuite, SoapUITreeModel treeModel )
  {
    super( testSuite, testSuite.getProject(), treeModel );

    testSuite.addTestSuiteListener( internalTestSuiteListener );

    for( int c = 0; c < testSuite.getTestCaseCount(); c++ )
    {
      TestCase testCase = testSuite.getTestCaseAt( c );
      testCase.addPropertyChangeListener( TestCase.NAME_PROPERTY, propertyChangeListener );
      testCaseNodes.add( new TestCaseTreeNode( testCase, getTreeModel() ) );
    }

    getTreeModel().mapModelItems( testCaseNodes );

    propertiesTreeNode = PropertiesTreeNode.createDefaultPropertiesNode( testSuite, getTreeModel() );
    getTreeModel().mapModelItem( propertiesTreeNode );
  }

  public void release()
  {
    super.release();

    getTestSuite().removeTestSuiteListener( internalTestSuiteListener );

    for( TestCaseTreeNode treeNode : testCaseNodes )
    {
      treeNode.getModelItem().removePropertyChangeListener( TestCase.NAME_PROPERTY, propertyChangeListener );
      treeNode.release();
    }

    propertiesTreeNode.release();
  }

  @Override
  public int getChildCount()
  {
    int propMod = getTreeModel().isShowProperties() ? 1 : 0;
    return testCaseNodes.size() + propMod;
  }

  @Override
  public SoapUITreeNode getChildNode( int index )
  {
    int propMod = getTreeModel().isShowProperties() ? 1 : 0;
    return index == 0 && propMod == 1 ? propertiesTreeNode : testCaseNodes.get( index - propMod );
  }

  @Override
  public int getIndexOfChild( Object child )
  {
    int propMod = getTreeModel().isShowProperties() ? 1 : 0;
    if( propMod == 1 && child == propertiesTreeNode )
      return 0;

    int ix = testCaseNodes.indexOf( child );
    return ix == -1 ? ix : ix + propMod;
  }

  public TestSuite getTestSuite()
  {
    return ( TestSuite )getModelItem();
  }

  private class InternalTestSuiteListener implements TestSuiteListener
  {
    public void testCaseAdded( TestCase testCase )
    {
      TestCaseTreeNode testCaseTreeNode = new TestCaseTreeNode( testCase, getTreeModel() );
      testCaseNodes.add( testCase.getTestSuite().getIndexOfTestCase( testCase ), testCaseTreeNode );

      testCase.addPropertyChangeListener( TestCase.NAME_PROPERTY, propertyChangeListener );
      getTreeModel().notifyNodeInserted( testCaseTreeNode );
    }

    public void testCaseRemoved( TestCase testCase )
    {
      SoapUITreeNode treeNode = getTreeModel().getTreeNode( testCase );
      if( testCaseNodes.contains( treeNode ) )
      {
        getTreeModel().notifyNodeRemoved( treeNode );
        testCaseNodes.remove( treeNode );
        testCase.removePropertyChangeListener( propertyChangeListener );
      }
      else
        throw new RuntimeException( "Removing unknown TestCase" );
    }

    public void testStepAdded( TestStep testStep, int index )
    {
      TestCaseTreeNode testCaseTreeNode = ( TestCaseTreeNode )getTreeModel().getTreeNode( testStep.getTestCase() );
      if( testCaseTreeNode != null )
        testCaseTreeNode.testStepInserted( testStep, index );
    }

    public void testStepRemoved( TestStep testStep, int index )
    {
      TestCaseTreeNode testCaseTreeNode = ( TestCaseTreeNode )getTreeModel().getTreeNode( testStep.getTestCase() );
      if( testCaseTreeNode != null )
        testCaseTreeNode.testStepRemoved( testStep, index );
    }

    public void loadTestAdded( LoadTest loadTest )
    {
      TestCaseTreeNode testCaseTreeNode = ( TestCaseTreeNode )getTreeModel().getTreeNode( loadTest.getTestCase() );
      if( testCaseTreeNode != null )
        testCaseTreeNode.loadTestInserted( loadTest );
    }

    public void loadTestRemoved( LoadTest loadTest )
    {
      TestCaseTreeNode testCaseTreeNode = ( TestCaseTreeNode )getTreeModel().getTreeNode( loadTest.getTestCase() );
      if( testCaseTreeNode != null )
        testCaseTreeNode.loadTestRemoved( loadTest );
    }

    public void testStepMoved( TestStep testStep, int fromIndex, int offset )
    {
      TestCaseTreeNode testCaseTreeNode = ( TestCaseTreeNode )getTreeModel().getTreeNode( testStep.getTestCase() );
      if( testCaseTreeNode != null )
        testCaseTreeNode.testStepMoved( testStep, fromIndex, offset );
    }

    public void testCaseMoved( TestCase testCase, int index, int offset )
    {
      testCaseRemoved( testCase );
      testCaseAdded( testCase );
    }

    @Override
    public void securityTestAdded( SecurityTest securityTest )
    {
      TestCaseTreeNode testCaseTreeNode = ( TestCaseTreeNode )getTreeModel()
          .getTreeNode( securityTest.getTestCase() );
      if( testCaseTreeNode != null )
        testCaseTreeNode.securityTestInserted( securityTest );

    }

    @Override
    public void securityTestRemoved( SecurityTest securityTest )
    {
      TestCaseTreeNode testCaseTreeNode = ( TestCaseTreeNode )getTreeModel()
          .getTreeNode( securityTest.getTestCase() );
      if( testCaseTreeNode != null )
        testCaseTreeNode.securityTestRemoved( securityTest );

    }
  }
}
TOP

Related Classes of com.eviware.soapui.model.tree.nodes.TestSuiteTreeNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.