Subversion Repositories SmartDukaan

Rev

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