/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.integration.impl; 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; import java.awt.Frame; import java.io.File; import java.util.List; 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; } } }