// ============================================================================ // // 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 com.amalto.workbench.detailtabs.exception.CommitException; import com.amalto.workbench.detailtabs.exception.CommitValidationException; import com.amalto.workbench.detailtabs.sections.model.annotationinfo.AnnotaionInfo; import com.amalto.workbench.utils.XSDAnnotationsStructure; public abstract class AnnotationInfoCommitHandler<T extends AnnotaionInfo> extends CommitHandler<T> { public AnnotationInfoCommitHandler(T submittedObj) { super(submittedObj); } @Override protected void validateCommit() throws CommitValidationException { } @Override protected boolean doSubmit() throws CommitException { XSDAnnotationsStructure xsdAnnoStruct = getXSDAnnotationStruct(); return doSubmit_Removal(xsdAnnoStruct) | doSubmit_Update(xsdAnnoStruct) | doSubmit_Add(xsdAnnoStruct); } protected XSDAnnotationsStructure getXSDAnnotationStruct() { return new XSDAnnotationsStructure(getCommitedObj().getSourceXSDComponent()); } protected boolean doSubmit_Removal(XSDAnnotationsStructure xsdAnnoStruct) { Object[] needRemovedObjs = getNeedRemovedObjs(); for (Object eachNeedRemovedObj : needRemovedObjs) { doRemoveEachObj(xsdAnnoStruct, eachNeedRemovedObj); } return (needRemovedObjs.length > 0); } protected boolean doSubmit_Update(XSDAnnotationsStructure xsdAnnoStruct) { Object[] needUpdatedObjs = getNeedUpdatedObjs(); for (Object eachNeedUpdateedObject : needUpdatedObjs) { doUpdateEachObj(xsdAnnoStruct, eachNeedUpdateedObject); } return needUpdatedObjs.length > 0; } protected boolean doSubmit_Add(XSDAnnotationsStructure xsdAnnoStruct) { Object[] needAddedObjects = getNeedAddedObjs(); for (Object eachNeedAddedObject : needAddedObjects) { doAddEachObj(xsdAnnoStruct, eachNeedAddedObject); } return needAddedObjects.length > 0; } protected Object[] getNeedRemovedObjs() { return new Object[0]; } protected Object[] getNeedUpdatedObjs() { return new Object[0]; } protected Object[] getNeedAddedObjs() { return new Object[0]; } protected void doRemoveEachObj(XSDAnnotationsStructure xsdAnnoStruct, Object eachNeedRemovedObj) { } protected void doUpdateEachObj(XSDAnnotationsStructure xsdAnnoStruct, Object eachNeedUpdatedObj) { } protected void doAddEachObj(XSDAnnotationsStructure xsdAnnoStruct, Object eachNeedAddedObj) { } }