// ============================================================================ // // 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 org.talend.cwm.relational.TdSqlDataType; import org.talend.cwm.relational.util.RelationalSwitch; import orgomg.cwm.objectmodel.core.DataType; import orgomg.cwm.objectmodel.core.Package; import orgomg.cwm.resource.relational.NamedColumnSet; /** * DOC scorreia class global comment. Detailled comment */ public class UpdateTdRelationalSwitch extends RelationalSwitch<Boolean> { private UpdateRelationalSwitch updateRelationalSwitch = new UpdateRelationalSwitch(); private EObject recentElement; public void setRightElement(EObject rightElement) { this.recentElement = rightElement; this.updateRelationalSwitch.setRightElement(rightElement); } /** * DOC xqliu Comment method "setLeftElement". */ public void setLeftElement(EObject rightElement) { this.updateRelationalSwitch.setLeftElement(rightElement); } @Override public Boolean caseDataType(DataType object) { return super.caseDataType(object); } /** * @deprecated * @param object * @return */ @Deprecated public Boolean casePackage(Package object) { if (recentElement instanceof Package) { Package pkg = (Package) recentElement; object.setName(pkg.getName()); return true; } return false; } @Override public Boolean caseNamedColumnSet(NamedColumnSet object) { Boolean updated = false; if (this.recentElement instanceof NamedColumnSet) { // update name object.setName(((NamedColumnSet) recentElement).getName()); updated = true; } return updated; } @Override public Boolean caseTdSqlDataType(TdSqlDataType object) { if (recentElement instanceof TdSqlDataType) { TdSqlDataType datatype = (TdSqlDataType) recentElement; object.setName(datatype.getName()); object.setNumericPrecision(datatype.getNumericPrecision()); object.setJavaDataType(datatype.getJavaDataType()); return true; } return false; } @Override public Boolean defaultCase(EObject object) { return this.updateRelationalSwitch.doSwitch(object); } @Override public Boolean caseTdColumn(TdColumn object) { if (recentElement instanceof TdColumn) { TdColumn c = (TdColumn) recentElement; object.setName(c.getName()); object.setLength(c.getLength()); // MOD klliu update the c.getJavaType() object.getSqlDataType().setJavaDataType(c.getSqlDataType().getJavaDataType()); // ADD msjian TDQ-8546: fix the oracle nullable wrong after reload column list object.setNullable(c.isNullable()); return true; } return false; } }