Subversion Repositories SmartDukaan

Rev

Rev 71 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 71 Rev 72
Line 3... Line 3...
3
 */
3
 */
4
package in.shop2020.util;
4
package in.shop2020.util;
5
 
5
 
6
import in.shop2020.metamodel.core.Entity;
6
import in.shop2020.metamodel.core.Entity;
7
import in.shop2020.metamodel.core.Slide;
7
import in.shop2020.metamodel.core.Slide;
-
 
8
import in.shop2020.metamodel.definitions.CMPBucketDefinition;
8
import in.shop2020.metamodel.definitions.Catalog;
9
import in.shop2020.metamodel.definitions.Catalog;
9
import in.shop2020.metamodel.definitions.DefinitionsContainer;
10
import in.shop2020.metamodel.definitions.DefinitionsContainer;
10
import in.shop2020.metamodel.definitions.EntityContainer;
11
import in.shop2020.metamodel.definitions.EntityContainer;
11
import in.shop2020.metamodel.util.ExpandedCMPSlideRuleDefinition;
12
import in.shop2020.metamodel.util.ExpandedCMPSlideRuleDefinition;
12
import in.shop2020.metamodel.util.ExpandedSlide;
13
import in.shop2020.metamodel.util.ExpandedSlide;
Line 53... Line 54...
53
		CMP cmp = new CMP(categoryID);
54
		CMP cmp = new CMP(categoryID);
54
		
55
		
55
		// Entity ID > List(Slide ID > Score)
56
		// Entity ID > List(Slide ID > Score)
56
		Map<Long, Map<Long, Integer>> slideScoresByEntity = 
57
		Map<Long, Map<Long, Integer>> slideScoresByEntity = 
57
			cmp.getSlideScores();
58
			cmp.getSlideScores();
-
 
59
		Utils.info("slideScoresByEntity=" + slideScoresByEntity);
58
		
60
		
59
		String dbFile = Utils.COMPARISONS_DB_PATH + "slidescores.ser";
61
		String dbFile = Utils.COMPARISONS_DB_PATH + "slidescores.ser";
60
		DBUtils.store(slideScoresByEntity, dbFile);
62
		DBUtils.store(slideScoresByEntity, dbFile);
61
		
63
		
62
		// Entity ID > Final Score 
64
		// Entity ID > Final Score 
63
		Map<Long, Integer> finalScoreByEntityID = cmp.getFinalScores(
65
		Map<Long, Integer> finalScoreByEntityID = cmp.getFinalScores(
64
				slideScoresByEntity);
66
				slideScoresByEntity);
-
 
67
		Utils.info("finalScoreByEntityID=" + finalScoreByEntityID);
65
		
68
		
66
		dbFile = Utils.COMPARISONS_DB_PATH + "defaultentityscores.ser";
69
		dbFile = Utils.COMPARISONS_DB_PATH + "defaultentityscores.ser";
67
		DBUtils.store(finalScoreByEntityID, dbFile);
70
		DBUtils.store(finalScoreByEntityID, dbFile);
68
	}
71
	}
69
	
72
	
Line 157... Line 160...
157
	
160
	
158
	/**
161
	/**
159
	 * 
162
	 * 
160
	 * @param slideScoresByEntity
163
	 * @param slideScoresByEntity
161
	 * @return Map<Long, Integer>
164
	 * @return Map<Long, Integer>
-
 
165
	 * @throws Exception 
162
	 */
166
	 */
