Subversion Repositories SmartDukaan

Rev

Rev 1226 | Rev 1314 | 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
 
479 rajveer 3
import java.io.BufferedOutputStream;
791 rajveer 4
import java.io.BufferedReader;
479 rajveer 5
import java.io.BufferedWriter;
791 rajveer 6
import java.io.DataInputStream;
479 rajveer 7
import java.io.File;
791 rajveer 8
import java.io.FileInputStream;
479 rajveer 9
import java.io.FileWriter;
791 rajveer 10
import java.io.InputStreamReader;
479 rajveer 11
import java.util.ArrayList;
1226 rajveer 12
import java.util.Collection;
479 rajveer 13
import java.util.HashMap;
14
import java.util.List;
15
import java.util.Map;
16
import java.util.StringTokenizer;
791 rajveer 17
import java.util.TreeMap;
479 rajveer 18
 
1226 rajveer 19
import in.shop2020.metamodel.core.Bullet;
20
import in.shop2020.metamodel.core.BulletDataObject;
21
import in.shop2020.metamodel.core.CompositeDataObject;
479 rajveer 22
import in.shop2020.metamodel.core.Entity;
1226 rajveer 23
import in.shop2020.metamodel.core.EntityState;
24
import in.shop2020.metamodel.core.EntityStatus;
25
import in.shop2020.metamodel.core.EnumDataObject;
26
import in.shop2020.metamodel.core.Feature;
479 rajveer 27
import in.shop2020.metamodel.core.FreeformContent;
28
import in.shop2020.metamodel.core.Media;
1226 rajveer 29
import in.shop2020.metamodel.core.PrimitiveDataObject;
479 rajveer 30
import in.shop2020.metamodel.core.Slide;
580 rajveer 31
import in.shop2020.metamodel.definitions.BulletDefinition;
457 rajveer 32
import in.shop2020.metamodel.definitions.Catalog;
580 rajveer 33
import in.shop2020.metamodel.definitions.Category;
34
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
457 rajveer 35
import in.shop2020.metamodel.definitions.DefinitionsContainer;
580 rajveer 36
import in.shop2020.metamodel.definitions.FeatureDefinition;
37
import in.shop2020.metamodel.definitions.SlideDefinition;
38
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;
479 rajveer 39
import in.shop2020.metamodel.util.CreationUtils;
40
//import in.shop2020.metamodel.util.OldCreationUtils;
1055 rajveer 41
//import in.shop2020.metamodel.util.OldCreationUtils;
1226 rajveer 42
import in.shop2020.metamodel.util.ExpandedBullet;
457 rajveer 43
 
580 rajveer 44
 
457 rajveer 45
/*
46
 * @author rajveer 
47
 * 
48
 *
49
 */
50
 
51
public class ContentMigrator {
52
	private String sourceDbPath;
53
	private String destinationDbPath;
54
 
55
	public static void main(String[] args) throws Exception {
56
		String usage = "Usage: ContentMigrator {source db path}{destination db path}";
57
 
58
		String sourceDbPath = null, destinationDbPath = null;
59
		if(args.length < 2) {
60
			System.out.println(usage);
61
			System.exit(-1);
62
		}else{
63
			sourceDbPath = args[0];
64
			destinationDbPath = args[1];
65
		}
66
 
791 rajveer 67
		ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath, destinationDbPath);
1226 rajveer 68
		//contentmigrator.migrateRemoveBorrowedCategoryIdFromSlide();
69
		//contentmigrator.migrateModel1();
70
		//contentmigrator.changeEntityState();
71
		//contentmigrator.removeBrowserBullets();
72
		//contentmigrator.migrateModel2();
73
		//contentmigrator.printDataModel();
1050 rajveer 74
		//contentmigrator.makeEntitiesObject();
1226 rajveer 75
		contentmigrator.printSlides();
1055 rajveer 76
		/*
1050 rajveer 77
		System.out.println(OldCreationUtils.getSlideSequence(1000194));
78
		List<Slide> slides =  OldCreationUtils.getEntity(1000194).getSlides();
79
		for(Slide slide: slides){
80
			System.out.println(slide.getSlideDefinitionID());
81
		}
1055 rajveer 82
		*/
1050 rajveer 83
 
580 rajveer 84
		//ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath, destinationDbPath);
85
		//boolean result = contentmigrator.migrate();
86
		//System.out.println("Content migration status:  "+ result);
457 rajveer 87
	}
88
 
89
	public ContentMigrator(String sourceDbPath, String destinationDbPath) {
90
		this.sourceDbPath = sourceDbPath;
91
		this.destinationDbPath = destinationDbPath;
92
	}
473 rajveer 93
	/**
94
	 * this function will read source definition and source entities, and will convert
95
	 * source entities to destination entities according to destination definitions.  
96
	 * 
97
	 * @return boolean
479 rajveer 98
	 * @throws Exception 
473 rajveer 99
	 */
1226 rajveer 100
 
101
	public void printSlides() throws Exception{
102
		DefinitionsContainer defc = Catalog.getInstance().getDefinitionsContainer();
103
		for(Category category: defc.getCategories().values()){
104
			if(category.getChildrenCategory()!=null)continue;
105
			System.out.println(category.getID() + "\t" +category.getLabel());
106
			for(CategorySlideDefinition defs: defc.getCategorySlideDefinitions(category.getID())){
107
				System.out.println(defs.getSlideDefintionID() + "\t" + defs.getEditorialImportance() + "\t" +  defc.getSlideDefinition(defs.getSlideDefintionID()).getLabel()+"\t"+defc.getSlideDefinition(defs.getSlideDefintionID()).getChildrenSlideDefinitionIDs());
108
			}
109
		}
110
	}
580 rajveer 111
 
1226 rajveer 112
	public void removeBrowserBullets() throws Exception{
113
		Map<Long, List<ExpandedBullet>> learnedBullets =  CreationUtils.getLearnedBullets();
114
		learnedBullets.get(new Long(120076));
115
		learnedBullets.remove(new Long(120076));
116
		CreationUtils.storeLearnedBullets(learnedBullets);
117
 
118
	}
