001package de.deepamehta.core.model;
002
003
004
005/**
006 * Definition of an association between 2 topic types -- part of DeepaMehta's type system,
007 * like an association in a class diagram. Used to represent both, aggregations and compositions.
008 * ### FIXDOC: also assoc types have assoc defs
009 *
010 * @author <a href="mailto:jri@deepamehta.de">Jörg Richter</a>
011 */
012public interface AssociationDefinitionModel extends AssociationModel {
013
014    String getAssocDefUri();
015
016    String getCustomAssocTypeUri();
017
018    /**
019     * The type to be used to create an association instance based on this association definition.
020     */
021    String getInstanceLevelAssocTypeUri();
022
023    String getParentTypeUri();
024
025    String getChildTypeUri();
026
027    String getParentCardinalityUri();
028
029    String getChildCardinalityUri();
030
031    ViewConfigurationModel getViewConfigModel();
032
033    // ---
034
035    void setParentCardinalityUri(String parentCardinalityUri);
036
037    void setChildCardinalityUri(String childCardinalityUri);
038
039    void setViewConfigModel(ViewConfigurationModel viewConfigModel);
040}