/* 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 static com.crispico.flower.mp.codesync.base.CodeSyncAlgorithm.UNDEFINED; import java.util.Collections; import java.util.List; import java.util.Map; import com.crispico.flower.mp.codesync.base.AbstractModelAdapter; import com.crispico.flower.mp.codesync.base.IModelAdapter; import com.crispico.flower.mp.codesync.base.ModelAdapterFactorySet; import com.crispico.flower.mp.codesync.base.action.ActionResult; /** * @author Mariana */ public class StringModelAdapter extends AbstractModelAdapter { private ModelAdapterFactorySet modelAdapterFactorySet; @Override public ModelAdapterFactorySet getModelAdapterFactorySet() { return modelAdapterFactorySet; } @Override public IModelAdapter setModelAdapterFactorySet(ModelAdapterFactorySet modelAdapterFactorySet) { this.modelAdapterFactorySet = modelAdapterFactorySet; return this; } @Override public boolean hasChildren(Object modelElement) { return false; } @Override public List<?> getChildren(Object modelElement) { return Collections.emptyList(); } @Override public String getLabel(Object modelElement) { return (String) modelElement; } @Override public List<String> getIconUrls(Object modelElement) { return null; } @Override public Iterable<?> getContainmentFeatureIterable(Object element, Object feature, Iterable<?> correspondingIterable) { if (UNDEFINED.equals(element)) { return Collections.singletonList(UNDEFINED); } throw new UnsupportedOperationException("String does not have children for feature " + feature); } @Override public Object getValueFeatureValue(Object element, Object feature, Object correspondingValue) { if (UNDEFINED.equals(element)) { return UNDEFINED; } throw new UnsupportedOperationException("String does not have feature " + feature); } @Override public Object getMatchKey(Object element) { return element; } @Override public void addToMap(Object element, Map<Object, Object> map) { map.put(getMatchKey(element), element); } @Override public Object removeFromMap(Object element, Map<Object, Object> leftOrRightMap, boolean isRight) { if (UNDEFINED.equals(element)) { if (leftOrRightMap.isEmpty() || leftOrRightMap.containsKey(UNDEFINED)) { return UNDEFINED; } else { return leftOrRightMap.remove(leftOrRightMap.keySet().iterator().next()); } } return leftOrRightMap.remove(getMatchKey(element)); } @Override public void setValueFeatureValue(Object element, Object feature, Object value) { throw new UnsupportedOperationException("String does not have feature " + feature); } @Override public Object createChildOnContainmentFeature(Object element, Object feature, Object correspondingChild) { throw new UnsupportedOperationException("String does not have children for feature " + feature); } @Override public void removeChildrenOnContainmentFeature(Object parent, Object feature, Object child) { throw new UnsupportedOperationException("String does not have children for feature " + feature); } @Override public Object createCorrespondingModelElement(Object element) { return element; } @Override public boolean save(Object element) { return false; } @Override public boolean discard(Object element) { return false; } @Override public void actionPerformed(Object element, Object feature, ActionResult result) { // nothing to do } @Override public void allActionsPerformedForFeature(Object element, Object correspondingElement, Object feature) { // nothing to do } @Override public void allActionsPerformed(Object element, Object correspondingElement) { // nothing to do } @Override public void beforeFeaturesProcessed(Object element, Object correspondingElement) { // nothing to do } @Override public void featuresProcessed(Object element) { // nothing to do } }