// ============================================================================ // // 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.XSDConstrainingFacet; import org.eclipse.xsd.XSDFacet; import org.eclipse.xsd.util.XSDSchemaBuildingTools; 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.utils.IConstants; import com.amalto.workbench.utils.Util; public abstract class SimpleTypeFacetCommitHandler extends CommitHandler<SimpleTypeWrapper> { protected String facetName = "";//$NON-NLS-1$ public SimpleTypeFacetCommitHandler(SimpleTypeWrapper submittedObj, String facetName) { super(submittedObj); this.facetName = facetName; } @Override protected boolean doSubmit() throws CommitException { return getCommitHelper().doCommit(facetName); } @Override protected void validateCommit() throws CommitValidationException { getCommitHelper().validateCommit(facetName); } protected abstract XSDFacet[] getOldFacets(); protected abstract XSDConstrainingFacet creatNewFacet(); protected abstract SimpleTypeFacetCommitHandlerHelper getCommitHelper(); } class SimpleTypeFacetCommitHandler_FractionDigits extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_FractionDigits(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_FRACTIONDIGITS); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getFractionDigitsFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDFractionDigitsFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_TotalDigits extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_TotalDigits(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_TOTALDIGITS); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getTotalDigitsFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDTotalDigitsFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_MaxLength extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_MaxLength(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_MAXLENGTH); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getMaxLengthFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDMaxLengthFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_MinLength extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_MinLength(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_MINLENGTH); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getMinLengthFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDMinLengthFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_Length extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_Length(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_LENGTH); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getLengthFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDLengthFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_Enum extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_Enum(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_ENUM); } @Override protected XSDFacet[] getOldFacets() { return getCommitedObj().getXSDSimpleType().getEnumerationFacets().toArray(new XSDFacet[0]); } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDEnumerationFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForStringArrayFacet(this); } } class SimpleTypeFacetCommitHandler_Pattern extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_Pattern(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_PATTERN); } @Override protected XSDFacet[] getOldFacets() { return getCommitedObj().getXSDSimpleType().getPatternFacets().toArray(new XSDFacet[0]); } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDPatternFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForStringArrayFacet(this); } } class SimpleTypeFacetCommitHandler_WhiteSpace extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_WhiteSpace(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_WHITESPACE); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getWhiteSpaceFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDWhiteSpaceFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { return SimpleTypeFacetCommitHandlerHelper.createHelperForStringFacet(this); } } class SimpleTypeFacetCommitHandler_MaxExclusive extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_MaxExclusive(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_MAXEXCLUSIVE); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getMaxExclusiveFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDMaxExclusiveFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { if (Util.isDouble(getCommitedObj().getNewBaseType()) || Util.isFloat(getCommitedObj().getNewBaseType()) || Util.isDecimal(getCommitedObj().getNewBaseType())) return SimpleTypeFacetCommitHandlerHelper.createHelperForDoubleFacet(this); return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_MaxInclusive extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_MaxInclusive(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_MAXINCLUSIVE); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getMaxInclusiveFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDMaxInclusiveFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { if (Util.isDouble(getCommitedObj().getNewBaseType()) || Util.isFloat(getCommitedObj().getNewBaseType()) || Util.isDecimal(getCommitedObj().getNewBaseType())) return SimpleTypeFacetCommitHandlerHelper.createHelperForDoubleFacet(this); return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_MinExclusive extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_MinExclusive(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_MINEXCLUSIVE); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getMinExclusiveFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDMinExclusiveFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { if (Util.isDouble(getCommitedObj().getNewBaseType()) || Util.isFloat(getCommitedObj().getNewBaseType()) || Util.isDecimal(getCommitedObj().getNewBaseType())) return SimpleTypeFacetCommitHandlerHelper.createHelperForDoubleFacet(this); return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } } class SimpleTypeFacetCommitHandler_MinInclusive extends SimpleTypeFacetCommitHandler { public SimpleTypeFacetCommitHandler_MinInclusive(SimpleTypeWrapper submittedObj) { super(submittedObj, IConstants.SIMPLETYPE_FACETNAME_MININCLUSIVE); } @Override protected XSDFacet[] getOldFacets() { return new XSDFacet[] { getCommitedObj().getXSDSimpleType().getMinInclusiveFacet() }; } @Override protected XSDConstrainingFacet creatNewFacet() { return XSDSchemaBuildingTools.getXSDFactory().createXSDMinInclusiveFacet(); } @Override protected SimpleTypeFacetCommitHandlerHelper getCommitHelper() { if (Util.isDouble(getCommitedObj().getNewBaseType()) || Util.isFloat(getCommitedObj().getNewBaseType()) || Util.isDecimal(getCommitedObj().getNewBaseType())) return SimpleTypeFacetCommitHandlerHelper.createHelperForDoubleFacet(this); return SimpleTypeFacetCommitHandlerHelper.createHelperForIntFacet(this); } }