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

/**
 * 
 * @author Istvan Rath
 * 
 */
public class NotificationObjectSetRelationIsAggregation extends
		NotificationObject implements
		ICoreNotificationObjectSetRelationIsAggregation {

	IRelation rel;

	boolean isagg;

	public NotificationObjectSetRelationIsAggregation(IRelation rel,
			boolean isaggregation) {
		this.rel = rel;
		this.isagg = isaggregation;
		addListener(rel);
	}

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

	public IRelation getRelation() {
		return rel;
	}

	public boolean getIsAggregation() {
		return isagg;
	}

}
