Subversion Repositories SmartDukaan

Rev

Rev 1153 | Rev 1230 | 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){
146
								feature.setFeatureDefinitionID(120030);
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
	}
167
 
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
	}
471
 
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
	}
499
 
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
					if(slide.getSlideDefinitionID() == 130004){
767
						Slide newSlide = new Slide(130026);
768
						newSlide.setChildrenSlides(slide.getChildrenSlides());
769
						newSlide.setFeatures(slide.getFeatures());
770
						newSlide.setFreeformContent(slide.getFreeformContent());
771
						newSlides.add(newSlide);						
772
					}else{
773
						Slide newSlide = new Slide(slide.getSlideDefinitionID());
774
						newSlide.setChildrenSlides(slide.getChildrenSlides());
775
						newSlide.setFeatures(slide.getFeatures());
776
						newSlide.setFreeformContent(slide.getFreeformContent());
777
						newSlides.add(newSlide);
778
					}
779
					*/
780
				}
781
				entity.setSlides(newSlides);
782
				CreationUtils.updateEntity(entity);
783
			}
784
		}
785
 
786
		return true;
787
	}
788
	public boolean migrateRemoveBorrowedCategoryIdFromSlide() throws Exception{
789
		Map<Long, Entity> entities = CreationUtils.getEntities();
790
		for(Entity entity: entities.values()){
791
			if(entity.getID() == 0){
792
				CreationUtils.deleteEntity(entity.getID());
793
			}
794
			List<Slide> slides = entity.getSlides();
795
			if(slides!=null){
796
				List<Slide> newSlides = new ArrayList<Slide>();
797
				for(Slide slide: slides){
798
					Slide newSlide = new Slide(slide.getSlideDefinitionID());
799
					newSlide.setChildrenSlides(slide.getChildrenSlides());
800
					newSlide.setFeatures(slide.getFeatures());
801
					newSlide.setFreeformContent(slide.getFreeformContent());
802
					newSlides.add(newSlide);
803
				}
804
				entity.setSlides(newSlides);
805
				CreationUtils.updateEntity(entity);
806
			}
807
		}
808
		return true;
809
	}
