/*
* 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.diagram.ui.connection;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.draw2d.Graphics;
import org.eclipse.emf.ecore.EObject;
import org.teiid.designer.core.metamodel.aspect.uml.UmlRelationship;
/**
* BinaryAssocation
*
* @since 8.0
*/
public interface BinaryAssociation {
// Source/Target Constants
public static final int SOURCE_END = 0;
public static final int TARGET_END = 1;
public static final int TYPE_UNKNOWN_RELATIONSHIP = -1;
public static final int TYPE_UML_ASSOCIATION = 0;
public static final int TYPE_UML_DEPENDENCY = 1;
public static final int TYPE_UML_GENERALIZATION = 2;
// Visibility Constants
public final static int VISIBILITY_PUBLIC = 100;
public final static int VISIBILITY_PROTECTED = 101;
public final static int VISIBILITY_PRIVATE = 102;
public final static int VISIBILITY_DEFAULT = 103;
// 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;
public final static int LINE_SOLID = Graphics.LINE_SOLID;
public final static int LINE_DASH = Graphics.LINE_DASH;
public final static int LINE_DASHDOT = Graphics.LINE_DASHDOT;
public final static int LINE_DOT = Graphics.LINE_DOT;
public final static int LINE_DASHDOTDOT = Graphics.LINE_DASHDOTDOT;
public final static int DECORATOR_NONE = 0;
public final static int DECORATOR_ARROW_OPEN = 1;
public final static int DECORATOR_ARROW_CLOSED = 2;
public final static int DECORATOR_ARROW_FILLED = 3;
public final static int DECORATOR_DIAMOND_OPEN = 4;
public final static int DECORATOR_DIAMOND_FILLED = 5;
public final static int DECORATOR_NON_NAVIGABLE = 6;
/**
* Set the association that the other methods will use
* @param assoc
* @return the end count
*/
void setUmlAspect(UmlRelationship relationship);
/**
* get the current relationship aspect
* @return the aspect
*/
UmlRelationship getRelationshipAspect();
/**
* Get the end count for the given association
* @param assoc
* @return the end count
*/
int getEndCount();
/**
* Get the role name for the given association end
* @param assoc
* @param end
* @return role name
*/
String getRoleName(int end);
/**
* Get the multiplicity string for the given association end
* @param assoc
* @param end
* @return multiplicity string
*/
String getMultiplicity(int end);
/**
* Get the aggreation constant for the given association end
* @param assoc
* @param end
* @return the aggregation constant
*/
int getAggregation(int end);
/**
* Return the properties for the given association end
* @param assoc
* @param end
* @return the properties as a string
*/
String[] getProperties(int end);
/**
* Return the navigability for the given association end
* @param assoc
* @param end
* @return the navigability constant
*/
int getNavigability(int end);
/**
* Return the Assoiciation End for the given end inidicator.
* This should be, for instance, the FK or PK/UK
* @param assoc
* @param end which end to return
* @return
*/
EObject getEnd(int end);
/**
* Return the Assoiciation End Target for the given end indicator.
* This should be the "Table"
* @param assoc
* @param end which end to return
* @return
*/
EObject getEndTarget(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(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(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(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(int end, int navigability);
// ===========================================
// Visibility
// ===========================================
/**
* Return the Visibility constant for the given eObject
* @param eObject
* @return the visibility int constant
*/
int getVisibility();
/**
* Return the Sterotype string for the given eObject
* @param eObject
* @return the Sterotype string
*/
String getStereotype();
/**
* Return the Signature string for the given eObject
* @param eObject
* @param showMask the mask for which attributes constitue the signature
* @return the Signature string using the mask
*/
String getSignature(int showMask);
/**
* Return the editable portion of the signature string for the given eObject
* @param eObject
* @return the editable portion of the signature string
*/
String getEditableSignature();
/**
* Set the Signature string for the given eObject
* @param eObject
* @param newSignature
* @return an IStatus object with the results of the set operation
*/
IStatus setSignature(String newSignature);
/**
* Get's the relationship type for the association
* @return type;
*/
int getRelationshipType();
/**
* Get's the relationship's reference EObject
* @return eObject;
*/
EObject getReference();
}