/******************************************************************************* * Copyright (c) 2017 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.hibernate.ui.bot.test; import static org.junit.Assert.assertTrue; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jboss.reddeer.eclipse.ui.problems.Problem; import org.jboss.reddeer.eclipse.ui.problems.ProblemsView; import org.jboss.reddeer.eclipse.ui.problems.ProblemsView.ProblemType; import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.ExternalProjectImportWizardDialog; import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.WizardProjectsImportPage; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.common.logging.Logger; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.tools.common.reddeer.utils.ProjectHelper; import org.jboss.tools.hibernate.ui.bot.test.factory.ResourceFactory; /** * Project importer class provides handy methods to import project from * resources for further utilization by hibernate tests * * @author Jiri Peterka * */ public class ProjectImporter { private static final String LIB_DIR="target/requirements/"; private static final Logger log = Logger.getLogger(ProjectImporter.class); /** * Import porject and requires no errors in problems log * @param pluginId plug-in id of project where project resources are located * @param projectName project name to import */ public static void importProjectWithoutErrors(String pluginId, String projectName, Map<String, String>libraryPathMap) { importProject(pluginId, projectName); if(libraryPathMap != null){ Map<String,String> fullPathJars = new HashMap<>(); for(String jar: libraryPathMap.keySet()){ if(libraryPathMap.get(jar) == null){ fullPathJars.put(jar,LIB_DIR); } else { fullPathJars.put(jar,LIB_DIR+libraryPathMap.get(jar)); } } ProjectHelper.addLibrariesIntoProject(projectName, fullPathJars); } new WaitUntil(new JobIsRunning(), TimePeriod.SHORT,false); new WaitWhile(new JobIsRunning(),TimePeriod.LONG); ProblemsView problemsView = new ProblemsView(); problemsView.open(); new WaitWhile(new JobIsRunning()); List<Problem> problems = problemsView.getProblems(ProblemType.ERROR); for (Problem p : problems) { log.error("Unexpected "+ problems.size() + " problem(s):"); log.dump("Problem: "+ p.toString()); } assertTrue("No problems after import are expected", problems.size() == 0); } /** * Import project * @param pluginId plug-in id of project where project resources are located * @param projectName project name to import */ public static void importProject(String pluginId, String prjName) { ExternalProjectImportWizardDialog w = new ExternalProjectImportWizardDialog(); w.open(); WizardProjectsImportPage p1 = new WizardProjectsImportPage(); p1.setRootDirectory(ResourceFactory.getResourcesLocation(pluginId, "prj")); p1.copyProjectsIntoWorkspace(true); p1.deselectAllProjects(); p1.selectProjects(prjName); w.finish(); } }