479 rajveer 810
	public boolean migrate() throws Exception{
580 rajveer 811
	/*	 
473 rajveer 812
		DefinitionsContainer sourceDefs = new DefinitionsContainer(sourceDbPath);
813
		DefinitionsContainer destinationDefs = new DefinitionsContainer(destinationDbPath);
814
		EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
815
		EntityContainer destinationEnts = new EntityContainer(destinationDbPath);
816
 
479 rajveer 817
		Map<Long, Entity> entities = sourceEnts.getEntities();
473 rajveer 818
 
479 rajveer 819
		File f = new File("/home/rajveer/Desktop/info.txt");
820
		FileWriter fstream = new FileWriter(f);
821
        BufferedWriter out = new BufferedWriter(fstream);
822
        StringBuilder sb = new StringBuilder();
823
 
824
 
825
		for(Entity entity: entities.values()){
826
			List<Slide> slides = entity.getSlides();
827
 
828
			//List<String> vidLabels = CreationUtils.getMediaLabels(entity.getID(),"youtube");
829
			//List<String> imgLabels = CreationUtils.getMediaLabels(entity.getID(),"image");
830
 
831
			//Map<String, Media> rawMedia = CreationUtils.getRawMedia(entity.getID());
832
 
833
 
834
//			List<String> vidLabels = OldCreationUtils.getMediaLabels(entity.getID(),"youtube");
835
//			List<String> imgLabels = OldCreationUtils.getMediaLabels(entity.getID(),"image");
836
 
837
			Entity newEntity = new Entity(entity.getID(), entity.getCategoryID());
838
			newEntity.setBrand(entity.getBrand());
839
			newEntity.setModelName(entity.getModelName());
840
			newEntity.setModelNumber(entity.getModelNumber());
841
 
842
 
843
			Map<String, in.shop2020.creation.util.Media> rawMedia = OldCreationUtils.getRawMedia(entity.getID());
844
 
845
			Map<String, Media> newrawMedia = new HashMap<String, Media>();
846
 
847
 
848
			int totalRawVideos = 0;
849
			int totalRawImages = 0;
850
 
851
			if(rawMedia!=null){
852
				for(String label: rawMedia.keySet()){
853
					in.shop2020.creation.util.Media media = rawMedia.get(label);
854
 
855
					label = media.getLabel();
856
					String type = media.getType();
857
					String location = media.getLocation();
858
 
859
					Media newMedia = new Media(label, type, location);
860
 
861
					newMedia.setTitle("Title");
862
					if(type.equals("image")){
863
						totalRawImages++;
864
						newMedia.setFileName(media.getFileName());
865
						newMedia.setVideoType("");
866
					}else{
867
						totalRawVideos++;
868
						newMedia.setVideoType("withoutskin");
869
						newMedia.setFileName("");
870
					}
871
 
872
					newrawMedia.put(label, newMedia);
873
					System.out.println("old " + media.toString());
874
	//				System.out.println("new " + newMedia.toString());
875
	//				OldCreationUtils.removeMedia(entity.getID(), label);
580 rajveer 876
	//				CreationUtils.addMedia(entity.getID(), newMedia);
479 rajveer 877
				}
878
			}
879
 
880
			int totalVideos = 0;
881
			int totalImages = 0;
580 rajveer 882
			if(rawMedia==null){
479 rajveer 883
			for(Slide slide: slides ){
580 rajveer 884
			*/
885
				/*
479 rajveer 886
				FreeformContent ffc = slide.getFreeformContent();
887
				List<String> vidList = new ArrayList<String>();
888
				List<String> imgList = new ArrayList<String>();
889
 
890
				if(ffc!=null){
891
					List<String> vidFfcLabels = ffc.getYoutubeRefs();
892
					if(vidFfcLabels!=null){
893
						for(String vidFfcLabel: vidFfcLabels){
894
							StringTokenizer strTkn = new StringTokenizer(vidFfcLabel,"~!~");
895
							String vidLabel = null;
896
							if(strTkn.hasMoreTokens()){
897
								vidLabel = strTkn.nextToken();
898
								vidList.add(vidFfcLabel);
899
 
900
//								ffc.removeMedia("youtube", vidFfcLabel);
901
//								ffc.addMedia("youtube", vidLabel);
902
							}
903
							if(vidLabel == null){
904
								System.out.println("Something is really breaking .. bu ha ha !!!");
905
							}
906
							totalVideos++;
907
						}
908
					}
909
					List<String> imgFfcLabels = ffc.getImageRefs();
910
					if(imgFfcLabels!=null){
911
						for(String imgFfcLabel: imgFfcLabels){
912
							StringTokenizer strTkn = new StringTokenizer(imgFfcLabel,"~!~");
913
							String imgLabel = null;
914
							if(strTkn.hasMoreTokens()){
915
								imgLabel = strTkn.nextToken();
916
								imgList.add(imgFfcLabel);
917
 
918
//								ffc.removeMedia("image", imgFfcLabel);
919
//								ffc.addMedia("image", imgLabel);							
920
							}
921
							if(imgLabel == null){
922
								System.out.println("Something is really breaking .. bu ha ha !!!");
923
							}
924
							totalImages++;
925
						}
926
					}
927
 
928
					for(String vidlab : vidList){
929
						ffc.removeMedia("youtube", vidlab);
930
						ffc.addMedia("youtube", (new StringTokenizer(vidlab, "~!~")).nextToken());
931
					}
932
					for(String imglab : imgList){
933
						ffc.removeMedia("image",imglab);
934
						ffc.addMedia("image", (new StringTokenizer(imglab, "~!~")).nextToken());
935
					}
936
					slide.setFreeformContent(ffc);
937
					System.out.println("Slide id is " + slide.getSlideDefinitionID() + "   vid labels:  " + vidFfcLabels + "   img labels" + imgFfcLabels);
938
				}
580 rajveer 939
			*/
940
		/*
479 rajveer 941
				newEntity.addSlide(slide);
942
			}
943
 
580 rajveer 944
//			System.out.println("entity:"+ entity.getID() + ":trv:" + totalRawVideos + ":tri:" + totalRawImages +":tv:" + totalVideos +":ti:" + totalImages);
945
//			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");
946
			sb.append(entity.getID() + "\n");		
947
 
948
 
479 rajveer 949
			destinationEnts.updateEntity(newEntity);
950
			CreationUtils.storeEntity(newEntity);
951
 
952
			Map<Long, List<Entity>> entitiesByCategory = 
953
				sourceEnts.getEntitiesbyCategory();
954
 
580 rajveer 955
			Map<Long, Entity> xentities = destinationEnts.getEntities();
479 rajveer 956
 
957
			CreationUtils.rewriteRepository(xentities, entitiesByCategory);
580 rajveer 958
			}
959
			else{
960
				sb.append("				" + entity.getID() + "\n");
961
			}
479 rajveer 962
		}
963
 
964
 
965
		out.write(sb.toString());
966
		out.close();
967
		*/
457 rajveer 968
		return true;
969
	}