163
	private Map<Long, Integer> getFinalScores(
167
	private Map<Long, Integer> getFinalScores(
164
			Map<Long, Map<Long, Integer>> slideScoresByEntity) {
168
			Map<Long, Map<Long, Integer>> slideScoresByEntity) throws Exception {
165
		Map<Long, Integer> finalScoreByEntityID = new TreeMap<Long, Integer>();
169
		Map<Long, Integer> finalScoreByEntityID = new TreeMap<Long, Integer>();
166
		
170
		
167
		// Considering default Weights per Slide bucket
171
		// Considering default Weights per Slide bucket
168
		// Slide buckets > List(Very Important, Regular, Not-so-Important)
172
		// Slide buckets > List(Very Important, Regular, Not-so-Important)
169
		// Default Weights > List(70%, 20%, 10%)
173
		// Default Weights > List(70%, 20%, 10%)
-
 
174
		EntityContainer ents = Catalog.getInstance().getEntityContainer();
-
 
175
		DefinitionsContainer defs = 
-
 
176
			Catalog.getInstance().getDefinitionsContainer();
170
		
177
		
-
 
178
		for(Long entityID : slideScoresByEntity.keySet()) {
-
 
179
			Map<Long, Integer> slideScores = slideScoresByEntity.get(entityID);
-
 
180
			
-
 
181
			Entity entity = ents.getEntity(entityID);
-
 
182
			long categoryID = entity.getCategoryID();
-
 
183
			
-
 
184
			List<CMPBucketDefinition> bucketDefs = 
-
 
185
				defs.getComparisonBucketDefinitions(categoryID);
-
 
186
			
-
 
187
			Map<String, Integer> bucketScores = new HashMap<String, Integer>();
-
 
188
			Map<String, Integer> bucketSlideCounts = 
-
 
189
				new HashMap<String, Integer>();
-
 
190
			
-
 
191
			// Initialize scores
-
 
192
			for(CMPBucketDefinition bucketDef : bucketDefs) {
-
 
193
				bucketScores.put(bucketDef.getName(), new Integer(0));
-
 
194
				bucketSlideCounts.put(bucketDef.getName(), new Integer(0));
-
 
195
			}
-
 
196
			
-
 
197
			for(Long slideDefinitionID : slideScores.keySet()) {
-
 
198
				Integer slideScore = slideScores.get(slideDefinitionID);
-
 
199
				
-
 
200
				String bucketName = defs.getComparisonBucketName(categoryID, 
-
 
201
						slideDefinitionID.longValue());
-
 
202
				
-
 
203
				if(bucketName == null) {
-
 
204
					Utils.warning("Comparison bucket not defined for Category ID="+
-
 
205
							categoryID + " Slide Definition ID=" + 
-
 
206
							slideDefinitionID);
171
		// TODO
207
					
-
 
208
					continue;
-
 
209
				}
-
 
210
				
-
 
211
				Integer bucketScore = bucketScores.get(bucketName);
-
 
212
				Integer bucketSlideCount = bucketSlideCounts.get(bucketName);
-
 
213
				
-
 
214
				Integer newBucketScore =  new Integer(
-
 
215
						bucketScore.intValue() + slideScore.intValue());
-
 
216
				
-
 
217
				Integer newBucketSlideCount =  new Integer(
-
 
218
						bucketSlideCount.intValue() + 1);
-
 
219
				
-
 
220
				bucketScores.put(bucketName, newBucketScore);
-
 
221
				bucketSlideCounts.put(bucketName, newBucketSlideCount);
-
 
222
			}
-
 
223
			
-
 
224
			int finalEntityScore = 0;
-
 
225
			
-
 
226
			// Apply weights and sum up
-
 
227
			for(CMPBucketDefinition bucketDef : bucketDefs) {
-
 
228
				String bucketName = bucketDef.getName();
-
 
229
				Utils.info("bucketName=" + bucketName);
-
 
230
				
-
 
231
				int aggregateBucketScore = bucketScores.get(bucketName);
-
 
232
				Utils.info("aggregateBucketScore=" + aggregateBucketScore);
-
 
233
				
-
 
234
				int bucketSlideCount = bucketSlideCounts.get(bucketName);
-
 
235
				Utils.info("bucketSlideCount=" + bucketSlideCount);
-
 
236
				
-
 
237
				int defaultWeight = bucketDef.getDefaultWeight();
-
 
238
				Utils.info("defaultWeight=" + defaultWeight);
-
 
239
				
-
 
240
				float percentageBucketScore = 
-
 
241
					(((float)aggregateBucketScore/
-
 
242
							((float)bucketSlideCount * 10))) * 100;
-
 
243
				
-
 
244
				Utils.info("percentageBucketScore=" + percentageBucketScore);
-
 
245
				
-
 
246
				float weightedBucketScore = 
-
 
247
					(float)percentageBucketScore * ((float)defaultWeight / 100);
-
 
248
				Utils.info("weightedBucketScore=" + weightedBucketScore);
-
 
249
				
-
 
250
				finalEntityScore += Math.round(weightedBucketScore);
-
 
251
			}
-
 
252
			Utils.info("finalEntityScore=" + finalEntityScore);
-
 
253
			
-
 
254
			finalScoreByEntityID.put(entityID, new Integer(finalEntityScore));
-
 
255
		}
172
		
256
		
173
		return finalScoreByEntityID;
257
		return finalScoreByEntityID;
174
	}
258
	}
175
}
259
}