119
 
120
	public boolean changeEntityState() throws Exception{
121
		Map<Long, EntityState> entitiesState = CreationUtils.getEntitiesState();
122
		for(Long entityId: entitiesState.keySet()){
123
			EntityState state = entitiesState.get(entityId);
124
			if(state.getCategoryID() == 10002 || state.getCategoryID() == 10003 || state.getCategoryID() == 10004 || state.getCategoryID() == 10005){
125
				state.setCompletedBy("");
126
				state.setMerkedReadyBy("");
127
				//state.setStatus(EntityStatus.ASSIGNED);
128
				//CreationUtils.updateEntityState(state);
129
				System.out.println(entityId + ":" + state.getStatus());
130
			}
131
			CreationUtils.updateEntityState(state);
132
		}
133
		return true;
134
	}
135
 
136
 
137
	public boolean migrateModel2() throws Exception{
138
		Map<Long, Entity> entities = CreationUtils.getEntities();
139
		for(Entity entity: entities.values()){
140
			List<Slide> slides = entity.getSlides();
141
			if(slides!=null){
142
				for(Slide slide: slides){
143
					if(slide.getSlideDefinitionID() == 130011){
144
						for(Feature feature: slide.getFeatures()){
145
							if(feature.getFeatureDefinitionID() == 120054){
1230 rajveer 146
		//						feature.setFeatureDefinitionID(120030);
1226 rajveer 147
								System.out.println("* " + entity.getID() + ":" + entity.getCategoryID());
148
							}
149
						}
150
					}
151
 
152
					if(slide.getSlideDefinitionID() == 130029){
153
						//System.out.println("** " + entity.getID() + ":" + entity.getCategoryID());
154
						if(entity.getCategoryID() == 10002){
155
							Feature feature = new Feature(120051);
156
							slide.getFeatures().add(feature);
157
							System.out.println("** " + entity.getID() + ":" + entity.getCategoryID());
158
						}
159
					}
160
 
161
				}
162
			}
163
			CreationUtils.updateEntity(entity);
164
		}
165
	return true;
166
	}
