package de.hub.emffrag.fragmentation; import org.eclipse.emf.common.util.URI; import de.hub.emffrag.EmfFragActivator; import de.hub.emffrag.datastore.IDataMap; import de.hub.emffrag.fragmentation.IdSemantics.SaveURI; public class IndexedValueSetSemantics<K> extends AbstractValueSetSemantics<K> { public IndexedValueSetSemantics(FragmentedModel model, IDataMap<K> index) { super(model, index); } @Override public FInternalObjectImpl getValueForExactKey(K key) { String value = index.get(key); if (value == null) { return null; } FInternalObject internalObject = EmfFragActivator.instance.idSemantics.resolveURI(URI.createURI(value), model); return (FInternalObjectImpl)internalObject; } @Override public void setValueForKey(final K key, FInternalObjectImpl internalObject) { SaveURI save = new SaveURI() { @Override public void saveURI(URI uri) { index.set(key, uri.toString()); } }; URI uri = EmfFragActivator.instance.idSemantics.getURI(internalObject, model, true, save); index.set(key, uri.toString()); } @Override public void removeValueForKey(K key, FInternalObjectImpl value) { index.remove(key); } }