Subversion Repositories SmartDukaan

Rev

Rev 4818 | Rev 5281 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
457 rajveer 1
package in.shop2020.util;
2
 
1226 rajveer 3
import in.shop2020.metamodel.core.Bullet;
479 rajveer 4
import in.shop2020.metamodel.core.Entity;
1226 rajveer 5
import in.shop2020.metamodel.core.EntityState;
3873 mandeep.dh 6
import in.shop2020.metamodel.core.EnumDataObject;
1226 rajveer 7
import in.shop2020.metamodel.core.Feature;
479 rajveer 8
import in.shop2020.metamodel.core.FreeformContent;
1226 rajveer 9
import in.shop2020.metamodel.core.PrimitiveDataObject;
479 rajveer 10
import in.shop2020.metamodel.core.Slide;
580 rajveer 11
import in.shop2020.metamodel.definitions.BulletDefinition;
457 rajveer 12
import in.shop2020.metamodel.definitions.Catalog;
580 rajveer 13
import in.shop2020.metamodel.definitions.Category;
14
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
457 rajveer 15
import in.shop2020.metamodel.definitions.DefinitionsContainer;
580 rajveer 16
import in.shop2020.metamodel.definitions.FeatureDefinition;
17
import in.shop2020.metamodel.definitions.SlideDefinition;
18
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;
479 rajveer 19
import in.shop2020.metamodel.util.CreationUtils;
2720 mandeep.dh 20
import in.shop2020.metamodel.util.ExpandedBullet;
1739 rajveer 21
import in.shop2020.metamodel.util.ExpandedEntity;
2287 rajveer 22
import in.shop2020.model.v1.catalog.InventoryService.Client;
23
import in.shop2020.model.v1.catalog.Item;
24
import in.shop2020.model.v1.catalog.status;
3127 rajveer 25
import in.shop2020.thrift.clients.CatalogClient;
4706 amit.gupta 26
import in.shop2020.utils.Logger;
457 rajveer 27
 
2720 mandeep.dh 28
import java.io.BufferedReader;
29
import java.io.DataInputStream;
30
import java.io.File;
31
import java.io.FileInputStream;
32
import java.io.InputStreamReader;
33
import java.util.ArrayList;
3873 mandeep.dh 34
import java.util.Collections;
4706 amit.gupta 35
import java.util.HashMap;
2720 mandeep.dh 36
import java.util.List;
37
import java.util.Map;
4706 amit.gupta 38
import java.util.Set;
2720 mandeep.dh 39
import java.util.TreeMap;
580 rajveer 40
 
4818 amit.gupta 41
import org.apache.commons.lang.ArrayUtils;
42
import org.apache.commons.lang.StringUtils;
43
 
457 rajveer 44
/*
45
 * @author rajveer 
46
 * 
47
 *
48
 */
49
 
50
public class ContentMigrator {
51
	private String sourceDbPath;
52
	private String destinationDbPath;
4964 amit.gupta 53
 
457 rajveer 54
	public static void main(String[] args) throws Exception {
55
		String usage = "Usage: ContentMigrator {source db path}{destination db path}";
4964 amit.gupta 56
 
57
		String sourceDbPath = null, destinationDbPath = null;
58
		String dryRun = null;
59
		// if(args.length < 2) {
60
		// System.out.println(usage);
61
		// System.exit(-1);
62
		// }else{
63
		// sourceDbPath = args[0];
64
		// destinationDbPath = args[1];
65
		// dryRun = args[2];
66
		// }
67
		//
68
		ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath,
69
				destinationDbPath);
70
		contentmigrator.renameTitles();
71
		// contentmigrator.migrateWarrantyType();
72
		// CreationUtils.storeComparisonStats(null);n
73
		// contentmigrator.migrateMedia();
74
 
75
		// contentmigrator.populateHelpdocEntityIds();
76
		// contentmigrator.migrateDataBack();
77
		// contentmigrator.migrateBrandModel(dryRun);
78
		// contentmigrator.migrateData();
79
		// contentmigrator.migrateRemoveBorrowedCategoryIdFromSlide();
80
		// contentmigrator.migrateModel1();
81
		// contentmigrator.changeEntityState();
82
		// contentmigrator.removeBrowserBullets();
83
		// contentmigrator.migrateModel2();
84
		// contentmigrator.printDataModel();
85
		// contentmigrator.makeEntitiesObject();
86
		// contentmigrator.printSlides();
1739 rajveer 87
		/*
4964 amit.gupta 88
		 * DefinitionsContainer dfc =
89
		 * Catalog.getInstance().getDefinitionsContainer(); for(Long fid:
90
		 * dfc.getCategoryFacetDefinitions().keySet()){ for(FacetDefinition
91
		 * facetDef:
92
		 * dfc.getCategoryFacetDefinitions().get(fid).getFacetDefinitions()){
93
		 * System.out.println("***" + fid + " *** " + facetDef.getID() +
94
		 * facetDef.getTarget() ); }
95
		 * 
96
		 * }
97
		 */
98
 
99
		// System.out.println("**********" + dfc.getCategoryFacetDefinitions());
100
		// System.out.println("**********" + dfc.getSlideFacetDefinitions());
101
 
102
		/*
103
		 * for(Long defID : dfc.getSlideFacetDefinitions().keySet()){
104
		 * for(FacetDefinition facetDef:
105
		 * dfc.getSlideFacetDefinitions().get(defID)){ System.out.println(defID
106
		 * + "****" + facetDef.getID() + facetDef.getDescription()); }
107
		 * 
108
		 * }
109
		 */
110
 
111
		/*
112
		 * System.out.println(OldCreationUtils.getSlideSequence(1000194));
113
		 * List<Slide> slides = OldCreationUtils.getEntity(1000194).getSlides();
114
		 * for(Slide slide: slides){
115
		 * System.out.println(slide.getSlideDefinitionID()); }
116
		 */
117
 
118
		// ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath,
119
		// destinationDbPath);
120
		// boolean result = contentmigrator.migrate();
121
		// System.out.println("Content migration status:  "+ result);
122
 
123
	}
124
 
125
	private void renameTitles() throws Exception {
126
		Map<Long, Entity> map = CreationUtils.getEntities();
127
		for (Long entityId : map.keySet()) {
128
			Entity entity = map.get(entityId);
129
			if (entity == null || entity.getSlides() == null) {
130
				continue;
1314 rajveer 131
			}
132
 
4964 amit.gupta 133
 
134
			String brand = entity.getBrand();
135
			String modelName = entity.getModelName();
136
			String modelNumber = entity.getModelNumber();
137
			String value = "";
138
			if(StringUtils.isEmpty(modelName)){
139
				value = brand + " " + modelNumber + " Price in India | Specifications, Features and Reviews";
140
			}else {
141
				value = brand + " " + modelName + " Price in India | " + modelNumber + " Specifications, Features and Reviews";
1314 rajveer 142
			}
143
 
4964 amit.gupta 144
			Slide summarySlide = entity.getSlide(130054);
145
			if(summarySlide != null){
146
				for(Feature f : summarySlide.getFeatures()){
147
					if (f.getFeatureDefinitionID()==120132){
148
						List<Bullet> bulletList = f.getBullets();
149
						for (Bullet b : bulletList) {
150
							b.setDataObject(new PrimitiveDataObject(value));
151
						}
152
						CreationUtils.updateEntity(entity);
153
						continue;
154
					}
155
				}
156
			}
1314 rajveer 157
		}
457 rajveer 158
	}
159
 
4818 amit.gupta 160
	private void migrateNetwork() throws Exception {
161
		Map<Long, Entity> map = CreationUtils.getEntities();
4964 amit.gupta 162
		for (Long entityId : map.keySet()) {
163
			Entity entity = map.get(entityId);
164
			if (entity == null || entity.getSlides() == null) {
165
				continue;
166
			}
4818 amit.gupta 167
 
4964 amit.gupta 168
			for (Slide slide : entity.getSlides()) {
169
				if (slide.getSlideDefinitionID() == 130005) {
170
					List<Feature> features = slide.getFeatures();
171
					for (Feature f : features) {
172
						if (f.getFeatureDefinitionID() == 120012) {
173
							List<Bullet> bs = f.getBullets();
174
							for (Bullet b : bs) {
175
								String value = ((PrimitiveDataObject) b
176
										.getDataObject()).getValue();
177
								if (value.trim().equals("")) {
178
									continue;
179
								}
180
								// System.out.println(value);
181
								long enumValueID = getEnumValueForNetwork(
182
										value, entityId);
183
								/*
184
								 * if(enumValueID == 110371L){
185
								 * Logger.log("Set entity:" + entityId +
186
								 * " as proprietary software", entity); }
187
								 */
188
								if (enumValueID != 0) {
189
									b.setDataObject(new EnumDataObject(
190
											enumValueID));
191
								}
192
							}
193
						}
194
					}
195
				}
196
 
197
			}
198
 
199
			CreationUtils.updateEntity(entity);
200
		}
4818 amit.gupta 201
	}
202
 
