/*
* 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.ui.actions.workers;
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.metamodels.relational.AccessPattern;
import org.teiid.designer.metamodels.relational.Column;
import org.teiid.designer.metamodels.relational.ForeignKey;
import org.teiid.designer.metamodels.relational.PrimaryKey;
import org.teiid.designer.metamodels.relational.UniqueConstraint;
public class RelationalReferenceNewModelObjectHelper implements INewModelObjectHelper {
/**
* @since 4.3
*/
public RelationalReferenceNewModelObjectHelper() {
super();
}
/*
* (non-Javadoc)
* @See org.teiid.designer.core.util.INewModelObjectHelper#canHelpCreate(java.lang.Object)
*/
@Override
public boolean canHelpCreate( Object newObject ) {
CoreArgCheck.isNotNull(newObject);
// Supported Objects
// PrimaryKey
// ForeignKey
// UniqueConstraint
// AccessPattern
// If the createdObject is VirtualTable, set supportsUpdate to false
if (newObject instanceof EObject) {
if( newObject instanceof UniqueConstraint ||
newObject instanceof PrimaryKey ||
newObject instanceof AccessPattern ||
newObject instanceof ForeignKey ) {
return true;
}
}
return false;
}
/**
*
*/
public Object getTransactionSetting() {
return null;
}
/*
* (non-Javadoc)
* @See org.teiid.designer.core.util.INewModelObjectHelper#helpCreate(java.lang.Object, java.util.Map)
*/
@SuppressWarnings("rawtypes")
@Override
public boolean helpCreate( Object newObject,
Map properties,
List<EObject> references ) {
CoreArgCheck.isNotNull(newObject);
if (references==null || references.isEmpty() ) return false;
if (newObject instanceof AccessPattern) {
for( EObject eObj : references ) {
if( eObj instanceof Column ) {
((AccessPattern)newObject).getColumns().add(eObj);
}
}
} else if (newObject instanceof PrimaryKey) {
for( EObject eObj : references ) {
if( eObj instanceof Column ) {
((PrimaryKey)newObject).getColumns().add(eObj);
}
}
} else if (newObject instanceof UniqueConstraint) {
for( EObject eObj : references ) {
if( eObj instanceof Column ) {
((UniqueConstraint)newObject).getColumns().add(eObj);
}
}
} else if (newObject instanceof ForeignKey) {
for( EObject eObj : references ) {
if( eObj instanceof Column ) {
((ForeignKey)newObject).getColumns().add(eObj);
}
}
}
return false;
}
}