580 rajveer 970
 
791 rajveer 971
	private boolean makeEntitiesObject() throws Exception{
972
		//DefinitionsContainer sourceDefs = new DefinitionsContainer(sourceDbPath);
973
		//DefinitionsContainer destinationDefs = new DefinitionsContainer(destinationDbPath);
1153 rajveer 974
		//EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
791 rajveer 975
		//EntityContainer destinationEnts = new EntityContainer(destinationDbPath);
976
 
977
	/*
978
		Map<Long, List<Entity>> catEntities = sourceEnts.getEntitiesbyCategory();
979
 
980
		Map<Long, Entity> entities = sourceEnts.getEntities();
981
		for(Long catId: catEntities.keySet()){
982
			List<Entity> ents = catEntities.get(catId);
983
			for(Entity entity: ents){
984
				entities.put(entity.getID(), entity);
985
				System.out.println(entity.getID() + ":"  + entity.getCategoryID() + ":"+  entity.getBrand() + " "+ entity.getModelName() + " " + entity.getModelNumber());
986
			}
987
		}
988
 
989
		*/
990
 
991
		Map<Long, List<Entity>> catEntities = new TreeMap<Long, List<Entity>>();
992
		Map<Long, Entity> entities = new TreeMap<Long, Entity>();
993
 
994
	    FileInputStream fstream = new FileInputStream("/home/rajveer/Desktop/1");
995
	    DataInputStream in = new DataInputStream(fstream);
996
	    BufferedReader br = new BufferedReader(new InputStreamReader(in));
997
	    String strLine;
998
 
999
	    while ((strLine = br.readLine()) != null)   {
1000
	    	long entityID = Long.parseLong(strLine);
1001
	    	String entityDBFile = sourceDbPath + "entities" + File.separator + entityID +"/entity.ser";
1002
	    	System.out.println (entityDBFile);
1003
	    	Entity entity =  (Entity)DBUtils.read(entityDBFile);
1004
	    	entities.put(entityID, entity);
1005
 
1006
	    	List<Entity> catent = catEntities.get(entity.getCategoryID());
1007
	    	if(catent == null){
1008
	    		catent = new ArrayList<Entity>();
1009
	    	}
1010
	    	catent.add(entity);
1011
	    	catEntities.put(entity.getCategoryID(), catent);
1012
	    }
1013
	    in.close();
1014
 
1015
 
1016
 
1017
 
1018
 
1019
		String entitiesDBFile = sourceDbPath + "entities" + File.separator + "entities.ser";
1020
		String entitiesbycategoryDBFile = sourceDbPath + "entities" + File.separator + "entitiesbycategory.ser";
1021
 
1022
		DBUtils.delete(entitiesDBFile);
1023
		DBUtils.store(entities, entitiesDBFile);
1024
 
1025
		// Remove existing
1026
		DBUtils.delete(entitiesbycategoryDBFile);
1027
		DBUtils.store(catEntities, entitiesbycategoryDBFile);
1028
 
1029
		return false;
1030
 
1031
	}
1032
 
