package org.jboss.tools.teiid.reddeer.dialog; import java.util.ArrayList; import java.util.List; import org.jboss.reddeer.common.logging.Logger; import org.jboss.reddeer.common.wait.AbstractWait; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.ShellWithTextIsActive; import org.jboss.reddeer.swt.api.TableItem; import org.jboss.reddeer.swt.impl.button.CheckBox; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.group.DefaultGroup; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.swt.impl.table.DefaultTable; import org.jboss.reddeer.swt.impl.text.LabeledText; import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem; import org.jboss.tools.teiid.reddeer.condition.LabelWithTextIsAvailable; public class GenerateVdbArchiveDialog extends AbstractDialog { private static final Logger log = Logger.getLogger(GenerateVdbArchiveDialog.class); public GenerateVdbArchiveDialog() { super("Generate VDB Archive"); log.info("Generate vdb archive dialog is opened"); } public GenerateVdbArchiveDialog setVersion(String version) { log.info("Set version to: '" + version + "'"); activate(); new LabeledText("Version").setText(version); return this; } public GenerateVdbArchiveDialog setLocation(String... location) { log.info("Set location to: '" + location + "'"); activate(); new PushButton("Change...").click(); new DefaultShell("Select a Folder"); new DefaultTreeItem(location).select(); new PushButton("OK").click(); activate(); return this; } public GenerateVdbArchiveDialog setArchiveName(String name) { log.info("Set archive vdb name to: '" + name + "'"); activate(); new LabeledText("Archive VDB Name").setText(name); return this; } public GenerateVdbArchiveDialog setFileName(String name) { log.info("Set file name to: '" + name + "'"); activate(); new LabeledText("VDB Archive File Name").setText(name); return this; } public GenerateVdbArchiveDialog setDdlAsDescription(boolean checked) { log.info("Set parsed DDL as the generated tables' descriptions is : '" + checked + "'"); activate(); CheckBox checkBox = new CheckBox("Set parsed DDL as the generated tables' descriptions"); if(checked != checkBox.isChecked()){ checkBox.click(); } return this; } public GenerateVdbArchiveDialog setOvewriteExisting(boolean checked) { log.info("Overwrite existing files is : '" + checked + "'"); activate(); CheckBox checkBox = new CheckBox("Overwrite existing files"); if(checked != checkBox.isChecked()){ checkBox.click(); } return this; } public GenerateVdbArchiveDialog generate() { log.info("Generate archive"); activate(); new PushButton("Generate").click(); new WaitWhile(new LabelWithTextIsAvailable("Converting Dynamic Vdb to Xmi Vdb")); if(new ShellWithTextIsActive("Table 'Supports Update' Property Changed").test()){ new PushButton("OK").click(); } return this; } public List<String> getSourceModels() { return getModels("Source Models"); } public List<String> getViewModels() { return getModels("View Models"); } private List<String> getModels(String group) { List<String> result = new ArrayList<String>(); for (TableItem it : new DefaultTable(new DefaultGroup(group)).getItems()) { result.add(it.getText()); } return result; } public GenerateVdbArchiveDialog next(){ log.info("Go to next dialog page"); new PushButton("Next >").click(); return this; } @Override public void finish() { log.info("Finishing '" + title + "' Dialog"); activate(); new PushButton("Finish").click(); new WaitWhile(new ShellWithTextIsActive(title), TimePeriod.NORMAL); AbstractWait.sleep(TimePeriod.SHORT); } }