Subversion Repositories SmartDukaan

Rev

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