1230 rajveer 167
	/*
1226 rajveer 168
	public boolean migrateModel1() throws Exception{
169
		//DefinitionsContainer oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" + File.separator);
170
		//DefinitionsContainer newDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" + File.separator);
171
 
172
		Map<Long, Entity> entities = CreationUtils.getEntities();
173
		for(Entity entity: entities.values()){
174
			List<Long> slideSequence = entity.getSlideSequence();
175
			Map<Long,Long> removeMap = new HashMap<Long, Long>();
176
			List<Slide> slides = entity.getSlides();
177
			if(slides!=null){
178
				for(Slide slide: slides){
179
					List<Feature> features;
180
					Slide childSlide;
181
					switch ((int)slide.getSlideDefinitionID()) {
182
 
183
					//Keyboard
184
					case 130004:
185
					case 130026:
186
					case 130027:
187
					case 130057:
188
						removeMap.put(slide.getSlideDefinitionID(), (long)130026);	
189
						slide.setSlideDefinitionID(130026);
190
						break;
191
 
192
					//Voice Calling
193
					case 130005:
194
						removeMap.put(slide.getSlideDefinitionID(), (long)130005);
195
						slide.setSlideDefinitionID(130005);
196
						features = new ArrayList<Feature>();
197
						features.addAll(slide.getFeatures());
198
						childSlide = slide.getChildrenSlides().get(0);
199
						features.addAll(childSlide.getFeatures());
200
						if(childSlide.getFreeformContent()!=null){
201
							System.out.println("Voice Calling : HAS FFC : " + childSlide.getFreeformContent().getFreeformText() + childSlide.getFreeformContent().getMedias());
202
						}
203
						slide.setChildrenSlides(null);
204
						slide.setFeatures(features);
205
						break;
206
					case 130035:
207
						removeMap.put(slide.getSlideDefinitionID(), (long)130005);
208
						slide.setSlideDefinitionID(130005);
209
						for(Feature feata: slide.getFeatures()){
210
							if(feata.getFeatureDefinitionID()==120055){
211
								feata.setFeatureDefinitionID(120012);
212
							}
213
						}
214
						break;
215
 
216
					//Data Connectivity
217
					case 130007:
218
					case 130028:
219
						removeMap.put(slide.getSlideDefinitionID(), (long)130007);
220
						slide.setSlideDefinitionID(130007);
221
						break;
222
 
223
					//Music
224
					case 130029:
225
					case 130030:
226
					case 130008:
227
						removeMap.put(slide.getSlideDefinitionID(), (long)130029);
228
						slide.setSlideDefinitionID(130029);
229
						break;
230
 
231
					//Video
232
					case 130031:
233
					case 130009:
234
						removeMap.put(slide.getSlideDefinitionID(), (long)130031);
235
						slide.setSlideDefinitionID(130031);
236
						break;
237
 
238
					//Camera
239
					case 130010:
240
					case 130036:
241
					case 130037:
242
						removeMap.put(slide.getSlideDefinitionID(), (long)130010);
243
						slide.setSlideDefinitionID(130010);
244
						break;
245
					case 130060:
246
						removeMap.put(slide.getSlideDefinitionID(), (long)130010);
247
						slide.setSlideDefinitionID(130010);
248
 
249
						features =  slide.getFeatures();
250
						// Just to add camera feature in basic phones
251
						Feature feature = new Feature(120056);
252
						List<Bullet> bullets =  new ArrayList<Bullet>();
253
						PrimitiveDataObject pdo = new PrimitiveDataObject("1");
254
						Bullet bullet = new Bullet(pdo);
255
						bullets.add(bullet);
256
						feature.setBullets(bullets);
257
						features.add(feature);
258
						//Created new feature
259
						break;
260
 
261
					//Memory
262
					case 130011:
263
						removeMap.put(slide.getSlideDefinitionID(), (long)130011);
264
						slide.setSlideDefinitionID(130011);
265
						break;
266
					case 130032:
267
					case 130061:
268
						removeMap.put(slide.getSlideDefinitionID(), (long)130011);
269
						slide.setSlideDefinitionID(130011);
270
						features =  slide.getFeatures();
271
						for(Feature feat: features){
272
							if(feat.getFeatureDefinitionID() == 120054){
273
								feat.setFeatureDefinitionID(120030);
274
							}
275
						}
276
						break;
277
 
278
					//Battery
279
					case 130044:
280
						removeMap.put(slide.getSlideDefinitionID(), (long)130043);
281
						slide.setSlideDefinitionID(130043);
282
						if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){
283
							slide.getChildrenSlides().get(0).setSlideDefinitionID(130046);
284
						}
285
						break;
286
 
287
					case 130042:
288
						removeMap.put(slide.getSlideDefinitionID(), (long)130043);
289
						slide.setSlideDefinitionID(130043);
290
						childSlide = slide.getChildrenSlides().get(0);
291
						if(childSlide.getSlideDefinitionID() == 130045){
292
							childSlide.setSlideDefinitionID(130046);
293
						}
294
 
295
						List<Feature> childFeatures1 = new ArrayList<Feature>();
296
						List<Feature> childFeatures2 = new ArrayList<Feature>();
297
						Slide childChildSlide1 = new Slide(130048);
298
						Slide childChildSlide2 = new Slide(130049);
299
 
300
						childChildSlide1.setFeatures(childFeatures1);
301
						childChildSlide2.setFeatures(childFeatures2);
302
 
303
						childSlide.addChild(childChildSlide1);
304
						childSlide.addChild(childChildSlide2);
305
 
306
 
307
						for(Feature f: childSlide.getFeatures()){
308
							if(f.getFeatureDefinitionID() == 120063){
309
								f.setFeatureDefinitionID(120068);
310
								childFeatures1.add(f);
311
							}
312
							if(f.getFeatureDefinitionID() == 120064){
313
								f.setFeatureDefinitionID(120069);
314
								childFeatures2.add(f);
315
							}
316
						}
317
 
318
						childSlide.setFeatures(null);
319
 
320
						break;
321
 
322
					case 130062:
323
						removeMap.put(slide.getSlideDefinitionID(), (long)130043);
324
						slide.setSlideDefinitionID(130043);
325
 
326
						childSlide = new Slide(130046);
327
						features = new ArrayList<Feature>();
328
 
329
						slide.addChild(childSlide);
330
 
331
						List<Feature> childFeatures11 = new ArrayList<Feature>();
332
						List<Feature> childFeatures21 = new ArrayList<Feature>();
333
						Slide childChildSlide11 = new Slide(130048);
334
						Slide childChildSlide21 = new Slide(130049);
335
 
336
						childChildSlide11.setFeatures(childFeatures11);
337
						childChildSlide21.setFeatures(childFeatures21);
338
 
339
						childSlide.addChild(childChildSlide11);
340
						childSlide.addChild(childChildSlide21);
341
						for(Feature f: slide.getFeatures()){
342
							if(f.getFeatureDefinitionID() == 120072){
343
								features.add(f);
344
							}
345
							if(f.getFeatureDefinitionID() == 120073){
346
								features.add(f);
347
							}
348
							if(f.getFeatureDefinitionID() == 120063){
349
								f.setFeatureDefinitionID(120068);
350
								childFeatures11.add(f);
351
							}
352
							if(f.getFeatureDefinitionID() == 120064){
353
								f.setFeatureDefinitionID(120069);
354
								childFeatures21.add(f);
355
							}
356
						}
357
						slide.setFeatures(features);
358
						break;
359
 
360
 
361
					//Mail n Msg
362
					case 130041:
363
					case 130063:
364
						removeMap.put(slide.getSlideDefinitionID(), (long)130039);
365
						slide.setSlideDefinitionID(130039);
366
						break;
367
					case 130039:
368
						removeMap.put(slide.getSlideDefinitionID(), (long)130039);
369
						slide.setSlideDefinitionID(130039);
370
 
371
						childSlide = slide.getChildrenSlides().get(0);
372
						slide.setFeatures(childSlide.getFeatures());
373
						if(childSlide.getFreeformContent()!=null){
374
							System.out.println("Mail n Msg : HAS FFC : " + childSlide.getFreeformContent().getFreeformText() + childSlide.getFreeformContent().getMedias());
375
						}
376
						slide.setChildrenSlides(null);
377
						break;
378
 
379
					//Software
380
					case 130020:
381
					case 130034:
382
						removeMap.put(slide.getSlideDefinitionID(), (long)130020);
383
						slide.setSlideDefinitionID(130020);
384
						break;
385
 
386
 
387
					//Internet
388
					case 130050:
389
						removeMap.put(slide.getSlideDefinitionID(), (long)130050);
390
						slide.setSlideDefinitionID(130050);
391
						slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures());
392
 
393
						if(slide.getChildrenSlides().get(0).getFreeformContent()!=null){
394
							String ffc = slide.getFreeformContent().getFreeformText();
395
							if(slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText()!=null){
396
								if(slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText().trim()!=""){
397
									ffc = ffc + "\n *********    " + slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText();
398
									System.out.println("**************" + slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText());
399
								}
400
							}
401
 
402
							List<String> ffcs = new ArrayList<String>();
403
							ffcs.add(ffc);
404
							slide.getFreeformContent().setFreeformTexts(ffcs);
405
						}
406
 
407
						slide.setChildrenSlides(null);
408
						//System.out.println("Slide: 130050");
409
						//printSlideContent(slide);
410
						break;
411
 
412
					case 130052:
413
						removeMap.put(slide.getSlideDefinitionID(), (long)130050);
414
						slide.setSlideDefinitionID(130050);
415
 
416
						for(Feature f2: slide.getFeatures()){
417
							if(f2.getFeatureDefinitionID() == 120077){
418
								f2.setFeatureDefinitionID(120074);
419
//								List<Bullet> newBullets = new ArrayList<Bullet>();
420
//								for(Bullet bul: f2.getBullets()){
421
//									CompositeDataObject cdo =  (CompositeDataObject) bul.getDataObject();
422
//									for(PrimitiveDataObject pdo1: cdo.getPrimitiveDataObjects()){
423
//										pdo1.getValue();
424
//										BulletDataObject bdo2 = new EnumDataObject(enumValueID);
425
//										Bullet newbul = new Bullet(bdo2);
426
//										newBullets.add(newbul);
427
//									}
428
//									
429
//								}
430
//								f2.setBullets(newBullets);
431
							}
432
							if(f2.getFeatureDefinitionID() == 120078){
433
								f2.setFeatureDefinitionID(120075);
434
							}
435
						}
436
//						slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures());
437
//						slide.setChildrenSlides(null);
438
						//System.out.println("Slide: 130052");
439
 
440
						//printSlideContent(slide);
441
						break;
442
 
443
					case 130051:
444
						removeMap.put(slide.getSlideDefinitionID(), (long)130050);
445
						slide.setSlideDefinitionID(130050);
446
//						System.out.println(slide);
447
						//System.out.println("Slide 130051:");
448
		//				printSlideContent(slide);
449
						break;
450
 
451
					default:
452
						break;
453
					}
454
 
455
				}
456
				List<Long> newSequence = new ArrayList<Long>();
457
				for(Long id: slideSequence){
458
					if(removeMap.containsKey(id)){
459
						newSequence.add(removeMap.get(id));
460
					}else{
461
						newSequence.add(id);
462
					}
463
				}
464
				entity.setSlideSequence(newSequence);
465
				CreationUtils.updateEntity(entity);
466
			}
467
		}
468
 
469
		return true;
470
	}
1230 rajveer 471
*/
1226 rajveer 472
 
