Subversion Repositories SmartDukaan

Rev

Rev 4676 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
17 naveen 1
/**
2
 * 
3
 */
4
package in.shop2020.metamodel.util;
5
 
20 naveen 6
import in.shop2020.metamodel.core.Bullet;
21 naveen 7
import in.shop2020.metamodel.core.Entity;
8
import in.shop2020.metamodel.core.Feature;
81 naveen 9
import in.shop2020.metamodel.core.PrimitiveDataObject;
21 naveen 10
import in.shop2020.metamodel.core.Slide;
19 naveen 11
import in.shop2020.metamodel.definitions.BulletDefinition;
17 naveen 12
import in.shop2020.metamodel.definitions.Catalog;
13
import in.shop2020.metamodel.definitions.DefinitionsContainer;
4676 amit.gupta 14
import in.shop2020.metamodel.definitions.EnumValue;
18 naveen 15
import in.shop2020.metamodel.definitions.FeatureDefinition;
16
import in.shop2020.util.Utils;
17 naveen 17
 
22 naveen 18
import java.util.ArrayList;
19
import java.util.HashMap;
20
import java.util.List;
21
import java.util.Map;
22
 
17 naveen 23
import org.apache.commons.lang.ArrayUtils;
24
 
25
/**
49 naveen 26
 * 
17 naveen 27
 * CN - Content Tool
28
 * 
80 naveen 29
 * Currently only has learning logic
30
 * 
17 naveen 31
 * @author naveen
32
 *
33
 */