203
	private long getEnumValueForNetwork(String value, Long entityLong) {
204
		value = value.toLowerCase().replaceAll(" ", "");
205
		Map<String, Long> map = new HashMap<String, Long>();
4964 amit.gupta 206
		map.put("quadband(gsm850/900/1800/1900)", 110382L);
4818 amit.gupta 207
		map.put("quadband(gsm850/900/1800/1900)-sim1", 110383l);
208
		map.put("quadband(gsm850/900/1800/1900)-sim2", 110384l);
209
		map.put("triband(gsm900/1800/1900)", 110385l);
210
		map.put("triband(gsm900/1800/1900)-sim1", 110386l);
211
		map.put("triband(gsm900/1800/1900)-sim2", 110387l);
212
		map.put("dualband(gsm900/1800)", 110388l);
213
		map.put("dualband(gsm900/1800)-sim1", 110389l);
214
		map.put("dualband(gsm900/1800)-sim2", 110390l);
4964 amit.gupta 215
		map.put("cdma800", 110391l); // CDMA 800
216
		map.put("cdma800-sim2", 110392l); // CDMA 800-SIM 2
217
		map.put("cdma800-sim3", 110393l); // CDMA 800-SIM 3
218
 
219
		if (!StringUtils.contains(value, "sim")
220
				&& StringUtils.contains(value, "850/900/1800/1900")) {
4818 amit.gupta 221
			return map.get("quadband(gsm850/900/1800/1900)");
222
		}
4964 amit.gupta 223
		if (StringUtils.contains(value, "sim1")
224
				&& StringUtils.contains(value, "850/900/1800/1900")) {
4818 amit.gupta 225
			return map.get("quadband(gsm850/900/1800/1900)-sim1");
226
		}
4964 amit.gupta 227
		if (StringUtils.contains(value, "sim2")
228
				&& StringUtils.contains(value, "850/900/1800/1900")) {
4818 amit.gupta 229
			return map.get("quadband(gsm850/900/1800/1900)-sim2");
230
		}
4964 amit.gupta 231
		if (!StringUtils.contains(value, "sim")
232
				&& StringUtils.contains(value, "900/1800/1900")) {
4818 amit.gupta 233
			return map.get("triband(gsm900/1800/1900)");
234
		}
4964 amit.gupta 235
		if (StringUtils.contains(value, "sim1")
236
				&& StringUtils.contains(value, "900/1800/1900")) {
4818 amit.gupta 237
			return map.get("triband(gsm900/1800/1900)-sim1");
238
		}
4964 amit.gupta 239
		if (StringUtils.contains(value, "sim2")
240
				&& StringUtils.contains(value, "900/1800/1900")) {
4818 amit.gupta 241
			return map.get("triband(gsm900/1800/1900)-sim2");
242
		}
4964 amit.gupta 243
		if (!StringUtils.contains(value, "sim")
244
				&& StringUtils.contains(value, "900/1800")) {
4818 amit.gupta 245
			return map.get("dualband(gsm900/1800)");
246
		}
4964 amit.gupta 247
		if (StringUtils.contains(value, "sim1")
248
				&& StringUtils.contains(value, "900/1800")) {
4818 amit.gupta 249
			return map.get("dualband(gsm900/1800)-sim1");
250
		}
4964 amit.gupta 251
		if (StringUtils.contains(value, "sim2")
252
				&& StringUtils.contains(value, "900/1800")) {
4818 amit.gupta 253
			return map.get("dualband(gsm900/1800)-sim2");
254
		}
4964 amit.gupta 255
		if (StringUtils.contains(value, "cdma")) {
256
			if (StringUtils.contains(value, "sim2")) {
4818 amit.gupta 257
				return map.get("cdma800-sim2");
258
			}
4964 amit.gupta 259
			if (StringUtils.contains(value, "sim3")) {
4818 amit.gupta 260
				return map.get("cdma800-sim3");
261
			}
262
			return map.get("cdma800");
4964 amit.gupta 263
		} else {
264
			System.out.println("Unknown networks: " + value + " : "
265
					+ entityLong);
4818 amit.gupta 266
			return 0;
267
		}
268
	}
269
 
457 rajveer 270
	public ContentMigrator(String sourceDbPath, String destinationDbPath) {
4964 amit.gupta 271
		this.sourceDbPath = sourceDbPath;
457 rajveer 272
		this.destinationDbPath = destinationDbPath;
273
	}
2720 mandeep.dh 274
 
3873 mandeep.dh 275
	public void migrateWarrantyType() throws Exception {
4964 amit.gupta 276
		Map<Long, Entity> map = CreationUtils.getEntities();
277
		for (Long entityId : map.keySet()) {
278
			Entity entity = map.get(entityId);
279
			if (entity == null || entity.getSlides() == null) {
280
				continue;
281
			}
282
			for (Slide slide : entity.getSlides()) {
283
				if (slide.getSlideDefinitionID() == 130054) {
284
					Slide warrantySlide = new Slide(130105);
285
					warrantySlide.setFeatures(new ArrayList<Feature>());
3873 mandeep.dh 286
 
4964 amit.gupta 287
					Feature feature = new Feature(120219);
288
					feature.setBullets(Collections.singletonList(new Bullet(
289
							new EnumDataObject(110299))));
290
					warrantySlide.getFeatures().add(feature);
3873 mandeep.dh 291
 
4964 amit.gupta 292
					Feature existingWarrantyFeature = null;
293
					for (Feature summaryFeature : slide.getFeatures()) {
294
						if (summaryFeature.getFeatureDefinitionID() == 120125) {
295
							existingWarrantyFeature = summaryFeature;
296
							warrantySlide.getFeatures().add(summaryFeature);
297
							break;
298
						}
299
					}
3873 mandeep.dh 300
 
4964 amit.gupta 301
					slide.getFeatures().remove(existingWarrantyFeature);
302
					slide.addChild(warrantySlide);
303
					break;
304
				}
305
 
306
			}
307
 
308
			CreationUtils.updateEntity(entity);
309
		}
3873 mandeep.dh 310
	}
311
 
2720 mandeep.dh 312
	public void migrateMedia() throws Exception {
4964 amit.gupta 313
		Map<Long, Entity> map = CreationUtils.getEntities();
314
		for (Long entityId : map.keySet()) {
315
			Entity entity = map.get(entityId);
316
			if (entity == null || entity.getSlides() == null) {
317
				continue;
318
			}
319
			for (Slide slide : entity.getSlides()) {
320
				FreeformContent ffc = slide.getFreeformContent();
2720 mandeep.dh 321
 
4964 amit.gupta 322
				// if (ffc == null || ffc.getMediasNew() == null) {
323
				// continue;
324
				// }
325
				//
326
				// Map<String, Media> newMap = new LinkedHashMap<String,
327
				// Media>();
328
				// Media media = null;
329
				// for (String label : ffc.getMediasNew().keySet()) {
330
				// MediaNew m = ffc.getMediasNew().get(label);
331
				// media = new Media(m.getLabel(), Media.Type.valueOf(m
332
				// .getType().name()), m.getLocation());
333
				// media.setTitle(m.getTitle());
334
				// media.setFileName(m.getFileName());
335
				// newMap.put(label, media);
336
				// }
337
				// ffc.setMedias(newMap);
338
				// ffc.setMediasNew(null);
2720 mandeep.dh 339
 
4964 amit.gupta 340
				// if (ffc == null || ffc.getMedias() == null) {
341
				// continue;
342
				// }
343
				// Map<String, MediaNew> newMap = new LinkedHashMap<String,
344
				// MediaNew>();
345
				// MediaNew mediaNew = null;
346
				// for (String label : ffc.getMedias().keySet()) {
347
				// Media m = ffc.getMedias().get(label);
348
				// if (m.getType().equalsIgnoreCase("image")) {
349
				// mediaNew = new MediaNew(m.getLabel(),
350
				// MediaNew.Type.IMAGE, m.getLocation());
351
				// mediaNew.setFileName(m.getFileName());
352
				// } else if (m.getType().equalsIgnoreCase("youtube")) {
353
				// if (m.getVideoType().equalsIgnoreCase("withskin")) {
354
				// mediaNew = new MediaNew(m.getLabel(),
355
				// MediaNew.Type.VIDEO_WITH_SKIN,
356
				// m.getLocation());
357
				// } else {
358
				// mediaNew = new MediaNew(m.getLabel(),
359
				// MediaNew.Type.VIDEO_WITHOUT_SKIN,
360
				// m.getLocation());
361
				// }
362
				// }
363
				//
364
				// if (mediaNew != null) {
365
				// mediaNew.setTitle(m.getTitle());
366
				// newMap.put(label, mediaNew);
367
				// }
368
				// }
369
				// ffc.setMediasNew(newMap);
370
				// ffc.setMedias(null);
371
			}
372
			CreationUtils.updateEntity(entity);
373
		}
2720 mandeep.dh 374
	}
375
 
4964 amit.gupta 376
	public boolean populateHelpdocEntityIds() throws Exception {
377
		for (Entity entity : CreationUtils.getEntities().values()) {
2471 rajveer 378
			CreationUtils.updateEntity(entity);
379
		}
380
		return true;
381
	}
2720 mandeep.dh 382
 
4964 amit.gupta 383
	public boolean migrateBrandModel(String dryRun) throws Exception {
3127 rajveer 384
		CatalogClient catalogServiceClient = new CatalogClient();
2287 rajveer 385
		Client client = catalogServiceClient.getClient();
386
		List<Item> items = client.getAllItemsByStatus(status.ACTIVE);
387
		items.addAll(client.getAllItemsByStatus(status.PAUSED));
388
		items.addAll(client.getAllItemsByStatus(status.CONTENT_COMPLETE));
389
		Map<Long, Entity> entities = CreationUtils.getEntities();
390
		long count = 0;
391
		StringBuffer sb = new StringBuffer();
4964 amit.gupta 392
		for (Item item : items) {
2287 rajveer 393
			long entityId = item.getCatalogItemId();
394
			Entity entity = entities.get(entityId);
4964 amit.gupta 395
			if (entity == null) {
2292 rajveer 396
				continue;
397
			}
2294 rajveer 398
			String itemBrand = item.getBrand().trim();
2287 rajveer 399
			String itemModelName = item.getModelName();
4964 amit.gupta 400
			if (itemModelName != null) {
2294 rajveer 401
				itemModelName = itemModelName.trim();
402
			}
403
			String itemModelNumber = item.getModelNumber().trim();
404
			String entityBrand = entity.getBrand().trim();
405
			String entityModelName = entity.getModelName().trim();
4964 amit.gupta 406
			if (entityModelName != null) {
2294 rajveer 407
				entityModelName = entityModelName.trim();
408
			}
409
			String entityModelNumber = entity.getModelNumber().trim();
4964 amit.gupta 410
 
411
			if (itemBrand.equals(entityBrand)
412
					&& itemModelNumber.equals(entityModelNumber)) {
413
				if (itemModelName != null && entityModelName != null
414
						&& itemModelName.equals(entityModelName)) {
2292 rajveer 415
					continue;
4964 amit.gupta 416
				} else if (itemModelName == null && entityModelName == null) {
417
					continue;
2292 rajveer 418
				}
4964 amit.gupta 419
 
2287 rajveer 420
			}
421
			count++;
4964 amit.gupta 422
			sb.append(count + ") Item:   " + itemBrand + "\t" + itemModelName
423
					+ "\t" + itemModelNumber + "\t" + item.getId() + "\n");
424
			sb.append(count + ") Entity: " + entityBrand + "\t"
425
					+ entityModelName + "\t" + entityModelNumber + "\t"
426
					+ entity.getID() + "\n");
427
 
428
			if (dryRun.equals("false")) {
2294 rajveer 429
				item.setBrand(entityBrand);
430
				item.setModelName(entityModelName);
431
				item.setModelNumber(entityModelNumber);
4964 amit.gupta 432
				client.updateItem(item);
2287 rajveer 433
			}
434
		}
435
		System.out.println(sb.toString());
436
		return true;
437
	}