473
 
474
	public void printSlideContent(Slide slide){
475
 
476
		System.out.println("Slide: " + slide.getFreeformContent().getFreeformText());
477
		if(slide.getFeatures()!=null){
478
			for(Feature feature: slide.getFeatures()){
479
				if(feature.getBullets()!=null){
480
					for(Bullet bullet:feature.getBullets()){
481
						//System.out.println(bullet.getDataObject().toString());
482
						//System.out.println(bullet.getFreeformContent());
483
					}
484
				}
485
				if(feature.getFreeformContent()!=null){
486
					System.out.println("Feature: "+ feature.getFreeformContent().getFreeformText());
487
				}
488
			}
489
		}
490
		if(slide.getChildrenSlides()!=null){
491
			for(Slide sl: slide.getChildrenSlides()){
492
				System.out.println("Child1: ");
493
				printSlideContent(sl);
494
				System.out.println("Child2: ");
495
			}
496
		}
497
 
498
	}
1230 rajveer 499
	/*
1226 rajveer 500
	public boolean migrateModel() throws Exception{
501
		//DefinitionsContainer oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" + File.separator);
502
		//DefinitionsContainer newDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" + File.separator);
503
 
504
		Map<Long, Entity> entities = CreationUtils.getEntities();
505
		for(Entity entity: entities.values()){
506
			List<Slide> slides = entity.getSlides();
507
			if(slides!=null){
508
				List<Slide> newSlides = new ArrayList<Slide>();
509
				for(Slide slide: slides){
510
					Slide newSlide;
511
					List<Feature> features;
512
					Slide childSlide;
513
					switch ((int)slide.getSlideDefinitionID()) {
514
 
515
					//Keyboard
516
					case 130004:
517
					case 130026:
518
					case 130027:
519
					case 130057:
520
						newSlide = new Slide(130026);
521
						newSlide.setChildrenSlides(slide.getChildrenSlides());
522
						newSlide.setFeatures(slide.getFeatures());
523
						newSlide.setFreeformContent(slide.getFreeformContent());
524
						newSlides.add(newSlide);
525
						break;
526
 
527
					//Voice Calling
528
					case 130005:
529
						newSlide = new Slide(130005);
530
						newSlide.setChildrenSlides(null);
531
						features = new ArrayList<Feature>();
532
						features.addAll(slide.getFeatures());
533
						childSlide = slide.getChildrenSlides().get(0);
534
						features.addAll(childSlide.getFeatures());
535
						if(childSlide.getFreeformContent()!=null){
536
							System.out.println("Voice Calling : HAS FFC : " + childSlide.getFreeformContent().getFreeformText() + childSlide.getFreeformContent().getMedias());
537
						}
538
						newSlide.setFeatures(features);
539
						newSlide.setFreeformContent(slide.getFreeformContent());
540
						newSlides.add(newSlide);						
541
						break;
542
					case 130035:
543
						newSlide = new Slide(130035);
544
						newSlide.setChildrenSlides(slide.getChildrenSlides());
545
						for(Feature feata: slide.getFeatures()){
546
							if(feata.getFeatureDefinitionID()==120055){
547
								feata.setFeatureDefinitionID(120012);
548
							}
549
						}
550
						newSlide.setFeatures(slide.getFeatures());
551
						newSlide.setFreeformContent(slide.getFreeformContent());
552
						newSlides.add(newSlide);						
553
						break;
554
 
555
					//Data Connectivity
556
					case 130007:
557
					case 130028:
558
						newSlide = new Slide(130007);
559
						newSlide.setChildrenSlides(slide.getChildrenSlides());
560
						newSlide.setFeatures(slide.getFeatures());
561
						newSlide.setFreeformContent(slide.getFreeformContent());
562
						newSlides.add(newSlide);
563
						break;
564
 
565
					//Music
566
					case 130029:
567
					case 130030:
568
					case 130008:
569
						newSlide = new Slide(130029);
570
						newSlide.setChildrenSlides(slide.getChildrenSlides());
571
						newSlide.setFeatures(slide.getFeatures());
572
						newSlide.setFreeformContent(slide.getFreeformContent());
573
						newSlides.add(newSlide);
574
						break;
575
 
576
					//Video
577
					case 130031:
578
					case 130009:
579
						newSlide = new Slide(130031);
580
						newSlide.setChildrenSlides(slide.getChildrenSlides());
581
						newSlide.setFeatures(slide.getFeatures());
582
						newSlide.setFreeformContent(slide.getFreeformContent());
583
						newSlides.add(newSlide);
584
						break;
585
 
586
					//Camera
587
					case 130010:
588
					case 130036:
589
					case 130037:
590
						newSlide = new Slide(130010);
591
						newSlide.setChildrenSlides(slide.getChildrenSlides());
592
						newSlide.setFeatures(slide.getFeatures());
593
						newSlide.setFreeformContent(slide.getFreeformContent());
594
						newSlides.add(newSlide);
595
						break;
596
					case 130060:
597
						newSlide = new Slide(130010);
598
						newSlide.setChildrenSlides(slide.getChildrenSlides());
599
						features =  slide.getFeatures();
600
						// Just to add camera feature in basic phones
601
						Feature feature = new Feature(120056);
602
						List<Bullet> bullets =  new ArrayList<Bullet>();
603
						PrimitiveDataObject pdo = new PrimitiveDataObject("1");
604
						Bullet bullet = new Bullet(pdo);
605
						bullets.add(bullet);
606
						feature.setBullets(bullets);
607
						features.add(feature);
608
						//Created new feature
609
						newSlide.setFeatures(features);
610
						newSlide.setFreeformContent(slide.getFreeformContent());
611
						newSlides.add(newSlide);
612
						break;
613
 
614
					//Memory
615
					case 130011:
616
						newSlide = new Slide(130011);
617
						newSlide.setChildrenSlides(slide.getChildrenSlides());
618
						newSlide.setFeatures(slide.getFeatures());
619
						newSlide.setFreeformContent(slide.getFreeformContent());
620
						newSlides.add(newSlide);
621
						break;
622
					case 130032:
623
					case 130061:
624
						newSlide = new Slide(130011);
625
						newSlide.setChildrenSlides(slide.getChildrenSlides());
626
						features =  slide.getFeatures();
627
						for(Feature feat: features){
628
							if(feat.getFeatureDefinitionID() == 130054){
629
								feat.setFeatureDefinitionID(120030);
630
							}
631
						}
632
						newSlide.setFeatures(slide.getFeatures());
633
						newSlide.setFreeformContent(slide.getFreeformContent());
634
						newSlides.add(newSlide);
635
						break;
636
 
637
					//Battery
638
					case 130044:
639
						newSlide = new Slide(130043);
640
						if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){
641
							slide.getChildrenSlides().get(0).setSlideDefinitionID(130046);
642
						}
643
						newSlide.setChildrenSlides(slide.getChildrenSlides());
644
						newSlide.setFeatures(slide.getFeatures());
645
						newSlide.setFreeformContent(slide.getFreeformContent());
646
						newSlides.add(newSlide);
647
						break;
648
 
649
					case 130042:
650
						newSlide = new Slide(130043);
651
						childSlide = slide.getChildrenSlides().get(0);
652
						if(childSlide.getSlideDefinitionID() == 130045){
653
							childSlide.setSlideDefinitionID(130046);
654
						}
655
						newSlide.setChildrenSlides(slide.getChildrenSlides());
656
 
657
						List<Feature> childFeatures1 = new ArrayList<Feature>();
658
						List<Feature> childFeatures2 = new ArrayList<Feature>();
659
						Slide childChildSlide1 = new Slide(130048);
660
						Slide childChildSlide2 = new Slide(130049);
661
 
662
						childChildSlide1.setFeatures(childFeatures1);
663
						childChildSlide2.setFeatures(childFeatures2);
664
 
665
						childSlide.addChild(childChildSlide1);
666
						childSlide.addChild(childChildSlide2);
667
 
668
 
669
						for(Feature f: childSlide.getFeatures()){
670
							if(f.getFeatureDefinitionID() == 120063){
671
								f.setFeatureDefinitionID(120068);
672
								childFeatures1.add(f);
673
							}
674
							if(f.getFeatureDefinitionID() == 120064){
675
								f.setFeatureDefinitionID(120069);
676
								childFeatures2.add(f);
677
							}
678
						}
679
 
680
						childSlide.setFeatures(null);
681
 
682
						newSlide.setFeatures(slide.getFeatures());
683
						newSlide.setFreeformContent(slide.getFreeformContent());
684
						newSlides.add(newSlide);
685
						break;
686
 
687
					case 130062:
688
						newSlide = new Slide(130043);
689
						newSlide.setChildrenSlides(slide.getChildrenSlides());
690
						childSlide = new Slide(130046);
691
						features = new ArrayList<Feature>();
692
						newSlide.setFeatures(features);
693
						newSlide.addChild(childSlide);
694
 
695
						List<Feature> childFeatures11 = new ArrayList<Feature>();
696
						List<Feature> childFeatures21 = new ArrayList<Feature>();
697
						Slide childChildSlide11 = new Slide(130048);
698
						Slide childChildSlide21 = new Slide(130049);
699
 
700
						childChildSlide11.setFeatures(childFeatures11);
701
						childChildSlide21.setFeatures(childFeatures21);
702
 
703
						childSlide.addChild(childChildSlide11);
704
						childSlide.addChild(childChildSlide21);
705
						for(Feature f: slide.getFeatures()){
706
							if(f.getFeatureDefinitionID() == 120072){
707
								features.add(f);
708
							}
709
							if(f.getFeatureDefinitionID() == 120073){
710
								features.add(f);
711
							}
712
							if(f.getFeatureDefinitionID() == 120063){
713
								f.setFeatureDefinitionID(120068);
714
								childFeatures11.add(f);
715
							}
716
							if(f.getFeatureDefinitionID() == 120064){
717
								f.setFeatureDefinitionID(120069);
718
								childFeatures21.add(f);
719
							}
720
						}
721
 
722
						newSlide.setFeatures(slide.getFeatures());
723
						newSlide.setFreeformContent(slide.getFreeformContent());
724
						newSlides.add(newSlide);
725
						break;
726
 
727
 
728
					//Mail n Msg
729
					case 130041:
730
					case 130063:
731
						newSlide = new Slide(130039);
732
						newSlide.setChildrenSlides(slide.getChildrenSlides());
733
						newSlide.setFeatures(slide.getFeatures());
734
						newSlide.setFreeformContent(slide.getFreeformContent());
735
						newSlides.add(newSlide);
736
						break;
737
					case 130039:
738
						newSlide = new Slide(130039);
739
						//newSlide.setChildrenSlides(slide.getChildrenSlides());
740
						childSlide = slide.getChildrenSlides().get(0);
741
						newSlide.setFeatures(childSlide.getFeatures());
742
						if(childSlide.getFreeformContent()!=null){
743
							System.out.println("Mail n Msg : HAS FFC : " + childSlide.getFreeformContent().getFreeformText() + childSlide.getFreeformContent().getMedias());
744
						}
745
						newSlide.setFreeformContent(slide.getFreeformContent());
746
						newSlides.add(newSlide);
747
						break;
748
 
749
					//Software
750
					case 130020:
751
					case 130034:
752
						newSlide = new Slide(130034);
753
						newSlide.setChildrenSlides(slide.getChildrenSlides());
754
						features =  slide.getFeatures();
755
						newSlide.setFeatures(slide.getFeatures());
756
						newSlide.setFreeformContent(slide.getFreeformContent());
757
						newSlides.add(newSlide);
758
						break;
759
 
760
 
761
					default:
762
						newSlides.add(slide);
763
						break;
764
					}
765
				}
766
				entity.setSlides(newSlides);
767
				CreationUtils.updateEntity(entity);
768
			}
769
		}
770
 
771
		return true;
772
	}
1230 rajveer 773
 
774
	*/
