Skip to content

Commit

Permalink
Initial Generate JDG Module feature
Browse files Browse the repository at this point in the history
  • Loading branch information
blafond committed Jun 22, 2016
1 parent 71e6a1d commit afda02e
Show file tree
Hide file tree
Showing 45 changed files with 5,159 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.teiid.core.designer.id.ObjectID;
import org.teiid.core.designer.util.CoreArgCheck;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.core.index.IndexConstants;
Expand Down Expand Up @@ -108,7 +109,10 @@ public String getMaterializedTableId(EObject eObject) {
if( table != null ) {
Table materializedTable = table.getMaterializedTable();
if( materializedTable != null ) {
return ModelerCore.getObjectId(materializedTable).toString();
ObjectID objID = ModelerCore.getObjectId(materializedTable);
if( objID != null) {
return ModelerCore.getObjectId(materializedTable).toString();
}
}
}

Expand Down
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ openTransformationSearchAction.tip=Show Transformation Search Page

createMaterializedViewsAction.name=Create Materialized Views
createMaterializedViewsAction.label=Create Materialized Views
createPojoAction.name=Generate Materialized JDG Module
createPojoAction.label=Generate Materialized JDG Module

designerSearchSubMenu.label=Teiid Designer

teiidMetadataImportWizard.name=File Source (Flat) >> Source and View Model
Expand Down
10 changes: 10 additions & 0 deletions plugins/org.teiid.designer.transformation.ui/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,16 @@
label="%createMaterializedViewsAction.label">
</specialAction>
</extension>
<!-- Action contributed to generate POJO from view -->
<extension
id="CreatePojoAction"
name="%createPojoAction.name"
point="org.teiid.designer.ui.modelObjectSpecialAction">
<specialAction
name="org.teiid.designer.transformation.ui.actions.CreatePojoAction"
label="%createPojoAction.label">
</specialAction>
</extension>
<extension
point="org.teiid.designer.ui.common.editorPreferences">
<editorPreferenceComponent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ class PC {
String SCHEMA_ELEMENT = PC.OBJ16 + "XSDElementDeclaration.gif"; //$NON-NLS-1$
String SCHEMA_ATTRIBUTE = PC.OBJ16 + "XSDAttributeDeclaration.gif"; //$NON-NLS-1$

String VIRTUAL_RELATIONAL_TABLE = PC.OBJ16 + "virtual-relational-table.png"; //$NON-NLS-1$
String RELATIONAL_TABLE = PC.OBJ16 + "relational-table.png"; //$NON-NLS-1$
String SOURCE_MODEL = PC.OBJ16 + "source-model.gif"; //$NON-NLS-1$
String VIEW_MODEL = PC.OBJ16 + "view-model.gif"; //$NON-NLS-1$
String FOLDER = PC.OBJ16 + "folder.png"; //$NON-NLS-1$
}

interface SQLPanels {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
package org.teiid.designer.transformation.ui.actions;

import java.util.Collection;
import java.util.Iterator;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.teiid.designer.core.workspace.ModelResource;
import org.teiid.designer.transformation.ui.UiConstants;
import org.teiid.designer.transformation.ui.UiPlugin;
import org.teiid.designer.transformation.ui.wizards.CreateMaterializedViewWizard;
import org.teiid.designer.transformation.ui.wizards.jdg.CreatePojoWizard;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.designer.ui.PluginConstants;
import org.teiid.designer.ui.actions.SortableSelectionAction;
import org.teiid.designer.ui.common.eventsupport.SelectionUtilities;
import org.teiid.designer.ui.editors.ModelEditorManager;
import org.teiid.designer.ui.viewsupport.ModelIdentifier;
import org.teiid.designer.ui.viewsupport.ModelUtilities;

public class CreatePojoAction extends SortableSelectionAction {

// public static final String OPEN_EDITOR_TITLE = UiConstants.Util.getString("CreatePojoAction.openModelEditorTitle"); //$NON-NLS-1$
// public static final String OPEN_EDITOR_MESSAGE = UiConstants.Util.getString("CreatePojoAction.openModelEditorMessage"); //$NON-NLS-1$
// public static final String ALWAY_FORCE_OPEN_MESSAGE = UiConstants.Util.getString("CreatePojoAction.alwaysForceOpenMessage"); //$NON-NLS-1$

public CreatePojoAction() {
super();
setImageDescriptor(UiPlugin.getDefault().getImageDescriptor(
org.teiid.designer.transformation.ui.PluginConstants.Images.CREATE_MATERIALIZED_VIEWS_ICON));
}

/**
*
*/
@Override
public boolean isApplicable( final ISelection selection ) {
return isValidSelection(selection);
}

/**
* Valid selections include only Virtual Relational Tables.
*
* @return
* @since 4.1
*/
@Override
protected boolean isValidSelection( final ISelection selection ) {
boolean isValid = true;
if (SelectionUtilities.isEmptySelection(selection) || !SelectionUtilities.isAllEObjects(selection)) isValid = false;

if (isValid ) {
final Collection objs = SelectionUtilities.getSelectedEObjects(selection);
final Iterator selections = objs.iterator();
while (selections.hasNext() && isValid) {
final EObject next = (EObject)selections.next();

if ( isRelationalVirtualTable(next) && TransformationHelper.isVirtualSqlTable(next) ) {
isValid = true;
} else isValid = false;

// stop processing if no longer valid:
if (!isValid) break;
} // endwhile -- all selected
} else isValid = false;

return isValid;
}

private boolean isRelationalVirtualTable( EObject eObject ) {
// Do a quick object check
if( TransformationHelper.isVirtualSqlTable(eObject)) {
// make sure it's a virtual relational model
final Resource resource = eObject.eResource();
if (resource != null ) {
ModelResource mr = ModelUtilities.getModelResource(resource, true);
return ModelIdentifier.isRelationalViewModel(mr);
}
}
return false;
}

@Override
public void run() {
final IWorkbenchWindow iww = UiPlugin.getDefault().getCurrentWorkbenchWindow();

// Present the user a dialog to select or create a new physical relational model to store the materialized views in
//
// EObject firstEObj = (EObject)SelectionUtilities.getSelectedEObjects(getSelection()).get(0);
//
// boolean userCancelled = false;
//
// if (!ModelEditorManager.isOpen(firstEObj)) {
// // Let's get the preferenced value for auto-open-editor
// String autoOpen = UiPlugin.getDefault().getPreferenceStore().getString(PluginConstants.Prefs.General.AUTO_OPEN_EDITOR_IF_NEEDED);
// // if the preference is to auto-open, then set forceOpen so we don't prompt the user
// boolean forceOpen = false;
// if (autoOpen.equals(MessageDialogWithToggle.ALWAYS)) {
// forceOpen = true;
// } else if (autoOpen.equals(MessageDialogWithToggle.NEVER)) {
// forceOpen = false;
// }
//
// if (!forceOpen) {
// // can't modify a property value on an EObject if it's ModelEditor is not open.
// Shell shell = UiPlugin.getDefault().getCurrentWorkbenchWindow().getShell();
// MessageDialogWithToggle tDialog = MessageDialogWithToggle.openYesNoCancelQuestion(shell,
// OPEN_EDITOR_TITLE,
// OPEN_EDITOR_MESSAGE,
// ALWAY_FORCE_OPEN_MESSAGE,
// false,
// UiPlugin.getDefault().getPreferenceStore(),
// PluginConstants.Prefs.General.AUTO_OPEN_EDITOR_IF_NEEDED);
// int result = tDialog.getReturnCode();
// switch (result) {
// // yes, ok
// case IDialogConstants.YES_ID:
// case IDialogConstants.OK_ID:
// forceOpen = true;
// break;
// // no
// case IDialogConstants.NO_ID:
// forceOpen = false;
// userCancelled = true;
// break;
// }
// }
//
// if (forceOpen) {
// ModelEditorManager.open(firstEObj, true);
// }
// }
// if( userCancelled ) {
// return;
//
// }

final CreatePojoWizard wizard = new CreatePojoWizard();
wizard.init(iww.getWorkbench(), new StructuredSelection(SelectionUtilities.getSelectedObjects(getSelection())));
final WizardDialog dialog = new WizardDialog(wizard.getShell(), wizard);
final int rc = dialog.open();

if( rc == Window.OK ) {

}

//runAsJob(selectedTables);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -551,6 +551,16 @@ CreateMaterializedViewWizard.targetLocationLabel=Target Location
CreateMaterializedViewWizard.virtualTablesGroup=Selected Virtual Tables
CreateMaterializedViewWizard.progressMonitorTitle=Creating Materialized View Model

CreatePojoWizard.title=Generate Materialized JDG Module
CreatePojoWizard.pageTitle=Materialize view, create POJO and generate Materialized JDG Module
CreatePojoWizard.progressMonitorTitle=Generating Materialized JDG Module
CreatePojoWizard.errorCreatingMaterializedViews=Error creating materialized views
CreatePojoWizard.initialMessage=Select target materialized source model.....
CreatePojoWizard.modelLabel=Materialized Source Model
CreatePojoWizard.undefined=<undefined>
CreatePojoWizard.targetLocationLabel=Target Location
CreatePojoWizard.virtualTablesGroup=Selected View

#-----------------RelationalModelSelectorDialog-----------------
RelationalModelSelectorDialog.title=Relational Model Selector Dialog
RelationalModelSelectorDialog.noName.message=
Expand Down

0 comments on commit afda02e

Please sign in to comment.