2720 mandeep.dh 438
 
473 rajveer 439
	/**
4964 amit.gupta 440
	 * this function will read source definition and source entities, and will
441
	 * convert source entities to destination entities according to destination
442
	 * definitions.
473 rajveer 443
	 * 
444
	 * @return boolean
4964 amit.gupta 445
	 * @throws Exception
473 rajveer 446
	 */
1226 rajveer 447
 
4964 amit.gupta 448
	public void printSlides() throws Exception {
449
		DefinitionsContainer defc = Catalog.getInstance()
450
				.getDefinitionsContainer();
451
		for (Category category : defc.getCategories().values()) {
452
			if (category.getChildrenCategory() != null)
453
				continue;
454
			System.out.println(category.getID() + "\t" + category.getLabel());
455
			for (CategorySlideDefinition defs : defc
456
					.getCategorySlideDefinitions(category.getID())) {
457
				System.out.println(defs.getSlideDefintionID()
458
						+ "\t"
459
						+ defs.getEditorialImportance()
460
						+ "\t"
461
						+ defc.getSlideDefinition(defs.getSlideDefintionID())
462
								.getLabel()
463
						+ "\t"
464
						+ defc.getSlideDefinition(defs.getSlideDefintionID())
465
								.getChildrenSlideDefinitionIDs());
1226 rajveer 466
			}
467
		}
468
	}
4964 amit.gupta 469
 
470
	public void removeBrowserBullets() throws Exception {
471
		Map<Long, List<ExpandedBullet>> learnedBullets = CreationUtils
472
				.getLearnedBullets();
1226 rajveer 473
		learnedBullets.get(new Long(120076));
474
		learnedBullets.remove(new Long(120076));
475
		CreationUtils.storeLearnedBullets(learnedBullets);
4964 amit.gupta 476
 
1226 rajveer 477
	}
4964 amit.gupta 478
 
479
	public boolean changeEntityState() throws Exception {
1226 rajveer 480
		Map<Long, EntityState> entitiesState = CreationUtils.getEntitiesState();
4964 amit.gupta 481
		for (Long entityId : entitiesState.keySet()) {
1226 rajveer 482
			EntityState state = entitiesState.get(entityId);
4964 amit.gupta 483
			if (state.getCategoryID() == 10002
484
					|| state.getCategoryID() == 10003
485
					|| state.getCategoryID() == 10004
486
					|| state.getCategoryID() == 10005) {
1226 rajveer 487
				state.setCompletedBy("");
488
				state.setMerkedReadyBy("");
4964 amit.gupta 489
				// state.setStatus(EntityStatus.ASSIGNED);
490
				// CreationUtils.updateEntityState(state);
1226 rajveer 491
				System.out.println(entityId + ":" + state.getStatus());
492
			}
493
			CreationUtils.updateEntityState(state);
494
		}
495
		return true;
496
	}
1739 rajveer 497
 
4964 amit.gupta 498
	public boolean migrateDataBack() throws Exception {
1226 rajveer 499
		Map<Long, Entity> entities = CreationUtils.getEntities();
4964 amit.gupta 500
		for (Entity entity : entities.values()) {
501
			if (entity == null) {
502
				continue;
503
			}
1226 rajveer 504
			List<Slide> slides = entity.getSlides();
4964 amit.gupta 505
			if (slides != null) {
506
				for (Slide slide : slides) {
507
					if (slide.getSlideDefinitionID() == 130054) {
508
						List<Feature> features = slide.getFeatures();
509
						int length = features.size();
510
						features.remove(length - 1);
511
						features.remove(length - 2);
512
						features.remove(length - 3);
513
						/*
514
						 * boolean a = false,b=false,c=false; for(Feature
515
						 * feature: features){ switch
516
						 * ((int)feature.getFeatureDefinitionID()) { case
517
						 * 120132: if(a){
518
						 * 
519
						 * }else{ a=true; } break; case 120133: break; case
520
						 * 120134: break; default: break; } }
521
						 */
522
						CreationUtils.updateEntity(entity);
1226 rajveer 523
					}
524
				}
525
			}
526
		}
4964 amit.gupta 527
		return true;
1226 rajveer 528
	}
4964 amit.gupta 529
 
530
	public boolean migrateData() throws Exception {
1226 rajveer 531
		Map<Long, Entity> entities = CreationUtils.getEntities();
4964 amit.gupta 532
		for (Entity entity : entities.values()) {
533
			ExpandedEntity expEntity = new ExpandedEntity(entity);
1226 rajveer 534
			List<Slide> slides = entity.getSlides();
4964 amit.gupta 535
			if (slides != null) {
536
				for (Slide slide : slides) {
537
					if (slide.getSlideDefinitionID() == 130054) {
538
						List<Feature> features = slide.getFeatures();
539
						String title = expEntity.getBrand() + " "
540
								+ expEntity.getModelName() + " "
541
								+ expEntity.getModelNumber();
542
						if (expEntity.getCategory().getParentCategory().getID() == 10001) {
543
							title += " | " + expEntity.getBrand()
544
									+ " Mobile Phones";
1226 rajveer 545
						}
4964 amit.gupta 546
						if (expEntity.getCategory().getParentCategory().getID() == 10011) {
547
							title += " " + expEntity.getCategory().getLabel()
548
									+ " | " + expEntity.getBrand()
549
									+ " Mobile Phone Accessories";
1226 rajveer 550
						}
4964 amit.gupta 551
						title += " | Saholic.com";
552
 
553
						// Add page title
554
						Feature feature1 = new Feature(120132);
555
						PrimitiveDataObject pdo1 = new PrimitiveDataObject(
556
								title);
557
						List<Bullet> bullets1 = new ArrayList<Bullet>();
558
						Bullet bullet1 = new Bullet(pdo1);
559
						bullets1.add(bullet1);
560
						feature1.setBullets(bullets1);
561
						features.add(feature1);
562
 
563
						String description = "Best Price "
564
								+ expEntity.getBrand() + " "
565
								+ expEntity.getModelName() + " "
566
								+ expEntity.getModelNumber() + " ";
567
 
568
						if (expEntity.getCategory().getParentCategory().getID() == 10011) {
569
							description += expEntity.getCategory().getLabel()
570
									+ " in India.";
571
						} else {
572
							description += ".";
1226 rajveer 573
						}
4964 amit.gupta 574
						description += " Experience n' buy online. FREE Next Day delivery."
575
								+ " Original product - Full manufacturer warranty. Comprehensive reviews.";
1226 rajveer 576
 
4964 amit.gupta 577
						description = description.replaceAll("--", "-");
578
 
579
						// Add meta description
580
						Feature feature2 = new Feature(120133);
581
						PrimitiveDataObject pdo2 = new PrimitiveDataObject(
582
								description);
583
						List<Bullet> bullets2 = new ArrayList<Bullet>();
584
						Bullet bullet2 = new Bullet(pdo2);
585
						bullets2.add(bullet2);
586
						feature2.setBullets(bullets2);
587
 
588
						features.add(feature2);
589
 
590
						String keywords = expEntity.getBrand() + " "
591
								+ expEntity.getModelName() + " "
592
								+ expEntity.getModelNumber() + ", ";
593
						if (expEntity.getCategory().getParentCategory().getID() == 10001) {
594
							keywords += expEntity.getBrand()
595
									+ " mobile phones, ";
1226 rajveer 596
						}
4964 amit.gupta 597
						if (expEntity.getCategory().getParentCategory().getID() == 10011) {
598
							keywords += "phone accessories, ";
1226 rajveer 599
						}
4964 amit.gupta 600
						keywords += expEntity.getBrand() + " "
601
								+ expEntity.getModelName() + " "
602
								+ expEntity.getModelNumber() + " Price, ";
603
						keywords += expEntity.getBrand() + " "
604
								+ expEntity.getModelName() + " "
605
								+ expEntity.getModelNumber() + " India, ";
606
						if (expEntity.getCategory().getParentCategory().getID() == 10001) {
607
							keywords += expEntity.getBrand() + " "
608
									+ expEntity.getModelName() + " "
609
									+ expEntity.getModelNumber() + " Review, ";
1226 rajveer 610
						}
4964 amit.gupta 611
						// Add meta keyborad
612
						Feature feature3 = new Feature(120134);
613
						PrimitiveDataObject pdo3 = new PrimitiveDataObject(
614
								keywords);
615
						List<Bullet> bullets3 = new ArrayList<Bullet>();
616
						Bullet bullet3 = new Bullet(pdo3);
617
						bullets3.add(bullet3);
618
						feature3.setBullets(bullets3);
619
 
620
						features.add(feature3);
621
 
622
						CreationUtils.updateEntity(entity);
623
					}
624
				}
625
			}
626
		}
627
		return true;
628
	}
629
 
630
	public boolean migrateModel2() throws Exception {
631
		Map<Long, Entity> entities = CreationUtils.getEntities();
632
		for (Entity entity : entities.values()) {
633
			List<Slide> slides = entity.getSlides();
634
			if (slides != null) {
635
				for (Slide slide : slides) {
636
					if (slide.getSlideDefinitionID() == 130011) {
637
						for (Feature feature : slide.getFeatures()) {
638
							if (feature.getFeatureDefinitionID() == 120054) {
639
								// feature.setFeatureDefinitionID(120030);
640
								System.out.println("* " + entity.getID() + ":"
641
										+ entity.getCategoryID());
1226 rajveer 642
							}
643
						}
4964 amit.gupta 644
					}
1226 rajveer 645
 
4964 amit.gupta 646
					if (slide.getSlideDefinitionID() == 130029) {
647
						// System.out.println("** " + entity.getID() + ":" +
648
						// entity.getCategoryID());
649
						if (entity.getCategoryID() == 10002) {
650
							Feature feature = new Feature(120051);
651
							slide.getFeatures().add(feature);
652
							System.out.println("** " + entity.getID() + ":"
653
									+ entity.getCategoryID());
1226 rajveer 654
						}
655
					}
656
 
657
				}
658
			}
4964 amit.gupta 659
			CreationUtils.updateEntity(entity);
1226 rajveer 660
		}
661
		return true;
662
	}
