package org.jboss.tools.teiid.reddeer.view; import org.jboss.reddeer.common.wait.AbstractWait; 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.wst.server.ui.view.Server; import org.jboss.reddeer.eclipse.wst.server.ui.view.ServersView; import org.jboss.reddeer.eclipse.wst.server.ui.view.ServersViewEnums.ServerState; import org.jboss.reddeer.eclipse.wst.server.ui.view.ServersViewException; import org.jboss.reddeer.swt.exception.SWTLayerException; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.combo.DefaultCombo; import org.jboss.reddeer.swt.impl.menu.ContextMenu; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem; import org.jboss.reddeer.workbench.impl.view.WorkbenchView; import org.jboss.tools.teiid.reddeer.condition.ServerHasState; /** * Represents a view where one can manage Teiid instances. * * @author Lucia Jelinkova * */ public class TeiidInstanceView extends WorkbenchView {// DEPRECATED - JBDS7 only Servers view // TODO - merge with serversViewExt public static final String TOOLBAR_CREATE_TEIID = "Create a new Teiid instance"; public static final String TOOLBAR_RECONNECT_TEIID = "Reconnect to the selected Teiid Instance"; /** * Previous to Kepler */ /* * @Deprecated public TeiidInstanceView() { super("Teiid Designer", "Teiid"); } */ public TeiidInstanceView(boolean isKelperOrMore) {// remove super("Servers"); } /* * public void reconnect(String teiidInstance) {//--> servermgr throw new UnsupportedOperationException(); // * bot().tree().getTreeItem(teiidInstance).select(); // getToolbarButtonWitTooltip(TOOLBAR_RECONNECT_TEIID).click(); * } */ /* * public void deleteDataSource(String teiidInstance, String dataSource) {// new DefaultTreeItem(teiidInstance, * "Data Sources", dataSource).select(); new ContextMenu("Delete Data Source").select(); } */ /* * public void undeployVDB(String teiidInstance, String vdb) {//--> VDB new DefaultTreeItem(teiidInstance, "VDBs", * vdb).select(); new ContextMenu("Undeploy VDB").select(); } * * public boolean containsDataSource(String teiidInstance, String datasource) { SWTBot bot = new SWTWorkbenchBot(); * try { SWTBotTreeItem item = bot.tree().expandNode(teiidInstance, "Data Sources"); item.getNode(datasource); * return true; } catch (WidgetNotFoundException e) { return false; } } */ /** * Previous to Kepler * * @param teiidInstance * @param vdb * @return */ /* * @Deprecated public boolean containsVDB(String teiidInstance, String vdb) { SWTBot bot = new SWTWorkbenchBot(); * try { SWTBotTreeItem item = bot.tree().expandNode(teiidInstance, "VDBs"); item.getNode(vdb); return true; //} * catch (WidgetNotFoundException e) { } catch (SWTLayerException ex){ return false; } } */ /** * * @param isKeplerOrMore * @param pathToVDB * path to VDB (the last element is name of VDB) * @return */ public boolean containsVDB(boolean isKeplerOrMore, String... pathToVDB) {// -->move to servermgr // general try { // SWTBotTreeItem item = bot.tree(TEIID_INSTANCE_TREE_INDEX).expandNode(pathToVDB);new // ContextMenu("Refresh");OK; new TeiidInstanceView(true);expand;getNode; new DefaultTreeItem(pathToVDB).select(); return true; } catch (SWTLayerException ex) { } catch (Exception e) { } // add [default] (in case of more servers) try { String[] newPath = { pathToVDB[0], pathToVDB[1], pathToVDB[2] + " [default]", pathToVDB[3], pathToVDB[4] }; new DefaultTreeItem(newPath).select(); return true; } catch (Exception ex) { } // remove [default] (in case of one server) try { String[] newPath = { pathToVDB[0], pathToVDB[1], pathToVDB[2].substring(0, pathToVDB[2].indexOf(" ")), pathToVDB[3], pathToVDB[4] }; new DefaultTreeItem(newPath).select(); return true; } catch (Exception ex) { return false; } } /** * Previous to Kepler * * @param name * @return */ /* * @Deprecated public boolean containsTeiidInstance(String name) { SWTBot bot = new SWTWorkbenchBot(); try { * bot.tree().getTreeItem(name); return true; } catch (WidgetNotFoundException e) { return false; } } */ public void setDefaultTeiidInstance(String teiidInstanceUrl) {// cp to servermgr new GuidesView().chooseAction("Teiid", "Set the Default JBoss / Teiid Instance"); new DefaultShell("Server Selection"); new DefaultCombo().setSelection(teiidInstanceUrl); new PushButton("OK").click(); try { new DefaultShell("Change of Teiid Version"); new PushButton("Yes").click();// save all opened editors } catch (Exception ex) { // dialog doesn't apper if restart of server precedes setup of default teiid instance System.err.println(ex.getCause() + "," + ex.getMessage()); } try { new DefaultShell("Default Server Changed"); new PushButton("OK").click();// confirm change of default server } catch (Exception ex) { // not shown in some cases System.err.println(ex.getCause() + "," + ex.getMessage()); } } public void startServer(String serverName) {// --copy to servermgr for servers view Server server = new ServersView().getServer(serverName); server.start(); new WaitUntil(new ServerHasState(serverName), TimePeriod.LONG); } public void stopServer(String serverName) {// --> server mgr Server server = new ServersView().getServer(serverName); log.info("Stopping server " + server.getLabel().getName()); ServerState state = server.getLabel().getState(); if (!ServerState.STARTING.equals(state) && !state.isRunningState()) { throw new ServersViewException("Cannot stop server because it not running"); } try { new DefaultTreeItem(serverName + " [Started, Synchronized]").select(); } catch (Exception ex) { new DefaultTreeItem(serverName + " [Started]").select(); } new ContextMenu("Stop").select(); AbstractWait.sleep(TimePeriod.VERY_LONG); // new WaitUntil(new ServerHasState(serverName), TimePeriod.LONG); new WaitWhile(new JobIsRunning(), TimePeriod.LONG); } }