1226 rajveer 775
	public boolean migrateRemoveBorrowedCategoryIdFromSlide() throws Exception{
776
		Map<Long, Entity> entities = CreationUtils.getEntities();
777
		for(Entity entity: entities.values()){
778
			if(entity.getID() == 0){
779
				CreationUtils.deleteEntity(entity.getID());
780
			}
781
			List<Slide> slides = entity.getSlides();
782
			if(slides!=null){
783
				List<Slide> newSlides = new ArrayList<Slide>();
784
				for(Slide slide: slides){
785
					Slide newSlide = new Slide(slide.getSlideDefinitionID());
786
					newSlide.setChildrenSlides(slide.getChildrenSlides());
787
					newSlide.setFeatures(slide.getFeatures());
788
					newSlide.setFreeformContent(slide.getFreeformContent());
789
					newSlides.add(newSlide);
790
				}
791
				entity.setSlides(newSlides);
792
				CreationUtils.updateEntity(entity);
793
			}
794
		}
795
		return true;
796
	}
479 rajveer 797
	public boolean migrate() throws Exception{
580 rajveer 798
	/*	 
473 rajveer 799
		DefinitionsContainer sourceDefs = new DefinitionsContainer(sourceDbPath);
800
		DefinitionsContainer destinationDefs = new DefinitionsContainer(destinationDbPath);
801
		EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
802
		EntityContainer destinationEnts = new EntityContainer(destinationDbPath);
803
 
479 rajveer 804
		Map<Long, Entity> entities = sourceEnts.getEntities();
473 rajveer 805
 
479 rajveer 806
		File f = new File("/home/rajveer/Desktop/info.txt");
807
		FileWriter fstream = new FileWriter(f);
808
        BufferedWriter out = new BufferedWriter(fstream);
809
        StringBuilder sb = new StringBuilder();
810
 
811
 
812
		for(Entity entity: entities.values()){
813
			List<Slide> slides = entity.getSlides();
814
 
815
			//List<String> vidLabels = CreationUtils.getMediaLabels(entity.getID(),"youtube");
816
			//List<String> imgLabels = CreationUtils.getMediaLabels(entity.getID(),"image");
817
 
818
			//Map<String, Media> rawMedia = CreationUtils.getRawMedia(entity.getID());
819
 
820
 
821
//			List<String> vidLabels = OldCreationUtils.getMediaLabels(entity.getID(),"youtube");
822
//			List<String> imgLabels = OldCreationUtils.getMediaLabels(entity.getID(),"image");
823
 
824
			Entity newEntity = new Entity(entity.getID(), entity.getCategoryID());
825
			newEntity.setBrand(entity.getBrand());
826
			newEntity.setModelName(entity.getModelName());
827
			newEntity.setModelNumber(entity.getModelNumber());
828
 
829
 
830
			Map<String, in.shop2020.creation.util.Media> rawMedia = OldCreationUtils.getRawMedia(entity.getID());
831
 
832
			Map<String, Media> newrawMedia = new HashMap<String, Media>();
833
 
834
 
835
			int totalRawVideos = 0;
836
			int totalRawImages = 0;
837
 
838
			if(rawMedia!=null){
839
				for(String label: rawMedia.keySet()){
840
					in.shop2020.creation.util.Media media = rawMedia.get(label);
841
 
842
					label = media.getLabel();
843
					String type = media.getType();
844
					String location = media.getLocation();
845
 
846
					Media newMedia = new Media(label, type, location);
847
 
848
					newMedia.setTitle("Title");
849
					if(type.equals("image")){
850
						totalRawImages++;
851
						newMedia.setFileName(media.getFileName());
852
						newMedia.setVideoType("");
853
					}else{
854
						totalRawVideos++;
855
						newMedia.setVideoType("withoutskin");
856
						newMedia.setFileName("");
857
					}
858
 
859
					newrawMedia.put(label, newMedia);
860
					System.out.println("old " + media.toString());
861
	//				System.out.println("new " + newMedia.toString());
862
	//				OldCreationUtils.removeMedia(entity.getID(), label);
580 rajveer 863
	//				CreationUtils.addMedia(entity.getID(), newMedia);
479 rajveer 864
				}
865
			}
866
 
867
			int totalVideos = 0;
868
			int totalImages = 0;
580 rajveer 869
			if(rawMedia==null){
479 rajveer 870
			for(Slide slide: slides ){
580 rajveer 871
			*/
872
				/*
479 rajveer 873
				FreeformContent ffc = slide.getFreeformContent();
874
				List<String> vidList = new ArrayList<String>();
875
				List<String> imgList = new ArrayList<String>();
876
 
877
				if(ffc!=null){
878
					List<String> vidFfcLabels = ffc.getYoutubeRefs();
879
					if(vidFfcLabels!=null){
880
						for(String vidFfcLabel: vidFfcLabels){
881
							StringTokenizer strTkn = new StringTokenizer(vidFfcLabel,"~!~");
882
							String vidLabel = null;
883
							if(strTkn.hasMoreTokens()){
884
								vidLabel = strTkn.nextToken();
885
								vidList.add(vidFfcLabel);
886
 
887
//								ffc.removeMedia("youtube", vidFfcLabel);
888
//								ffc.addMedia("youtube", vidLabel);
889
							}
890
							if(vidLabel == null){
891
								System.out.println("Something is really breaking .. bu ha ha !!!");
892
							}
893
							totalVideos++;
894
						}
895
					}
896
					List<String> imgFfcLabels = ffc.getImageRefs();
897
					if(imgFfcLabels!=null){
898
						for(String imgFfcLabel: imgFfcLabels){
899
							StringTokenizer strTkn = new StringTokenizer(imgFfcLabel,"~!~");
900
							String imgLabel = null;
901
							if(strTkn.hasMoreTokens()){
902
								imgLabel = strTkn.nextToken();
903
								imgList.add(imgFfcLabel);
904
 
905
//								ffc.removeMedia("image", imgFfcLabel);
906
//								ffc.addMedia("image", imgLabel);							
907
							}
908
							if(imgLabel == null){
909
								System.out.println("Something is really breaking .. bu ha ha !!!");
910
							}
911
							totalImages++;
912
						}
913
					}
914
 
915
					for(String vidlab : vidList){
916
						ffc.removeMedia("youtube", vidlab);
917
						ffc.addMedia("youtube", (new StringTokenizer(vidlab, "~!~")).nextToken());
918
					}
919
					for(String imglab : imgList){
920
						ffc.removeMedia("image",imglab);
921
						ffc.addMedia("image", (new StringTokenizer(imglab, "~!~")).nextToken());
922
					}
923
					slide.setFreeformContent(ffc);
924
					System.out.println("Slide id is " + slide.getSlideDefinitionID() + "   vid labels:  " + vidFfcLabels + "   img labels" + imgFfcLabels);
925
				}
580 rajveer 926
			*/
927
		/*
479 rajveer 928
				newEntity.addSlide(slide);
929
			}
930
 
580 rajveer 931
//			System.out.println("entity:"+ entity.getID() + ":trv:" + totalRawVideos + ":tri:" + totalRawImages +":tv:" + totalVideos +":ti:" + totalImages);
932
//			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");
933
			sb.append(entity.getID() + "\n");		
934
 
935
 
479 rajveer 936
			destinationEnts.updateEntity(newEntity);
937
			CreationUtils.storeEntity(newEntity);
938
 
939
			Map<Long, List<Entity>> entitiesByCategory = 
940
				sourceEnts.getEntitiesbyCategory();
941
 
580 rajveer 942
			Map<Long, Entity> xentities = destinationEnts.getEntities();
479 rajveer 943
 
944
			CreationUtils.rewriteRepository(xentities, entitiesByCategory);
580 rajveer 945
			}
946
			else{
947
				sb.append("				" + entity.getID() + "\n");
948
			}
479 rajveer 949
		}
950
 
951
 
952
		out.write(sb.toString());
953
		out.close();
954
		*/
457 rajveer 955
		return true;
956
	}