4964 amit.gupta 663
 
664
	/*
665
	 * public boolean migrateModel1() throws Exception{ //DefinitionsContainer
666
	 * oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH +
667
	 * "olddefinitions" + File.separator); //DefinitionsContainer newDfc = new
668
	 * DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" +
669
	 * File.separator);
670
	 * 
671
	 * Map<Long, Entity> entities = CreationUtils.getEntities(); for(Entity
672
	 * entity: entities.values()){ List<Long> slideSequence =
673
	 * entity.getSlideSequence(); Map<Long,Long> removeMap = new HashMap<Long,
674
	 * Long>(); List<Slide> slides = entity.getSlides(); if(slides!=null){
675
	 * for(Slide slide: slides){ List<Feature> features; Slide childSlide;
676
	 * switch ((int)slide.getSlideDefinitionID()) {
677
	 * 
678
	 * //Keyboard case 130004: case 130026: case 130027: case 130057:
679
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130026);
680
	 * slide.setSlideDefinitionID(130026); break;
681
	 * 
682
	 * //Voice Calling case 130005: removeMap.put(slide.getSlideDefinitionID(),
683
	 * (long)130005); slide.setSlideDefinitionID(130005); features = new
684
	 * ArrayList<Feature>(); features.addAll(slide.getFeatures()); childSlide =
685
	 * slide.getChildrenSlides().get(0);
686
	 * features.addAll(childSlide.getFeatures());
687
	 * if(childSlide.getFreeformContent()!=null){
688
	 * System.out.println("Voice Calling : HAS FFC : " +
689
	 * childSlide.getFreeformContent().getFreeformText() +
690
	 * childSlide.getFreeformContent().getMedias()); }
691
	 * slide.setChildrenSlides(null); slide.setFeatures(features); break; case
692
	 * 130035: removeMap.put(slide.getSlideDefinitionID(), (long)130005);
693
	 * slide.setSlideDefinitionID(130005); for(Feature feata:
694
	 * slide.getFeatures()){ if(feata.getFeatureDefinitionID()==120055){
695
	 * feata.setFeatureDefinitionID(120012); } } break;
696
	 * 
697
	 * //Data Connectivity case 130007: case 130028:
698
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130007);
699
	 * slide.setSlideDefinitionID(130007); break;
700
	 * 
701
	 * //Music case 130029: case 130030: case 130008:
702
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130029);
703
	 * slide.setSlideDefinitionID(130029); break;
704
	 * 
705
	 * //Video case 130031: case 130009:
706
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130031);
707
	 * slide.setSlideDefinitionID(130031); break;
708
	 * 
709
	 * //Camera case 130010: case 130036: case 130037:
710
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130010);
711
	 * slide.setSlideDefinitionID(130010); break; case 130060:
712
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130010);
713
	 * slide.setSlideDefinitionID(130010);
714
	 * 
715
	 * features = slide.getFeatures(); // Just to add camera feature in basic
716
	 * phones Feature feature = new Feature(120056); List<Bullet> bullets = new
717
	 * ArrayList<Bullet>(); PrimitiveDataObject pdo = new
718
	 * PrimitiveDataObject("1"); Bullet bullet = new Bullet(pdo);
719
	 * bullets.add(bullet); feature.setBullets(bullets); features.add(feature);
720
	 * //Created new feature break;
721
	 * 
722
	 * //Memory case 130011: removeMap.put(slide.getSlideDefinitionID(),
723
	 * (long)130011); slide.setSlideDefinitionID(130011); break; case 130032:
724
	 * case 130061: removeMap.put(slide.getSlideDefinitionID(), (long)130011);
725
	 * slide.setSlideDefinitionID(130011); features = slide.getFeatures();
726
	 * for(Feature feat: features){ if(feat.getFeatureDefinitionID() == 120054){
727
	 * feat.setFeatureDefinitionID(120030); } } break;
728
	 * 
729
	 * //Battery case 130044: removeMap.put(slide.getSlideDefinitionID(),
730
	 * (long)130043); slide.setSlideDefinitionID(130043);
731
	 * if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){
732
	 * slide.getChildrenSlides().get(0).setSlideDefinitionID(130046); } break;
733
	 * 
734
	 * case 130042: removeMap.put(slide.getSlideDefinitionID(), (long)130043);
735
	 * slide.setSlideDefinitionID(130043); childSlide =
736
	 * slide.getChildrenSlides().get(0); if(childSlide.getSlideDefinitionID() ==
737
	 * 130045){ childSlide.setSlideDefinitionID(130046); }
738
	 * 
739
	 * List<Feature> childFeatures1 = new ArrayList<Feature>(); List<Feature>
740
	 * childFeatures2 = new ArrayList<Feature>(); Slide childChildSlide1 = new
741
	 * Slide(130048); Slide childChildSlide2 = new Slide(130049);
742
	 * 
743
	 * childChildSlide1.setFeatures(childFeatures1);
744
	 * childChildSlide2.setFeatures(childFeatures2);
745
	 * 
746
	 * childSlide.addChild(childChildSlide1);
747
	 * childSlide.addChild(childChildSlide2);
748
	 * 
749
	 * 
750
	 * for(Feature f: childSlide.getFeatures()){ if(f.getFeatureDefinitionID()
751
	 * == 120063){ f.setFeatureDefinitionID(120068); childFeatures1.add(f); }
752
	 * if(f.getFeatureDefinitionID() == 120064){
753
	 * f.setFeatureDefinitionID(120069); childFeatures2.add(f); } }
754
	 * 
755
	 * childSlide.setFeatures(null);
756
	 * 
757
	 * break;
758
	 * 
759
	 * case 130062: removeMap.put(slide.getSlideDefinitionID(), (long)130043);
760
	 * slide.setSlideDefinitionID(130043);
761
	 * 
762
	 * childSlide = new Slide(130046); features = new ArrayList<Feature>();
763
	 * 
764
	 * slide.addChild(childSlide);
765
	 * 
766
	 * List<Feature> childFeatures11 = new ArrayList<Feature>(); List<Feature>
767
	 * childFeatures21 = new ArrayList<Feature>(); Slide childChildSlide11 = new
768
	 * Slide(130048); Slide childChildSlide21 = new Slide(130049);
769
	 * 
770
	 * childChildSlide11.setFeatures(childFeatures11);
771
	 * childChildSlide21.setFeatures(childFeatures21);
772
	 * 
773
	 * childSlide.addChild(childChildSlide11);
774
	 * childSlide.addChild(childChildSlide21); for(Feature f:
775
	 * slide.getFeatures()){ if(f.getFeatureDefinitionID() == 120072){
776
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120073){
777
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120063){
778
	 * f.setFeatureDefinitionID(120068); childFeatures11.add(f); }
779
	 * if(f.getFeatureDefinitionID() == 120064){
780
	 * f.setFeatureDefinitionID(120069); childFeatures21.add(f); } }
781
	 * slide.setFeatures(features); break;
782
	 * 
783
	 * 
784
	 * //Mail n Msg case 130041: case 130063:
785
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130039);
786
	 * slide.setSlideDefinitionID(130039); break; case 130039:
787
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130039);
788
	 * slide.setSlideDefinitionID(130039);
789
	 * 
790
	 * childSlide = slide.getChildrenSlides().get(0);
791
	 * slide.setFeatures(childSlide.getFeatures());
792
	 * if(childSlide.getFreeformContent()!=null){
793
	 * System.out.println("Mail n Msg : HAS FFC : " +
794
	 * childSlide.getFreeformContent().getFreeformText() +
795
	 * childSlide.getFreeformContent().getMedias()); }
796
	 * slide.setChildrenSlides(null); break;
797
	 * 
798
	 * //Software case 130020: case 130034:
799
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130020);
800
	 * slide.setSlideDefinitionID(130020); break;
801
	 * 
802
	 * 
803
	 * //Internet case 130050: removeMap.put(slide.getSlideDefinitionID(),
804
	 * (long)130050); slide.setSlideDefinitionID(130050);
805
	 * slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures());
806
	 * 
807
	 * if(slide.getChildrenSlides().get(0).getFreeformContent()!=null){ String
808
	 * ffc = slide.getFreeformContent().getFreeformText();
809
	 * if(slide.getChildrenSlides
810
	 * ().get(0).getFreeformContent().getFreeformText()!=null){
811
	 * if(slide.getChildrenSlides
812
	 * ().get(0).getFreeformContent().getFreeformText().trim()!=""){ ffc = ffc +
813
	 * "\n *********    " +
814
	 * slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText();
815
	 * System.out.println("**************" +
816
	 * slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText());
817
	 * } }
818
	 * 
819
	 * List<String> ffcs = new ArrayList<String>(); ffcs.add(ffc);
820
	 * slide.getFreeformContent().setFreeformTexts(ffcs); }
821
	 * 
822
	 * slide.setChildrenSlides(null); //System.out.println("Slide: 130050");
823
	 * //printSlideContent(slide); break;
824
	 * 
825
	 * case 130052: removeMap.put(slide.getSlideDefinitionID(), (long)130050);
826
	 * slide.setSlideDefinitionID(130050);
827
	 * 
828
	 * for(Feature f2: slide.getFeatures()){ if(f2.getFeatureDefinitionID() ==
829
	 * 120077){ f2.setFeatureDefinitionID(120074); // List<Bullet> newBullets =
830
	 * new ArrayList<Bullet>(); // for(Bullet bul: f2.getBullets()){ //
831
	 * CompositeDataObject cdo = (CompositeDataObject) bul.getDataObject(); //
832
	 * for(PrimitiveDataObject pdo1: cdo.getPrimitiveDataObjects()){ //
833
	 * pdo1.getValue(); // BulletDataObject bdo2 = new
834
	 * EnumDataObject(enumValueID); // Bullet newbul = new Bullet(bdo2); //
835
	 * newBullets.add(newbul); // } // // } // f2.setBullets(newBullets); }
836
	 * if(f2.getFeatureDefinitionID() == 120078){
837
	 * f2.setFeatureDefinitionID(120075); } } //
838
	 * slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures()); //
839
	 * slide.setChildrenSlides(null); //System.out.println("Slide: 130052");
840
	 * 
841
	 * //printSlideContent(slide); break;
842
	 * 
843
	 * case 130051: removeMap.put(slide.getSlideDefinitionID(), (long)130050);
844
	 * slide.setSlideDefinitionID(130050); // System.out.println(slide);
845
	 * //System.out.println("Slide 130051:"); // printSlideContent(slide);
846
	 * break;
847
	 * 
848
	 * default: break; }
849
	 * 
850
	 * } List<Long> newSequence = new ArrayList<Long>(); for(Long id:
851
	 * slideSequence){ if(removeMap.containsKey(id)){
852
	 * newSequence.add(removeMap.get(id)); }else{ newSequence.add(id); } }
853
	 * entity.setSlideSequence(newSequence); CreationUtils.updateEntity(entity);
854
	 * } }
855
	 * 
856
	 * return true; }
857
	 */
