Subversion Repositories SmartDukaan

Rev

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