Skip to content

Commit

Permalink
TEIIDDES-3044
Browse files Browse the repository at this point in the history
 * changed stop server action to a server job
 * added a intermediate dialog to select the source table before create
view table dialog displayed. Also checking all columns by default.
  • Loading branch information
blafond committed Jun 8, 2017
1 parent 268d276 commit 0d2cbbf
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@

import java.util.Properties;

import org.eclipse.core.runtime.jobs.IJobManager;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
Expand All @@ -22,6 +25,7 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
Expand All @@ -35,6 +39,8 @@
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.IServer.IOperationListener;
import org.eclipse.wst.server.core.ServerUtil;
import org.eclipse.wst.server.core.internal.Server;
import org.teiid.core.designer.util.StringConstants;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.core.loading.ComponentLoadingManager;
Expand All @@ -54,6 +60,7 @@
import org.teiid.designer.ui.common.util.UiUtil;
import org.teiid.designer.ui.forms.FormUtil;

@SuppressWarnings("restriction")
public class DefaultServerSection implements IManagedLoading {
private FormToolkit toolkit;

Expand Down Expand Up @@ -328,14 +335,37 @@ public void linkActivated(HyperlinkEvent e) {
@Override
public void linkActivated(HyperlinkEvent e) {
try {
((IServer)ModelerCore.getTeiidServerManager().getDefaultServer().getParent()).stop(true);
IServer server = ((IServer)ModelerCore.getTeiidServerManager().getDefaultServer().getParent());

if( server.getServerType() != null && server.canStop().isOK() ) {
stop(server, getSite().getShell());
} else {
MessageDialog.openInformation(getSite().getShell(), "Stop Server Not Available", "some message.............");
}
} catch (Exception ex) {
UiConstants.UTIL.log(ex);
}
}
});
}

public static void stop(IServer server, Shell shell) {

IJobManager jobManager = Job.getJobManager();
Job[] jobs = jobManager.find(ServerUtil.SERVER_JOB_FAMILY);
for (Job j: jobs) {
if (j instanceof Server.StartJob) {
Server.StartJob startJob = (Server.StartJob) j;
if (startJob.getServer().equals(server)) {
startJob.cancel();
return;
}
}
}

server.stop(false);
}

/**
* Required since the server version cannot be loaded on startup due to
* the TeiidServerManager needing to wait for the ServerCore to initialise
Expand Down Expand Up @@ -522,4 +552,5 @@ public void run() {

UiUtil.runInSwtThread(runnable, false);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,8 @@ public void selectionChanged(SelectionChangedEvent event) {
}
}
});

selectAllNodes();

setMessage("Select columns for view");

Expand Down Expand Up @@ -412,10 +414,8 @@ protected void handleBrowseVirtualModel() {

}

validatePage();
}

validatePage();

}

/**
Expand All @@ -424,8 +424,8 @@ protected void handleBrowseVirtualModel() {
protected void handleBrowseSourceTable() {

final Object[] selections = WidgetUtil.showWorkspaceObjectSelectionDialog(
"Select View Model",
"Select view model as the target for your new view",
"Select Source Table",
"Select a table as the input for your new view",
false, null, tableOrViewFilter,
new TableOrViewSelectionValidator(),
new ModelExplorerLabelProvider(),
Expand All @@ -441,14 +441,10 @@ protected void handleBrowseSourceTable() {
if( builder.getView().getName() != null ) {
this.viewNameText.setText(builder.getView().getName());
}
} else {

validatePage();
}

}

validatePage();

}

private boolean validatePage() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,19 @@
import java.util.HashSet;
import java.util.Set;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchWindow;
Expand All @@ -36,8 +41,12 @@
import org.teiid.designer.transformation.ui.Messages;
import org.teiid.designer.transformation.ui.UiConstants;
import org.teiid.designer.transformation.ui.UiPlugin;
import org.teiid.designer.ui.common.util.WidgetUtil;
import org.teiid.designer.ui.editors.ModelEditorManager;
import org.teiid.designer.ui.explorer.ModelExplorerContentProvider;
import org.teiid.designer.ui.explorer.ModelExplorerLabelProvider;
import org.teiid.designer.ui.viewsupport.ModelUtilities;
import org.teiid.designer.ui.viewsupport.ModelWorkspaceViewerFilter;

public class ViewBuilderManager implements RelationalConstants, ISQLConstants {

Expand Down Expand Up @@ -142,6 +151,9 @@ public void addSelectedColumn(RelationalColumn column) {
public void run() {
final IWorkbenchWindow iww = UiPlugin.getDefault().getCurrentWorkbenchWindow();

if( sourceTable == null ) {
queryUserForSourceTable();
}
RelationalModelConverter converter = new RelationalModelConverter();

setView((RelationalViewTable)converter.convert(sourceTable, true));
Expand Down Expand Up @@ -173,7 +185,7 @@ public void run() {

sb.append(SPACE).append(RETURN + TAB + FROM + SPACE).append(modelName + DOT + getSourceTableName());

System.out.println(" SQL = " + sb.toString());
//System.out.println(" SQL = " + sb.toString());

getView().setTransformationSQL(sb.toString());

Expand Down Expand Up @@ -244,5 +256,74 @@ private EObject createViewTableInTxn( ) {

return newTable;
}

/**
* Opens selection dialog
*/
private void queryUserForSourceTable() {

final Object[] selections = WidgetUtil.showWorkspaceObjectSelectionDialog(
"Select Source Table",
"Select a table as the input for your new view",
false, null, tableOrViewFilter,
new TableOrViewSelectionValidator(),
new ModelExplorerLabelProvider(),
new ModelExplorerContentProvider());

if (selections != null && selections.length == 1 ) {
if (selections[0] instanceof EObject) {
EObject sourceTable = (EObject) selections[0];
setSourceTable(sourceTable);
}
}
}

final ViewerFilter tableOrViewFilter = new ModelWorkspaceViewerFilter(true, true, false) {

@Override
public boolean select(final Viewer viewer, final Object parent,
final Object element) {
boolean doSelect = false;
if (element instanceof IResource) {
// If the project is closed, dont show
boolean projectOpen = ((IResource) element).getProject().isOpen();
String projectName = ((IResource) element).getProject().getName();
boolean isSingleProject = false;
if( projectName != null ) {
isSingleProject = projectName.equals(getModelProject().getName());
}
if (projectOpen && isSingleProject) {
// Show open projects
if (element instanceof IProject) {
IProject project = (IProject)element;
try {
doSelect = project.hasNature(ModelerCore.NATURE_ID);
} catch (CoreException e) {
ModelerCore.Util.log(e);
}
} else if (element instanceof IContainer) {
doSelect = true;
// Show webservice model files, and not .xsd files
} else if (element instanceof IFile && ModelUtil.isModelFile((IFile) element)) {
ModelResource theModel = null;
try {
theModel = ModelUtil.getModelResource((IFile) element, true);
} catch (Exception ex) {
ModelerCore.Util.log(ex);
}
if( theModel != null) return true;
} else if( element instanceof EObject) {
doSelect = true;
}
}
} else if (element instanceof IContainer) {
doSelect = true;
} else if( element instanceof EObject ) {
return true;
}

return doSelect;
}
};

}

0 comments on commit 0d2cbbf

Please sign in to comment.