858
 
859
	public void printSlideContent(Slide slide) {
860
 
861
		System.out.println("Slide: "
862
				+ slide.getFreeformContent().getFreeformText());
863
		if (slide.getFeatures() != null) {
864
			for (Feature feature : slide.getFeatures()) {
865
				if (feature.getBullets() != null) {
866
					for (Bullet bullet : feature.getBullets()) {
867
						// System.out.println(bullet.getDataObject().toString());
868
						// System.out.println(bullet.getFreeformContent());
1226 rajveer 869
					}
870
				}
4964 amit.gupta 871
				if (feature.getFreeformContent() != null) {
872
					System.out.println("Feature: "
873
							+ feature.getFreeformContent().getFreeformText());
1226 rajveer 874
				}
875
			}
876
		}
4964 amit.gupta 877
		if (slide.getChildrenSlides() != null) {
878
			for (Slide sl : slide.getChildrenSlides()) {
1226 rajveer 879
				System.out.println("Child1: ");
880
				printSlideContent(sl);
881
				System.out.println("Child2: ");
882
			}
883
		}
4964 amit.gupta 884
 
1226 rajveer 885
	}
4964 amit.gupta 886
 
1230 rajveer 887
	/*
4964 amit.gupta 888
	 * public boolean migrateModel() throws Exception{ //DefinitionsContainer
889
	 * oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH +
890
	 * "olddefinitions" + File.separator); //DefinitionsContainer newDfc = new
891
	 * DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" +
892
	 * File.separator);
893
	 * 
894
	 * Map<Long, Entity> entities = CreationUtils.getEntities(); for(Entity
895
	 * entity: entities.values()){ List<Slide> slides = entity.getSlides();
896
	 * if(slides!=null){ List<Slide> newSlides = new ArrayList<Slide>();
897
	 * for(Slide slide: slides){ Slide newSlide; List<Feature> features; Slide
898
	 * childSlide; switch ((int)slide.getSlideDefinitionID()) {
899
	 * 
900
	 * //Keyboard case 130004: case 130026: case 130027: case 130057: newSlide =
901
	 * new Slide(130026); newSlide.setChildrenSlides(slide.getChildrenSlides());
902
	 * newSlide.setFeatures(slide.getFeatures());
903
	 * newSlide.setFreeformContent(slide.getFreeformContent());
904
	 * newSlides.add(newSlide); break;
905
	 * 
906
	 * //Voice Calling case 130005: newSlide = new Slide(130005);
907
	 * newSlide.setChildrenSlides(null); features = new ArrayList<Feature>();
908
	 * features.addAll(slide.getFeatures()); childSlide =
909
	 * slide.getChildrenSlides().get(0);
910
	 * features.addAll(childSlide.getFeatures());
911
	 * if(childSlide.getFreeformContent()!=null){
912
	 * System.out.println("Voice Calling : HAS FFC : " +
913
	 * childSlide.getFreeformContent().getFreeformText() +
914
	 * childSlide.getFreeformContent().getMedias()); }
915
	 * newSlide.setFeatures(features);
916
	 * newSlide.setFreeformContent(slide.getFreeformContent());
917
	 * newSlides.add(newSlide); break; case 130035: newSlide = new
918
	 * Slide(130035); newSlide.setChildrenSlides(slide.getChildrenSlides());
919
	 * for(Feature feata: slide.getFeatures()){
920
	 * if(feata.getFeatureDefinitionID()==120055){
921
	 * feata.setFeatureDefinitionID(120012); } }
922
	 * newSlide.setFeatures(slide.getFeatures());
923
	 * newSlide.setFreeformContent(slide.getFreeformContent());
924
	 * newSlides.add(newSlide); break;
925
	 * 
926
	 * //Data Connectivity case 130007: case 130028: newSlide = new
927
	 * Slide(130007); newSlide.setChildrenSlides(slide.getChildrenSlides());
928
	 * newSlide.setFeatures(slide.getFeatures());
929
	 * newSlide.setFreeformContent(slide.getFreeformContent());
930
	 * newSlides.add(newSlide); break;
931
	 * 
932
	 * //Music case 130029: case 130030: case 130008: newSlide = new
933
	 * Slide(130029); newSlide.setChildrenSlides(slide.getChildrenSlides());
934
	 * newSlide.setFeatures(slide.getFeatures());
935
	 * newSlide.setFreeformContent(slide.getFreeformContent());
936
	 * newSlides.add(newSlide); break;
937
	 * 
938
	 * //Video case 130031: case 130009: newSlide = new Slide(130031);
939
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
940
	 * newSlide.setFeatures(slide.getFeatures());
941
	 * newSlide.setFreeformContent(slide.getFreeformContent());
942
	 * newSlides.add(newSlide); break;
943
	 * 
944
	 * //Camera case 130010: case 130036: case 130037: newSlide = new
945
	 * Slide(130010); newSlide.setChildrenSlides(slide.getChildrenSlides());
946
	 * newSlide.setFeatures(slide.getFeatures());
947
	 * newSlide.setFreeformContent(slide.getFreeformContent());
948
	 * newSlides.add(newSlide); break; case 130060: newSlide = new
949
	 * Slide(130010); newSlide.setChildrenSlides(slide.getChildrenSlides());
950
	 * features = slide.getFeatures(); // Just to add camera feature in basic
951
	 * phones Feature feature = new Feature(120056); List<Bullet> bullets = new
952
	 * ArrayList<Bullet>(); PrimitiveDataObject pdo = new
953
	 * PrimitiveDataObject("1"); Bullet bullet = new Bullet(pdo);
954
	 * bullets.add(bullet); feature.setBullets(bullets); features.add(feature);
955
	 * //Created new feature newSlide.setFeatures(features);
956
	 * newSlide.setFreeformContent(slide.getFreeformContent());
957
	 * newSlides.add(newSlide); break;
958
	 * 
959
	 * //Memory case 130011: newSlide = new Slide(130011);
960
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
961
	 * newSlide.setFeatures(slide.getFeatures());
962
	 * newSlide.setFreeformContent(slide.getFreeformContent());
963
	 * newSlides.add(newSlide); break; case 130032: case 130061: newSlide = new
964
	 * Slide(130011); newSlide.setChildrenSlides(slide.getChildrenSlides());
965
	 * features = slide.getFeatures(); for(Feature feat: features){
966
	 * if(feat.getFeatureDefinitionID() == 130054){
967
	 * feat.setFeatureDefinitionID(120030); } }
968
	 * newSlide.setFeatures(slide.getFeatures());
969
	 * newSlide.setFreeformContent(slide.getFreeformContent());
970
	 * newSlides.add(newSlide); break;
971
	 * 
972
	 * //Battery case 130044: newSlide = new Slide(130043);
973
	 * if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){
974
	 * slide.getChildrenSlides().get(0).setSlideDefinitionID(130046); }
975
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
976
	 * newSlide.setFeatures(slide.getFeatures());
977
	 * newSlide.setFreeformContent(slide.getFreeformContent());
978
	 * newSlides.add(newSlide); break;
979
	 * 
980
	 * case 130042: newSlide = new Slide(130043); childSlide =
981
	 * slide.getChildrenSlides().get(0); if(childSlide.getSlideDefinitionID() ==
982
	 * 130045){ childSlide.setSlideDefinitionID(130046); }
983
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
984
	 * 
985
	 * List<Feature> childFeatures1 = new ArrayList<Feature>(); List<Feature>
986
	 * childFeatures2 = new ArrayList<Feature>(); Slide childChildSlide1 = new
987
	 * Slide(130048); Slide childChildSlide2 = new Slide(130049);
988
	 * 
989
	 * childChildSlide1.setFeatures(childFeatures1);
990
	 * childChildSlide2.setFeatures(childFeatures2);
991
	 * 
992
	 * childSlide.addChild(childChildSlide1);
993
	 * childSlide.addChild(childChildSlide2);
994
	 * 
995
	 * 
996
	 * for(Feature f: childSlide.getFeatures()){ if(f.getFeatureDefinitionID()
997
	 * == 120063){ f.setFeatureDefinitionID(120068); childFeatures1.add(f); }
998
	 * if(f.getFeatureDefinitionID() == 120064){
999
	 * f.setFeatureDefinitionID(120069); childFeatures2.add(f); } }
1000
	 * 
1001
	 * childSlide.setFeatures(null);
1002
	 * 
1003
	 * newSlide.setFeatures(slide.getFeatures());
1004
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1005
	 * newSlides.add(newSlide); break;
1006
	 * 
1007
	 * case 130062: newSlide = new Slide(130043);
1008
	 * newSlide.setChildrenSlides(slide.getChildrenSlides()); childSlide = new
1009
	 * Slide(130046); features = new ArrayList<Feature>();
1010
	 * newSlide.setFeatures(features); newSlide.addChild(childSlide);
1011
	 * 
1012
	 * List<Feature> childFeatures11 = new ArrayList<Feature>(); List<Feature>
1013
	 * childFeatures21 = new ArrayList<Feature>(); Slide childChildSlide11 = new
1014
	 * Slide(130048); Slide childChildSlide21 = new Slide(130049);
1015
	 * 
1016
	 * childChildSlide11.setFeatures(childFeatures11);
1017
	 * childChildSlide21.setFeatures(childFeatures21);
1018
	 * 
1019
	 * childSlide.addChild(childChildSlide11);
1020
	 * childSlide.addChild(childChildSlide21); for(Feature f:
1021
	 * slide.getFeatures()){ if(f.getFeatureDefinitionID() == 120072){
1022
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120073){
1023
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120063){
1024
	 * f.setFeatureDefinitionID(120068); childFeatures11.add(f); }
1025
	 * if(f.getFeatureDefinitionID() == 120064){
1026
	 * f.setFeatureDefinitionID(120069); childFeatures21.add(f); } }
1027
	 * 
1028
	 * newSlide.setFeatures(slide.getFeatures());
1029
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1030
	 * newSlides.add(newSlide); break;
1031
	 * 
1032
	 * 
1033
	 * //Mail n Msg case 130041: case 130063: newSlide = new Slide(130039);
1034
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
1035
	 * newSlide.setFeatures(slide.getFeatures());
1036
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1037
	 * newSlides.add(newSlide); break; case 130039: newSlide = new
1038
	 * Slide(130039); //newSlide.setChildrenSlides(slide.getChildrenSlides());
1039
	 * childSlide = slide.getChildrenSlides().get(0);
1040
	 * newSlide.setFeatures(childSlide.getFeatures());
1041
	 * if(childSlide.getFreeformContent()!=null){
1042
	 * System.out.println("Mail n Msg : HAS FFC : " +
1043
	 * childSlide.getFreeformContent().getFreeformText() +
1044
	 * childSlide.getFreeformContent().getMedias()); }
1045
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1046
	 * newSlides.add(newSlide); break;
1047
	 * 
1048
	 * //Software case 130020: case 130034: newSlide = new Slide(130034);
1049
	 * newSlide.setChildrenSlides(slide.getChildrenSlides()); features =
1050
	 * slide.getFeatures(); newSlide.setFeatures(slide.getFeatures());
1051
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1052
	 * newSlides.add(newSlide); break;
1053
	 * 
1054
	 * 
1055
	 * default: newSlides.add(slide); break; } } entity.setSlides(newSlides);
1056
	 * CreationUtils.updateEntity(entity); } }
1057
	 * 
1058
	 * return true; }
1059
	 */
