001package de.deepamehta.core.model;
002
003
004
005/**
006 * Definition of an association between a parent type and a child type -- part of DeepaMehta's type system;
007 * like a composition or an aggregation in an UML class diagram.
008 * <p>
009 * The child type is a topic type. The parent type is either a topic type or an association type.
010 *
011 * @author <a href="mailto:jri@deepamehta.de">Jörg Richter</a>
012 */
013public interface AssociationDefinitionModel extends AssociationModel {
014
015    String getAssocDefUri();
016
017    /**
018     * @return  the URI of the Custom Association Type set for this association definition,
019     *          or <code>null</code> if no Custom Association Type is set.
020     */
021    String getCustomAssocTypeUri();
022
023    /**
024     * @return  the type to be used to create an association instance based on this association definition.
025     */
026    String getInstanceLevelAssocTypeUri();
027
028    String getParentTypeUri();
029
030    String getChildTypeUri();
031
032    String getParentCardinalityUri();
033
034    String getChildCardinalityUri();
035
036    ViewConfigurationModel getViewConfigModel();
037
038    // ---
039
040    void setParentCardinalityUri(String parentCardinalityUri);
041
042    void setChildCardinalityUri(String childCardinalityUri);
043
044    void setViewConfigModel(ViewConfigurationModel viewConfigModel);
045}