001package de.deepamehta.core;
002
003import de.deepamehta.core.model.AssociationDefinitionModel;
004import de.deepamehta.core.model.AssociationModel;
005import de.deepamehta.core.model.IndexMode;
006import de.deepamehta.core.model.TypeModel;
007
008import java.util.Collection;
009import java.util.List;
010
011
012
013public interface DeepaMehtaType extends Topic {
014
015    // --- Data Type ---
016
017    String getDataTypeUri();
018
019    void setDataTypeUri(String dataTypeUri);
020
021    // --- Index Modes ---
022
023    List<IndexMode> getIndexModes();
024
025    void addIndexMode(IndexMode indexMode);
026
027    // --- Association Definitions ---
028
029    Collection<AssociationDefinition> getAssocDefs();
030
031    AssociationDefinition getAssocDef(String assocDefUri);
032
033    boolean hasAssocDef(String assocDefUri);
034
035    DeepaMehtaType addAssocDef(AssociationDefinitionModel assocDef);
036
037    /**
038     * @param   beforeAssocDefUri   the URI of the assoc def <i>before</i> the given assoc def is inserted.
039     *                              If <code>null</code> the assoc def is appended at the end.
040     */
041    DeepaMehtaType addAssocDefBefore(AssociationDefinitionModel assocDef, String beforeAssocDefUri);
042
043    DeepaMehtaType removeAssocDef(String assocDefUri);
044
045    // --- Label Configuration ---
046
047    List<String> getLabelConfig();
048
049    void setLabelConfig(List<String> labelConfig);
050
051    // --- View Configuration ---
052
053    ViewConfiguration getViewConfig();
054
055    Object getViewConfig(String typeUri, String settingUri);
056
057    // ---
058
059    void update(TypeModel model);
060
061    // ---
062
063    TypeModel getModel();
064}