/* license-start
*
* Copyright (C) 2008 - 2013 Crispico, <http://www.crispico.com/>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details, at <http://www.gnu.org/licenses/>.
*
* Contributors:
* Crispico - Initial API and implementation
*
* license-end
*/
package com.crispico.flower.mp.codesync.code.adapter;
import java.util.List;
import com.crispico.flower.mp.codesync.base.ModelAdapterFactory;
import com.crispico.flower.mp.codesync.base.ModelAdapterFactorySet;
import com.crispico.flower.mp.codesync.merge.SyncElementModelAdapter;
import com.crispico.flower.mp.model.codesync.AstCacheElement;
import com.crispico.flower.mp.model.codesync.CodeSyncElement;
/**
* Mapped to {@link CodeSyncElement}. Delegates to the internal {@link #astCacheElementModelAdapter}.
*
* @author Mariana
*/
public class CodeSyncElementModelAdapter extends SyncElementModelAdapter {
protected SyncElementModelAdapter astCacheElementModelAdapter;
public CodeSyncElementModelAdapter() {
// nothing to do
}
public CodeSyncElementModelAdapter(SyncElementModelAdapter adapter) {
this.astCacheElementModelAdapter = adapter;
}
@Override
public String getLabel(Object modelElement) {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getLabel(modelElement);
}
return super.getLabel(modelElement);
}
@Override
public List<String> getIconUrls(Object modelElement) {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getIconUrls(modelElement);
}
return super.getIconUrls(modelElement);
}
@Override
public Iterable<?> getContainmentFeatureIterable(Object element, Object feature, Iterable<?> correspondingIterable) {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getContainmentFeatureIterable(element, feature, correspondingIterable);
}
return super.getContainmentFeatureIterable(element, feature, correspondingIterable);
}
@Override
public Object getValueFeatureValue(Object element, Object feature, Object correspondingValue) {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getValueFeatureValue(element, feature, correspondingValue);
}
return super.getValueFeatureValue(element, feature, correspondingValue);
}
@Override
public Object createChildOnContainmentFeature(Object element, Object feature, Object correspondingChild) {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.createChildOnContainmentFeature(element, feature, correspondingChild);
}
return super.createChildOnContainmentFeature(element, feature, correspondingChild);
}
@Override
public void removeChildrenOnContainmentFeature(Object parent, Object feature, Object child) {
if (astCacheElementModelAdapter != null) {
astCacheElementModelAdapter.removeChildrenOnContainmentFeature(parent, feature, child);
} else {
super.removeChildrenOnContainmentFeature(parent, feature, child);
}
}
@Override
public void setValueFeatureValue(Object element, Object feature, Object newValue) {
if (astCacheElementModelAdapter != null) {
astCacheElementModelAdapter.setValueFeatureValue(element, feature, newValue);
} else {
super.setValueFeatureValue(element, feature, newValue);
}
}
@Override
public Object createCorrespondingModelElement(Object element) {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.createCorrespondingModelElement(element);
}
return super.createCorrespondingModelElement(element);
}
@Override
public void addToResource(AstCacheElement element) {
if (astCacheElementModelAdapter != null) {
astCacheElementModelAdapter.addToResource(element);
} else {
super.addToResource(element);
}
}
@Override
public ModelAdapterFactorySet getModelAdapterFactorySet() {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getModelAdapterFactorySet();
}
return super.getModelAdapterFactorySet();
}
@Override
public ModelAdapterFactory getModelAdapterFactory() {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getModelAdapterFactory();
}
return super.getModelAdapterFactory();
}
@Override
public ModelAdapterFactory getEObjectConverter() {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getEObjectConverter();
}
return super.getEObjectConverter();
}
@Override
public Object getMatchKey(Object element) {
if (astCacheElementModelAdapter != null) {
return astCacheElementModelAdapter.getMatchKey(element);
}
return super.getMatchKey(element);
}
@Override
public void allActionsPerformed(Object element, Object correspondingElement) {
super.allActionsPerformed(element, correspondingElement);
getCodeSyncElement(element).setAdded(false);
}
protected CodeSyncElement getCodeSyncElement(Object element) {
CodeSyncElement cse = null;
if (element instanceof CodeSyncElement) {
cse = (CodeSyncElement) element;
} else {
if (element instanceof AstCacheElement) {
cse = ((AstCacheElement) element).getCodeSyncElement();
}
}
return cse;
}
}