// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.cwm.compare.factory.update;
import org.eclipse.emf.ecore.EObject;
import org.talend.cwm.relational.TdColumn;
import orgomg.cwm.foundation.keysindexes.KeyRelationship;
import orgomg.cwm.foundation.keysindexes.UniqueKey;
import orgomg.cwm.resource.relational.ColumnSet;
import orgomg.cwm.resource.relational.ForeignKey;
import orgomg.cwm.resource.relational.PrimaryKey;
/**
*
* DOC mzhao class global comment. Detailled comment
*/
public class RemoveTdRelationalSwitch extends UpdateRelationalSwitch {
private EObject leftElement;
public void setLeftElement(EObject leftElem) {
leftElement = leftElem;
}
@Override
public Boolean caseForeignKey(ForeignKey object) {
ColumnSet columnSet = (ColumnSet) object.eContainer();
if (columnSet == null) {
return Boolean.FALSE;
}
// MOD zshen 2010.06.10 for feature 12842
TdColumn column = null;
if (leftElement instanceof TdColumn) {
column = (TdColumn) leftElement;
} else {
return Boolean.FALSE;
}
if (object.getFeature().size() <= 1) {
columnSet.getOwnedElement().remove(object);
} else {
object.getFeature().remove(column);
}
column.getKeyRelationship().remove(object);
return Boolean.TRUE;
}
@Override
public Boolean caseKeyRelationship(KeyRelationship object) {
return super.caseKeyRelationship(object);
}
@Override
public Boolean casePrimaryKey(PrimaryKey object) {
ColumnSet columnSet = (ColumnSet) object.eContainer();
if (columnSet == null) {
return Boolean.FALSE;
}
// MOD zshen 2010.06.10 for feature 12842
TdColumn column = null;
if (leftElement instanceof TdColumn) {
column = (TdColumn) leftElement;
} else {
return Boolean.FALSE;
}
if (object.getFeature().size() <= 1) {
columnSet.getOwnedElement().remove(object);
} else {
object.getFeature().remove(column);
}
column.getUniqueKey().remove(object);
return Boolean.TRUE;
}
@Override
public Boolean caseUniqueKey(UniqueKey object) {
return super.caseUniqueKey(object);
}
}