/*******************************************************************************
 * 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.IRelation;
import org.eclipse.viatra2.core.notification.ICoreNotificationObjectSetRelationInverse;
import org.eclipse.viatra2.core.notification.NotificationType;

/**
 * 
 * @author Istvan Rath
 * 
 */
public class NotificationObjectSetRelationInverse extends NotificationObject
		implements ICoreNotificationObjectSetRelationInverse {

	IRelation rel;

	IRelation inv;

	public NotificationObjectSetRelationInverse(IRelation rel, IRelation inverse) {
		this.rel = rel;
		this.inv = inverse;
		addListener(rel);
	}

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

	public IRelation getRelation() {
		return rel;
	}

	public IRelation getInverse() {
		return inv;
	}

}
