Subversion Repositories SmartDukaan

Rev

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