// ============================================================================ // // 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.XSDCompositor; import com.amalto.workbench.detailtabs.exception.CommitException; import com.amalto.workbench.detailtabs.exception.CommitValidationException; import com.amalto.workbench.detailtabs.sections.model.complextype.ComplexTypeWrapper; import com.amalto.workbench.i18n.Messages; import com.amalto.workbench.utils.Util; public class ComplexTypeWrapperCommitHandler extends CompositeCommitHandler<ComplexTypeWrapper> { public ComplexTypeWrapperCommitHandler(ComplexTypeWrapper submittable) { super(submittable); } @SuppressWarnings("unchecked") @Override protected CommitHandler<ComplexTypeWrapper>[] createChildHandlers() { return new CommitHandler[] { new ComplexTypeNameCommitHandler(getCommitedObj()), new ComplexTypeGroupTypeCommitHandler(getCommitedObj()), new ComplexTypeExtendsCommitHandler(getCommitedObj()), new ComplexTypeAbstractCommitHandler(getCommitedObj()) }; } } class ComplexTypeNameCommitHandler extends CommitHandler<ComplexTypeWrapper> { public ComplexTypeNameCommitHandler(ComplexTypeWrapper submittedObj) { super(submittedObj); } @Override protected void validateCommit() throws CommitValidationException { if (getCommitedObj().getNewTypeName() == null || "".equals(getCommitedObj().getNewTypeName().trim()))//$NON-NLS-1$ throw new CommitValidationException(Messages.ComplexTypeXXHandler_CannotbeEmpty); if (getCommitedObj().getNewTypeName().replaceAll("\\s", "").length() != getCommitedObj().getNewTypeName().length())//$NON-NLS-1$//$NON-NLS-2$ throw new CommitValidationException(Messages.ComplexTypeXXHandler_CannotContainEmpty); } @Override protected boolean doSubmit() throws CommitException { return getCommitedObj().changeTypeName(); } } class ComplexTypeAbstractCommitHandler extends CommitHandler<ComplexTypeWrapper> { public ComplexTypeAbstractCommitHandler(ComplexTypeWrapper submittedObj) { super(submittedObj); } @Override protected void validateCommit() throws CommitValidationException { } @Override protected boolean doSubmit() throws CommitException { return getCommitedObj().changeAbstract(); } } class ComplexTypeExtendsCommitHandler extends CommitHandler<ComplexTypeWrapper> { public ComplexTypeExtendsCommitHandler(ComplexTypeWrapper submittedObj) { super(submittedObj); } @Override protected void validateCommit() throws CommitValidationException { if (getCommitedObj().getNewExtends() != null && getCommitedObj().getNewExtends().equals(getCommitedObj().getCurComplexType())) throw new CommitValidationException(Messages.ComplexTypeXXHandler_CBaseTypeCannotbeItself); if (Util.getParentTypes(getCommitedObj().getNewExtends()).contains(getCommitedObj().getCurComplexType())) throw new CommitValidationException(Messages.bind(Messages.ComplexTypeXXHandler_ValidExceptionInfo, getCommitedObj() .getNewExtends().getName(), getCommitedObj().getCurComplexType().getName())); if (!getCommitedObj().isDefaultExtends()) { XSDCompositor newBaseGroupType = Util.getComplexTypeGroupType(getCommitedObj().getNewExtends()); XSDCompositor newGroupType = getCommitedObj().getNewGroupType(); if (newBaseGroupType != null && newBaseGroupType.equals(XSDCompositor.ALL_LITERAL)) throw new CommitValidationException(Messages.bind(Messages.ComplexTypeXXHandler_ValidExceptionInfo1, getCommitedObj().getNewExtends().getName())); if (newGroupType != null && newGroupType.equals(XSDCompositor.ALL_LITERAL)) throw new CommitValidationException(Messages.ComplexTypeXXHandler_ValidExceptionInfo2); if (newBaseGroupType != null && !newBaseGroupType.equals(newGroupType)) throw new CommitValidationException(Messages.bind(Messages.ComplexTypeXXHandler_ValidExceptionInfo3, getCommitedObj().getNewExtends().getName())); } } @Override protected boolean doSubmit() throws CommitException { return getCommitedObj().changeExtends(); } } class ComplexTypeGroupTypeCommitHandler extends CommitHandler<ComplexTypeWrapper> { public ComplexTypeGroupTypeCommitHandler(ComplexTypeWrapper submittedObj) { super(submittedObj); } @Override protected void validateCommit() throws CommitValidationException { if (getCommitedObj().getNewGroupType() == null) throw new CommitValidationException(Messages.ComplexTypeXXHandler_ValidExceptionInfo4); } @Override protected boolean doSubmit() throws CommitException { return getCommitedObj().changeGroupType(); } }