/*
* 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.mapping.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.mapping.ui.diagram.MappingDiagramProvider;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.designer.ui.viewsupport.ModelUtilities;
/**
* @since 8.0
*/
public class MappingUiNewModelObjectHelper implements INewModelObjectHelper {
private static MappingDiagramProvider mappingDiagramProvider;
/**
* @since 5.0
*/
public MappingUiNewModelObjectHelper() {
super();
mappingDiagramProvider = new MappingDiagramProvider();
}
/**
* @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 mapping class table
if (newObject != null && newObject instanceof EObject) {
EObject newEObject = (EObject)newObject;
return isMappingClass(newEObject);
}
return false;
}
private boolean isMappingClass( EObject newEObject ) {
if (TransformationHelper.isVirtual(newEObject)) {
// If the createdObject is mapping class
if (TransformationHelper.isSqlTable(newEObject) && !TransformationHelper.isXmlDocument(newEObject)
&& TransformationHelper.isMappingClass(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 (isMappingClass(newTarget)) {
ModelResource mr = ModelUtilities.getModelResourceForModelObject(newTarget);
if (mr != null && !diagramExists(newTarget, mr)) {
mappingDiagramProvider.getDetailedMappingDiagram(newTarget);
}
}
}
return true;
}
private boolean diagramExists( EObject target,
ModelResource modelResource ) {
return mappingDiagramProvider.hasDetailedMappingDiagram(modelResource, target);
}
}