001 package de.deepamehta.core;
002
003 import de.deepamehta.core.model.CompositeValueModel;
004 import de.deepamehta.core.model.DeepaMehtaObjectModel;
005 import de.deepamehta.core.model.SimpleValue;
006 import de.deepamehta.core.model.TopicModel;
007 import de.deepamehta.core.service.ClientState;
008 import de.deepamehta.core.service.Directives;
009 import de.deepamehta.core.service.ResultList;
010
011 import java.util.List;
012
013
014
015 public interface DeepaMehtaObject extends Identifiable, JSONEnabled {
016
017
018
019 // === Model ===
020
021 // --- ID ---
022
023 long getId();
024
025 // --- URI ---
026
027 String getUri();
028
029 void setUri(String uri);
030
031 // --- Type URI ---
032
033 String getTypeUri();
034
035 void setTypeUri(String typeUri);
036
037 // --- Simple Value ---
038
039 SimpleValue getSimpleValue();
040
041 void setSimpleValue(String value);
042 void setSimpleValue(int value);
043 void setSimpleValue(long value);
044 void setSimpleValue(boolean value);
045 void setSimpleValue(SimpleValue value);
046
047 // --- Composite Value ---
048
049 CompositeValue getCompositeValue();
050
051 void setCompositeValue(CompositeValueModel comp, ClientState clientState, Directives directives);
052
053 // ---
054
055 void loadChildTopics();
056 void loadChildTopics(String childTypeUri);
057
058 // ---
059
060 DeepaMehtaObjectModel getModel();
061
062
063
064 // === Updating ===
065
066 void update(DeepaMehtaObjectModel model, ClientState clientState, Directives directives);
067
068 // ---
069
070 void updateChildTopic(TopicModel newChildTopic, AssociationDefinition assocDef, ClientState clientState,
071 Directives directives);
072 void updateChildTopics(List<TopicModel> newChildTopics, AssociationDefinition assocDef, ClientState clientState,
073 Directives directives);
074
075
076
077 // === Deletion ===
078
079 /**
080 * Deletes the DeepaMehta object in its entirety, that is
081 * - the object itself (the <i>parent</i>)
082 * - all child topics associated via "dm4.core.composition", recusively
083 * - all the remaining direct associations, e.g. "dm4.core.instantiation"
084 */
085 void delete(Directives directives);
086
087
088
089 // === Traversal ===
090
091 // --- Topic Retrieval ---
092
093 /**
094 * Fetches and returns a related topic or <code>null</code> if no such topic extists.
095 *
096 * @param assocTypeUri may be null
097 * @param myRoleTypeUri may be null
098 * @param othersRoleTypeUri may be null
099 * @param othersTopicTypeUri may be null
100 */
101 RelatedTopic getRelatedTopic(String assocTypeUri, String myRoleTypeUri, String othersRoleTypeUri,
102 String othersTopicTypeUri, boolean fetchComposite, boolean fetchRelatingComposite);
103
104 ResultList<RelatedTopic> getRelatedTopics(String assocTypeUri, int maxResultSize);
105
106 /**
107 * @param assocTypeUri may be null
108 * @param myRoleTypeUri may be null
109 * @param othersRoleTypeUri may be null
110 * @param othersTopicTypeUri may be null
111 * @param fetchComposite
112 * @param fetchRelatingComposite
113 * @param maxResultSize Result size limit. Pass 0 for no limit.
114 */
115 ResultList<RelatedTopic> getRelatedTopics(String assocTypeUri, String myRoleTypeUri, String othersRoleTypeUri,
116 String othersTopicTypeUri, boolean fetchComposite, boolean fetchRelatingComposite,
117 int maxResultSize);
118
119 /**
120 * @param assocTypeUris may *not* be null
121 * @param myRoleTypeUri may be null
122 * @param othersRoleTypeUri may be null
123 * @param othersTopicTypeUri may be null
124 */
125 ResultList<RelatedTopic> getRelatedTopics(List assocTypeUris, String myRoleTypeUri, String othersRoleTypeUri,
126 String othersTopicTypeUri, boolean fetchComposite, boolean fetchRelatingComposite,
127 int maxResultSize);
128
129 // --- Association Retrieval ---
130
131 Association getAssociation(String assocTypeUri, String myRoleTypeUri, String othersRoleTypeUri,
132 long othersTopicId);
133
134 List<Association> getAssociations();
135
136
137
138 // === Properties ===
139
140 Object getProperty(String propUri);
141
142 void setProperty(String propUri, Object propValue, boolean addToIndex);
143
144 boolean hasProperty(String propUri);
145
146 void removeProperty(String propUri);
147 }