Package com.eviware.soapui.integration.impl

Source Code of com.eviware.soapui.integration.impl.TestCaseEditIntegrationImpl

/*
*  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.integration.impl;

import java.awt.Frame;
import java.io.File;
import java.util.List;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.integration.TestCaseEditIntegration;
import com.eviware.soapui.model.ModelItem;
import com.eviware.soapui.model.project.Project;
import com.eviware.soapui.model.testsuite.TestCase;
import com.eviware.soapui.model.testsuite.TestSuite;
import com.eviware.soapui.model.workspace.Workspace;
import com.eviware.soapui.support.SoapUIException;
import com.eviware.soapui.support.StringUtils;
import com.eviware.soapui.support.UISupport;

public class TestCaseEditIntegrationImpl implements TestCaseEditIntegration
{

  public void editTestCase( String project, String testSuite, String testCase )
  {
    // TODO Auto-generated method stub
  }

  public void test()
  {
    CajoClient.getInstance().setLoadUIPath();
  }

  public String getSoapUIPath()
  {
    String os = System.getProperty( "os.name" );
    if( os == null )
      return null;

    String ext;
    if( os.indexOf( "Windows" ) >= 0 )
      ext = "bat";
    else if( os.indexOf( "Mac OS X" ) >= 0 )
      ext = "command";
    else
      ext = "sh";

    String pro = "";
    Frame mainFrame = UISupport.getMainFrame();
    if( mainFrame != null && mainFrame.getTitle().toLowerCase().indexOf( "pro" ) > -1 )
    {
      pro = "-pro";
    }

    String path = System.getProperty( "soapui.home" );
    if( path == null )
      return null;

    File pathFile = new File( path );
    path = pathFile.getAbsolutePath();
    path += File.separator + "bin" + File.separator + "soapui" + pro + "." + ext;

    File f = new File( path );
    if( f.exists() )
      return f.getAbsolutePath();
    else
      return null;
  }

  public void printLog( String log )
  {
    SoapUI.log( log );
  }

  public void openProject( String[] parameters )
  {
    if( parameters != null && parameters.length == 1 )
    {
      String projectFilePath = parameters[0];

      try
      {
        Workspace workspace = SoapUI.getWorkspace();
        Project project = findProject( projectFilePath, workspace );

        project = openProject( projectFilePath, workspace, project );

        showModelItem( project );
        bringToFront();
      }
      catch( Exception e )
      {
        SoapUI.logError( e );
      }
    }
  }

  public void openTestCase( String[] parameters )
  {
    if( !isValid( parameters ) )
      return;

    String projectFilePath = parameters[0];
    String testSuiteName = parameters[1];
    String testCaseName = parameters[2];

    try
    {
      Workspace workspace = SoapUI.getWorkspace();
      Project project = findProject( projectFilePath, workspace );

      project = openProject( projectFilePath, workspace, project );

      TestSuite testSuite = project.getTestSuiteByName( testSuiteName );
      TestCase testCase = testSuite.getTestCaseByName( testCaseName );

      showModelItem( testCase );
      bringToFront();
    }
    catch( Exception e )
    {
      SoapUI.logError( e );
    }
  }

  public void bringToFront()
  {
    UISupport.getMainFrame().setVisible( true );
    UISupport.getMainFrame().setAlwaysOnTop( true );
    UISupport.getMainFrame().setAlwaysOnTop( false );
  }

  private Project openProject( String projectFilePath, Workspace workspace, Project project ) throws SoapUIException
  {
    if( project != null )
    {
      if( !project.isOpen() )
        project = workspace.openProject( project );
    }
    else
    {
      project = workspace.importProject( projectFilePath );
    }
    if( project == null )
    {
      throw new SoapUIException( "Cannot open project on path: " + projectFilePath );
    }
    return project;
  }

  private void showModelItem( ModelItem modelItem ) throws SoapUIException
  {
    if( modelItem != null )
    {
      UISupport.selectAndShow( modelItem );
    }
  }

  private Project findProject( String projectFile, Workspace workspace )
  {
    Project project = null;
    List<? extends Project> projectList = workspace.getProjectList();
    for( Project proj : projectList )
    {
      if( proj.getPath().equalsIgnoreCase( projectFile ) )
      {
        project = workspace.getProjectByName( proj.getName() );
        break;
      }
    }
    return project;
  }

  private boolean isValid( String[] parameters )
  {
    if( parameters != null && parameters.length == 3 )
    {
      for( String parameter : parameters )
      {
        if( StringUtils.isNullOrEmpty( parameter ) )
          return false;
      }
      return true;
    }
    else
      return false;
  }

}
TOP

Related Classes of com.eviware.soapui.integration.impl.TestCaseEditIntegrationImpl

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.