/******************************************************************************* * Copyright (c) 2010-2011 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.ws.ui.bot.test.utils; import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.util.List; import java.util.logging.Logger; import org.hamcrest.core.StringContains; import org.jboss.reddeer.common.exception.RedDeerException; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.eclipse.core.resources.Project; import org.jboss.reddeer.eclipse.jdt.ui.NewJavaClassWizardDialog; import org.jboss.reddeer.eclipse.jdt.ui.NewJavaClassWizardPage; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.ExternalProjectImportWizardDialog; import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.WizardProjectsImportPage; import org.jboss.reddeer.eclipse.utils.DeleteUtils; import org.jboss.reddeer.swt.impl.button.CheckBox; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.button.RadioButton; import org.jboss.reddeer.swt.impl.combo.DefaultCombo; import org.jboss.reddeer.swt.impl.ctab.DefaultCTabItem; import org.jboss.reddeer.swt.impl.menu.ShellMenu; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.swt.impl.text.LabeledText; import org.jboss.reddeer.workbench.condition.EditorWithTitleIsActive; import org.jboss.reddeer.workbench.handler.EditorHandler; import org.jboss.reddeer.workbench.impl.editor.DefaultEditor; import org.jboss.reddeer.workbench.impl.editor.TextEditor; import org.jboss.tools.common.reddeer.label.IDELabel; import org.jboss.tools.ws.reddeer.ui.wizards.CreateNewFileWizardPage; import org.jboss.tools.ws.reddeer.ui.wizards.jst.j2ee.EARProjectWizard; import org.jboss.tools.ws.reddeer.ui.wizards.jst.servlet.DynamicWebProjectWizard; import org.jboss.tools.ws.reddeer.ui.wizards.wst.NewWsdlFileWizard; import org.jboss.tools.ws.ui.bot.test.uiutils.JavaBuildPathPropertiesPage; import org.jboss.tools.ws.ui.bot.test.uiutils.PropertiesDialog; import org.jboss.tools.ws.ui.bot.test.uiutils.TargetedRuntimesPropertiesPage; /** * @author jjankovi * @author Radoslav Rabara */ public class ProjectHelper { private static final Logger LOGGER = Logger.getLogger(ProjectHelper.class.getName()); private ProjectHelper() { }; /** * Method creates basic java class for entered project with entered package * and class name * * @param projectName * @param pkg * @param cName * @return */ public static TextEditor createClass(String projectName, String pkg, String className) { NewJavaClassWizardDialog wizard = new NewJavaClassWizardDialog(); wizard.open(); NewJavaClassWizardPage page = new NewJavaClassWizardPage(); page.setPackage(pkg); page.setName(className); page.setSourceFolder(projectName + "/src"); wizard.finish(); return new TextEditor(className + ".java"); } /** * Method creates wsdl file for entered project with entered package name * * @param projectName * @param wsdlFileName */ public static DefaultEditor createWsdl(String projectName, String wsdlFileName) { EditorHandler.getInstance().closeAll(false); NewWsdlFileWizard wizard = new NewWsdlFileWizard(); wizard.open(); CreateNewFileWizardPage page = new CreateNewFileWizardPage(); page.setFileName(wsdlFileName + ".wsdl"); page.setParentFolder(projectName + "/src"); wizard.next(); wizard.finish(); new WaitUntil(new EditorWithTitleIsActive(wsdlFileName + ".wsdl")); new DefaultCTabItem("Source").activate(); return new DefaultEditor(wsdlFileName + ".wsdl"); } /** * Method creates new Dynamic Web Project with entered name * * @param name */ public static void createProject(String name) { DynamicWebProjectWizard wizard = new DynamicWebProjectWizard(); wizard.open(); wizard.setProjectName(name); wizard.next(); wizard.next(); wizard.setGenerateDeploymentDescriptor(true); wizard.finish(); new WaitWhile(new JobIsRunning(), TimePeriod.LONG); ProjectExplorer projectExplorer = new ProjectExplorer(); projectExplorer.activate(); projectExplorer.getProject(name).select(); } /** * Method creates new Dynamic Web Project with entered name for ear project * * @param name */ public static void createProjectForEAR(String name, String earProject) { DynamicWebProjectWizard wizard = new DynamicWebProjectWizard(); wizard.open(); wizard.setProjectName(name); wizard.addProjectToEar(earProject); wizard.finish(); new WaitWhile(new JobIsRunning()); ProjectExplorer projectExplorer = new ProjectExplorer(); projectExplorer.activate(); projectExplorer.getProject(name).select(); } /** * Method creates new EAR Project with entered name * * @param name */ public static void createEARProject(String name) { EARProjectWizard wizard = new EARProjectWizard(); wizard.open(); new LabeledText("Project name:").setText(name); // set EAR version DefaultCombo combo = new DefaultCombo(1); combo.setSelection(combo.getItems().size() - 1); wizard.next(); new CheckBox("Generate application.xml deployment descriptor").click(); wizard.finish(); } public static void setProjectJRE(String projectName) { PropertiesDialog dialog = new PropertiesDialog(); dialog.open(projectName); JavaBuildPathPropertiesPage page = new JavaBuildPathPropertiesPage(); page.select(); page.activateLibrariesTab(); page.selectLibrary(StringContains.containsString("JRE System Library")); new PushButton(IDELabel.Button.EDIT).click(); new DefaultShell("Edit Library"); new RadioButton("Alternate JRE:").click(); new PushButton(IDELabel.Button.FINISH).click(); dialog.finish(); } public static boolean projectExists(String name) { ProjectExplorer projectExplorer = new ProjectExplorer(); projectExplorer.open(); return projectExplorer.containsProject(name); } public static void deleteAllProjects() { ProjectExplorer projectExplorer = new ProjectExplorer(); projectExplorer.open(); List<Project> projects = projectExplorer.getProjects(); try { for (Project project: projects) { project.delete(true); } } catch(RedDeerException e) { projectExplorer.close(); projectExplorer.open(); projects = projectExplorer.getProjects(); for (Project project: projects) { try { LOGGER.info("Forcing removal of " + project); DeleteUtils.forceProjectDeletion(project, true); } catch(RuntimeException exception) { LOGGER.info("Project " + project.getName() + " was not deleted"); } } } } /** * Cleans All Projects */ public static void cleanAllProjects() { new WaitWhile(new JobIsRunning()); new ShellMenu(IDELabel.Menu.PROJECT, "Clean...").select(); new DefaultShell("Clean"); new RadioButton("Clean all projects").click(); new PushButton(IDELabel.Button.OK).click(); new WaitWhile(new JobIsRunning(), TimePeriod.LONG, false); } public static void importWSTestProject(String projectName, String serverName) { try { importProject(new File("resources/projects/" + projectName).getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); fail(e.getMessage()); } addConfiguredRuntimeIntoProject(projectName, serverName); setProjectJRE(projectName); } /** * Add configured runtime into project as targeted runtime * * @param project */ public static void addConfiguredRuntimeIntoProject(String projectName, String configuredRuntime) { PropertiesDialog dialog = new PropertiesDialog(); dialog.open(projectName); TargetedRuntimesPropertiesPage page = new TargetedRuntimesPropertiesPage(); page.select(); page.setSelectAllRuntimes(true); page.checkAllRuntimes(false); page.checkRuntime(configuredRuntime, true); dialog.finish(TimePeriod.LONG); } private static void importProject(String projectLocation) { ExternalProjectImportWizardDialog importDialog = new ExternalProjectImportWizardDialog(); importDialog.open(); WizardProjectsImportPage importPage = new WizardProjectsImportPage(); new WizardProjectsImportPage(); importPage.setRootDirectory(projectLocation); assertFalse("There is no project to import", importPage.getProjects().isEmpty()); importPage.selectAllProjects(); importPage.copyProjectsIntoWorkspace(true); importDialog.finish(); } }