/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.transformation.ui.util;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.ecore.EObject;
import org.teiid.core.designer.util.CoreArgCheck;
import org.teiid.designer.core.util.INewModelObjectHelper;
import org.teiid.designer.core.workspace.ModelResource;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.designer.ui.viewsupport.ModelUtilities;
/**
* @since 8.0
*/
public class TransformationUiNewModelObjectHelper implements INewModelObjectHelper {
/**
* @since 4.3
*/
public TransformationUiNewModelObjectHelper() {
super();
}
/**
* @see org.teiid.designer.core.util.INewModelObjectHelper#canHelpCreate(java.lang.Object)
* @since 4.3
*/
@Override
public boolean canHelpCreate( Object newObject ) {
CoreArgCheck.isNotNull(newObject);
// First case is a standard virtual table
// If the createdObject is VirtualTable, set supportsUpdate to false
if (newObject != null && newObject instanceof EObject) {
EObject newEObject = (EObject)newObject;
return isVirtualTable(newEObject);
}
return false;
}
private boolean isVirtualTable( EObject newEObject ) {
if (TransformationHelper.isVirtual(newEObject)) {
// If the createdObject is VirtualTable, set supportsUpdate to false & create T-Root
if (TransformationHelper.isSqlTable(newEObject) && !TransformationHelper.isXmlDocument(newEObject)
&& !TransformationHelper.isMappingClass(newEObject)) {
return true;
} else if (TransformationHelper.isSqlProcedure(newEObject)) {
return true;
}
}
return false;
}
/**
* @see org.teiid.designer.core.util.INewModelObjectHelper#helpCreate(java.lang.Object, Map)
* @since 4.3
*/
@Override
public boolean helpCreate( Object newObject,
Map properties,
List<EObject> references ) {
CoreArgCheck.isNotNull(newObject);
if (newObject instanceof EObject) {
EObject newTarget = (EObject)newObject;
if (isVirtualTable(newTarget)) {
ModelResource mr = ModelUtilities.getModelResourceForModelObject(newTarget);
if (mr != null && !diagramExists(newTarget, mr)) {
TransformationDiagramUtil.createTransformationDiagram(newTarget, mr, true);
}
}
}
return true;
}
private boolean diagramExists( EObject target,
ModelResource modelResource ) {
return TransformationDiagramUtil.getTransformationDiagram(modelResource, target, false, false) != null;
}
}