// ============================================================================ // // 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 com.amalto.workbench.detailtabs.sections.handlers; import org.eclipse.xsd.XSDSimpleTypeDefinition; import com.amalto.workbench.detailtabs.exception.CommitException; import com.amalto.workbench.detailtabs.exception.CommitValidationException; import com.amalto.workbench.detailtabs.sections.model.simpletype.SimpleTypeWrapper; import com.amalto.workbench.i18n.Messages; public class SimpleTypeBaseTypeCommitHandler extends CommitHandler<SimpleTypeWrapper> { public SimpleTypeBaseTypeCommitHandler(SimpleTypeWrapper submittedObj) { super(submittedObj); } @Override protected void validateCommit() throws CommitValidationException { XSDSimpleTypeDefinition newBaseType = getCommitedObj().getSchema().resolveSimpleTypeDefinition( getCommitedObj().getSchema().getSchemaForSchemaNamespace(), getCommitedObj().getNewBaseTypeName()); if (newBaseType == null) throw new CommitValidationException(Messages.bind(Messages.SimpleTypeBaseTypeCommitHandler_ExceptionInfo1, getCommitedObj().getNewBaseTypeName())); if (newBaseType.equals(getCommitedObj())) throw new CommitValidationException(Messages.SimpleTypeBaseTypeCommitHandler_ExceptionInfo2); } @Override protected boolean doSubmit() throws CommitException { if (getCommitedObj().getXSDSimpleType().getBaseType().getName().equals(getCommitedObj().getNewBaseTypeName())) return false; XSDSimpleTypeDefinition newBaseType = getCommitedObj().getNewBaseType(); if (!getCommitedObj().isBaseTypeExists()) { newBaseType = getCommitedObj().getSchema().resolveSimpleTypeDefinition(getCommitedObj().getNewBaseTypeName()); newBaseType.setBaseTypeDefinition(getCommitedObj().getNewBaseType()); getCommitedObj().getSchema().getContents().add(newBaseType); } getCommitedObj().getXSDSimpleType().setBaseTypeDefinition(newBaseType); getCommitedObj().getXSDSimpleType().getFacetContents().removeAll(getCommitedObj().getXSDSimpleType().getFacetContents()); getCommitedObj().getXSDSimpleType().updateElement(); return true; } }