Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 shop2020 1
/**
2
 * 
3
 */
4
package in.shop2020.metamodel.definitions;
5
 
6
import in.shop2020.metamodel.core.Entity;
63 naveen 7
import in.shop2020.metamodel.core.Feature;
8
import in.shop2020.metamodel.core.Slide;
1050 rajveer 9
import in.shop2020.metamodel.util.CN;
10
import in.shop2020.metamodel.util.CreationUtils;
82 naveen 11
import in.shop2020.metamodel.util.ExpandedBullet;
24 naveen 12
import in.shop2020.metamodel.util.ExpandedEntity;
109 naveen 13
import in.shop2020.metamodel.util.ExpandedSlide;
1050 rajveer 14
import in.shop2020.storage.bdb.StorageManager;
64 naveen 15
import in.shop2020.util.DBUtils;
80 naveen 16
import in.shop2020.util.Utils;
64 naveen 17
 
457 rajveer 18
import java.io.File;
10 shop2020 19
import java.io.Serializable;
22 naveen 20
import java.util.ArrayList;
81 naveen 21
import java.util.HashMap;
22 naveen 22
import java.util.List;
10 shop2020 23
import java.util.Map;
22 naveen 24
import java.util.TreeMap;
10 shop2020 25
 
26
/**
49 naveen 27
 * Single point access to stored shop2020 core objects
28
 * 
10 shop2020 29
 * @author naveen
30
 *
31
 */