1060
	public boolean migrateRemoveBorrowedCategoryIdFromSlide() throws Exception {
1226 rajveer 1061
		Map<Long, Entity> entities = CreationUtils.getEntities();
4964 amit.gupta 1062
		for (Entity entity : entities.values()) {
1063
			if (entity.getID() == 0) {
1226 rajveer 1064
				CreationUtils.deleteEntity(entity.getID());
1065
			}
1066
			List<Slide> slides = entity.getSlides();
4964 amit.gupta 1067
			if (slides != null) {
1226 rajveer 1068
				List<Slide> newSlides = new ArrayList<Slide>();
4964 amit.gupta 1069
				for (Slide slide : slides) {
1226 rajveer 1070
					Slide newSlide = new Slide(slide.getSlideDefinitionID());
1071
					newSlide.setChildrenSlides(slide.getChildrenSlides());
1072
					newSlide.setFeatures(slide.getFeatures());
1073
					newSlide.setFreeformContent(slide.getFreeformContent());
1074
					newSlides.add(newSlide);
1075
				}
1076
				entity.setSlides(newSlides);
1077
				CreationUtils.updateEntity(entity);
1078
			}
1079
		}
1080
		return true;
1081
	}
479 rajveer 1082
 
4964 amit.gupta 1083
	public boolean migrate() throws Exception {
580 rajveer 1084
		/*
4964 amit.gupta 1085
		 * DefinitionsContainer sourceDefs = new
1086
		 * DefinitionsContainer(sourceDbPath); DefinitionsContainer
1087
		 * destinationDefs = new DefinitionsContainer(destinationDbPath);
1088
		 * EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
1089
		 * EntityContainer destinationEnts = new
1090
		 * EntityContainer(destinationDbPath);
1091
		 * 
1092
		 * Map<Long, Entity> entities = sourceEnts.getEntities();
1093
		 * 
1094
		 * File f = new File("/home/rajveer/Desktop/info.txt"); FileWriter
1095
		 * fstream = new FileWriter(f); BufferedWriter out = new
1096
		 * BufferedWriter(fstream); StringBuilder sb = new StringBuilder();
1097
		 * 
1098
		 * 
1099
		 * for(Entity entity: entities.values()){ List<Slide> slides =
1100
		 * entity.getSlides();
1101
		 * 
1102
		 * //List<String> vidLabels =
1103
		 * CreationUtils.getMediaLabels(entity.getID(),"youtube");
1104
		 * //List<String> imgLabels =
1105
		 * CreationUtils.getMediaLabels(entity.getID(),"image");
1106
		 * 
1107
		 * //Map<String, Media> rawMedia =
1108
		 * CreationUtils.getRawMedia(entity.getID());
1109
		 * 
1110
		 * 
1111
		 * // List<String> vidLabels =
1112
		 * OldCreationUtils.getMediaLabels(entity.getID(),"youtube"); //
1113
		 * List<String> imgLabels =
1114
		 * OldCreationUtils.getMediaLabels(entity.getID(),"image");
1115
		 * 
1116
		 * Entity newEntity = new Entity(entity.getID(),
1117
		 * entity.getCategoryID()); newEntity.setBrand(entity.getBrand());
1118
		 * newEntity.setModelName(entity.getModelName());
1119
		 * newEntity.setModelNumber(entity.getModelNumber());
1120
		 * 
1121
		 * 
1122
		 * Map<String, in.shop2020.creation.util.Media> rawMedia =
1123
		 * OldCreationUtils.getRawMedia(entity.getID());
1124
		 * 
1125
		 * Map<String, Media> newrawMedia = new HashMap<String, Media>();
1126
		 * 
1127
		 * 
1128
		 * int totalRawVideos = 0; int totalRawImages = 0;
1129
		 * 
1130
		 * if(rawMedia!=null){ for(String label: rawMedia.keySet()){
1131
		 * in.shop2020.creation.util.Media media = rawMedia.get(label);
1132
		 * 
1133
		 * label = media.getLabel(); String type = media.getType(); String
1134
		 * location = media.getLocation();
1135
		 * 
1136
		 * Media newMedia = new Media(label, type, location);
1137
		 * 
1138
		 * newMedia.setTitle("Title"); if(type.equals("image")){
1139
		 * totalRawImages++; newMedia.setFileName(media.getFileName());
1140
		 * newMedia.setVideoType(""); }else{ totalRawVideos++;
1141
		 * newMedia.setVideoType("withoutskin"); newMedia.setFileName(""); }
1142
		 * 
1143
		 * newrawMedia.put(label, newMedia); System.out.println("old " +
1144
		 * media.toString()); // System.out.println("new " +
1145
		 * newMedia.toString()); // OldCreationUtils.removeMedia(entity.getID(),
1146
		 * label); // CreationUtils.addMedia(entity.getID(), newMedia); } }
1147
		 * 
1148
		 * int totalVideos = 0; int totalImages = 0; if(rawMedia==null){
1149
		 * for(Slide slide: slides ){
1150
		 */
1151
		/*
1152
		 * FreeformContent ffc = slide.getFreeformContent(); List<String>
1153
		 * vidList = new ArrayList<String>(); List<String> imgList = new
1154
		 * ArrayList<String>();
1155
		 * 
1156
		 * if(ffc!=null){ List<String> vidFfcLabels = ffc.getYoutubeRefs();
1157
		 * if(vidFfcLabels!=null){ for(String vidFfcLabel: vidFfcLabels){
1158
		 * StringTokenizer strTkn = new StringTokenizer(vidFfcLabel,"~!~");
1159
		 * String vidLabel = null; if(strTkn.hasMoreTokens()){ vidLabel =
1160
		 * strTkn.nextToken(); vidList.add(vidFfcLabel);
1161
		 * 
1162
		 * // ffc.removeMedia("youtube", vidFfcLabel); //
1163
		 * ffc.addMedia("youtube", vidLabel); } if(vidLabel == null){
1164
		 * System.out.println("Something is really breaking .. bu ha ha !!!"); }
1165
		 * totalVideos++; } } List<String> imgFfcLabels = ffc.getImageRefs();
1166
		 * if(imgFfcLabels!=null){ for(String imgFfcLabel: imgFfcLabels){
1167
		 * StringTokenizer strTkn = new StringTokenizer(imgFfcLabel,"~!~");
1168
		 * String imgLabel = null; if(strTkn.hasMoreTokens()){ imgLabel =
1169
		 * strTkn.nextToken(); imgList.add(imgFfcLabel);
1170
		 * 
1171
		 * // ffc.removeMedia("image", imgFfcLabel); // ffc.addMedia("image",
1172
		 * imgLabel); } if(imgLabel == null){
1173
		 * System.out.println("Something is really breaking .. bu ha ha !!!"); }
1174
		 * totalImages++; } }
1175
		 * 
1176
		 * for(String vidlab : vidList){ ffc.removeMedia("youtube", vidlab);
1177
		 * ffc.addMedia("youtube", (new StringTokenizer(vidlab,
1178
		 * "~!~")).nextToken()); } for(String imglab : imgList){
1179
		 * ffc.removeMedia("image",imglab); ffc.addMedia("image", (new
1180
		 * StringTokenizer(imglab, "~!~")).nextToken()); }
1181
		 * slide.setFreeformContent(ffc); System.out.println("Slide id is " +
1182
		 * slide.getSlideDefinitionID() + "   vid labels:  " + vidFfcLabels +
1183
		 * "   img labels" + imgFfcLabels); }
1184
		 */
1185
		/*
1186
		 * newEntity.addSlide(slide); }
1187
		 * 
1188
		 * // System.out.println("entity:"+ entity.getID() + ":trv:" +
1189
		 * totalRawVideos + ":tri:" + totalRawImages +":tv:" + totalVideos
1190
		 * +":ti:" + totalImages); // sb.append("entity:"+ entity.getID() +
1191
		 * ":trv:" + totalRawVideos + ":tri:" + totalRawImages +":tv:" +
1192
		 * totalVideos +":ti:" + totalImages+ ":tr:"
1193
		 * +(totalRawVideos+totalRawImages) + ":t:" +(totalVideos+totalImages) +
1194
		 * ":vd:" +(totalRawVideos-totalVideos) + ":id:"
1195
		 * +(totalRawImages-totalImages) + "\n"); sb.append(entity.getID() +
1196
		 * "\n");
1197
		 * 
1198
		 * 
1199
		 * destinationEnts.updateEntity(newEntity);
1200
		 * CreationUtils.storeEntity(newEntity);
1201
		 * 
1202
		 * Map<Long, List<Entity>> entitiesByCategory =
1203
		 * sourceEnts.getEntitiesbyCategory();
1204
		 * 
1205
		 * Map<Long, Entity> xentities = destinationEnts.getEntities();
1206
		 * 
1207
		 * CreationUtils.rewriteRepository(xentities, entitiesByCategory); }
1208
		 * else{ sb.append("				" + entity.getID() + "\n"); } }
1209
		 * 
1210
		 * 
1211
		 * out.write(sb.toString()); out.close();
1212
		 */
457 rajveer 1213
		return true;
1214
	}
