001    package de.deepamehta.core;
002    
003    import de.deepamehta.core.model.AssociationDefinitionModel;
004    
005    
006    
007    /**
008     * Definition of an association between 2 topic types -- part of DeepaMehta's type system,
009     * like an association in a class diagram. Used to represent both, aggregations and compositions.
010     *
011     * @author <a href="mailto:jri@deepamehta.de">Jörg Richter</a>
012     */
013    public interface AssociationDefinition extends Association {
014    
015        String getInstanceLevelAssocTypeUri();
016    
017        String getParentTypeUri();
018    
019        String getChildTypeUri();
020    
021        String getParentCardinalityUri();
022    
023        String getChildCardinalityUri();
024    
025        ViewConfiguration getViewConfig();
026    
027        // ---
028    
029        AssociationDefinitionModel getModel();
030    
031        // ---
032    
033        void setParentCardinalityUri(String parentCardinalityUri);
034    
035        void setChildCardinalityUri(String childCardinalityUri);
036    
037        // === Updating ===
038    
039        void update(AssociationDefinitionModel model);
040    }