580 rajveer 957
 
791 rajveer 958
	private boolean makeEntitiesObject() throws Exception{
959
		//DefinitionsContainer sourceDefs = new DefinitionsContainer(sourceDbPath);
960
		//DefinitionsContainer destinationDefs = new DefinitionsContainer(destinationDbPath);
1153 rajveer 961
		//EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
791 rajveer 962
		//EntityContainer destinationEnts = new EntityContainer(destinationDbPath);
963
 
964
	/*
965
		Map<Long, List<Entity>> catEntities = sourceEnts.getEntitiesbyCategory();
966
 
967
		Map<Long, Entity> entities = sourceEnts.getEntities();
968
		for(Long catId: catEntities.keySet()){
969
			List<Entity> ents = catEntities.get(catId);
970
			for(Entity entity: ents){
971
				entities.put(entity.getID(), entity);
972
				System.out.println(entity.getID() + ":"  + entity.getCategoryID() + ":"+  entity.getBrand() + " "+ entity.getModelName() + " " + entity.getModelNumber());
973
			}
974
		}
975
 
976
		*/
977
 
978
		Map<Long, List<Entity>> catEntities = new TreeMap<Long, List<Entity>>();
979
		Map<Long, Entity> entities = new TreeMap<Long, Entity>();
980
 
981
	    FileInputStream fstream = new FileInputStream("/home/rajveer/Desktop/1");
982
	    DataInputStream in = new DataInputStream(fstream);
983
	    BufferedReader br = new BufferedReader(new InputStreamReader(in));
984
	    String strLine;
985
 
986
	    while ((strLine = br.readLine()) != null)   {
987
	    	long entityID = Long.parseLong(strLine);
988
	    	String entityDBFile = sourceDbPath + "entities" + File.separator + entityID +"/entity.ser";
989
	    	System.out.println (entityDBFile);
990
	    	Entity entity =  (Entity)DBUtils.read(entityDBFile);
991
	    	entities.put(entityID, entity);
992
 
993
	    	List<Entity> catent = catEntities.get(entity.getCategoryID());
994
	    	if(catent == null){
995
	    		catent = new ArrayList<Entity>();
996
	    	}
997
	    	catent.add(entity);
998
	    	catEntities.put(entity.getCategoryID(), catent);
999
	    }
1000
	    in.close();
1001
 
1002
 
1003
 
1004
 
1005
 
1006
		String entitiesDBFile = sourceDbPath + "entities" + File.separator + "entities.ser";
1007
		String entitiesbycategoryDBFile = sourceDbPath + "entities" + File.separator + "entitiesbycategory.ser";
1008
 
1009
		DBUtils.delete(entitiesDBFile);
1010
		DBUtils.store(entities, entitiesDBFile);
1011
 
1012
		// Remove existing
1013
		DBUtils.delete(entitiesbycategoryDBFile);
1014
		DBUtils.store(catEntities, entitiesbycategoryDBFile);
1015
 
1016
		return false;
1017
 
1018
	}