580 rajveer 1033
	private boolean printDataModel() throws Exception{
1034
		DefinitionsContainer dfc = Catalog.getInstance().getDefinitionsContainer();
1226 rajveer 1035
		StringBuilder sb = new StringBuilder();
580 rajveer 1036
 
1226 rajveer 1037
		Map<Long, SlideDefinition> allSlideDefs = dfc.getSlideDefinitions();
1038
		for(Long slideDefId: allSlideDefs.keySet()){
1039
			SlideDefinition slideDef = allSlideDefs.get(slideDefId);
1040
			sb.append(slideDefId + " - " + slideDef.getLabel() + "\n");
1041
			if(!slideDef.getChildrenSlideDefinitionIDs().isEmpty()){
1042
				sb.append("Child Slides are: \t" + slideDef.getChildrenSlideDefinitionIDs()+"\n");
1043
			}
1044
			List<SlideFeatureDefinition> featureDefs = slideDef.getSlideFeatureDefinitions();
1045
			for(SlideFeatureDefinition featureDef: featureDefs){
1046
				sb.append("\t" + featureDef.getFeatureDefintionID() + "\t" + dfc.getFeatureDefinition(featureDef.getFeatureDefintionID()).getLabel() + "\t" + featureDef.getEditorialImportance() + "\n");
1047
			}
1048
		}
1049
		System.out.println(sb.toString());
580 rajveer 1050
		Map<Long, Category> categories = dfc.getCategories();
1226 rajveer 1051
		if(categories !=null){
1052
			return true;
1053
		}
580 rajveer 1054
		for(Category category: categories.values()){
1055
			if(category.getChildrenCategory() != null){
1056
				continue;
1057
			}
1226 rajveer 1058
			sb.append(category.getLabel() + "\n");
580 rajveer 1059
			List<CategorySlideDefinition> slideDefs =  dfc.getCategorySlideDefinitions(category.getID());
1226 rajveer 1060
			List<Long> slideSequence = dfc.getCategorySlideSequence(category.getID());
580 rajveer 1061
			for(CategorySlideDefinition slideDef: slideDefs){
1226 rajveer 1062
				sb.append("\t"+ dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getLabel() +  "\t" + slideDef.getEditorialImportance() + "\n");
580 rajveer 1063
				//List<FeatureDefinition> featureDefs = dfc.getFeatureDefinitions(slideDef.getSlideDefintionID());
1064
 
1065
				List<SlideFeatureDefinition> slideFeatureDefs = dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getSlideFeatureDefinitions();
1066
 
1067
				for(SlideFeatureDefinition slideFeatureDef: slideFeatureDefs){
1068
					FeatureDefinition featureDef = dfc.getFeatureDefinition(slideFeatureDef.getFeatureDefintionID());
1069
					BulletDefinition bulletDef = featureDef.getBulletDefinition();
1226 rajveer 1070
					sb.append("\t\t\t"  + featureDef.getLabel() + "\t" + slideFeatureDef.getEditorialImportance() + "\t" +  featureDef.allowsBlank() + "\t" + bulletDef.isLearned() + "\t" + bulletDef.isMultivalue() );
580 rajveer 1071
					List<Long> units = bulletDef.getUnitIDs();
1226 rajveer 1072
					if(bulletDef.getDatatypeDefinitionID()!=null){
1073
						sb.append( "\t" + dfc.getDatatypeDefinition(bulletDef.getDatatypeDefinitionID()).getName());
1074
 
1075
					}
580 rajveer 1076
					if(units!=null){
1077
						for(Long unit: units){
1226 rajveer 1078
							sb.append( "\t" + dfc.getUnit(unit).getFullForm() + "\t" + dfc.getUnit(unit).getShortForm());
580 rajveer 1079
						}
1080
					}
1226 rajveer 1081
					sb.append("\n");
580 rajveer 1082
				}
1083
 
1084
				/*
1085
				for(FeatureDefinition featureDef: featureDefs){
1086
					BulletDefinition bulletDef = featureDef.getBulletDefinition();
1087
					System.out.println("			" + featureDef.getLabel() + " 	" +  featureDef.allowsBlank() + "	" + bulletDef.isLearned() + "	" + bulletDef.isMultivalue());
1088
					List<Long> units = bulletDef.getUnitIDs();
1089
					if(units!=null){
1090
						for(Long unit: units){
1091
							System.out.println("								"+ dfc.getUnit(unit).getFullForm() + "	"+ dfc.getUnit(unit).getShortForm());
1092
						}
1093
					}
1094
					if(bulletDef.getDatatypeDefinitionID()!=null){
1095
						System.out.println("										"  + dfc.getDatatypeDefinition(bulletDef.getDatatypeDefinitionID()).getName());
1096
 
1097
					}
1098
				}
1099
				*/
1100
			}
1101
		}
1226 rajveer 1102
		System.out.println(sb.toString());
580 rajveer 1103
		return true;
1104
	}
457 rajveer 1105
}