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(JSONObject topic);
061
062
063
064    // === AssociationModel ===
065
066    AssociationModel newAssociationModel(long id, String uri, String typeUri, RoleModel roleModel1,
067                                         RoleModel roleModel2, SimpleValue value, ChildTopicsModel childTopics);
068
069    AssociationModel newAssociationModel(String typeUri, RoleModel roleModel1, RoleModel roleModel2);
070
071    AssociationModel newAssociationModel(String typeUri, RoleModel roleModel1, RoleModel roleModel2,
072                                                                               ChildTopicsModel childTopics);
073
074    AssociationModel newAssociationModel();
075
076    AssociationModel newAssociationModel(ChildTopicsModel childTopics);
077
078    AssociationModel newAssociationModel(long id, String uri, String typeUri, RoleModel roleModel1,
079                                                                              RoleModel roleModel2);
080
081    AssociationModel newAssociationModel(AssociationModel assoc);
082
083    AssociationModel newAssociationModel(JSONObject assoc);
084
085
086
087    // === ChildTopicsModel ===
088
089    ChildTopicsModel newChildTopicsModel();
090
091    ChildTopicsModel newChildTopicsModel(JSONObject values);
092
093    /**
094     * Utility.
095     */
096    String childTypeUri(String assocDefUri);
097
098
099
100    // === TopicRoleModel ===
101    
102    TopicRoleModel newTopicRoleModel(long topicId, String roleTypeUri);
103
104    TopicRoleModel newTopicRoleModel(String topicUri, String roleTypeUri);
105
106    TopicRoleModel newTopicRoleModel(JSONObject topicRoleModel);
107
108
109
110    // === AssociationRoleModel ===
111
112    AssociationRoleModel newAssociationRoleModel(long assocId, String roleTypeUri);
113
114    AssociationRoleModel newAssociationRoleModel(JSONObject assocRoleModel);
115
116
117
118    // === RelatedTopicModel ===
119
120    RelatedTopicModel newRelatedTopicModel(long topicId);
121
122    RelatedTopicModel newRelatedTopicModel(long topicId, AssociationModel relatingAssoc);
123
124    RelatedTopicModel newRelatedTopicModel(String topicUri);
125
126    RelatedTopicModel newRelatedTopicModel(String topicUri, AssociationModel relatingAssoc);
127
128    RelatedTopicModel newRelatedTopicModel(String topicTypeUri, SimpleValue value);
129
130    RelatedTopicModel newRelatedTopicModel(String topicTypeUri, ChildTopicsModel childTopics);
131
132    RelatedTopicModel newRelatedTopicModel(TopicModel topic);
133
134    RelatedTopicModel newRelatedTopicModel(TopicModel topic, AssociationModel relatingAssoc);
135
136
137
138    // === RelatedAssociationModel ===
139
140    RelatedAssociationModel newRelatedAssociationModel(AssociationModel assoc, AssociationModel relatingAssoc);
141
142
143
144    // === TopicReferenceModel ===
145
146    // TODO: make internal?
147
148    TopicReferenceModel newTopicReferenceModel(long topicId);
149
150    TopicReferenceModel newTopicReferenceModel(long topicId, AssociationModel relatingAssoc);
151
152    TopicReferenceModel newTopicReferenceModel(String topicUri);
153
154    TopicReferenceModel newTopicReferenceModel(String topicUri, AssociationModel relatingAssoc);
155
156    TopicReferenceModel newTopicReferenceModel(long topicId, ChildTopicsModel relatingAssocChildTopics);
157
158    TopicReferenceModel newTopicReferenceModel(String topicUri, ChildTopicsModel relatingAssocChildTopics);
159
160
161
162    // === TopicDeletionModel ===
163
164    // TODO: make internal?
165
166    TopicDeletionModel newTopicDeletionModel(long topicId);
167
168    TopicDeletionModel newTopicDeletionModel(String topicUri);
169
170
171
172    // === TopicTypeModel ===
173
174    TopicTypeModel newTopicTypeModel(TopicModel typeTopic, String dataTypeUri,
175                                     List<IndexMode> indexModes, List<AssociationDefinitionModel> assocDefs,
176                                     List<String> labelConfig, ViewConfigurationModel viewConfig);
177
178    TopicTypeModel newTopicTypeModel(String uri, String value, String dataTypeUri);
179
180    TopicTypeModel newTopicTypeModel(JSONObject topicType);
181
182
183
184    // === AssociationTypeModel ===
185
186    AssociationTypeModel newAssociationTypeModel(TopicModel typeTopic, String dataTypeUri,
187                                                 List<IndexMode> indexModes, List<AssociationDefinitionModel> assocDefs,
188                                                 List<String> labelConfig, ViewConfigurationModel viewConfig);
189
190    AssociationTypeModel newAssociationTypeModel(String uri, String value, String dataTypeUri);
191
192    AssociationTypeModel newAssociationTypeModel(JSONObject assocType);
193
194
195
196    // === AssociationDefinitionModel ===
197
198    AssociationDefinitionModel newAssociationDefinitionModel(long id, String uri,
199                                                    String assocTypeUri, String customAssocTypeUri,
200                                                    String parentTypeUri, String childTypeUri,
201                                                    String parentCardinalityUri, String childCardinalityUri,
202                                                    ViewConfigurationModel viewConfigModel);
203
204    AssociationDefinitionModel newAssociationDefinitionModel(String assocTypeUri,
205                                                    String parentTypeUri, String childTypeUri,
206                                                    String parentCardinalityUri, String childCardinalityUri);
207
208    AssociationDefinitionModel newAssociationDefinitionModel(String assocTypeUri, String customAssocTypeUri,
209                                                    String parentTypeUri, String childTypeUri,
210                                                    String parentCardinalityUri, String childCardinalityUri);
211
212    AssociationDefinitionModel newAssociationDefinitionModel(AssociationModel assoc,
213                                                    String parentCardinalityUri, String childCardinalityUri,
214                                                    ViewConfigurationModel viewConfigModel);
215
216    AssociationDefinitionModel newAssociationDefinitionModel(JSONObject assocDef);
217
218
219
220    // === ViewConfigurationModel ===
221
222    ViewConfigurationModel newViewConfigurationModel();
223
224    ViewConfigurationModel newViewConfigurationModel(Iterable<? extends TopicModel> configTopics);
225
226    ViewConfigurationModel newViewConfigurationModel(JSONArray configTopics);
227
228
229
230    // === Topicmaps ===
231
232    TopicViewModel newTopicViewModel(TopicModel topic, ViewProperties viewProps);
233
234    AssociationViewModel newAssociationViewModel(AssociationModel assoc);
235
236
237
238    // === Facets ===
239
240    FacetValueModel newFacetValueModel(String childTypeUri);
241
242    FacetValueModel newFacetValueModel(JSONObject facetValue);
243}