/*******************************************************************************
 * Copyright (c) 2004-2008 Andras Schmidt, Andras Balogh, Istvan Rath and Daniel Varro
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Andras Schmidt, Andras Balogh, Istvan Rath - initial API and implementation
 *******************************************************************************/

package org.eclipse.viatra2.core.simple.notification;

import org.eclipse.viatra2.core.EMultiplicityKind;
import org.eclipse.viatra2.core.IRelation;
import org.eclipse.viatra2.core.notification.ICoreNotificationObjectSetRelationMultiplicity;
import org.eclipse.viatra2.core.notification.NotificationType;

/**
 * @author Andras Schmidt, Istvan Rath
 * 
 */
public class NotificationObjectSetRelationMultiplicity extends
		NotificationObject implements
		ICoreNotificationObjectSetRelationMultiplicity {

	IRelation rel;

	EMultiplicityKind multi;

	public NotificationObjectSetRelationMultiplicity(IRelation rel,
			EMultiplicityKind multiplicity) {
		this.multi = multiplicity;
		this.rel = rel;
		addListener(rel);
	}

	@Override
	public NotificationType getActionTypeEnum() {
		// TODO Auto-generated method stub
		return NotificationType.ACTION_SET_RELATION_MULTIPLICITY;
	}

	public IRelation getRelation() {
		return rel;
	}

	public EMultiplicityKind getMultiplicity() {
		return multi;
	}
}
