/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.core.metamodel.aspect.uml;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.ecore.EObject;
/**
* UmlAssociation
*
* @since 8.0
*/
public interface UmlAssociation extends UmlRelationship {
//Show Mask Constants
public final static int SIGNATURE_NAME = 1;
public final static int SIGNATURE_STEROTYPE = 2;
public final static int SIGNATURE_PROPERTIES = 4;
//Aggregation Constants
public final static int AGGREGATION_NONE = 301;
public final static int AGGREGATION_SHARED = 302;
public final static int AGGREGATION_COMPOSITE = 303;
//Navigability Constants
public final static int NAVIGABILITY_NONE = 501;
public final static int NAVIGABILITY_UNKNOWN = 502;
public final static int NAVIGABILITY_NAVIGABLE = 503;
/**
* Get the end count for the given association
* @param assoc
* @return the end count
*/
int getEndCount(Object assoc);
/**
* Get the role name for the given association end
* @param assoc
* @param end
* @return role name
*/
String getRoleName(Object assoc, int end);
/**
* Get the multiplicity string for the given association end
* @param assoc
* @param end
* @return multiplicity string
*/
String getMultiplicity(Object assoc, int end);
/**
* Get the aggreation constant for the given association end
* @param assoc
* @param end
* @return the aggregation constant
*/
int getAggregation(Object assoc, int end);
/**
* Return the properties for the given association end
* @param assoc
* @param end
* @return the properties as a string
*/
String[] getProperties(Object assoc, int end);
/**
* Return the navigability for the given association end
* @param assoc
* @param end
* @return the navigability constant
*/
int getNavigability(Object assoc, int end);
/**
* Return the Assoiciation End for the given end.
* Ends are the actual objects referenced in the association
* @param assoc
* @param end which end to return
* @return
*/
EObject getEnd(Object assoc, int end);
/**
* Return the Assoiciation End Target for the given end.
* End Targets are the objects to draw the association to.
* @param assoc
* @param end which end to return
* @return
*/
EObject getEndTarget(Object assoc, int end);
/**
* Set the role name for the given association end
* @param assoc
* @param end
* @param name
* @return IStatus result of the operation
*/
IStatus setRoleName(Object assoc, int end, String name);
/**
* Set the Mulitplicity for the given association end
* @param assoc
* @param end
* @param mult
* @return IStatus result of the operation
*/
IStatus setMultiplicity(Object assoc, int end, String mult);
/**
* Set the Propertyies for the given association end
* @param assoc
* @param end
* @param props
* @return IStatus result of the operation
*/
IStatus setProperties(Object assoc, int end, String[] props);
/**
* Set the Navigability for the given association end
* @param assoc
* @param end
* @param navigability
* @return IStatus result of the operation
*/
IStatus setNavigability(Object assoc, int end, int navigability);
}