34
public class CN {
34 naveen 35
 
17 naveen 36
	/**
37
	 * @param args
38
	 */
39
	public static void main(String[] args) throws Exception {
80 naveen 40
		String[] commands = new String[] {"learn"};
17 naveen 41
 
80 naveen 42
		String usage = "Usage: CN learn";
17 naveen 43
 
44
		String inputCommand = args[0];
25 naveen 45
 
17 naveen 46
		if(!ArrayUtils.contains(commands, inputCommand)) {
47
			System.out.println(usage);
48
			System.exit(-1);
49
		}
25 naveen 50
 
79 naveen 51
		if (inputCommand.equals("learn")) {
52
			CN cn = new CN();
53
			cn.learn();
54
		}
17 naveen 55
	}
56
 
57
	/**
58
	 * 
25 naveen 59
	 */
60
	public CN() {
61
	}
1050 rajveer 62
 
2471 rajveer 63
 
64
	private void addHelpdoc(Map<Long, List<Long>> helpdocEntityIds, long helpdocId, long entityId){
65
		List<Long> entityIds = helpdocEntityIds.get(helpdocId);
66
		if(entityIds == null){
67
			entityIds = new ArrayList<Long>();
68
			helpdocEntityIds.put(helpdocId, entityIds);
69
		}
70
		if(!entityIds.contains(entityId)){
71
			entityIds.add(entityId);
72
		}
73
	}
25 naveen 74
 
2471 rajveer 75
	public void learnHelpdocs(Entity entity) throws Exception {
76
		ExpandedEntity expEntity = new ExpandedEntity(entity);
77
		long entityId = expEntity.getID();
78
		Long helpdocId = null;
79
		Map<Long, List<Long>> helpdocEntityIds =  CreationUtils.getHelpdocEntityIds();
80
		if(helpdocEntityIds == null){
81
			helpdocEntityIds = new HashMap<Long, List<Long>>();
82
		}
83
 
84
		List<ExpandedSlide> expSlides = expEntity.getExpandedSlides();
85
		if(expSlides != null){
86
			for(ExpandedSlide expSlide: expSlides){
87
				helpdocId = expSlide.getSlideDefinition().getHelpDocDefinitionID();
88
				if(! (helpdocId == null || helpdocId == 0)){
89
					addHelpdoc(helpdocEntityIds, helpdocId, entityId);
90
				}
91
 
92
				List<ExpandedFeature>  expFeatures = expSlide.getExpandedFeatures();
93
				if(expFeatures != null){
94
					for(ExpandedFeature expFeature: expFeatures){
95
						helpdocId = expFeature.getFeatureDefinition().getHelpDocDefinitionID();
96
						if(! (helpdocId == null || helpdocId == 0)){
97
							addHelpdoc(helpdocEntityIds, helpdocId, entityId);				
98
						}
99
						List<ExpandedBullet> expBullets = expFeature.getExpandedBullets();
100
						if(expBullets != null){
101
							for(ExpandedBullet expBullet: expBullets){
102
								if(expBullet.isEnumerated()){
4676 amit.gupta 103
									EnumValue enumValue = expBullet.getExpandedEnumDataObject().getEnumValue();
104
									if(enumValue != null){
105
										helpdocId = enumValue.getHelpDocDefinitionID();
106
										if(! (helpdocId == null || helpdocId == 0)){
107
											addHelpdoc(helpdocEntityIds, helpdocId, entityId);				
108
										}
2471 rajveer 109
									}
110
								}
111
							}
112
						}
113
					}
114
				}			
115
			}
116
			CreationUtils.storeHelpdocEntityIds(helpdocEntityIds);
117
		}
118
 
119
	}
120
 
25 naveen 121
	/**
79 naveen 122
	 * Learns all features where definition is marked "learned=true"
123
	 * @throws Exception 
124
	 */
1050 rajveer 125
	public void learn(Entity entity) throws Exception {
126
		Map<Long, List<ExpandedBullet>> learnedBullets =  CreationUtils.getLearnedBullets();
127
		if(learnedBullets == null){
128
			learnedBullets = new HashMap<Long, List<ExpandedBullet>>();
129
		}
79 naveen 130
 
1050 rajveer 131
		DefinitionsContainer defs = Catalog.getInstance().getDefinitionsContainer();
82 naveen 132
 
79 naveen 133
 
81 naveen 134
		// Insert Brand
1050 rajveer 135
		List<ExpandedBullet> brandBullets = learnedBullets.get(Utils.BRAND_FEATURE_DEFINITION_ID);
136
		if(brandBullets == null){
137
			brandBullets = new ArrayList<ExpandedBullet>();
138
			learnedBullets.put(Utils.BRAND_FEATURE_DEFINITION_ID, brandBullets);
139
		}
79 naveen 140
 
1050 rajveer 141
		FeatureDefinition brandFeatureDef = defs.getFeatureDefinition(Utils.BRAND_FEATURE_DEFINITION_ID);
82 naveen 142
		BulletDefinition brandBulletDef = brandFeatureDef.getBulletDefinition();
1050 rajveer 143
		Bullet brandBullet = new Bullet(new PrimitiveDataObject(entity.getBrand()));
144
		ExpandedBullet expBrandBullet = new ExpandedBullet(brandBullet,brandBulletDef);
82 naveen 145
 
1050 rajveer 146
		if(!brandBullets.contains(expBrandBullet)) {
147
			brandBullets.add(expBrandBullet);
148
		}
149
 
150
		List<Slide> slides = entity.getSlides();
151
		if(slides != null){
152
			for(Slide slide : slides) {
153
				this.learn(slide, learnedBullets);
81 naveen 154
			}
79 naveen 155
		}
1050 rajveer 156
 
1229 rajveer 157
		//Utils.info("learnedBullets=" + learnedBullets);
1050 rajveer 158
		CreationUtils.storeLearnedBullets(learnedBullets);
8749 amit.gupta 159
		//learnedBullets.toString().length()
79 naveen 160
 
161
	}
1050 rajveer 162
 
79 naveen 163
 
164
	/**
17 naveen 165
	 * 
79 naveen 166
	 * @param slide
167
	 * @param learnedBullets
168
	 * @throws Exception 
169
	 */
82 naveen 170
	private void learn(Slide slide, Map<Long, 
171
			List<ExpandedBullet>> learnedBullets) throws Exception {
79 naveen 172
 
173
		DefinitionsContainer defs = 
174
			Catalog.getInstance().getDefinitionsContainer();
175
 
176
		// Features
177
		List<Feature> features = slide.getFeatures();
178
 
179
		if(features != null) {
180
			for(Feature feature : features) {
181
				Long featureDefID = feature.getFeatureDefinitionID();
182
 
183
				FeatureDefinition featureDef = 
184
					defs.getFeatureDefinition(featureDefID);
185
 
186
				BulletDefinition bulletDef = featureDef.getBulletDefinition();
187
 
188
				if (!bulletDef.isLearned()) {
189
					continue;
190
				}
82 naveen 191
 
192
				// Store expanded bullets to facilitate easy 
193
				// processing later
194
				ExpandedFeature expandedFeature = new ExpandedFeature(feature);
79 naveen 195
 
82 naveen 196
				List<ExpandedBullet> expBullets = 
197
					expandedFeature.getExpandedBullets();
198
 
199
				if(expBullets != null) {
79 naveen 200
 
82 naveen 201
					List<ExpandedBullet> collectedBullets = 
79 naveen 202
						learnedBullets.get(new Long(featureDefID));
203
 
204
					if(collectedBullets == null) {
82 naveen 205
						collectedBullets = new ArrayList<ExpandedBullet>();
8749 amit.gupta 206
						learnedBullets.put(new Long(featureDefID), collectedBullets);
79 naveen 207
					}
208
 
82 naveen 209
					for(ExpandedBullet expBullet : expBullets) {
8749 amit.gupta 210
						if(!collectedBullets.contains(expBullet)) {		
82 naveen 211
							collectedBullets.add(expBullet);
79 naveen 212
						}
213
					}
214
 
215
				}
216
 
217
			}
218
		}
219
 
220
		// Children slides
221
		List<Slide> childrenSlides = slide.getChildrenSlides();
222
 
223
		if(childrenSlides != null) {
224
			for(Slide childSlide : childrenSlides) {
225
				this.learn(childSlide, learnedBullets);
226
			}
227
		}
228
	}
1050 rajveer 229
 
8749 amit.gupta 230
 
1050 rajveer 231
 
232
	/**
233
	 * Learns all features where definition is marked "learned=true"
234
	 * @throws Exception 
235
	 */
236
	public void learn() throws Exception {
237
		Map<Long, List<ExpandedBullet>> learnedBullets = 
238
			new HashMap<Long, List<ExpandedBullet>>();
239
 
240
		DefinitionsContainer defs = 
241
			Catalog.getInstance().getDefinitionsContainer();
242
 
243
 
244
		Map<Long, Entity> entities = CreationUtils.getEntities();
245
 
246
		// Insert Brand
247
		List<ExpandedBullet> brandBullets = new ArrayList<ExpandedBullet>();
248
		learnedBullets.put(new Long(Utils.BRAND_FEATURE_DEFINITION_ID), 
249
				brandBullets);
250
 
251
		FeatureDefinition brandFeatureDef = 
252
			defs.getFeatureDefinition(Utils.BRAND_FEATURE_DEFINITION_ID);
253
 
254
		BulletDefinition brandBulletDef = brandFeatureDef.getBulletDefinition();
255
 
256
		for(Entity entity : entities.values()) {
257
 
258
			// Brand bullet
259
			Bullet brandBullet = new Bullet(
260
					new PrimitiveDataObject(entity.getBrand()));
261
 
262
			ExpandedBullet expBrandBullet = new ExpandedBullet(brandBullet, 
263
					brandBulletDef);
264
 
265
			if(!brandBullets.contains(expBrandBullet)) {
266
				brandBullets.add(expBrandBullet);
267
			}
268
 
269
			List<Slide> slides = entity.getSlides();
270
			if(slides != null){
271
				for(Slide slide : slides) {
272
					this.learn(slide, learnedBullets);
273
				}
274
			}
275
		}
276
 
1229 rajveer 277
		//Utils.info("learnedBullets=" + learnedBullets);
1050 rajveer 278
		CreationUtils.storeLearnedBullets(learnedBullets);
279
 
280
	}
281
 
4676 amit.gupta 282
}