4964 amit.gupta 1215
 
1216
	private boolean makeEntitiesObject() throws Exception {
1217
		// DefinitionsContainer sourceDefs = new
1218
		// DefinitionsContainer(sourceDbPath);
1219
		// DefinitionsContainer destinationDefs = new
1220
		// DefinitionsContainer(destinationDbPath);
1221
		// EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
1222
		// EntityContainer destinationEnts = new
1223
		// EntityContainer(destinationDbPath);
1224
 
1225
		/*
1226
		 * Map<Long, List<Entity>> catEntities =
1227
		 * sourceEnts.getEntitiesbyCategory();
1228
		 * 
1229
		 * Map<Long, Entity> entities = sourceEnts.getEntities(); for(Long
1230
		 * catId: catEntities.keySet()){ List<Entity> ents =
1231
		 * catEntities.get(catId); for(Entity entity: ents){
1232
		 * entities.put(entity.getID(), entity);
1233
		 * System.out.println(entity.getID() + ":" + entity.getCategoryID() +
1234
		 * ":"+ entity.getBrand() + " "+ entity.getModelName() + " " +
1235
		 * entity.getModelNumber()); } }
1236
		 */
1237
 
791 rajveer 1238
		Map<Long, List<Entity>> catEntities = new TreeMap<Long, List<Entity>>();
1239
		Map<Long, Entity> entities = new TreeMap<Long, Entity>();
2720 mandeep.dh 1240
 
4964 amit.gupta 1241
		FileInputStream fstream = new FileInputStream("/home/rajveer/Desktop/1");
1242
		DataInputStream in = new DataInputStream(fstream);
1243
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
1244
		String strLine;
2720 mandeep.dh 1245
 
4964 amit.gupta 1246
		while ((strLine = br.readLine()) != null) {
1247
			long entityID = Long.parseLong(strLine);
1248
			String entityDBFile = sourceDbPath + "entities" + File.separator
1249
					+ entityID + "/entity.ser";
1250
			System.out.println(entityDBFile);
1251
			Entity entity = (Entity) DBUtils.read(entityDBFile);
1252
			entities.put(entityID, entity);
2720 mandeep.dh 1253
 
4964 amit.gupta 1254
			List<Entity> catent = catEntities.get(entity.getCategoryID());
1255
			if (catent == null) {
1256
				catent = new ArrayList<Entity>();
1257
			}
1258
			catent.add(entity);
1259
			catEntities.put(entity.getCategoryID(), catent);
1260
		}
1261
		in.close();
1262
 
1263
		String entitiesDBFile = sourceDbPath + "entities" + File.separator
1264
				+ "entities.ser";
1265
		String entitiesbycategoryDBFile = sourceDbPath + "entities"
1266
				+ File.separator + "entitiesbycategory.ser";
1267
 
791 rajveer 1268
		DBUtils.delete(entitiesDBFile);
1269
		DBUtils.store(entities, entitiesDBFile);
2720 mandeep.dh 1270
 
4964 amit.gupta 1271
		// Remove existing
791 rajveer 1272
		DBUtils.delete(entitiesbycategoryDBFile);
1273
		DBUtils.store(catEntities, entitiesbycategoryDBFile);
2720 mandeep.dh 1274
 
4964 amit.gupta 1275
		return false;
791 rajveer 1276
	}
2720 mandeep.dh 1277
 
4964 amit.gupta 1278
	private boolean printDataModel() throws Exception {
1279
		DefinitionsContainer dfc = Catalog.getInstance()
1280
				.getDefinitionsContainer();
1226 rajveer 1281
		StringBuilder sb = new StringBuilder();
2720 mandeep.dh 1282
 
1226 rajveer 1283
		Map<Long, SlideDefinition> allSlideDefs = dfc.getSlideDefinitions();
4964 amit.gupta 1284
		for (Long slideDefId : allSlideDefs.keySet()) {
1226 rajveer 1285
			SlideDefinition slideDef = allSlideDefs.get(slideDefId);
1286
			sb.append(slideDefId + " - " + slideDef.getLabel() + "\n");
4964 amit.gupta 1287
			if (!slideDef.getChildrenSlideDefinitionIDs().isEmpty()) {
1288
				sb.append("Child Slides are: \t"
1289
						+ slideDef.getChildrenSlideDefinitionIDs() + "\n");
1226 rajveer 1290
			}
4964 amit.gupta 1291
			List<SlideFeatureDefinition> featureDefs = slideDef
1292
					.getSlideFeatureDefinitions();
1293
			for (SlideFeatureDefinition featureDef : featureDefs) {
1294
				sb.append("\t"
1295
						+ featureDef.getFeatureDefintionID()
1296
						+ "\t"
1297
						+ dfc.getFeatureDefinition(
1298
								featureDef.getFeatureDefintionID()).getLabel()
1299
						+ "\t" + featureDef.getEditorialImportance() + "\n");
1226 rajveer 1300
			}
1301
		}
1302
		System.out.println(sb.toString());
580 rajveer 1303
		Map<Long, Category> categories = dfc.getCategories();
4964 amit.gupta 1304
		if (categories != null) {
1226 rajveer 1305
			return true;
1306
		}
4964 amit.gupta 1307
		for (Category category : categories.values()) {
1308
			if (category.getChildrenCategory() != null) {
580 rajveer 1309
				continue;
1310
			}
1226 rajveer 1311
			sb.append(category.getLabel() + "\n");
4964 amit.gupta 1312
			List<CategorySlideDefinition> slideDefs = dfc
1313
					.getCategorySlideDefinitions(category.getID());
1314
			List<Long> slideSequence = dfc.getCategorySlideSequence(category
1315
					.getID());
1316
			for (CategorySlideDefinition slideDef : slideDefs) {
1317
				sb.append("\t"
1318
						+ dfc.getSlideDefinition(slideDef.getSlideDefintionID())
1319
								.getLabel() + "\t"
1320
						+ slideDef.getEditorialImportance() + "\n");
1321
				// List<FeatureDefinition> featureDefs =
1322
				// dfc.getFeatureDefinitions(slideDef.getSlideDefintionID());
1323
 
1324
				List<SlideFeatureDefinition> slideFeatureDefs = dfc
1325
						.getSlideDefinition(slideDef.getSlideDefintionID())
1326
						.getSlideFeatureDefinitions();
1327
 
1328
				for (SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
1329
					FeatureDefinition featureDef = dfc
1330
							.getFeatureDefinition(slideFeatureDef
1331
									.getFeatureDefintionID());
1332
					BulletDefinition bulletDef = featureDef
1333
							.getBulletDefinition();
1334
					sb.append("\t\t\t" + featureDef.getLabel() + "\t"
1335
							+ slideFeatureDef.getEditorialImportance() + "\t"
1336
							+ featureDef.allowsBlank() + "\t"
1337
							+ bulletDef.isLearned() + "\t"
1338
							+ bulletDef.isMultivalue());
580 rajveer 1339
					List<Long> units = bulletDef.getUnitIDs();
4964 amit.gupta 1340
					if (bulletDef.getDatatypeDefinitionID() != null) {
1341
						sb.append("\t"
1342
								+ dfc.getDatatypeDefinition(
1343
										bulletDef.getDatatypeDefinitionID())
1344
										.getName());
1345
 
1226 rajveer 1346
					}
4964 amit.gupta 1347
					if (units != null) {
1348
						for (Long unit : units) {
1349
							sb.append("\t" + dfc.getUnit(unit).getFullForm()
1350
									+ "\t" + dfc.getUnit(unit).getShortForm());
580 rajveer 1351
						}
1352
					}
1226 rajveer 1353
					sb.append("\n");
580 rajveer 1354
				}
4964 amit.gupta 1355
 
580 rajveer 1356
				/*
4964 amit.gupta 1357
				 * for(FeatureDefinition featureDef: featureDefs){
1358
				 * BulletDefinition bulletDef =
1359
				 * featureDef.getBulletDefinition(); System.out.println("			" +
1360
				 * featureDef.getLabel() + " 	" + featureDef.allowsBlank() + "	"
1361
				 * + bulletDef.isLearned() + "	" + bulletDef.isMultivalue());
1362
				 * List<Long> units = bulletDef.getUnitIDs(); if(units!=null){
1363
				 * for(Long unit: units){ System.out.println("								"+
1364
				 * dfc.getUnit(unit).getFullForm() + "	"+
1365
				 * dfc.getUnit(unit).getShortForm()); } }
1366
				 * if(bulletDef.getDatatypeDefinitionID()!=null){
1367
				 * System.out.println("										" +
1368
				 * dfc.getDatatypeDefinition(bulletDef
1369
				 * .getDatatypeDefinitionID()).getName());
1370
				 * 
1371
				 * } }
1372
				 */
580 rajveer 1373
			}
1374
		}
1226 rajveer 1375
		System.out.println(sb.toString());
580 rajveer 1376
		return true;
1377
	}
4964 amit.gupta 1378
 