32
public class EntityContainer implements Serializable {
33
 
34
	/**
35
	 * 
36
	 */
37
	private static final long serialVersionUID = 1L;
38
 
49 naveen 39
	/**
81 naveen 40
	 * Hashtable of Feature Definition ID to list of learned Bullet objects
41
	 */
82 naveen 42
	private Map<Long, List<ExpandedBullet>> learnedBullets;
81 naveen 43
 
44
	/**
91 naveen 45
	 * Hashtable of Facet Definition ID to list of unique facet values found 
46
	 * across entities
47
	 */
48
	private Map<Long, List<String>> facetDefinitionIDFacetValues;
110 naveen 49
 
50
	/**
51
	 * Hashtable of Entity ID > Map(Slide ID > Score)
52
	 */
53
	private Map<Long, Map<Long, Integer>> entityIDSlideIDsScore;
91 naveen 54
 
55
	/**
110 naveen 56
	 * Hashtable of Entity ID > Final Score
57
	 */
58
	private Map<Long, Integer> entityIDFinalScore;
59
 
60
	/**
473 rajveer 61
	 * Database path. Just in case we want to override
62
	 */
63
	private String dbPath =  Utils.CONTENT_DB_PATH;
64
 
65
	/**
49 naveen 66
	 * Instantiates required data structures only when needed
10 shop2020 67
	 */
68
	public EntityContainer() {
1050 rajveer 69
		initialize();
10 shop2020 70
	}
473 rajveer 71
 
72
	public EntityContainer(String dbPath) {
73
		this.dbPath = dbPath;
74
	}
10 shop2020 75
 
1050 rajveer 76
	private void initialize(){
10 shop2020 77
	}
78
 
81 naveen 79
 
10 shop2020 80
 
81
 
24 naveen 82
 
199 naveen 83
 
299 naveen 84
 
85
 
1050 rajveer 86
 
87
 
299 naveen 88
	/**
49 naveen 89
	 * Returns expand form of entity object. All references are resolved into 
90
	 * corresponding detail object
24 naveen 91
	 * 
92
	 * @param entityID
93
	 * @return ExpandedEntity 
94
	 * @throws Exception 
95
	 */
96
	public ExpandedEntity getExpandedEntity(long entityID) throws Exception {
1050 rajveer 97
		Entity entity = CreationUtils.getEntity(entityID);
344 rajveer 98
		if(entity==null){
99
			System.out.println("Entity is null");
100
			return null;
101
		}
102
		System.out.println( entity.getCategoryID());
24 naveen 103
		ExpandedEntity expEntity = new ExpandedEntity(entity);
104
		return expEntity;
105
	}
91 naveen 106
 
63 naveen 107
 
91 naveen 108
 
109
	/**
63 naveen 110
	 * Utility method to find out Feature object in Entity instance
111
	 * 
112
	 * @param entityID
113
	 * @param featureDefinitionID
114
	 * @return Feature
115
	 * @throws Exception 
116
	 */
117
	public Feature getFeature(long entityID, long featureDefinitionID) 
118
		throws Exception {
1050 rajveer 119
		Entity entity = CreationUtils.getEntity(entityID);
63 naveen 120
 
121
		Feature feature = null;
122
 
123
		List<Slide> slides = entity.getSlides();
124
		for(Slide slide : slides) {
125
			feature = this.getFeature(slide, featureDefinitionID);
126
 
127
			// Until all slides are searched
128
			if(feature == null) {
129
				continue;
130
			}
64 naveen 131
			else {
132
				break;
133
			}
63 naveen 134
		}
135
 
136
		return feature;
137
	}
138
 
139
	/**
140
	 * 
141
	 * @param slide
142
	 * @param featureDefinitionID
143
	 * @return Feature
144
	 */
145
	public Feature getFeature(Slide slide, long featureDefinitionID) {
146
		List<Feature> features = slide.getFeatures();
147
 
148
		if(features != null) {
149
			for(Feature feature : features) {
150
				if(feature.getFeatureDefinitionID() == featureDefinitionID) {
151
					return feature;
152
				}
153
			}
154
		}
155
 
156
		Feature feature = null;
157
 
158
		List<Slide> childrenSlides = slide.getChildrenSlides();
159
		if(childrenSlides != null) {
160
			for(Slide childSlide : childrenSlides) {
161
 
162
				feature = this.getFeature(childSlide, featureDefinitionID);
163
				if(feature == null) {
164
					continue;
165
				}
64 naveen 166
				else {
167
					break;
168
				}
63 naveen 169
			}
170
		}
171
 
172
		return feature;
173
	}
174
 
175
	/**
176
	 * Utility method to find out Slide object in Entity instance
177
	 * 
178
	 * @param entityID
179
	 * @param slideDefinitionID
180
	 * @return
181
	 * @throws Exception 
182
	 */
183
	public Slide getSlide(long entityID, long slideDefinitionID) 
184
		throws Exception {
1050 rajveer 185
		Entity entity = CreationUtils.getEntity(entityID);
63 naveen 186
 
187
		List<Slide> slides = entity.getSlides();
64 naveen 188
 
189
		Slide resultSlide = null;
190
 
191
		if(slides != null) {
192
			for(Slide slide : slides) {
193
 
194
				if(slide.getSlideDefinitionID() == slideDefinitionID) {
195
					return slide;
196
				}
197
 
198
				resultSlide = this.getSlide(slide, slideDefinitionID);
199
 
200
				if(resultSlide == null) {
201
					continue;
202
				}
203
				else {
204
					break;
205
				}
63 naveen 206
			}
207
		}
208
 
64 naveen 209
		return resultSlide;
63 naveen 210
	}
64 naveen 211
 
212
	/**
213
	 * 
214
	 * @param slide
215
	 * @param slideDefinitionID
216
	 * @return
217
	 */
218
	public Slide getSlide(Slide slide, long slideDefinitionID) {
219
 
220
		List<Slide> childrenSlides = slide.getChildrenSlides();
221
 
222
		Slide resultSlide = null;
223
 
224
		if(childrenSlides != null) {
225
			for(Slide childSlide : childrenSlides) {
226
				if(childSlide.getSlideDefinitionID() == slideDefinitionID) {
227
					return childSlide;
228
				}
229
 
230
				resultSlide = this.getSlide(childSlide, slideDefinitionID);
231
				if(resultSlide == null) {
232
					continue;
233
				}
234
				else {
235
					break;
236
				}
237
			}
238
		}
239
 
240
		return resultSlide;
241
	}
88 naveen 242
 
243
	/**
244
	 * Returns list of borrowed slides
245
	 * 
246
	 * @param entity
247
	 * @return list of borrowed slides
248
	 */
249
	public List<Slide> getBorrowedSlides(Entity entity) {
250
		List<Slide> borrowedSlides = new ArrayList<Slide>();
251
 
252
		List<Slide> slides = entity.getSlides();
253
 
254
		for(Slide slide : slides) {
255
			if(slide.isBorrowed()) {
256
				borrowedSlides.add(slide);
257
			}
258
		}
259
 
260
		return borrowedSlides;
261
	}
109 naveen 262
 
263
	/**
264
	 * Returns first parent slide with matching label
265
	 * 
266
	 * @param expEntity2
267
	 * @param slideLabel
268
	 * @return Null if not found
269
	 */
270
	public ExpandedSlide getParentExpandedSlide(ExpandedEntity expEntity2,
271
			String slideLabel) {
272
 
273
		ExpandedSlide matchingSlide = null;
274
		List<ExpandedSlide> expSlides = expEntity2.getExpandedSlides();
275
 
276
		for(ExpandedSlide expSlide : expSlides) {
277
			if(expSlide.getSlideDefinition().getLabel().equals(slideLabel)) {
278
				matchingSlide = expSlide;
279
				break;
280
			}
281
		}
282
 
283
		return matchingSlide;
284
	}
1050 rajveer 285
 
10 shop2020 286
}