package com.sap.runlet.abstractinterpreter.operationaltransformation; import java.util.Iterator; import org.eclipse.emf.ecore.EObject; import com.sap.runlet.abstractinterpreter.repository.RepositoryChange; public class SingleChange<LinkMetaObject extends EObject, LinkEndMetaObject extends EObject, MetaClass extends EObject, TypeUsage extends EObject, ClassUsage extends TypeUsage> implements Change<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> { private RepositoryChange<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> change; public SingleChange(RepositoryChange<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> change) { this.change = change; } @Override public int totalSize() { return 1; } @Override public Iterator<RepositoryChange<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage>> iterator() { return new Iterator<RepositoryChange<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage>>() { private boolean nextCalled = false; @Override public boolean hasNext() { return !nextCalled; } @Override public RepositoryChange<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> next() { nextCalled = true; return change; } @Override public void remove() { throw new UnsupportedOperationException("This iterator type does not support remove"); } }; } @Override public String toString() { return change.toString(); } }