1019
 
580 rajveer 1020
	private boolean printDataModel() throws Exception{
1021
		DefinitionsContainer dfc = Catalog.getInstance().getDefinitionsContainer();
1226 rajveer 1022
		StringBuilder sb = new StringBuilder();
580 rajveer 1023
 
1226 rajveer 1024
		Map<Long, SlideDefinition> allSlideDefs = dfc.getSlideDefinitions();
1025
		for(Long slideDefId: allSlideDefs.keySet()){
1026
			SlideDefinition slideDef = allSlideDefs.get(slideDefId);
1027
			sb.append(slideDefId + " - " + slideDef.getLabel() + "\n");
1028
			if(!slideDef.getChildrenSlideDefinitionIDs().isEmpty()){
1029
				sb.append("Child Slides are: \t" + slideDef.getChildrenSlideDefinitionIDs()+"\n");
1030
			}
1031
			List<SlideFeatureDefinition> featureDefs = slideDef.getSlideFeatureDefinitions();
1032
			for(SlideFeatureDefinition featureDef: featureDefs){
1033
				sb.append("\t" + featureDef.getFeatureDefintionID() + "\t" + dfc.getFeatureDefinition(featureDef.getFeatureDefintionID()).getLabel() + "\t" + featureDef.getEditorialImportance() + "\n");
1034
			}
1035
		}
1036
		System.out.println(sb.toString());
580 rajveer 1037
		Map<Long, Category> categories = dfc.getCategories();
1226 rajveer 1038
		if(categories !=null){
1039
			return true;
1040
		}
580 rajveer 1041
		for(Category category: categories.values()){
1042
			if(category.getChildrenCategory() != null){
1043
				continue;
1044
			}
1226 rajveer 1045
			sb.append(category.getLabel() + "\n");
580 rajveer 1046
			List<CategorySlideDefinition> slideDefs =  dfc.getCategorySlideDefinitions(category.getID());
1226 rajveer 1047
			List<Long> slideSequence = dfc.getCategorySlideSequence(category.getID());
580 rajveer 1048
			for(CategorySlideDefinition slideDef: slideDefs){
1226 rajveer 1049
				sb.append("\t"+ dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getLabel() +  "\t" + slideDef.getEditorialImportance() + "\n");
580 rajveer 1050
				//List<FeatureDefinition> featureDefs = dfc.getFeatureDefinitions(slideDef.getSlideDefintionID());
1051
 
1052
				List<SlideFeatureDefinition> slideFeatureDefs = dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getSlideFeatureDefinitions();
1053
 
1054
				for(SlideFeatureDefinition slideFeatureDef: slideFeatureDefs){
1055
					FeatureDefinition featureDef = dfc.getFeatureDefinition(slideFeatureDef.getFeatureDefintionID());
1056
					BulletDefinition bulletDef = featureDef.getBulletDefinition();
1226 rajveer 1057
					sb.append("\t\t\t"  + featureDef.getLabel() + "\t" + slideFeatureDef.getEditorialImportance() + "\t" +  featureDef.allowsBlank() + "\t" + bulletDef.isLearned() + "\t" + bulletDef.isMultivalue() );
580 rajveer 1058
					List<Long> units = bulletDef.getUnitIDs();
1226 rajveer 1059
					if(bulletDef.getDatatypeDefinitionID()!=null){
1060
						sb.append( "\t" + dfc.getDatatypeDefinition(bulletDef.getDatatypeDefinitionID()).getName());
1061
 
1062
					}
580 rajveer 1063
					if(units!=null){
1064
						for(Long unit: units){
1226 rajveer 1065
							sb.append( "\t" + dfc.getUnit(unit).getFullForm() + "\t" + dfc.getUnit(unit).getShortForm());
580 rajveer 1066
						}
1067
					}
1226 rajveer 1068
					sb.append("\n");
580 rajveer 1069
				}
1070
 
1071
				/*
1072
				for(FeatureDefinition featureDef: featureDefs){
1073
					BulletDefinition bulletDef = featureDef.getBulletDefinition();
1074
					System.out.println("			" + featureDef.getLabel() + " 	" +  featureDef.allowsBlank() + "	" + bulletDef.isLearned() + "	" + bulletDef.isMultivalue());
1075
					List<Long> units = bulletDef.getUnitIDs();
1076
					if(units!=null){
1077
						for(Long unit: units){
1078
							System.out.println("								"+ dfc.getUnit(unit).getFullForm() + "	"+ dfc.getUnit(unit).getShortForm());
1079
						}
1080
					}
1081
					if(bulletDef.getDatatypeDefinitionID()!=null){
1082
						System.out.println("										"  + dfc.getDatatypeDefinition(bulletDef.getDatatypeDefinitionID()).getName());
1083
 
1084
					}
1085
				}
1086
				*/
1087
			}
1088
		}
1226 rajveer 1089
		System.out.println(sb.toString());
580 rajveer 1090
		return true;
1091
	}
457 rajveer 1092
}