001package de.deepamehta.core.service;
002
003import de.deepamehta.core.model.AssociationModel;
004import de.deepamehta.core.model.AssociationDefinitionModel;
005import de.deepamehta.core.model.AssociationRoleModel;
006import de.deepamehta.core.model.AssociationTypeModel;
007import de.deepamehta.core.model.ChildTopicsModel;
008import de.deepamehta.core.model.DeepaMehtaObjectModel;
009import de.deepamehta.core.model.IndexMode;
010import de.deepamehta.core.model.RelatedAssociationModel;
011import de.deepamehta.core.model.RelatedTopicModel;
012import de.deepamehta.core.model.RoleModel;
013import de.deepamehta.core.model.SimpleValue;
014import de.deepamehta.core.model.TopicModel;
015import de.deepamehta.core.model.TopicDeletionModel;
016import de.deepamehta.core.model.TopicReferenceModel;
017import de.deepamehta.core.model.TopicRoleModel;
018import de.deepamehta.core.model.TopicTypeModel;
019import de.deepamehta.core.model.TypeModel;
020import de.deepamehta.core.model.ViewConfigurationModel;
021import de.deepamehta.core.model.facets.FacetValueModel;
022import de.deepamehta.core.model.topicmaps.AssociationViewModel;
023import de.deepamehta.core.model.topicmaps.TopicViewModel;
024import de.deepamehta.core.model.topicmaps.ViewProperties;
025
026import org.codehaus.jettison.json.JSONArray;
027import org.codehaus.jettison.json.JSONException;
028import org.codehaus.jettison.json.JSONObject;
029
030import java.util.List;
031
032
033
034public interface ModelFactory {
035
036
037
038    // === TopicModel ===
039
040    TopicModel newTopicModel(long id, String uri, String typeUri, SimpleValue value, ChildTopicsModel childTopics);
041
042    TopicModel newTopicModel(ChildTopicsModel childTopics);
043
044    TopicModel newTopicModel(String typeUri);
045
046    TopicModel newTopicModel(String typeUri, SimpleValue value);
047
048    TopicModel newTopicModel(String typeUri, ChildTopicsModel childTopics);
049
050    TopicModel newTopicModel(String uri, String typeUri);
051
052    TopicModel newTopicModel(String uri, String typeUri, SimpleValue value);
053
054    TopicModel newTopicModel(String uri, String typeUri, ChildTopicsModel childTopics);
055
056    TopicModel newTopicModel(long id);
057
058    TopicModel newTopicModel(long id, ChildTopicsModel childTopics);
059
060    TopicModel newTopicModel(TopicModel topic);
061
062    TopicModel newTopicModel(JSONObject topic);
063
064
065
066    // === AssociationModel ===
067
068    AssociationModel newAssociationModel(long id, String uri, String typeUri, RoleModel roleModel1,
069                                         RoleModel roleModel2, SimpleValue value, ChildTopicsModel childTopics);
070
071    AssociationModel newAssociationModel(String typeUri, RoleModel roleModel1, RoleModel roleModel2);
072
073    AssociationModel newAssociationModel(String typeUri, RoleModel roleModel1, RoleModel roleModel2,
074                                                                               ChildTopicsModel childTopics);
075
076    AssociationModel newAssociationModel();
077
078    AssociationModel newAssociationModel(ChildTopicsModel childTopics);
079
080    AssociationModel newAssociationModel(long id, String uri, String typeUri, RoleModel roleModel1,
081                                                                              RoleModel roleModel2);
082
083    AssociationModel newAssociationModel(AssociationModel assoc);
084
085    AssociationModel newAssociationModel(JSONObject assoc);
086
087
088
089    // === ChildTopicsModel ===
090
091    ChildTopicsModel newChildTopicsModel();
092
093    ChildTopicsModel newChildTopicsModel(JSONObject values);
094
095    /**
096     * Utility.
097     */
098    String childTypeUri(String assocDefUri);
099
100
101
102    // === TopicRoleModel ===
103    
104    TopicRoleModel newTopicRoleModel(long topicId, String roleTypeUri);
105
106    TopicRoleModel newTopicRoleModel(String topicUri, String roleTypeUri);
107
108    TopicRoleModel newTopicRoleModel(JSONObject topicRoleModel);
109
110
111
112    // === AssociationRoleModel ===
113
114    AssociationRoleModel newAssociationRoleModel(long assocId, String roleTypeUri);
115
116    AssociationRoleModel newAssociationRoleModel(JSONObject assocRoleModel);
117
118
119
120    // === RelatedTopicModel ===
121
122    RelatedTopicModel newRelatedTopicModel(long topicId);
123
124    RelatedTopicModel newRelatedTopicModel(long topicId, AssociationModel relatingAssoc);
125
126    RelatedTopicModel newRelatedTopicModel(String topicUri);
127
128    RelatedTopicModel newRelatedTopicModel(String topicUri, AssociationModel relatingAssoc);
129
130    RelatedTopicModel newRelatedTopicModel(String topicTypeUri, SimpleValue value);
131
132    RelatedTopicModel newRelatedTopicModel(String topicTypeUri, ChildTopicsModel childTopics);
133
134    RelatedTopicModel newRelatedTopicModel(TopicModel topic);
135
136    RelatedTopicModel newRelatedTopicModel(TopicModel topic, AssociationModel relatingAssoc);
137
138
139
140    // === RelatedAssociationModel ===
141
142    RelatedAssociationModel newRelatedAssociationModel(AssociationModel assoc, AssociationModel relatingAssoc);
143
144
145
146    // === TopicReferenceModel ===
147
148    // TODO: make internal?
149
150    TopicReferenceModel newTopicReferenceModel(long topicId);
151
152    TopicReferenceModel newTopicReferenceModel(long topicId, AssociationModel relatingAssoc);
153
154    TopicReferenceModel newTopicReferenceModel(String topicUri);
155
156    TopicReferenceModel newTopicReferenceModel(String topicUri, AssociationModel relatingAssoc);
157
158    TopicReferenceModel newTopicReferenceModel(long topicId, ChildTopicsModel relatingAssocChildTopics);
159
160    TopicReferenceModel newTopicReferenceModel(String topicUri, ChildTopicsModel relatingAssocChildTopics);
161
162
163
164    // === TopicDeletionModel ===
165
166    // TODO: make internal?
167
168    TopicDeletionModel newTopicDeletionModel(long topicId);
169
170    TopicDeletionModel newTopicDeletionModel(String topicUri);
171
172
173
174    // === TopicTypeModel ===
175
176    TopicTypeModel newTopicTypeModel(TopicModel typeTopic, String dataTypeUri,
177                                     List<IndexMode> indexModes, List<AssociationDefinitionModel> assocDefs,
178                                     ViewConfigurationModel viewConfig);
179
180    TopicTypeModel newTopicTypeModel(String uri, String value, String dataTypeUri);
181
182    TopicTypeModel newTopicTypeModel(JSONObject topicType);
183
184
185
186    // === AssociationTypeModel ===
187
188    AssociationTypeModel newAssociationTypeModel(TopicModel typeTopic, String dataTypeUri,
189                                                 List<IndexMode> indexModes, List<AssociationDefinitionModel> assocDefs,
190                                                 ViewConfigurationModel viewConfig);
191
192    AssociationTypeModel newAssociationTypeModel(String uri, String value, String dataTypeUri);
193
194    AssociationTypeModel newAssociationTypeModel(JSONObject assocType);
195
196
197
198    // === AssociationDefinitionModel ===
199
200    AssociationDefinitionModel newAssociationDefinitionModel(String assocTypeUri,
201                                                    String parentTypeUri, String childTypeUri,
202                                                    String parentCardinalityUri, String childCardinalityUri);
203
204    AssociationDefinitionModel newAssociationDefinitionModel(String assocTypeUri,
205                                                    String customAssocTypeUri, boolean includeInLabel,
206                                                    String parentTypeUri, String childTypeUri,
207                                                    String parentCardinalityUri, String childCardinalityUri);
208
209    AssociationDefinitionModel newAssociationDefinitionModel(AssociationModel assoc,
210                                                    String parentCardinalityUri, String childCardinalityUri,
211                                                    ViewConfigurationModel viewConfigModel);
212
213    AssociationDefinitionModel newAssociationDefinitionModel(JSONObject assocDef);
214
215
216
217    // === ViewConfigurationModel ===
218
219    ViewConfigurationModel newViewConfigurationModel();
220
221    ViewConfigurationModel newViewConfigurationModel(Iterable<? extends TopicModel> configTopics);
222
223    ViewConfigurationModel newViewConfigurationModel(JSONArray configTopics);
224
225
226
227    // === Topicmaps ===
228
229    TopicViewModel newTopicViewModel(TopicModel topic, ViewProperties viewProps);
230
231    AssociationViewModel newAssociationViewModel(AssociationModel assoc);
232
233
234
235    // === Facets ===
236
237    FacetValueModel newFacetValueModel(String childTypeUri);
238
239    FacetValueModel newFacetValueModel(JSONObject facetValue);
240}