1379
	public boolean migrateOS() throws Exception {
4706 amit.gupta 1380
		Map<Long, Entity> map = CreationUtils.getEntities();
4964 amit.gupta 1381
		for (Long entityId : map.keySet()) {
1382
			Entity entity = map.get(entityId);
1383
			if (entity == null || entity.getSlides() == null) {
1384
				continue;
1385
			}
1386
 
1387
			for (Slide slide : entity.getSlides()) {
1388
				if (slide.getSlideDefinitionID() == 130020) {
1389
					List<Feature> features = slide.getFeatures();
1390
					for (Feature f : features) {
1391
						if (f.getFeatureDefinitionID() == 120043) {
1392
							Bullet b = f.getBullets().get(0);
1393
							String value = ((PrimitiveDataObject) b
1394
									.getDataObject()).getValue();
1395
							long enumValueID = getEnumValueForOS(value);
1396
							if (enumValueID == 110371L) {
1397
								Logger.log("Set entity:" + entityId
1398
										+ " as proprietary software", entity);
1399
							}
4706 amit.gupta 1400
							b.setDataObject(new EnumDataObject(enumValueID));
4964 amit.gupta 1401
						}
1402
					}
1403
				}
4706 amit.gupta 1404
 
4964 amit.gupta 1405
			}
1406
 
1407
			CreationUtils.updateEntity(entity);
1408
		}
1409
		return true;
4706 amit.gupta 1410
	}
1411
 
1412
	private long getEnumValueForOS(String value) {
1413
		value = value.toLowerCase();
1414
		Map<String, Long> map = getOSEnumMap();
4964 amit.gupta 1415
		String os = "Proprietary software";
1416
		if (value.contains("android")) {
1417
			if (value.contains("1.5")) {
1418
				os = "Android v1.5 (Cupcake)";
1419
			}
1420
			if (value.contains("1.6")) {
1421
				os = "Android v1.6 (Donut)";
1422
			}
1423
			if (value.contains("2.1")) {
1424
				os = "Android v2.1 (Eclair)";
1425
			}
1426
			if (value.contains("2.2")) {
1427
				os = "Android v2.2 (Froyo)";
1428
			}
1429
			if (value.contains("2.3")) {
1430
				os = "Android v2.3 (Gingerbread)";
1431
			}
1432
			if (value.contains("3.0")) {
1433
				os = "Android v3.0 (Honeycomb)";
1434
			}
1435
			if (value.contains("3.1")) {
1436
				os = "Android v3.1 (Honeycomb)";
1437
			}
1438
			if (value.contains("3.2")) {
1439
				os = "Android v3.2 (Honeycomb)";
1440
			}
4706 amit.gupta 1441
		}
4964 amit.gupta 1442
		if (value.contains("blackberry")) {
1443
			if (value.contains("os")) {
4706 amit.gupta 1444
				os = "BlackBerry OS";
1445
			}
4964 amit.gupta 1446
			if (value.contains("5.0")) {
4706 amit.gupta 1447
				os = "BlackBerry OS 5.0";
1448
			}
4964 amit.gupta 1449
			if (value.contains("6.0")) {
4706 amit.gupta 1450
				os = "BlackBerry OS 6.0";
1451
			}
4964 amit.gupta 1452
			if (value.contains("7.0")) {
4706 amit.gupta 1453
				os = "BlackBerry OS 7.0";
1454
			}
4964 amit.gupta 1455
			if (value.contains("tablet os")) {
4706 amit.gupta 1456
				os = "BlackBerry Tablet OS";
1457
			}
1458
		}
4964 amit.gupta 1459
		if (value.contains("brew mobile platform")) {
4706 amit.gupta 1460
			os = "Brew Mobile Platform";
1461
		}
4964 amit.gupta 1462
		if (value.contains("maemo 5")) {
4706 amit.gupta 1463
			os = "Maemo 5";
1464
		}
4964 amit.gupta 1465
		if (value.contains("windows phone 7")) {
4706 amit.gupta 1466
			os = "Windows Phone 7";
1467
		}
4964 amit.gupta 1468
		if (value.contains("windows phone 7.5 mango")) {
4706 amit.gupta 1469
			os = "Windows Phone 7.5 Mango";
1470
		}
4964 amit.gupta 1471
		if (value.contains("proprietary")) {
1472
			if (value.contains("lg"))
4706 amit.gupta 1473
				os = "Proprietary LG software";
4964 amit.gupta 1474
			else if (value.contains("micromax")) {
4706 amit.gupta 1475
				os = "Proprietary Micromax software";
4964 amit.gupta 1476
			} else if (value.contains("samsung")) {
4706 amit.gupta 1477
				os = "Proprietary Samsung software";
4964 amit.gupta 1478
			} else if (value.contains("sony ericsson")) {
4706 amit.gupta 1479
				os = "Proprietary Sony Ericsson software";
4964 amit.gupta 1480
			} else if (value.contains("spice")) {
4706 amit.gupta 1481
				os = "Proprietary Spice software";
4964 amit.gupta 1482
			} else if (value.contains("lava")) {
4706 amit.gupta 1483
				os = "Proprietary Lava software";
4964 amit.gupta 1484
			} else if (value.contains("alcatel")) {
4706 amit.gupta 1485
				os = "Proprietary Alcatel software";
4964 amit.gupta 1486
			} else if (value.contains("motorola")) {
4706 amit.gupta 1487
				os = "Proprietary Motorola software";
4964 amit.gupta 1488
			} else if (value.contains("karbonn")) {
4706 amit.gupta 1489
				os = "Proprietary Karbonn software";
4964 amit.gupta 1490
			} else {
4706 amit.gupta 1491
				os = "Proprietary software";
1492
			}
1493
		}
4964 amit.gupta 1494
		if (value.contains("mmp")) {
4706 amit.gupta 1495
			os = "Proprietary Samsung software";
1496
		}
4964 amit.gupta 1497
		if (value.contains("samsung")) {
1498
			if (value.contains("bada")) {
1499
				os = "Samsung bada";
1500
			}
1501
			if (value.contains("bada 1.2")) {
1502
				os = "Samsung bada 1.2";
1503
			}
4706 amit.gupta 1504
		}
4964 amit.gupta 1505
		if (value.contains("sony ericsson java platform 8")) {
4706 amit.gupta 1506
			os = "Proprietary Sony Ericsson software";
1507
		}
4964 amit.gupta 1508
		if (value.contains("s60")) {
4706 amit.gupta 1509
			os = "Symbian 60";
1510
		}
4964 amit.gupta 1511
		if (value.contains("symbian")) {
1512
			if (value.contains("40")) {
4706 amit.gupta 1513
				os = "Symbian 40";
1514
			}
4964 amit.gupta 1515
			if (value.contains("60")) {
4706 amit.gupta 1516
				os = "Symbian 60";
1517
			}
4964 amit.gupta 1518
			if (value.contains("^3")) {
4706 amit.gupta 1519
				os = "Symbian^3";
1520
			}
4964 amit.gupta 1521
			if (value.contains("anna")) {
4706 amit.gupta 1522
				os = "Symbian Anna";
1523
			}
4964 amit.gupta 1524
			if (value.contains("belle")) {
4706 amit.gupta 1525
				os = "Symbian Belle";
1526
			}
1527
		}
4964 amit.gupta 1528
		if (value.contains("ios 4")) {
4706 amit.gupta 1529
			os = "iOS 4";
1530
		}
4964 amit.gupta 1531
		if (value.contains("ios 5")) {
4706 amit.gupta 1532
			os = "iOS 5";
1533
		}
1534
		return map.get(os);
1535
	}
4964 amit.gupta 1536
 
1537
	private Map<String, Long> getOSEnumMap() {
4706 amit.gupta 1538
		Map<String, Long> map = new HashMap<String, Long>();
1539
		map.put("Android v1.5 (Cupcake)", 110335L);
1540
		map.put("Android v1.6 (Donut)", 110336L);
1541
		map.put("Android v2.1 (Eclair)", 110337L);
1542
		map.put("Android v2.2 (Froyo)", 110338L);
1543
		map.put("Android v2.3 (Gingerbread)", 110339L);
1544
		map.put("Android v3.0 (Honeycomb)", 110340L);
1545
		map.put("Android v3.1 (Honeycomb)", 110341L);
4964 amit.gupta 1546
		map.put("Android v3.2 (Honeycomb)", 110342L);
4706 amit.gupta 1547
		map.put("BlackBerry OS", 110343L);
1548
		map.put("BlackBerry OS 5.0", 110344L);
1549
		map.put("BlackBerry OS 6.0", 110345L);
1550
		map.put("BlackBerry OS 7.0", 110346L);
1551
		map.put("BlackBerry Tablet OS", 110347L);
1552
		map.put("Brew Mobile Platform", 110348L);
1553
		map.put("Maemo 5", 110349L);
1554
		map.put("Windows Phone 7", 110350L);
1555
		map.put("Windows Phone 7.5 Mango", 110351L);
1556
		map.put("Proprietary LG software", 110352L);
1557
		map.put("Proprietary Micromax software", 110353L);
1558
		map.put("Proprietary Samsung software", 110354L);
1559
		map.put("Proprietary Sony Ericsson software", 110355L);
1560
		map.put("Proprietary Spice software", 110356L);
1561
		map.put("Proprietary Lava software", 110367L);
1562
		map.put("Proprietary Karbonn software", 110368L);
1563
		map.put("Proprietary Motorola software", 110369L);
1564
		map.put("Proprietary Alcatel software", 110370L);
4964 amit.gupta 1565
		map.put("Proprietary software", 110371L);
4706 amit.gupta 1566
		map.put("Samsung bada", 110357L);
1567
		map.put("Samsung bada 1.2", 110358L);
1568
		map.put("Symbian 40", 110360L);
1569
		map.put("Symbian 60", 110361L);
1570
		map.put("Symbian^3", 110362L);
1571
		map.put("Symbian Anna", 110363L);
1572
		map.put("Symbian Belle", 110364L);
1573
		map.put("iOS 4", 110365L);
1574
		map.put("iOS 5", 110366L);
4964 amit.gupta 1575
 
4706 amit.gupta 1576
		return map;
4964 amit.gupta 1577
 
4706 amit.gupta 1578
	}
4964 amit.gupta 1579
 
457 rajveer 1580
}