Subversion Repositories SmartDukaan

Rev

Rev 10707 | Rev 11554 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
457 rajveer 1
package in.shop2020.util;
2
 
1226 rajveer 3
import in.shop2020.metamodel.core.Bullet;
8909 amit.gupta 4
import in.shop2020.metamodel.core.BulletDataObject;
479 rajveer 5
import in.shop2020.metamodel.core.Entity;
1226 rajveer 6
import in.shop2020.metamodel.core.EntityState;
7129 amit.gupta 7
import in.shop2020.metamodel.core.EntityStatus;
3873 mandeep.dh 8
import in.shop2020.metamodel.core.EnumDataObject;
7590 amit.gupta 9
import in.shop2020.metamodel.core.ExpertReview;
10692 amit.gupta 10
import in.shop2020.metamodel.core.ExpertReviewStatus;
1226 rajveer 11
import in.shop2020.metamodel.core.Feature;
479 rajveer 12
import in.shop2020.metamodel.core.FreeformContent;
5370 amit.gupta 13
import in.shop2020.metamodel.core.Media;
14
import in.shop2020.metamodel.core.Media.Type;
1226 rajveer 15
import in.shop2020.metamodel.core.PrimitiveDataObject;
479 rajveer 16
import in.shop2020.metamodel.core.Slide;
580 rajveer 17
import in.shop2020.metamodel.definitions.BulletDefinition;
457 rajveer 18
import in.shop2020.metamodel.definitions.Catalog;
580 rajveer 19
import in.shop2020.metamodel.definitions.Category;
20
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
457 rajveer 21
import in.shop2020.metamodel.definitions.DefinitionsContainer;
580 rajveer 22
import in.shop2020.metamodel.definitions.FeatureDefinition;
23
import in.shop2020.metamodel.definitions.SlideDefinition;
24
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;
479 rajveer 25
import in.shop2020.metamodel.util.CreationUtils;
8749 amit.gupta 26
import in.shop2020.metamodel.util.CreationUtils1;
2720 mandeep.dh 27
import in.shop2020.metamodel.util.ExpandedBullet;
1739 rajveer 28
import in.shop2020.metamodel.util.ExpandedEntity;
11151 amit.gupta 29
import in.shop2020.metamodel.util.ExpandedFeature;
30
import in.shop2020.metamodel.util.ExpandedSlide;
5945 mandeep.dh 31
import in.shop2020.model.v1.catalog.CatalogService.Client;
2287 rajveer 32
import in.shop2020.model.v1.catalog.Item;
33
import in.shop2020.model.v1.catalog.status;
3127 rajveer 34
import in.shop2020.thrift.clients.CatalogClient;
4706 amit.gupta 35
import in.shop2020.utils.Logger;
457 rajveer 36
 
2720 mandeep.dh 37
import java.io.BufferedReader;
5370 amit.gupta 38
import java.io.ByteArrayInputStream;
39
import java.io.ByteArrayOutputStream;
2720 mandeep.dh 40
import java.io.DataInputStream;
41
import java.io.File;
42
import java.io.FileInputStream;
8014 amit.gupta 43
import java.io.FileNotFoundException;
5370 amit.gupta 44
import java.io.FileOutputStream;
8014 amit.gupta 45
import java.io.FileReader;
5370 amit.gupta 46
import java.io.InputStream;
2720 mandeep.dh 47
import java.io.InputStreamReader;
5370 amit.gupta 48
import java.io.ObjectInputStream;
49
import java.io.ObjectOutputStream;
50
import java.io.OutputStream;
8014 amit.gupta 51
import java.io.Reader;
5760 amit.gupta 52
import java.text.MessageFormat;
2720 mandeep.dh 53
import java.util.ArrayList;
7037 amit.gupta 54
import java.util.Arrays;
8749 amit.gupta 55
import java.util.Calendar;
5370 amit.gupta 56
import java.util.Collection;
3873 mandeep.dh 57
import java.util.Collections;
7129 amit.gupta 58
import java.util.Date;
4706 amit.gupta 59
import java.util.HashMap;
8909 amit.gupta 60
import java.util.HashSet;
5671 amit.gupta 61
import java.util.Iterator;
7123 amit.gupta 62
import java.util.LinkedHashMap;
9171 amit.gupta 63
import java.util.LinkedHashSet;
2720 mandeep.dh 64
import java.util.List;
65
import java.util.Map;
7111 amit.gupta 66
import java.util.Set;
2720 mandeep.dh 67
import java.util.TreeMap;
580 rajveer 68
 
7932 amit.gupta 69
import org.apache.commons.collections.CollectionUtils;
5370 amit.gupta 70
import org.apache.commons.io.IOUtils;
4818 amit.gupta 71
import org.apache.commons.lang.StringUtils;
72
 
8014 amit.gupta 73
import com.google.gson.Gson;
74
import com.google.gson.reflect.TypeToken;
75
 
457 rajveer 76
/*
7997 amit.gupta 77
 * @author rajveer 	
457 rajveer 78
 * 
79
 *
80
 */
81
 
82
public class ContentMigrator {
11151 amit.gupta 83
	private static final String HYPHON = "-";
84
	private static final String SPACE = " ";
457 rajveer 85
	private String sourceDbPath;
86
	private String destinationDbPath;
4964 amit.gupta 87
 
457 rajveer 88
	public static void main(String[] args) throws Exception {
89
		String usage = "Usage: ContentMigrator {source db path}{destination db path}";
8749 amit.gupta 90
 
4964 amit.gupta 91
		String sourceDbPath = null, destinationDbPath = null;
92
		String dryRun = null;
93
		// if(args.length < 2) {
94
		// System.out.println(usage);
95
		// System.exit(-1);
96
		// }else{
97
		// sourceDbPath = args[0];
98
		// destinationDbPath = args[1];
99
		// dryRun = args[2];
100
		// }
101
		//
7186 amit.gupta 102
		ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath,destinationDbPath);
8841 amit.gupta 103
 
104
 
7590 amit.gupta 105
		/*List<Long> entityId = Arrays.asList(1001674l,1002575l,1005331l,1005165l,1005164l,1005111l,1005109l,1004952l,1004940l,1004871l,1004701l,1004429l,1004197l,1006174l,1006077l,1005901l,1005757l,1005754l,1005724l,1005704l,1005598l,1005576l,1005558l,1007394l,1007230l,1007226l,1007218l,1007089l,1006925l,1006822l,1006814l,1006175l);
7507 amit.gupta 106
		for (Long eId : entityId){
7590 amit.gupta 107
		}*/
8262 amit.gupta 108
		//contentmigrator.reorderPhones();
8014 amit.gupta 109
		//System.out.println(contentmigrator.getItems().size());
8268 amit.gupta 110
		/*contentmigrator.touchEntityState(1008423l);
8262 amit.gupta 111
		contentmigrator.touchEntityState(1008424l);
112
		contentmigrator.touchEntityState(1008427l);
8268 amit.gupta 113
		contentmigrator.touchEntityState(1008428l);*/
4964 amit.gupta 114
 
8869 amit.gupta 115
		//contentmigrator.migrateToMongo();
8865 amit.gupta 116
		//contentmigrator.getEditedEntities();
117
		/*contentmigrator.touchEntityState(1008706l);
118
		contentmigrator.touchEntityState(1008707l);
119
		contentmigrator.touchEntityState(1008708l);
120
		contentmigrator.touchEntityState(1008709l);
121
		contentmigrator.touchEntityState(1008710l);
122
		contentmigrator.touchEntityState(1008711l);
123
		contentmigrator.touchEntityState(1008714l);
124
		contentmigrator.touchEntityState(1008715l);
125
		contentmigrator.touchEntityState(1005505l);
126
		contentmigrator.touchEntityState(1006864l);*/
8913 amit.gupta 127
		//contentmigrator.clearEmptyPrimitiveBullets();
9171 amit.gupta 128
		//contentmigrator.migrateSoftCategories();
9051 amit.gupta 129
		//contentmigrator.updateSummaryMediaLabel();
10692 amit.gupta 130
		//contentmigrator.migrateReviews();
11151 amit.gupta 131
		contentmigrator.test1();
10692 amit.gupta 132
 
4964 amit.gupta 133
	}
7398 amit.gupta 134
 
11151 amit.gupta 135
	//Full run for monge Mobile content
136
 
137
	private void test1() throws Exception{
138
		Map<Long,Entity> entities = CreationUtils.getEntities();
139
		System.out.println("Expert reviews:" + entities.size());
140
		PojoCreator pc = new PojoCreator();
141
		for(Map.Entry<Long, Entity> entry : entities.entrySet()) {
142
			if(CreationUtils.getEntityState(entry.getKey()).getStatus().equals(EntityStatus.READY)) {
143
				System.out.println("Updated entity:" + entry.getKey());
144
				ExpandedEntity expEntity = new ExpandedEntity(entry.getValue());
145
				Map<String, String > entityParams = getEntityParameters(expEntity);
146
				List<ExpertReview> expertReviews = getExpertReviews(entry.getKey());
147
				//context.put("expertReviews", expertReviews);
148
				pc.createAndStoreContentPojo(expEntity, expertReviews,entityParams.get("WARRANTY"));
149
			}
150
		}
151
	}
152
 
10692 amit.gupta 153
	private void test() throws Exception{
10699 amit.gupta 154
		/*PojoCreator pc = new PojoCreator();
155
		List<ExpertReview> expertReviews = getExpertReviews(1007379);*/
156
		Map<Long, Entity> ee = CreationUtils.getEntities();
157
		Map<Long, EntityState> bb = CreationUtils.getEntitiesState();
158
		for(Map.Entry<Long, EntityState> ent : bb.entrySet()){
159
			EntityState es = ent.getValue();
160
			if(es.getStatus().equals(EntityStatus.READY)) {
161
				Entity e = ee.get(ent.getKey());
162
				Slide summarySlide = e.getSlide(130054l);
163
				if(summarySlide==null){
164
					System.out.println("Does not have summary slide for entity: " + ent.getKey());
165
					continue;
166
				}
167
				FreeformContent ffc = summarySlide.getFreeformContent();
168
				if(ffc == null){
169
					ffc = new FreeformContent();
170
					summarySlide.setFreeformContent(ffc);
171
				}
172
				Map<String, Media> mediamap = ffc.getMedias();
10703 amit.gupta 173
				if(mediamap==null || mediamap.size()==0 || mediamap.get("default")==null){
10699 amit.gupta 174
					String mediaDirPath = Utils.CONTENT_DB_PATH + "media" + File.separator + ent.getKey();
175
					String mediaFileName = mediaDirPath + File.separator + "default.jpg";
176
					File f = new File(mediaFileName);
177
					if(f.exists()) {
178
						Media media = new Media("default", Media.Type.IMAGE, mediaFileName);
179
						media.setTitle("default");
180
		    			media.setFileName("default.jpg");
181
						ffc.addMedia(media);
182
						System.out.println("Added default media successfully for entity: " + ent.getKey());
10707 amit.gupta 183
						CreationUtils.updateEntity(e);
10699 amit.gupta 184
					} else {
185
						System.out.println("Could not get default.jpg for entity: " + ent.getKey());
186
					}
187
				}
188
			}
189
		}
10692 amit.gupta 190
	}
191
 
8841 amit.gupta 192
	private void changeKeys() throws Exception {
193
		Map<Long, Entity>  e = CreationUtils.getEntities();
194
		for (Map.Entry<Long, Entity> entry : e.entrySet()) {
195
			CreationUtils.updateEntity(entry.getValue());
196
			System.out.println("updated " + entry.getValue().getID());
197
		}
198
		//CreationUtils.updateEntity(e);
199
		//CreationUtils.
200
	}
201
 
202
	public void getEditedEntities() throws Exception {
203
		Collection<EntityState> es = CreationUtils1.getEntitiesState().values();
204
		for (EntityState es1 : es) {
8843 amit.gupta 205
			if(es1.getStatus().equals(EntityStatus.READY)){
206
				long mongotime = CreationUtils.getEntityState(es1.getID()).getMerkedReadyOn().getTime()/1000;
207
				long bdbtime = es1.getMerkedReadyOn().getTime()/1000;
208
				if(bdbtime!=mongotime){
209
					System.out.println(es1.getID());
210
				}
8841 amit.gupta 211
			}
212
		}
213
	}
214
 
8749 amit.gupta 215
	private void migrateToMongo() throws Exception{
8841 amit.gupta 216
		long counter = 0;
217
		Collection<EntityState> es = CreationUtils1.getEntitiesState().values();
218
		boolean updated = false;
8865 amit.gupta 219
		StringBuffer buffer = new StringBuffer();
8841 amit.gupta 220
		for (EntityState es1 : es) {
221
			if(es1.getStatus().equals(EntityStatus.READY)){
8865 amit.gupta 222
				long mongotime = CreationUtils.getEntityState(es1.getID()).getMerkedReadyOn().getTime()/1000;
223
				long bdbtime = es1.getMerkedReadyOn().getTime()/1000;
224
				if(bdbtime==mongotime){
225
					updated = false;
226
					Entity e = CreationUtils1.getEntity(es1.getID());
227
					List<Slide> slides = e.getSlides();
228
					for(Slide slide:slides) {
229
						FreeformContent ffc = slide.getFreeformContent();
230
						if (ffc !=null){
231
							Map<String,Media> m1 = ffc.getMedias();
232
							if (m1!=null){
233
								Map<String,Media> m = new LinkedHashMap<String, Media>(m1);
234
								for (Map.Entry<String, Media> m2 : m.entrySet()){
235
									m1.put(Long.toString(++counter), m1.remove(m2.getKey()));
236
									updated = true;
237
								}
8841 amit.gupta 238
							}
239
						}
240
					}
8865 amit.gupta 241
					if(updated){
242
						CreationUtils.updateEntity(e);
243
						System.out.println(e.getID());
244
					}
245
				} else {
246
					buffer.append(es1.getID() + "\n");
8841 amit.gupta 247
				}
8749 amit.gupta 248
			}
249
		}
8865 amit.gupta 250
		System.out.println("Entities counldnt be updated are :\n" + buffer.toString());
8749 amit.gupta 251
	}
252
 
253
	private void migrateContentStore() throws Exception {
254
		for (Map.Entry<Long, Entity> entry :CreationUtils.getEntities().entrySet()){
255
			Entity e = entry.getValue();
256
			Iterator<Slide> it = e.getSlides().iterator();
257
			while(it.hasNext()){
258
				Slide sl = it.next();
259
				//sl.getFreeformContent().me
260
			}
261
		}
262
 
263
	}
264
 
7590 amit.gupta 265
	private void updateSources() throws Exception{
266
		Map<Long,List<ExpertReview>> erMap = CreationUtils.getExpertReviews();
267
		for(Map.Entry<Long, List<ExpertReview>> erEntry : erMap.entrySet()){
268
			List<ExpertReview> erList = erEntry.getValue();
269
			Iterator<ExpertReview> iter = erList.iterator();
270
			while (iter.hasNext()){
271
				ExpertReview er = iter.next();
272
				if (er.getSource().equals("iGyan")){
273
					er.setSource("iGyaan");
274
					System.out.println("changed to iGyaan in entity : " + erEntry.getKey());
275
				}else if(er.getSource().equals("TheMobileIndian")){
276
					er.setSource("The Mobile Indian");
277
					System.out.println("changed to The Mobile Indian in entity : " + erEntry.getKey());
278
				}
279
			}
280
			CreationUtils.storeExpertReview(erEntry.getKey(), erList);
281
		}
282
	}
7507 amit.gupta 283
	private void touchEntityState(Long eId) throws Exception {
284
		EntityState es = CreationUtils.getEntityState(eId);
285
		es.setMerkedReadyOn(new Date());
286
		CreationUtils.updateEntityState(es);
9051 amit.gupta 287
		System.out.println("Entity touched:" + eId);
7507 amit.gupta 288
	}
8798 amit.gupta 289
 
290
	private void touchEntityStates() throws Exception {
291
		Map<Long, EntityState> ess = CreationUtils.getEntitiesState();
292
		Calendar calReady = Calendar.getInstance();
293
		Calendar cal5daysBack = Calendar.getInstance();
294
		Date today = new Date();
295
		cal5daysBack.add(Calendar.DATE, -5);
296
		for (Map.Entry<Long, EntityState> es : ess.entrySet()) {
297
			EntityState est = es.getValue();
298
			if(est.getMerkedReadyOn()!=null){
299
				calReady.setTime(est.getMerkedReadyOn());
300
				if(calReady.compareTo(cal5daysBack) > 0){
301
					est.setMerkedReadyOn(today);
302
					CreationUtils.updateEntityState(est);
303
					System.out.println("Entity touched:" + est.getID());
304
				}
305
			}
306
		}
307
	}
7398 amit.gupta 308
	private void updateModelForBBQ10() throws Exception{
309
		Long entityId = 1007315l;
310
		EntityState e1 = CreationUtils.getEntityState(entityId);
311
		Entity e2 = CreationUtils.getEntity(entityId);
7403 amit.gupta 312
		e1.setModelName("Blackkberry Q10");
313
		e2.setModelName("Blackberry Q10");
7398 amit.gupta 314
		CreationUtils.updateEntity(e2);
315
		CreationUtils.updateEntityState(e1);
316
	}
4964 amit.gupta 317
 
5671 amit.gupta 318
	private void migrateWarrantyForCategory(Long catgoryId) throws Exception {
319
		Collection<Entity> entities = CreationUtils.getEntities(catgoryId);
320
		int count = 0;
321
		for (Entity entity : entities) {
322
			Slide slide = entity.getSlide(130054l);
323
			if(slide!=null){
324
				List<Slide> childrenSlide = slide.getChildrenSlides();
5672 amit.gupta 325
				if(childrenSlide != null){
326
					Iterator<Slide> it = childrenSlide.iterator();
327
					while (it.hasNext()){
328
						Slide sl = it.next();
329
						if (130105l == sl.getSlideDefinitionID()){
330
							it.remove();
331
							System.out.println("Removed warranty slide from entity:" + entity.getID());
332
							break;
333
						}
5671 amit.gupta 334
					}
5672 amit.gupta 335
					CreationUtils.updateEntity(entity);
5671 amit.gupta 336
				}
337
			}
338
		}
339
	}
340
 
341
	private void checkYouTube() throws Exception {
342
		// TODO Auto-generated method stub
343
		Collection<Entity> entities = CreationUtils.getEntities().values();
344
		//entities = (List<Entity>)this.clone(entities);
345
		for (Entity entity : entities) {
346
			long entityId = entity.getID();
347
			try {
348
				List<Slide> entitySlides = entity.getSlides();
349
				if (entity == null || entitySlides == null) {
350
					continue;
351
				}
352
				Slide summarySlide = null;
353
				FreeformContent ffc = null;
354
 
355
				List<Slide> newEntitySlides = new ArrayList<Slide>(); 
356
				Slide connectivitySlide = new Slide(130129);
357
				Slide looknfeelSlide = new Slide(130128);
358
				for (Slide slide : entitySlides) {
359
						ffc = slide.getFreeformContent();
360
						if(ffc != null){
361
							Map<String, Media> mediaMap = ffc.getMedias();
362
							if(mediaMap!=null){
363
								for(Media media : mediaMap.values()){
364
									if(media.getType().equals(Type.VIDEO_WITHOUT_SKIN) || media.getType().equals(Type.VIDEO_WITH_SKIN)){
365
										if(media.getYoutubeId().contains("&"))
366
										System.out.println(entityId + " : " + media.getLabel() + ":" + media.getYoutubeId());
367
									}
368
								}
369
							}
370
						}
371
				}
372
 
373
			}catch(Exception e){
374
				System.out.println("Could not migrate " + entityId);
375
			}
376
		}
377
 
378
 
379
	}
380
 
4964 amit.gupta 381
	private void renameTitles() throws Exception {
382
		Map<Long, Entity> map = CreationUtils.getEntities();
383
		for (Long entityId : map.keySet()) {
384
			Entity entity = map.get(entityId);
385
			if (entity == null || entity.getSlides() == null) {
386
				continue;
1314 rajveer 387
			}
4964 amit.gupta 388
			Slide summarySlide = entity.getSlide(130054);
389
			if(summarySlide != null){
5760 amit.gupta 390
				boolean isupdated = false;
4964 amit.gupta 391
				for(Feature f : summarySlide.getFeatures()){
5760 amit.gupta 392
					if(f.getFeatureDefinitionID()==120132l){
393
						if(f.getBullets() == null){
394
							f.setBullets(new ArrayList<Bullet>());
395
						}else {
396
							f.getBullets().clear();
4964 amit.gupta 397
						}
5760 amit.gupta 398
						Bullet titleBullet = new Bullet(new PrimitiveDataObject(getTitle(entity)));
399
						f.getBullets().add(titleBullet);
400
						isupdated = true;
4964 amit.gupta 401
						continue;
402
					}
5760 amit.gupta 403
					if(f.getFeatureDefinitionID()==120133l){
404
						if(f.getBullets() == null){
405
							f.setBullets(new ArrayList<Bullet>());
406
						}else {
407
							f.getBullets().clear();
408
						}
409
						Bullet metaDescBullet = new Bullet(new PrimitiveDataObject(getMetaDescription(new ExpandedEntity(entity))));
410
						f.getBullets().add(metaDescBullet);
411
						isupdated = true;
412
						continue;
413
					}
4964 amit.gupta 414
				}
5760 amit.gupta 415
				if(isupdated){ 
416
					CreationUtils.updateEntity(entity);
417
					System.out.println("Updated entity : " + entity.getID());
418
				}
4964 amit.gupta 419
			}
1314 rajveer 420
		}
457 rajveer 421
	}
422
 
4818 amit.gupta 423
	private void migrateNetwork() throws Exception {
424
		Map<Long, Entity> map = CreationUtils.getEntities();
4964 amit.gupta 425
		for (Long entityId : map.keySet()) {
426
			Entity entity = map.get(entityId);
427
			if (entity == null || entity.getSlides() == null) {
428
				continue;
429
			}
4818 amit.gupta 430
 
4964 amit.gupta 431
			for (Slide slide : entity.getSlides()) {
5281 amit.gupta 432
				if (slide.getSlideDefinitionID() == 130095) {
433
					List<Slide> slides = slide.getChildrenSlides();
434
					for(Slide slide1  : slides){
435
						if(slide1.getSlideDefinitionID() == 130096){							
436
							List<Feature> features = slide1.getFeatures();
437
							for (Feature f : features) {
438
								if (f.getFeatureDefinitionID() == 120175) {
439
									List<Bullet> bs = f.getBullets();
440
									for (Bullet b : bs) {
441
										Long enumValueId = ((EnumDataObject) b
442
												.getDataObject()).getEnumValueID();
443
										String value = Catalog.getInstance().getDefinitionsContainer().getEnumValue(enumValueId).getValue(); 
444
										if (value.trim().equals("")) {
445
											continue;
446
										}
447
										System.out.println(value);
448
 
449
									}
4964 amit.gupta 450
								}
451
							}
452
						}
453
					}
454
				}
455
 
456
			}
457
 
458
			CreationUtils.updateEntity(entity);
459
		}
4818 amit.gupta 460
	}
5370 amit.gupta 461
	private void migrateHeadSet() throws Exception {
462
 
463
		//Starting entity id for new Category with 10000
464
		long newCounter = 77777000;
465
		Collection<Entity> entities = CreationUtils.getEntities(10015);
466
 
467
		//entities = (List<Entity>)this.clone(entities);
468
		for (Entity entity : entities) {
469
			long entityId = entity.getID();
470
			try {
471
				List<Slide> entitySlides = entity.getSlides();
472
				if (entity == null || entitySlides == null) {
473
					continue;
474
				}
475
				Slide summarySlide = null;
476
				FreeformContent ffc = null;
477
 
478
				List<Slide> newEntitySlides = new ArrayList<Slide>(); 
479
				Slide connectivitySlide = new Slide(130129);
480
				Slide looknfeelSlide = new Slide(130128);
481
				for (Slide slide : entitySlides) {
482
					slide=(Slide)this.clone(slide);
483
					if (slide.getSlideDefinitionID() == 130068) {
484
						List<Feature> connectivityFeatures = new ArrayList<Feature>();
485
						List<Feature> looknfeelFeatures = new ArrayList<Feature>();
486
						List<Feature> features = slide.getFeatures();
487
						for (Feature f : features) {
488
							if (f.getFeatureDefinitionID() == 120105) {
489
								connectivityFeatures.add(f);
490
							}
491
							if (f.getFeatureDefinitionID() == 120106) {
492
								looknfeelFeatures.add(f);
493
							}
494
						}
495
						ffc = slide.getFreeformContent();
496
						if(ffc != null){
497
							Map<String, Media> mediaMap = ffc.getMedias();
498
							if(mediaMap!=null){
499
								for(Media media : mediaMap.values()){
500
									if(media.getType().equals(Type.IMAGE) || media.getType().equals(Type.DOCUMENT)){
501
										copyMedia(String.valueOf(newCounter), String.valueOf(entityId),media);
502
									}
503
								}
504
							}
505
						}
506
						connectivitySlide.setFeatures(connectivityFeatures);
507
						looknfeelSlide.setFeatures(looknfeelFeatures);
508
						looknfeelSlide.setFreeformContent(ffc);
509
					} 
510
					//Summary slide
511
					if(slide.getSlideDefinitionID() == 130054) {
512
						summarySlide = slide; 
513
						FreeformContent ffc1 = slide.getFreeformContent();
514
						if(ffc1 != null){
515
							Map<String, Media> mediaMap = ffc1.getMedias();
516
							if(mediaMap==null){
517
								continue;
518
							}
519
							for(Media media : mediaMap.values()){
520
								if(media.getType().equals(Type.IMAGE) || media.getType().equals(Type.DOCUMENT)){
521
									copyMedia(String.valueOf(newCounter), String.valueOf(entityId),media);
522
								}
523
							}
524
						}
525
					}
526
 
527
				}
528
 
529
				Entity newEntity = new Entity(newCounter, 10099);
5374 amit.gupta 530
				List<Long> newSlideSequence = new ArrayList<Long>();
531
				newSlideSequence.add(130128L);
532
				newSlideSequence.add(130129L);
533
				newSlideSequence.add(130054L);
534
				newEntity.setSlideSequence(newSlideSequence);
5370 amit.gupta 535
				newEntity.setBrand(entity.getBrand());
536
				newEntity.setModelName(entity.getModelName());
537
				newEntity.setModelNumber(entity.getModelNumber());
538
				//entitySlides.remove(featureSlide);
539
				newEntitySlides.add(connectivitySlide);
540
				newEntitySlides.add(looknfeelSlide);
541
				newEntitySlides.add(summarySlide);
542
				newEntity.setSlides(newEntitySlides);
543
				EntityState es = new EntityState(newCounter, 10099, "admin");
544
				es.setBrand(entity.getBrand());
545
				es.setModelName(entity.getModelName());
546
				es.setModelNumber(entity.getModelNumber());
547
				CreationUtils.createEntity(newEntity, es);
548
				System.out.println("New entity : " + newCounter + " created using : " + entityId);
549
				System.out.println(CreationUtils.getEntity(newCounter));
550
				newCounter++;
551
			}catch(Exception e){
552
				System.out.println("Could not migrate " + entityId);
553
			}
554
		}
555
 
556
	}
4818 amit.gupta 557
 
558
	private long getEnumValueForNetwork(String value, Long entityLong) {
559
		value = value.toLowerCase().replaceAll(" ", "");
560
		Map<String, Long> map = new HashMap<String, Long>();
4964 amit.gupta 561
		map.put("quadband(gsm850/900/1800/1900)", 110382L);
4818 amit.gupta 562
		map.put("quadband(gsm850/900/1800/1900)-sim1", 110383l);
563
		map.put("quadband(gsm850/900/1800/1900)-sim2", 110384l);
564
		map.put("triband(gsm900/1800/1900)", 110385l);
565
		map.put("triband(gsm900/1800/1900)-sim1", 110386l);
566
		map.put("triband(gsm900/1800/1900)-sim2", 110387l);
567
		map.put("dualband(gsm900/1800)", 110388l);
568
		map.put("dualband(gsm900/1800)-sim1", 110389l);
569
		map.put("dualband(gsm900/1800)-sim2", 110390l);
4964 amit.gupta 570
		map.put("cdma800", 110391l); // CDMA 800
571
		map.put("cdma800-sim2", 110392l); // CDMA 800-SIM 2
572
		map.put("cdma800-sim3", 110393l); // CDMA 800-SIM 3
573
 
574
		if (!StringUtils.contains(value, "sim")
575
				&& StringUtils.contains(value, "850/900/1800/1900")) {
4818 amit.gupta 576
			return map.get("quadband(gsm850/900/1800/1900)");
577
		}
4964 amit.gupta 578
		if (StringUtils.contains(value, "sim1")
579
				&& StringUtils.contains(value, "850/900/1800/1900")) {
4818 amit.gupta 580
			return map.get("quadband(gsm850/900/1800/1900)-sim1");
581
		}
4964 amit.gupta 582
		if (StringUtils.contains(value, "sim2")
583
				&& StringUtils.contains(value, "850/900/1800/1900")) {
4818 amit.gupta 584
			return map.get("quadband(gsm850/900/1800/1900)-sim2");
585
		}
4964 amit.gupta 586
		if (!StringUtils.contains(value, "sim")
587
				&& StringUtils.contains(value, "900/1800/1900")) {
4818 amit.gupta 588
			return map.get("triband(gsm900/1800/1900)");
589
		}
4964 amit.gupta 590
		if (StringUtils.contains(value, "sim1")
591
				&& StringUtils.contains(value, "900/1800/1900")) {
4818 amit.gupta 592
			return map.get("triband(gsm900/1800/1900)-sim1");
593
		}
4964 amit.gupta 594
		if (StringUtils.contains(value, "sim2")
595
				&& StringUtils.contains(value, "900/1800/1900")) {
4818 amit.gupta 596
			return map.get("triband(gsm900/1800/1900)-sim2");
597
		}
4964 amit.gupta 598
		if (!StringUtils.contains(value, "sim")
599
				&& StringUtils.contains(value, "900/1800")) {
4818 amit.gupta 600
			return map.get("dualband(gsm900/1800)");
601
		}
4964 amit.gupta 602
		if (StringUtils.contains(value, "sim1")
603
				&& StringUtils.contains(value, "900/1800")) {
4818 amit.gupta 604
			return map.get("dualband(gsm900/1800)-sim1");
605
		}
4964 amit.gupta 606
		if (StringUtils.contains(value, "sim2")
607
				&& StringUtils.contains(value, "900/1800")) {
4818 amit.gupta 608
			return map.get("dualband(gsm900/1800)-sim2");
609
		}
4964 amit.gupta 610
		if (StringUtils.contains(value, "cdma")) {
611
			if (StringUtils.contains(value, "sim2")) {
4818 amit.gupta 612
				return map.get("cdma800-sim2");
613
			}
4964 amit.gupta 614
			if (StringUtils.contains(value, "sim3")) {
4818 amit.gupta 615
				return map.get("cdma800-sim3");
616
			}
617
			return map.get("cdma800");
4964 amit.gupta 618
		} else {
619
			System.out.println("Unknown networks: " + value + " : "
620
					+ entityLong);
4818 amit.gupta 621
			return 0;
622
		}
623
	}
624
 
457 rajveer 625
	public ContentMigrator(String sourceDbPath, String destinationDbPath) {
4964 amit.gupta 626
		this.sourceDbPath = sourceDbPath;
457 rajveer 627
		this.destinationDbPath = destinationDbPath;
628
	}
2720 mandeep.dh 629
 
3873 mandeep.dh 630
	public void migrateWarrantyType() throws Exception {
4964 amit.gupta 631
		Map<Long, Entity> map = CreationUtils.getEntities();
632
		for (Long entityId : map.keySet()) {
633
			Entity entity = map.get(entityId);
634
			if (entity == null || entity.getSlides() == null) {
635
				continue;
636
			}
637
			for (Slide slide : entity.getSlides()) {
638
				if (slide.getSlideDefinitionID() == 130054) {
639
					Slide warrantySlide = new Slide(130105);
640
					warrantySlide.setFeatures(new ArrayList<Feature>());
3873 mandeep.dh 641
 
4964 amit.gupta 642
					Feature feature = new Feature(120219);
643
					feature.setBullets(Collections.singletonList(new Bullet(
644
							new EnumDataObject(110299))));
645
					warrantySlide.getFeatures().add(feature);
3873 mandeep.dh 646
 
4964 amit.gupta 647
					Feature existingWarrantyFeature = null;
648
					for (Feature summaryFeature : slide.getFeatures()) {
649
						if (summaryFeature.getFeatureDefinitionID() == 120125) {
650
							existingWarrantyFeature = summaryFeature;
651
							warrantySlide.getFeatures().add(summaryFeature);
652
							break;
653
						}
654
					}
3873 mandeep.dh 655
 
4964 amit.gupta 656
					slide.getFeatures().remove(existingWarrantyFeature);
657
					slide.addChild(warrantySlide);
658
					break;
659
				}
660
 
661
			}
662
 
663
			CreationUtils.updateEntity(entity);
664
		}
3873 mandeep.dh 665
	}
666
 
2720 mandeep.dh 667
	public void migrateMedia() throws Exception {
4964 amit.gupta 668
		Map<Long, Entity> map = CreationUtils.getEntities();
669
		for (Long entityId : map.keySet()) {
670
			Entity entity = map.get(entityId);
671
			if (entity == null || entity.getSlides() == null) {
672
				continue;
673
			}
674
			for (Slide slide : entity.getSlides()) {
675
				FreeformContent ffc = slide.getFreeformContent();
2720 mandeep.dh 676
 
4964 amit.gupta 677
				// if (ffc == null || ffc.getMediasNew() == null) {
678
				// continue;
679
				// }
680
				//
681
				// Map<String, Media> newMap = new LinkedHashMap<String,
682
				// Media>();
683
				// Media media = null;
684
				// for (String label : ffc.getMediasNew().keySet()) {
685
				// MediaNew m = ffc.getMediasNew().get(label);
686
				// media = new Media(m.getLabel(), Media.Type.valueOf(m
687
				// .getType().name()), m.getLocation());
688
				// media.setTitle(m.getTitle());
689
				// media.setFileName(m.getFileName());
690
				// newMap.put(label, media);
691
				// }
692
				// ffc.setMedias(newMap);
693
				// ffc.setMediasNew(null);
2720 mandeep.dh 694
 
4964 amit.gupta 695
				// if (ffc == null || ffc.getMedias() == null) {
696
				// continue;
697
				// }
698
				// Map<String, MediaNew> newMap = new LinkedHashMap<String,
699
				// MediaNew>();
700
				// MediaNew mediaNew = null;
701
				// for (String label : ffc.getMedias().keySet()) {
702
				// Media m = ffc.getMedias().get(label);
703
				// if (m.getType().equalsIgnoreCase("image")) {
704
				// mediaNew = new MediaNew(m.getLabel(),
705
				// MediaNew.Type.IMAGE, m.getLocation());
706
				// mediaNew.setFileName(m.getFileName());
707
				// } else if (m.getType().equalsIgnoreCase("youtube")) {
708
				// if (m.getVideoType().equalsIgnoreCase("withskin")) {
709
				// mediaNew = new MediaNew(m.getLabel(),
710
				// MediaNew.Type.VIDEO_WITH_SKIN,
711
				// m.getLocation());
712
				// } else {
713
				// mediaNew = new MediaNew(m.getLabel(),
714
				// MediaNew.Type.VIDEO_WITHOUT_SKIN,
715
				// m.getLocation());
716
				// }
717
				// }
718
				//
719
				// if (mediaNew != null) {
720
				// mediaNew.setTitle(m.getTitle());
721
				// newMap.put(label, mediaNew);
722
				// }
723
				// }
724
				// ffc.setMediasNew(newMap);
725
				// ffc.setMedias(null);
726
			}
727
		}
2720 mandeep.dh 728
	}
729
 
4964 amit.gupta 730
	public boolean populateHelpdocEntityIds() throws Exception {
731
		for (Entity entity : CreationUtils.getEntities().values()) {
2471 rajveer 732
			CreationUtils.updateEntity(entity);
733
		}
734
		return true;
735
	}
2720 mandeep.dh 736
 
4964 amit.gupta 737
	public boolean migrateBrandModel(String dryRun) throws Exception {
3127 rajveer 738
		CatalogClient catalogServiceClient = new CatalogClient();
2287 rajveer 739
		Client client = catalogServiceClient.getClient();
740
		List<Item> items = client.getAllItemsByStatus(status.ACTIVE);
741
		items.addAll(client.getAllItemsByStatus(status.PAUSED));
742
		items.addAll(client.getAllItemsByStatus(status.CONTENT_COMPLETE));
743
		Map<Long, Entity> entities = CreationUtils.getEntities();
744
		long count = 0;
745
		StringBuffer sb = new StringBuffer();
4964 amit.gupta 746
		for (Item item : items) {
2287 rajveer 747
			long entityId = item.getCatalogItemId();
748
			Entity entity = entities.get(entityId);
4964 amit.gupta 749
			if (entity == null) {
2292 rajveer 750
				continue;
751
			}
2294 rajveer 752
			String itemBrand = item.getBrand().trim();
2287 rajveer 753
			String itemModelName = item.getModelName();
4964 amit.gupta 754
			if (itemModelName != null) {
2294 rajveer 755
				itemModelName = itemModelName.trim();
756
			}
757
			String itemModelNumber = item.getModelNumber().trim();
758
			String entityBrand = entity.getBrand().trim();
759
			String entityModelName = entity.getModelName().trim();
4964 amit.gupta 760
			if (entityModelName != null) {
2294 rajveer 761
				entityModelName = entityModelName.trim();
762
			}
763
			String entityModelNumber = entity.getModelNumber().trim();
4964 amit.gupta 764
 
765
			if (itemBrand.equals(entityBrand)
766
					&& itemModelNumber.equals(entityModelNumber)) {
767
				if (itemModelName != null && entityModelName != null
768
						&& itemModelName.equals(entityModelName)) {
2292 rajveer 769
					continue;
4964 amit.gupta 770
				} else if (itemModelName == null && entityModelName == null) {
771
					continue;
2292 rajveer 772
				}
4964 amit.gupta 773
 
2287 rajveer 774
			}
775
			count++;
4964 amit.gupta 776
			sb.append(count + ") Item:   " + itemBrand + "\t" + itemModelName
777
					+ "\t" + itemModelNumber + "\t" + item.getId() + "\n");
778
			sb.append(count + ") Entity: " + entityBrand + "\t"
779
					+ entityModelName + "\t" + entityModelNumber + "\t"
780
					+ entity.getID() + "\n");
781
 
782
			if (dryRun.equals("false")) {
2294 rajveer 783
				item.setBrand(entityBrand);
784
				item.setModelName(entityModelName);
785
				item.setModelNumber(entityModelNumber);
4964 amit.gupta 786
				client.updateItem(item);
2287 rajveer 787
			}
788
		}
789
		System.out.println(sb.toString());
790
		return true;
791
	}
2720 mandeep.dh 792
 
473 rajveer 793
	/**
4964 amit.gupta 794
	 * this function will read source definition and source entities, and will
795
	 * convert source entities to destination entities according to destination
796
	 * definitions.
473 rajveer 797
	 * 
798
	 * @return boolean
4964 amit.gupta 799
	 * @throws Exception
473 rajveer 800
	 */
1226 rajveer 801
 
4964 amit.gupta 802
	public void printSlides() throws Exception {
803
		DefinitionsContainer defc = Catalog.getInstance()
804
				.getDefinitionsContainer();
805
		for (Category category : defc.getCategories().values()) {
806
			if (category.getChildrenCategory() != null)
807
				continue;
808
			System.out.println(category.getID() + "\t" + category.getLabel());
809
			for (CategorySlideDefinition defs : defc
810
					.getCategorySlideDefinitions(category.getID())) {
811
				System.out.println(defs.getSlideDefintionID()
812
						+ "\t"
813
						+ defs.getEditorialImportance()
814
						+ "\t"
815
						+ defc.getSlideDefinition(defs.getSlideDefintionID())
816
								.getLabel()
817
						+ "\t"
818
						+ defc.getSlideDefinition(defs.getSlideDefintionID())
819
								.getChildrenSlideDefinitionIDs());
1226 rajveer 820
			}
821
		}
822
	}
4964 amit.gupta 823
 
824
	public void removeBrowserBullets() throws Exception {
825
		Map<Long, List<ExpandedBullet>> learnedBullets = CreationUtils
826
				.getLearnedBullets();
1226 rajveer 827
		learnedBullets.get(new Long(120076));
828
		learnedBullets.remove(new Long(120076));
829
		CreationUtils.storeLearnedBullets(learnedBullets);
4964 amit.gupta 830
 
1226 rajveer 831
	}
4964 amit.gupta 832
 
833
	public boolean changeEntityState() throws Exception {
1226 rajveer 834
		Map<Long, EntityState> entitiesState = CreationUtils.getEntitiesState();
8548 amit.gupta 835
		Entity entity;
4964 amit.gupta 836
		for (Long entityId : entitiesState.keySet()) {
1226 rajveer 837
			EntityState state = entitiesState.get(entityId);
8548 amit.gupta 838
			entity = CreationUtils.getEntity(entityId);
839
			if (state.getCategoryID() == 10006) {
840
				//state.setCategoryID(10006);
841
				entity.setCategoryID(10006);
842
				//CreationUtils.updateEntityState(state);
843
				CreationUtils.updateEntity(entity);
8510 amit.gupta 844
				touchEntityState(entityId);
1226 rajveer 845
			}
846
		}
847
		return true;
848
	}
1739 rajveer 849
 
4964 amit.gupta 850
	public boolean migrateDataBack() throws Exception {
1226 rajveer 851
		Map<Long, Entity> entities = CreationUtils.getEntities();
4964 amit.gupta 852
		for (Entity entity : entities.values()) {
853
			if (entity == null) {
854
				continue;
855
			}
1226 rajveer 856
			List<Slide> slides = entity.getSlides();
4964 amit.gupta 857
			if (slides != null) {
858
				for (Slide slide : slides) {
859
					if (slide.getSlideDefinitionID() == 130054) {
860
						List<Feature> features = slide.getFeatures();
861
						int length = features.size();
862
						features.remove(length - 1);
863
						features.remove(length - 2);
864
						features.remove(length - 3);
865
						/*
866
						 * boolean a = false,b=false,c=false; for(Feature
867
						 * feature: features){ switch
868
						 * ((int)feature.getFeatureDefinitionID()) { case
869
						 * 120132: if(a){
870
						 * 
871
						 * }else{ a=true; } break; case 120133: break; case
872
						 * 120134: break; default: break; } }
873
						 */
874
						CreationUtils.updateEntity(entity);
1226 rajveer 875
					}
876
				}
877
			}
878
		}
4964 amit.gupta 879
		return true;
1226 rajveer 880
	}
4964 amit.gupta 881
 
882
	public boolean migrateData() throws Exception {
1226 rajveer 883
		Map<Long, Entity> entities = CreationUtils.getEntities();
4964 amit.gupta 884
		for (Entity entity : entities.values()) {
885
			ExpandedEntity expEntity = new ExpandedEntity(entity);
1226 rajveer 886
			List<Slide> slides = entity.getSlides();
4964 amit.gupta 887
			if (slides != null) {
888
				for (Slide slide : slides) {
889
					if (slide.getSlideDefinitionID() == 130054) {
890
						List<Feature> features = slide.getFeatures();
891
						String title = expEntity.getBrand() + " "
892
								+ expEntity.getModelName() + " "
893
								+ expEntity.getModelNumber();
894
						if (expEntity.getCategory().getParentCategory().getID() == 10001) {
895
							title += " | " + expEntity.getBrand()
896
									+ " Mobile Phones";
1226 rajveer 897
						}
4964 amit.gupta 898
						if (expEntity.getCategory().getParentCategory().getID() == 10011) {
899
							title += " " + expEntity.getCategory().getLabel()
900
									+ " | " + expEntity.getBrand()
901
									+ " Mobile Phone Accessories";
1226 rajveer 902
						}
4964 amit.gupta 903
						title += " | Saholic.com";
904
 
905
						// Add page title
906
						Feature feature1 = new Feature(120132);
907
						PrimitiveDataObject pdo1 = new PrimitiveDataObject(
908
								title);
909
						List<Bullet> bullets1 = new ArrayList<Bullet>();
910
						Bullet bullet1 = new Bullet(pdo1);
911
						bullets1.add(bullet1);
912
						feature1.setBullets(bullets1);
913
						features.add(feature1);
914
 
915
						String description = "Best Price "
916
								+ expEntity.getBrand() + " "
917
								+ expEntity.getModelName() + " "
918
								+ expEntity.getModelNumber() + " ";
919
 
920
						if (expEntity.getCategory().getParentCategory().getID() == 10011) {
921
							description += expEntity.getCategory().getLabel()
922
									+ " in India.";
923
						} else {
924
							description += ".";
1226 rajveer 925
						}
4964 amit.gupta 926
						description += " Experience n' buy online. FREE Next Day delivery."
927
								+ " Original product - Full manufacturer warranty. Comprehensive reviews.";
1226 rajveer 928
 
4964 amit.gupta 929
						description = description.replaceAll("--", "-");
930
 
931
						// Add meta description
932
						Feature feature2 = new Feature(120133);
933
						PrimitiveDataObject pdo2 = new PrimitiveDataObject(
934
								description);
935
						List<Bullet> bullets2 = new ArrayList<Bullet>();
936
						Bullet bullet2 = new Bullet(pdo2);
937
						bullets2.add(bullet2);
938
						feature2.setBullets(bullets2);
939
 
940
						features.add(feature2);
941
 
942
						String keywords = expEntity.getBrand() + " "
943
								+ expEntity.getModelName() + " "
944
								+ expEntity.getModelNumber() + ", ";
945
						if (expEntity.getCategory().getParentCategory().getID() == 10001) {
946
							keywords += expEntity.getBrand()
947
									+ " mobile phones, ";
1226 rajveer 948
						}
4964 amit.gupta 949
						if (expEntity.getCategory().getParentCategory().getID() == 10011) {
950
							keywords += "phone accessories, ";
1226 rajveer 951
						}
4964 amit.gupta 952
						keywords += expEntity.getBrand() + " "
953
								+ expEntity.getModelName() + " "
954
								+ expEntity.getModelNumber() + " Price, ";
955
						keywords += expEntity.getBrand() + " "
956
								+ expEntity.getModelName() + " "
957
								+ expEntity.getModelNumber() + " India, ";
958
						if (expEntity.getCategory().getParentCategory().getID() == 10001) {
959
							keywords += expEntity.getBrand() + " "
960
									+ expEntity.getModelName() + " "
961
									+ expEntity.getModelNumber() + " Review, ";
1226 rajveer 962
						}
4964 amit.gupta 963
						// Add meta keyborad
964
						Feature feature3 = new Feature(120134);
965
						PrimitiveDataObject pdo3 = new PrimitiveDataObject(
966
								keywords);
967
						List<Bullet> bullets3 = new ArrayList<Bullet>();
968
						Bullet bullet3 = new Bullet(pdo3);
969
						bullets3.add(bullet3);
970
						feature3.setBullets(bullets3);
971
 
972
						features.add(feature3);
973
 
974
						CreationUtils.updateEntity(entity);
975
					}
976
				}
977
			}
978
		}
979
		return true;
980
	}
981
 
982
	public boolean migrateModel2() throws Exception {
983
		Map<Long, Entity> entities = CreationUtils.getEntities();
984
		for (Entity entity : entities.values()) {
985
			List<Slide> slides = entity.getSlides();
986
			if (slides != null) {
987
				for (Slide slide : slides) {
988
					if (slide.getSlideDefinitionID() == 130011) {
989
						for (Feature feature : slide.getFeatures()) {
990
							if (feature.getFeatureDefinitionID() == 120054) {
991
								// feature.setFeatureDefinitionID(120030);
992
								System.out.println("* " + entity.getID() + ":"
993
										+ entity.getCategoryID());
1226 rajveer 994
							}
995
						}
4964 amit.gupta 996
					}
1226 rajveer 997
 
4964 amit.gupta 998
					if (slide.getSlideDefinitionID() == 130029) {
999
						// System.out.println("** " + entity.getID() + ":" +
1000
						// entity.getCategoryID());
1001
						if (entity.getCategoryID() == 10002) {
1002
							Feature feature = new Feature(120051);
1003
							slide.getFeatures().add(feature);
1004
							System.out.println("** " + entity.getID() + ":"
1005
									+ entity.getCategoryID());
1226 rajveer 1006
						}
1007
					}
1008
 
1009
				}
1010
			}
4964 amit.gupta 1011
			CreationUtils.updateEntity(entity);
1226 rajveer 1012
		}
1013
		return true;
1014
	}
4964 amit.gupta 1015
 
1016
	/*
1017
	 * public boolean migrateModel1() throws Exception{ //DefinitionsContainer
1018
	 * oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH +
1019
	 * "olddefinitions" + File.separator); //DefinitionsContainer newDfc = new
1020
	 * DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" +
1021
	 * File.separator);
1022
	 * 
1023
	 * Map<Long, Entity> entities = CreationUtils.getEntities(); for(Entity
1024
	 * entity: entities.values()){ List<Long> slideSequence =
1025
	 * entity.getSlideSequence(); Map<Long,Long> removeMap = new HashMap<Long,
1026
	 * Long>(); List<Slide> slides = entity.getSlides(); if(slides!=null){
1027
	 * for(Slide slide: slides){ List<Feature> features; Slide childSlide;
1028
	 * switch ((int)slide.getSlideDefinitionID()) {
1029
	 * 
1030
	 * //Keyboard case 130004: case 130026: case 130027: case 130057:
1031
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130026);
1032
	 * slide.setSlideDefinitionID(130026); break;
1033
	 * 
1034
	 * //Voice Calling case 130005: removeMap.put(slide.getSlideDefinitionID(),
1035
	 * (long)130005); slide.setSlideDefinitionID(130005); features = new
1036
	 * ArrayList<Feature>(); features.addAll(slide.getFeatures()); childSlide =
1037
	 * slide.getChildrenSlides().get(0);
1038
	 * features.addAll(childSlide.getFeatures());
1039
	 * if(childSlide.getFreeformContent()!=null){
1040
	 * System.out.println("Voice Calling : HAS FFC : " +
1041
	 * childSlide.getFreeformContent().getFreeformText() +
1042
	 * childSlide.getFreeformContent().getMedias()); }
1043
	 * slide.setChildrenSlides(null); slide.setFeatures(features); break; case
1044
	 * 130035: removeMap.put(slide.getSlideDefinitionID(), (long)130005);
1045
	 * slide.setSlideDefinitionID(130005); for(Feature feata:
1046
	 * slide.getFeatures()){ if(feata.getFeatureDefinitionID()==120055){
1047
	 * feata.setFeatureDefinitionID(120012); } } break;
1048
	 * 
1049
	 * //Data Connectivity case 130007: case 130028:
1050
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130007);
1051
	 * slide.setSlideDefinitionID(130007); break;
1052
	 * 
1053
	 * //Music case 130029: case 130030: case 130008:
1054
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130029);
1055
	 * slide.setSlideDefinitionID(130029); break;
1056
	 * 
1057
	 * //Video case 130031: case 130009:
1058
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130031);
1059
	 * slide.setSlideDefinitionID(130031); break;
1060
	 * 
1061
	 * //Camera case 130010: case 130036: case 130037:
1062
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130010);
1063
	 * slide.setSlideDefinitionID(130010); break; case 130060:
1064
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130010);
1065
	 * slide.setSlideDefinitionID(130010);
1066
	 * 
1067
	 * features = slide.getFeatures(); // Just to add camera feature in basic
1068
	 * phones Feature feature = new Feature(120056); List<Bullet> bullets = new
1069
	 * ArrayList<Bullet>(); PrimitiveDataObject pdo = new
1070
	 * PrimitiveDataObject("1"); Bullet bullet = new Bullet(pdo);
1071
	 * bullets.add(bullet); feature.setBullets(bullets); features.add(feature);
1072
	 * //Created new feature break;
1073
	 * 
1074
	 * //Memory case 130011: removeMap.put(slide.getSlideDefinitionID(),
1075
	 * (long)130011); slide.setSlideDefinitionID(130011); break; case 130032:
1076
	 * case 130061: removeMap.put(slide.getSlideDefinitionID(), (long)130011);
1077
	 * slide.setSlideDefinitionID(130011); features = slide.getFeatures();
1078
	 * for(Feature feat: features){ if(feat.getFeatureDefinitionID() == 120054){
1079
	 * feat.setFeatureDefinitionID(120030); } } break;
1080
	 * 
1081
	 * //Battery case 130044: removeMap.put(slide.getSlideDefinitionID(),
1082
	 * (long)130043); slide.setSlideDefinitionID(130043);
1083
	 * if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){
1084
	 * slide.getChildrenSlides().get(0).setSlideDefinitionID(130046); } break;
1085
	 * 
1086
	 * case 130042: removeMap.put(slide.getSlideDefinitionID(), (long)130043);
1087
	 * slide.setSlideDefinitionID(130043); childSlide =
1088
	 * slide.getChildrenSlides().get(0); if(childSlide.getSlideDefinitionID() ==
1089
	 * 130045){ childSlide.setSlideDefinitionID(130046); }
1090
	 * 
1091
	 * List<Feature> childFeatures1 = new ArrayList<Feature>(); List<Feature>
1092
	 * childFeatures2 = new ArrayList<Feature>(); Slide childChildSlide1 = new
1093
	 * Slide(130048); Slide childChildSlide2 = new Slide(130049);
1094
	 * 
1095
	 * childChildSlide1.setFeatures(childFeatures1);
1096
	 * childChildSlide2.setFeatures(childFeatures2);
1097
	 * 
1098
	 * childSlide.addChild(childChildSlide1);
1099
	 * childSlide.addChild(childChildSlide2);
1100
	 * 
1101
	 * 
1102
	 * for(Feature f: childSlide.getFeatures()){ if(f.getFeatureDefinitionID()
1103
	 * == 120063){ f.setFeatureDefinitionID(120068); childFeatures1.add(f); }
1104
	 * if(f.getFeatureDefinitionID() == 120064){
1105
	 * f.setFeatureDefinitionID(120069); childFeatures2.add(f); } }
1106
	 * 
1107
	 * childSlide.setFeatures(null);
1108
	 * 
1109
	 * break;
1110
	 * 
1111
	 * case 130062: removeMap.put(slide.getSlideDefinitionID(), (long)130043);
1112
	 * slide.setSlideDefinitionID(130043);
1113
	 * 
1114
	 * childSlide = new Slide(130046); features = new ArrayList<Feature>();
1115
	 * 
1116
	 * slide.addChild(childSlide);
1117
	 * 
1118
	 * List<Feature> childFeatures11 = new ArrayList<Feature>(); List<Feature>
1119
	 * childFeatures21 = new ArrayList<Feature>(); Slide childChildSlide11 = new
1120
	 * Slide(130048); Slide childChildSlide21 = new Slide(130049);
1121
	 * 
1122
	 * childChildSlide11.setFeatures(childFeatures11);
1123
	 * childChildSlide21.setFeatures(childFeatures21);
1124
	 * 
1125
	 * childSlide.addChild(childChildSlide11);
1126
	 * childSlide.addChild(childChildSlide21); for(Feature f:
1127
	 * slide.getFeatures()){ if(f.getFeatureDefinitionID() == 120072){
1128
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120073){
1129
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120063){
1130
	 * f.setFeatureDefinitionID(120068); childFeatures11.add(f); }
1131
	 * if(f.getFeatureDefinitionID() == 120064){
1132
	 * f.setFeatureDefinitionID(120069); childFeatures21.add(f); } }
1133
	 * slide.setFeatures(features); break;
1134
	 * 
1135
	 * 
1136
	 * //Mail n Msg case 130041: case 130063:
1137
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130039);
1138
	 * slide.setSlideDefinitionID(130039); break; case 130039:
1139
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130039);
1140
	 * slide.setSlideDefinitionID(130039);
1141
	 * 
1142
	 * childSlide = slide.getChildrenSlides().get(0);
1143
	 * slide.setFeatures(childSlide.getFeatures());
1144
	 * if(childSlide.getFreeformContent()!=null){
1145
	 * System.out.println("Mail n Msg : HAS FFC : " +
1146
	 * childSlide.getFreeformContent().getFreeformText() +
1147
	 * childSlide.getFreeformContent().getMedias()); }
1148
	 * slide.setChildrenSlides(null); break;
1149
	 * 
1150
	 * //Software case 130020: case 130034:
1151
	 * removeMap.put(slide.getSlideDefinitionID(), (long)130020);
1152
	 * slide.setSlideDefinitionID(130020); break;
1153
	 * 
1154
	 * 
1155
	 * //Internet case 130050: removeMap.put(slide.getSlideDefinitionID(),
1156
	 * (long)130050); slide.setSlideDefinitionID(130050);
1157
	 * slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures());
1158
	 * 
1159
	 * if(slide.getChildrenSlides().get(0).getFreeformContent()!=null){ String
1160
	 * ffc = slide.getFreeformContent().getFreeformText();
1161
	 * if(slide.getChildrenSlides
1162
	 * ().get(0).getFreeformContent().getFreeformText()!=null){
1163
	 * if(slide.getChildrenSlides
1164
	 * ().get(0).getFreeformContent().getFreeformText().trim()!=""){ ffc = ffc +
1165
	 * "\n *********    " +
1166
	 * slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText();
1167
	 * System.out.println("**************" +
1168
	 * slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText());
1169
	 * } }
1170
	 * 
1171
	 * List<String> ffcs = new ArrayList<String>(); ffcs.add(ffc);
1172
	 * slide.getFreeformContent().setFreeformTexts(ffcs); }
1173
	 * 
1174
	 * slide.setChildrenSlides(null); //System.out.println("Slide: 130050");
1175
	 * //printSlideContent(slide); break;
1176
	 * 
1177
	 * case 130052: removeMap.put(slide.getSlideDefinitionID(), (long)130050);
1178
	 * slide.setSlideDefinitionID(130050);
1179
	 * 
1180
	 * for(Feature f2: slide.getFeatures()){ if(f2.getFeatureDefinitionID() ==
1181
	 * 120077){ f2.setFeatureDefinitionID(120074); // List<Bullet> newBullets =
1182
	 * new ArrayList<Bullet>(); // for(Bullet bul: f2.getBullets()){ //
1183
	 * CompositeDataObject cdo = (CompositeDataObject) bul.getDataObject(); //
1184
	 * for(PrimitiveDataObject pdo1: cdo.getPrimitiveDataObjects()){ //
1185
	 * pdo1.getValue(); // BulletDataObject bdo2 = new
1186
	 * EnumDataObject(enumValueID); // Bullet newbul = new Bullet(bdo2); //
1187
	 * newBullets.add(newbul); // } // // } // f2.setBullets(newBullets); }
1188
	 * if(f2.getFeatureDefinitionID() == 120078){
1189
	 * f2.setFeatureDefinitionID(120075); } } //
1190
	 * slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures()); //
1191
	 * slide.setChildrenSlides(null); //System.out.println("Slide: 130052");
1192
	 * 
1193
	 * //printSlideContent(slide); break;
1194
	 * 
1195
	 * case 130051: removeMap.put(slide.getSlideDefinitionID(), (long)130050);
1196
	 * slide.setSlideDefinitionID(130050); // System.out.println(slide);
1197
	 * //System.out.println("Slide 130051:"); // printSlideContent(slide);
1198
	 * break;
1199
	 * 
1200
	 * default: break; }
1201
	 * 
1202
	 * } List<Long> newSequence = new ArrayList<Long>(); for(Long id:
1203
	 * slideSequence){ if(removeMap.containsKey(id)){
1204
	 * newSequence.add(removeMap.get(id)); }else{ newSequence.add(id); } }
1205
	 * entity.setSlideSequence(newSequence); CreationUtils.updateEntity(entity);
1206
	 * } }
1207
	 * 
1208
	 * return true; }
1209
	 */
1210
 
1211
	public void printSlideContent(Slide slide) {
1212
 
1213
		System.out.println("Slide: "
1214
				+ slide.getFreeformContent().getFreeformText());
1215
		if (slide.getFeatures() != null) {
1216
			for (Feature feature : slide.getFeatures()) {
1217
				if (feature.getBullets() != null) {
1218
					for (Bullet bullet : feature.getBullets()) {
1219
						// System.out.println(bullet.getDataObject().toString());
1220
						// System.out.println(bullet.getFreeformContent());
1226 rajveer 1221
					}
1222
				}
4964 amit.gupta 1223
				if (feature.getFreeformContent() != null) {
1224
					System.out.println("Feature: "
1225
							+ feature.getFreeformContent().getFreeformText());
1226 rajveer 1226
				}
1227
			}
1228
		}
4964 amit.gupta 1229
		if (slide.getChildrenSlides() != null) {
1230
			for (Slide sl : slide.getChildrenSlides()) {
1226 rajveer 1231
				System.out.println("Child1: ");
1232
				printSlideContent(sl);
1233
				System.out.println("Child2: ");
1234
			}
1235
		}
4964 amit.gupta 1236
 
1226 rajveer 1237
	}
4964 amit.gupta 1238
 
1230 rajveer 1239
	/*
4964 amit.gupta 1240
	 * public boolean migrateModel() throws Exception{ //DefinitionsContainer
1241
	 * oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH +
1242
	 * "olddefinitions" + File.separator); //DefinitionsContainer newDfc = new
1243
	 * DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" +
1244
	 * File.separator);
1245
	 * 
1246
	 * Map<Long, Entity> entities = CreationUtils.getEntities(); for(Entity
1247
	 * entity: entities.values()){ List<Slide> slides = entity.getSlides();
1248
	 * if(slides!=null){ List<Slide> newSlides = new ArrayList<Slide>();
1249
	 * for(Slide slide: slides){ Slide newSlide; List<Feature> features; Slide
1250
	 * childSlide; switch ((int)slide.getSlideDefinitionID()) {
1251
	 * 
1252
	 * //Keyboard case 130004: case 130026: case 130027: case 130057: newSlide =
1253
	 * new Slide(130026); newSlide.setChildrenSlides(slide.getChildrenSlides());
1254
	 * newSlide.setFeatures(slide.getFeatures());
1255
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1256
	 * newSlides.add(newSlide); break;
1257
	 * 
1258
	 * //Voice Calling case 130005: newSlide = new Slide(130005);
1259
	 * newSlide.setChildrenSlides(null); features = new ArrayList<Feature>();
1260
	 * features.addAll(slide.getFeatures()); childSlide =
1261
	 * slide.getChildrenSlides().get(0);
1262
	 * features.addAll(childSlide.getFeatures());
1263
	 * if(childSlide.getFreeformContent()!=null){
1264
	 * System.out.println("Voice Calling : HAS FFC : " +
1265
	 * childSlide.getFreeformContent().getFreeformText() +
1266
	 * childSlide.getFreeformContent().getMedias()); }
1267
	 * newSlide.setFeatures(features);
1268
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1269
	 * newSlides.add(newSlide); break; case 130035: newSlide = new
1270
	 * Slide(130035); newSlide.setChildrenSlides(slide.getChildrenSlides());
1271
	 * for(Feature feata: slide.getFeatures()){
1272
	 * if(feata.getFeatureDefinitionID()==120055){
1273
	 * feata.setFeatureDefinitionID(120012); } }
1274
	 * newSlide.setFeatures(slide.getFeatures());
1275
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1276
	 * newSlides.add(newSlide); break;
1277
	 * 
1278
	 * //Data Connectivity case 130007: case 130028: newSlide = new
1279
	 * Slide(130007); newSlide.setChildrenSlides(slide.getChildrenSlides());
1280
	 * newSlide.setFeatures(slide.getFeatures());
1281
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1282
	 * newSlides.add(newSlide); break;
1283
	 * 
1284
	 * //Music case 130029: case 130030: case 130008: newSlide = new
1285
	 * Slide(130029); newSlide.setChildrenSlides(slide.getChildrenSlides());
1286
	 * newSlide.setFeatures(slide.getFeatures());
1287
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1288
	 * newSlides.add(newSlide); break;
1289
	 * 
1290
	 * //Video case 130031: case 130009: newSlide = new Slide(130031);
1291
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
1292
	 * newSlide.setFeatures(slide.getFeatures());
1293
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1294
	 * newSlides.add(newSlide); break;
1295
	 * 
1296
	 * //Camera case 130010: case 130036: case 130037: newSlide = new
1297
	 * Slide(130010); newSlide.setChildrenSlides(slide.getChildrenSlides());
1298
	 * newSlide.setFeatures(slide.getFeatures());
1299
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1300
	 * newSlides.add(newSlide); break; case 130060: newSlide = new
1301
	 * Slide(130010); newSlide.setChildrenSlides(slide.getChildrenSlides());
1302
	 * features = slide.getFeatures(); // Just to add camera feature in basic
1303
	 * phones Feature feature = new Feature(120056); List<Bullet> bullets = new
1304
	 * ArrayList<Bullet>(); PrimitiveDataObject pdo = new
1305
	 * PrimitiveDataObject("1"); Bullet bullet = new Bullet(pdo);
1306
	 * bullets.add(bullet); feature.setBullets(bullets); features.add(feature);
1307
	 * //Created new feature newSlide.setFeatures(features);
1308
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1309
	 * newSlides.add(newSlide); break;
1310
	 * 
1311
	 * //Memory case 130011: newSlide = new Slide(130011);
1312
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
1313
	 * newSlide.setFeatures(slide.getFeatures());
1314
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1315
	 * newSlides.add(newSlide); break; case 130032: case 130061: newSlide = new
1316
	 * Slide(130011); newSlide.setChildrenSlides(slide.getChildrenSlides());
1317
	 * features = slide.getFeatures(); for(Feature feat: features){
1318
	 * if(feat.getFeatureDefinitionID() == 130054){
1319
	 * feat.setFeatureDefinitionID(120030); } }
1320
	 * newSlide.setFeatures(slide.getFeatures());
1321
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1322
	 * newSlides.add(newSlide); break;
1323
	 * 
1324
	 * //Battery case 130044: newSlide = new Slide(130043);
1325
	 * if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){
1326
	 * slide.getChildrenSlides().get(0).setSlideDefinitionID(130046); }
1327
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
1328
	 * newSlide.setFeatures(slide.getFeatures());
1329
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1330
	 * newSlides.add(newSlide); break;
1331
	 * 
1332
	 * case 130042: newSlide = new Slide(130043); childSlide =
1333
	 * slide.getChildrenSlides().get(0); if(childSlide.getSlideDefinitionID() ==
1334
	 * 130045){ childSlide.setSlideDefinitionID(130046); }
1335
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
1336
	 * 
1337
	 * List<Feature> childFeatures1 = new ArrayList<Feature>(); List<Feature>
1338
	 * childFeatures2 = new ArrayList<Feature>(); Slide childChildSlide1 = new
1339
	 * Slide(130048); Slide childChildSlide2 = new Slide(130049);
1340
	 * 
1341
	 * childChildSlide1.setFeatures(childFeatures1);
1342
	 * childChildSlide2.setFeatures(childFeatures2);
1343
	 * 
1344
	 * childSlide.addChild(childChildSlide1);
1345
	 * childSlide.addChild(childChildSlide2);
1346
	 * 
1347
	 * 
1348
	 * for(Feature f: childSlide.getFeatures()){ if(f.getFeatureDefinitionID()
1349
	 * == 120063){ f.setFeatureDefinitionID(120068); childFeatures1.add(f); }
1350
	 * if(f.getFeatureDefinitionID() == 120064){
1351
	 * f.setFeatureDefinitionID(120069); childFeatures2.add(f); } }
1352
	 * 
1353
	 * childSlide.setFeatures(null);
1354
	 * 
1355
	 * newSlide.setFeatures(slide.getFeatures());
1356
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1357
	 * newSlides.add(newSlide); break;
1358
	 * 
1359
	 * case 130062: newSlide = new Slide(130043);
1360
	 * newSlide.setChildrenSlides(slide.getChildrenSlides()); childSlide = new
1361
	 * Slide(130046); features = new ArrayList<Feature>();
1362
	 * newSlide.setFeatures(features); newSlide.addChild(childSlide);
1363
	 * 
1364
	 * List<Feature> childFeatures11 = new ArrayList<Feature>(); List<Feature>
1365
	 * childFeatures21 = new ArrayList<Feature>(); Slide childChildSlide11 = new
1366
	 * Slide(130048); Slide childChildSlide21 = new Slide(130049);
1367
	 * 
1368
	 * childChildSlide11.setFeatures(childFeatures11);
1369
	 * childChildSlide21.setFeatures(childFeatures21);
1370
	 * 
1371
	 * childSlide.addChild(childChildSlide11);
1372
	 * childSlide.addChild(childChildSlide21); for(Feature f:
1373
	 * slide.getFeatures()){ if(f.getFeatureDefinitionID() == 120072){
1374
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120073){
1375
	 * features.add(f); } if(f.getFeatureDefinitionID() == 120063){
1376
	 * f.setFeatureDefinitionID(120068); childFeatures11.add(f); }
1377
	 * if(f.getFeatureDefinitionID() == 120064){
1378
	 * f.setFeatureDefinitionID(120069); childFeatures21.add(f); } }
1379
	 * 
1380
	 * newSlide.setFeatures(slide.getFeatures());
1381
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1382
	 * newSlides.add(newSlide); break;
1383
	 * 
1384
	 * 
1385
	 * //Mail n Msg case 130041: case 130063: newSlide = new Slide(130039);
1386
	 * newSlide.setChildrenSlides(slide.getChildrenSlides());
1387
	 * newSlide.setFeatures(slide.getFeatures());
1388
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1389
	 * newSlides.add(newSlide); break; case 130039: newSlide = new
1390
	 * Slide(130039); //newSlide.setChildrenSlides(slide.getChildrenSlides());
1391
	 * childSlide = slide.getChildrenSlides().get(0);
1392
	 * newSlide.setFeatures(childSlide.getFeatures());
1393
	 * if(childSlide.getFreeformContent()!=null){
1394
	 * System.out.println("Mail n Msg : HAS FFC : " +
1395
	 * childSlide.getFreeformContent().getFreeformText() +
1396
	 * childSlide.getFreeformContent().getMedias()); }
1397
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1398
	 * newSlides.add(newSlide); break;
1399
	 * 
1400
	 * //Software case 130020: case 130034: newSlide = new Slide(130034);
1401
	 * newSlide.setChildrenSlides(slide.getChildrenSlides()); features =
1402
	 * slide.getFeatures(); newSlide.setFeatures(slide.getFeatures());
1403
	 * newSlide.setFreeformContent(slide.getFreeformContent());
1404
	 * newSlides.add(newSlide); break;
1405
	 * 
1406
	 * 
1407
	 * default: newSlides.add(slide); break; } } entity.setSlides(newSlides);
1408
	 * CreationUtils.updateEntity(entity); } }
1409
	 * 
1410
	 * return true; }
1411
	 */
1412
	public boolean migrateRemoveBorrowedCategoryIdFromSlide() throws Exception {
1226 rajveer 1413
		Map<Long, Entity> entities = CreationUtils.getEntities();
4964 amit.gupta 1414
		for (Entity entity : entities.values()) {
1415
			if (entity.getID() == 0) {
1226 rajveer 1416
				CreationUtils.deleteEntity(entity.getID());
1417
			}
1418
			List<Slide> slides = entity.getSlides();
4964 amit.gupta 1419
			if (slides != null) {
1226 rajveer 1420
				List<Slide> newSlides = new ArrayList<Slide>();
4964 amit.gupta 1421
				for (Slide slide : slides) {
1226 rajveer 1422
					Slide newSlide = new Slide(slide.getSlideDefinitionID());
1423
					newSlide.setChildrenSlides(slide.getChildrenSlides());
1424
					newSlide.setFeatures(slide.getFeatures());
1425
					newSlide.setFreeformContent(slide.getFreeformContent());
1426
					newSlides.add(newSlide);
1427
				}
1428
				entity.setSlides(newSlides);
1429
				CreationUtils.updateEntity(entity);
1430
			}
1431
		}
1432
		return true;
1433
	}
479 rajveer 1434
 
4964 amit.gupta 1435
	public boolean migrate() throws Exception {
580 rajveer 1436
		/*
4964 amit.gupta 1437
		 * DefinitionsContainer sourceDefs = new
1438
		 * DefinitionsContainer(sourceDbPath); DefinitionsContainer
1439
		 * destinationDefs = new DefinitionsContainer(destinationDbPath);
1440
		 * EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
1441
		 * EntityContainer destinationEnts = new
1442
		 * EntityContainer(destinationDbPath);
1443
		 * 
1444
		 * Map<Long, Entity> entities = sourceEnts.getEntities();
1445
		 * 
1446
		 * File f = new File("/home/rajveer/Desktop/info.txt"); FileWriter
1447
		 * fstream = new FileWriter(f); BufferedWriter out = new
1448
		 * BufferedWriter(fstream); StringBuilder sb = new StringBuilder();
1449
		 * 
1450
		 * 
1451
		 * for(Entity entity: entities.values()){ List<Slide> slides =
1452
		 * entity.getSlides();
1453
		 * 
1454
		 * //List<String> vidLabels =
1455
		 * CreationUtils.getMediaLabels(entity.getID(),"youtube");
1456
		 * //List<String> imgLabels =
1457
		 * CreationUtils.getMediaLabels(entity.getID(),"image");
1458
		 * 
1459
		 * //Map<String, Media> rawMedia =
1460
		 * CreationUtils.getRawMedia(entity.getID());
1461
		 * 
1462
		 * 
1463
		 * // List<String> vidLabels =
1464
		 * OldCreationUtils.getMediaLabels(entity.getID(),"youtube"); //
1465
		 * List<String> imgLabels =
1466
		 * OldCreationUtils.getMediaLabels(entity.getID(),"image");
1467
		 * 
1468
		 * Entity newEntity = new Entity(entity.getID(),
1469
		 * entity.getCategoryID()); newEntity.setBrand(entity.getBrand());
1470
		 * newEntity.setModelName(entity.getModelName());
1471
		 * newEntity.setModelNumber(entity.getModelNumber());
1472
		 * 
1473
		 * 
1474
		 * Map<String, in.shop2020.creation.util.Media> rawMedia =
1475
		 * OldCreationUtils.getRawMedia(entity.getID());
1476
		 * 
1477
		 * Map<String, Media> newrawMedia = new HashMap<String, Media>();
1478
		 * 
1479
		 * 
1480
		 * int totalRawVideos = 0; int totalRawImages = 0;
1481
		 * 
1482
		 * if(rawMedia!=null){ for(String label: rawMedia.keySet()){
1483
		 * in.shop2020.creation.util.Media media = rawMedia.get(label);
1484
		 * 
1485
		 * label = media.getLabel(); String type = media.getType(); String
1486
		 * location = media.getLocation();
1487
		 * 
1488
		 * Media newMedia = new Media(label, type, location);
1489
		 * 
1490
		 * newMedia.setTitle("Title"); if(type.equals("image")){
1491
		 * totalRawImages++; newMedia.setFileName(media.getFileName());
1492
		 * newMedia.setVideoType(""); }else{ totalRawVideos++;
1493
		 * newMedia.setVideoType("withoutskin"); newMedia.setFileName(""); }
1494
		 * 
1495
		 * newrawMedia.put(label, newMedia); System.out.println("old " +
1496
		 * media.toString()); // System.out.println("new " +
1497
		 * newMedia.toString()); // OldCreationUtils.removeMedia(entity.getID(),
1498
		 * label); // CreationUtils.addMedia(entity.getID(), newMedia); } }
1499
		 * 
1500
		 * int totalVideos = 0; int totalImages = 0; if(rawMedia==null){
1501
		 * for(Slide slide: slides ){
1502
		 */
1503
		/*
1504
		 * FreeformContent ffc = slide.getFreeformContent(); List<String>
1505
		 * vidList = new ArrayList<String>(); List<String> imgList = new
1506
		 * ArrayList<String>();
1507
		 * 
1508
		 * if(ffc!=null){ List<String> vidFfcLabels = ffc.getYoutubeRefs();
1509
		 * if(vidFfcLabels!=null){ for(String vidFfcLabel: vidFfcLabels){
1510
		 * StringTokenizer strTkn = new StringTokenizer(vidFfcLabel,"~!~");
1511
		 * String vidLabel = null; if(strTkn.hasMoreTokens()){ vidLabel =
1512
		 * strTkn.nextToken(); vidList.add(vidFfcLabel);
1513
		 * 
1514
		 * // ffc.removeMedia("youtube", vidFfcLabel); //
1515
		 * ffc.addMedia("youtube", vidLabel); } if(vidLabel == null){
1516
		 * System.out.println("Something is really breaking .. bu ha ha !!!"); }
1517
		 * totalVideos++; } } List<String> imgFfcLabels = ffc.getImageRefs();
1518
		 * if(imgFfcLabels!=null){ for(String imgFfcLabel: imgFfcLabels){
1519
		 * StringTokenizer strTkn = new StringTokenizer(imgFfcLabel,"~!~");
1520
		 * String imgLabel = null; if(strTkn.hasMoreTokens()){ imgLabel =
1521
		 * strTkn.nextToken(); imgList.add(imgFfcLabel);
1522
		 * 
1523
		 * // ffc.removeMedia("image", imgFfcLabel); // ffc.addMedia("image",
1524
		 * imgLabel); } if(imgLabel == null){
1525
		 * System.out.println("Something is really breaking .. bu ha ha !!!"); }
1526
		 * totalImages++; } }
1527
		 * 
1528
		 * for(String vidlab : vidList){ ffc.removeMedia("youtube", vidlab);
1529
		 * ffc.addMedia("youtube", (new StringTokenizer(vidlab,
1530
		 * "~!~")).nextToken()); } for(String imglab : imgList){
1531
		 * ffc.removeMedia("image",imglab); ffc.addMedia("image", (new
1532
		 * StringTokenizer(imglab, "~!~")).nextToken()); }
1533
		 * slide.setFreeformContent(ffc); System.out.println("Slide id is " +
1534
		 * slide.getSlideDefinitionID() + "   vid labels:  " + vidFfcLabels +
1535
		 * "   img labels" + imgFfcLabels); }
1536
		 */
1537
		/*
1538
		 * newEntity.addSlide(slide); }
1539
		 * 
1540
		 * // System.out.println("entity:"+ entity.getID() + ":trv:" +
1541
		 * totalRawVideos + ":tri:" + totalRawImages +":tv:" + totalVideos
1542
		 * +":ti:" + totalImages); // sb.append("entity:"+ entity.getID() +
1543
		 * ":trv:" + totalRawVideos + ":tri:" + totalRawImages +":tv:" +
1544
		 * totalVideos +":ti:" + totalImages+ ":tr:"
1545
		 * +(totalRawVideos+totalRawImages) + ":t:" +(totalVideos+totalImages) +
1546
		 * ":vd:" +(totalRawVideos-totalVideos) + ":id:"
1547
		 * +(totalRawImages-totalImages) + "\n"); sb.append(entity.getID() +
1548
		 * "\n");
1549
		 * 
1550
		 * 
1551
		 * destinationEnts.updateEntity(newEntity);
1552
		 * CreationUtils.storeEntity(newEntity);
1553
		 * 
1554
		 * Map<Long, List<Entity>> entitiesByCategory =
1555
		 * sourceEnts.getEntitiesbyCategory();
1556
		 * 
1557
		 * Map<Long, Entity> xentities = destinationEnts.getEntities();
1558
		 * 
1559
		 * CreationUtils.rewriteRepository(xentities, entitiesByCategory); }
1560
		 * else{ sb.append("				" + entity.getID() + "\n"); } }
1561
		 * 
1562
		 * 
1563
		 * out.write(sb.toString()); out.close();
1564
		 */
457 rajveer 1565
		return true;
1566
	}
4964 amit.gupta 1567
 
1568
	private boolean makeEntitiesObject() throws Exception {
1569
		// DefinitionsContainer sourceDefs = new
1570
		// DefinitionsContainer(sourceDbPath);
1571
		// DefinitionsContainer destinationDefs = new
1572
		// DefinitionsContainer(destinationDbPath);
1573
		// EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
1574
		// EntityContainer destinationEnts = new
1575
		// EntityContainer(destinationDbPath);
1576
 
1577
		/*
1578
		 * Map<Long, List<Entity>> catEntities =
1579
		 * sourceEnts.getEntitiesbyCategory();
1580
		 * 
1581
		 * Map<Long, Entity> entities = sourceEnts.getEntities(); for(Long
1582
		 * catId: catEntities.keySet()){ List<Entity> ents =
1583
		 * catEntities.get(catId); for(Entity entity: ents){
1584
		 * entities.put(entity.getID(), entity);
1585
		 * System.out.println(entity.getID() + ":" + entity.getCategoryID() +
1586
		 * ":"+ entity.getBrand() + " "+ entity.getModelName() + " " +
1587
		 * entity.getModelNumber()); } }
1588
		 */
1589
 
791 rajveer 1590
		Map<Long, List<Entity>> catEntities = new TreeMap<Long, List<Entity>>();
1591
		Map<Long, Entity> entities = new TreeMap<Long, Entity>();
2720 mandeep.dh 1592
 
4964 amit.gupta 1593
		FileInputStream fstream = new FileInputStream("/home/rajveer/Desktop/1");
1594
		DataInputStream in = new DataInputStream(fstream);
1595
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
1596
		String strLine;
2720 mandeep.dh 1597
 
4964 amit.gupta 1598
		while ((strLine = br.readLine()) != null) {
1599
			long entityID = Long.parseLong(strLine);
1600
			String entityDBFile = sourceDbPath + "entities" + File.separator
1601
					+ entityID + "/entity.ser";
1602
			System.out.println(entityDBFile);
1603
			Entity entity = (Entity) DBUtils.read(entityDBFile);
1604
			entities.put(entityID, entity);
2720 mandeep.dh 1605
 
4964 amit.gupta 1606
			List<Entity> catent = catEntities.get(entity.getCategoryID());
1607
			if (catent == null) {
1608
				catent = new ArrayList<Entity>();
1609
			}
1610
			catent.add(entity);
1611
			catEntities.put(entity.getCategoryID(), catent);
1612
		}
1613
		in.close();
1614
 
1615
		String entitiesDBFile = sourceDbPath + "entities" + File.separator
1616
				+ "entities.ser";
1617
		String entitiesbycategoryDBFile = sourceDbPath + "entities"
1618
				+ File.separator + "entitiesbycategory.ser";
1619
 
791 rajveer 1620
		DBUtils.delete(entitiesDBFile);
1621
		DBUtils.store(entities, entitiesDBFile);
2720 mandeep.dh 1622
 
4964 amit.gupta 1623
		// Remove existing
791 rajveer 1624
		DBUtils.delete(entitiesbycategoryDBFile);
1625
		DBUtils.store(catEntities, entitiesbycategoryDBFile);
2720 mandeep.dh 1626
 
4964 amit.gupta 1627
		return false;
791 rajveer 1628
	}
2720 mandeep.dh 1629
 
4964 amit.gupta 1630
	private boolean printDataModel() throws Exception {
1631
		DefinitionsContainer dfc = Catalog.getInstance()
1632
				.getDefinitionsContainer();
1226 rajveer 1633
		StringBuilder sb = new StringBuilder();
2720 mandeep.dh 1634
 
1226 rajveer 1635
		Map<Long, SlideDefinition> allSlideDefs = dfc.getSlideDefinitions();
4964 amit.gupta 1636
		for (Long slideDefId : allSlideDefs.keySet()) {
1226 rajveer 1637
			SlideDefinition slideDef = allSlideDefs.get(slideDefId);
1638
			sb.append(slideDefId + " - " + slideDef.getLabel() + "\n");
4964 amit.gupta 1639
			if (!slideDef.getChildrenSlideDefinitionIDs().isEmpty()) {
1640
				sb.append("Child Slides are: \t"
1641
						+ slideDef.getChildrenSlideDefinitionIDs() + "\n");
1226 rajveer 1642
			}
4964 amit.gupta 1643
			List<SlideFeatureDefinition> featureDefs = slideDef
1644
					.getSlideFeatureDefinitions();
1645
			for (SlideFeatureDefinition featureDef : featureDefs) {
1646
				sb.append("\t"
1647
						+ featureDef.getFeatureDefintionID()
1648
						+ "\t"
1649
						+ dfc.getFeatureDefinition(
1650
								featureDef.getFeatureDefintionID()).getLabel()
1651
						+ "\t" + featureDef.getEditorialImportance() + "\n");
1226 rajveer 1652
			}
1653
		}
1654
		System.out.println(sb.toString());
580 rajveer 1655
		Map<Long, Category> categories = dfc.getCategories();
4964 amit.gupta 1656
		if (categories != null) {
1226 rajveer 1657
			return true;
1658
		}
4964 amit.gupta 1659
		for (Category category : categories.values()) {
1660
			if (category.getChildrenCategory() != null) {
580 rajveer 1661
				continue;
1662
			}
1226 rajveer 1663
			sb.append(category.getLabel() + "\n");
4964 amit.gupta 1664
			List<CategorySlideDefinition> slideDefs = dfc
1665
					.getCategorySlideDefinitions(category.getID());
1666
			List<Long> slideSequence = dfc.getCategorySlideSequence(category
1667
					.getID());
1668
			for (CategorySlideDefinition slideDef : slideDefs) {
1669
				sb.append("\t"
1670
						+ dfc.getSlideDefinition(slideDef.getSlideDefintionID())
1671
								.getLabel() + "\t"
1672
						+ slideDef.getEditorialImportance() + "\n");
1673
				// List<FeatureDefinition> featureDefs =
1674
				// dfc.getFeatureDefinitions(slideDef.getSlideDefintionID());
1675
 
1676
				List<SlideFeatureDefinition> slideFeatureDefs = dfc
1677
						.getSlideDefinition(slideDef.getSlideDefintionID())
1678
						.getSlideFeatureDefinitions();
1679
 
1680
				for (SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
1681
					FeatureDefinition featureDef = dfc
1682
							.getFeatureDefinition(slideFeatureDef
1683
									.getFeatureDefintionID());
1684
					BulletDefinition bulletDef = featureDef
1685
							.getBulletDefinition();
1686
					sb.append("\t\t\t" + featureDef.getLabel() + "\t"
1687
							+ slideFeatureDef.getEditorialImportance() + "\t"
1688
							+ featureDef.allowsBlank() + "\t"
1689
							+ bulletDef.isLearned() + "\t"
1690
							+ bulletDef.isMultivalue());
580 rajveer 1691
					List<Long> units = bulletDef.getUnitIDs();
4964 amit.gupta 1692
					if (bulletDef.getDatatypeDefinitionID() != null) {
1693
						sb.append("\t"
1694
								+ dfc.getDatatypeDefinition(
1695
										bulletDef.getDatatypeDefinitionID())
1696
										.getName());
1697
 
1226 rajveer 1698
					}
4964 amit.gupta 1699
					if (units != null) {
1700
						for (Long unit : units) {
1701
							sb.append("\t" + dfc.getUnit(unit).getFullForm()
1702
									+ "\t" + dfc.getUnit(unit).getShortForm());
580 rajveer 1703
						}
1704
					}
1226 rajveer 1705
					sb.append("\n");
580 rajveer 1706
				}
4964 amit.gupta 1707
 
580 rajveer 1708
				/*
4964 amit.gupta 1709
				 * for(FeatureDefinition featureDef: featureDefs){
1710
				 * BulletDefinition bulletDef =
1711
				 * featureDef.getBulletDefinition(); System.out.println("			" +
1712
				 * featureDef.getLabel() + " 	" + featureDef.allowsBlank() + "	"
1713
				 * + bulletDef.isLearned() + "	" + bulletDef.isMultivalue());
1714
				 * List<Long> units = bulletDef.getUnitIDs(); if(units!=null){
1715
				 * for(Long unit: units){ System.out.println("								"+
1716
				 * dfc.getUnit(unit).getFullForm() + "	"+
1717
				 * dfc.getUnit(unit).getShortForm()); } }
1718
				 * if(bulletDef.getDatatypeDefinitionID()!=null){
1719
				 * System.out.println("										" +
1720
				 * dfc.getDatatypeDefinition(bulletDef
1721
				 * .getDatatypeDefinitionID()).getName());
1722
				 * 
1723
				 * } }
1724
				 */
580 rajveer 1725
			}
1726
		}
1226 rajveer 1727
		System.out.println(sb.toString());
580 rajveer 1728
		return true;
1729
	}
4964 amit.gupta 1730
 
1731
	public boolean migrateOS() throws Exception {
4706 amit.gupta 1732
		Map<Long, Entity> map = CreationUtils.getEntities();
4964 amit.gupta 1733
		for (Long entityId : map.keySet()) {
1734
			Entity entity = map.get(entityId);
1735
			if (entity == null || entity.getSlides() == null) {
1736
				continue;
1737
			}
1738
 
1739
			for (Slide slide : entity.getSlides()) {
1740
				if (slide.getSlideDefinitionID() == 130020) {
1741
					List<Feature> features = slide.getFeatures();
1742
					for (Feature f : features) {
1743
						if (f.getFeatureDefinitionID() == 120043) {
1744
							Bullet b = f.getBullets().get(0);
1745
							String value = ((PrimitiveDataObject) b
1746
									.getDataObject()).getValue();
1747
							long enumValueID = getEnumValueForOS(value);
1748
							if (enumValueID == 110371L) {
1749
								Logger.log("Set entity:" + entityId
1750
										+ " as proprietary software", entity);
1751
							}
4706 amit.gupta 1752
							b.setDataObject(new EnumDataObject(enumValueID));
4964 amit.gupta 1753
						}
1754
					}
1755
				}
4706 amit.gupta 1756
 
4964 amit.gupta 1757
			}
1758
 
1759
			CreationUtils.updateEntity(entity);
1760
		}
1761
		return true;
4706 amit.gupta 1762
	}
1763
 
1764
	private long getEnumValueForOS(String value) {
1765
		value = value.toLowerCase();
1766
		Map<String, Long> map = getOSEnumMap();
4964 amit.gupta 1767
		String os = "Proprietary software";
1768
		if (value.contains("android")) {
1769
			if (value.contains("1.5")) {
1770
				os = "Android v1.5 (Cupcake)";
1771
			}
1772
			if (value.contains("1.6")) {
1773
				os = "Android v1.6 (Donut)";
1774
			}
1775
			if (value.contains("2.1")) {
1776
				os = "Android v2.1 (Eclair)";
1777
			}
1778
			if (value.contains("2.2")) {
1779
				os = "Android v2.2 (Froyo)";
1780
			}
1781
			if (value.contains("2.3")) {
1782
				os = "Android v2.3 (Gingerbread)";
1783
			}
1784
			if (value.contains("3.0")) {
1785
				os = "Android v3.0 (Honeycomb)";
1786
			}
1787
			if (value.contains("3.1")) {
1788
				os = "Android v3.1 (Honeycomb)";
1789
			}
1790
			if (value.contains("3.2")) {
1791
				os = "Android v3.2 (Honeycomb)";
1792
			}
4706 amit.gupta 1793
		}
4964 amit.gupta 1794
		if (value.contains("blackberry")) {
1795
			if (value.contains("os")) {
4706 amit.gupta 1796
				os = "BlackBerry OS";
1797
			}
4964 amit.gupta 1798
			if (value.contains("5.0")) {
4706 amit.gupta 1799
				os = "BlackBerry OS 5.0";
1800
			}
4964 amit.gupta 1801
			if (value.contains("6.0")) {
4706 amit.gupta 1802
				os = "BlackBerry OS 6.0";
1803
			}
4964 amit.gupta 1804
			if (value.contains("7.0")) {
4706 amit.gupta 1805
				os = "BlackBerry OS 7.0";
1806
			}
4964 amit.gupta 1807
			if (value.contains("tablet os")) {
4706 amit.gupta 1808
				os = "BlackBerry Tablet OS";
1809
			}
1810
		}
4964 amit.gupta 1811
		if (value.contains("brew mobile platform")) {
4706 amit.gupta 1812
			os = "Brew Mobile Platform";
1813
		}
4964 amit.gupta 1814
		if (value.contains("maemo 5")) {
4706 amit.gupta 1815
			os = "Maemo 5";
1816
		}
4964 amit.gupta 1817
		if (value.contains("windows phone 7")) {
4706 amit.gupta 1818
			os = "Windows Phone 7";
1819
		}
4964 amit.gupta 1820
		if (value.contains("windows phone 7.5 mango")) {
4706 amit.gupta 1821
			os = "Windows Phone 7.5 Mango";
1822
		}
4964 amit.gupta 1823
		if (value.contains("proprietary")) {
1824
			if (value.contains("lg"))
4706 amit.gupta 1825
				os = "Proprietary LG software";
4964 amit.gupta 1826
			else if (value.contains("micromax")) {
4706 amit.gupta 1827
				os = "Proprietary Micromax software";
4964 amit.gupta 1828
			} else if (value.contains("samsung")) {
4706 amit.gupta 1829
				os = "Proprietary Samsung software";
4964 amit.gupta 1830
			} else if (value.contains("sony ericsson")) {
4706 amit.gupta 1831
				os = "Proprietary Sony Ericsson software";
4964 amit.gupta 1832
			} else if (value.contains("spice")) {
4706 amit.gupta 1833
				os = "Proprietary Spice software";
4964 amit.gupta 1834
			} else if (value.contains("lava")) {
4706 amit.gupta 1835
				os = "Proprietary Lava software";
4964 amit.gupta 1836
			} else if (value.contains("alcatel")) {
4706 amit.gupta 1837
				os = "Proprietary Alcatel software";
4964 amit.gupta 1838
			} else if (value.contains("motorola")) {
4706 amit.gupta 1839
				os = "Proprietary Motorola software";
4964 amit.gupta 1840
			} else if (value.contains("karbonn")) {
4706 amit.gupta 1841
				os = "Proprietary Karbonn software";
4964 amit.gupta 1842
			} else {
4706 amit.gupta 1843
				os = "Proprietary software";
1844
			}
1845
		}
4964 amit.gupta 1846
		if (value.contains("mmp")) {
4706 amit.gupta 1847
			os = "Proprietary Samsung software";
1848
		}
4964 amit.gupta 1849
		if (value.contains("samsung")) {
1850
			if (value.contains("bada")) {
1851
				os = "Samsung bada";
1852
			}
1853
			if (value.contains("bada 1.2")) {
1854
				os = "Samsung bada 1.2";
1855
			}
4706 amit.gupta 1856
		}
4964 amit.gupta 1857
		if (value.contains("sony ericsson java platform 8")) {
4706 amit.gupta 1858
			os = "Proprietary Sony Ericsson software";
1859
		}
4964 amit.gupta 1860
		if (value.contains("s60")) {
4706 amit.gupta 1861
			os = "Symbian 60";
1862
		}
4964 amit.gupta 1863
		if (value.contains("symbian")) {
1864
			if (value.contains("40")) {
4706 amit.gupta 1865
				os = "Symbian 40";
1866
			}
4964 amit.gupta 1867
			if (value.contains("60")) {
4706 amit.gupta 1868
				os = "Symbian 60";
1869
			}
4964 amit.gupta 1870
			if (value.contains("^3")) {
4706 amit.gupta 1871
				os = "Symbian^3";
1872
			}
4964 amit.gupta 1873
			if (value.contains("anna")) {
4706 amit.gupta 1874
				os = "Symbian Anna";
1875
			}
4964 amit.gupta 1876
			if (value.contains("belle")) {
4706 amit.gupta 1877
				os = "Symbian Belle";
1878
			}
1879
		}
4964 amit.gupta 1880
		if (value.contains("ios 4")) {
4706 amit.gupta 1881
			os = "iOS 4";
1882
		}
4964 amit.gupta 1883
		if (value.contains("ios 5")) {
4706 amit.gupta 1884
			os = "iOS 5";
1885
		}
1886
		return map.get(os);
1887
	}
4964 amit.gupta 1888
 
1889
	private Map<String, Long> getOSEnumMap() {
4706 amit.gupta 1890
		Map<String, Long> map = new HashMap<String, Long>();
1891
		map.put("Android v1.5 (Cupcake)", 110335L);
1892
		map.put("Android v1.6 (Donut)", 110336L);
1893
		map.put("Android v2.1 (Eclair)", 110337L);
1894
		map.put("Android v2.2 (Froyo)", 110338L);
1895
		map.put("Android v2.3 (Gingerbread)", 110339L);
1896
		map.put("Android v3.0 (Honeycomb)", 110340L);
1897
		map.put("Android v3.1 (Honeycomb)", 110341L);
4964 amit.gupta 1898
		map.put("Android v3.2 (Honeycomb)", 110342L);
4706 amit.gupta 1899
		map.put("BlackBerry OS", 110343L);
1900
		map.put("BlackBerry OS 5.0", 110344L);
1901
		map.put("BlackBerry OS 6.0", 110345L);
1902
		map.put("BlackBerry OS 7.0", 110346L);
1903
		map.put("BlackBerry Tablet OS", 110347L);
1904
		map.put("Brew Mobile Platform", 110348L);
1905
		map.put("Maemo 5", 110349L);
1906
		map.put("Windows Phone 7", 110350L);
1907
		map.put("Windows Phone 7.5 Mango", 110351L);
1908
		map.put("Proprietary LG software", 110352L);
1909
		map.put("Proprietary Micromax software", 110353L);
1910
		map.put("Proprietary Samsung software", 110354L);
1911
		map.put("Proprietary Sony Ericsson software", 110355L);
1912
		map.put("Proprietary Spice software", 110356L);
1913
		map.put("Proprietary Lava software", 110367L);
1914
		map.put("Proprietary Karbonn software", 110368L);
1915
		map.put("Proprietary Motorola software", 110369L);
1916
		map.put("Proprietary Alcatel software", 110370L);
4964 amit.gupta 1917
		map.put("Proprietary software", 110371L);
4706 amit.gupta 1918
		map.put("Samsung bada", 110357L);
1919
		map.put("Samsung bada 1.2", 110358L);
1920
		map.put("Symbian 40", 110360L);
1921
		map.put("Symbian 60", 110361L);
1922
		map.put("Symbian^3", 110362L);
1923
		map.put("Symbian Anna", 110363L);
1924
		map.put("Symbian Belle", 110364L);
1925
		map.put("iOS 4", 110365L);
1926
		map.put("iOS 5", 110366L);
4964 amit.gupta 1927
 
4706 amit.gupta 1928
		return map;
4964 amit.gupta 1929
 
4706 amit.gupta 1930
	}
5370 amit.gupta 1931
 
1932
	private Object clone(Object object) throws Exception{
1933
		// Serializing and deserializing to clone the slide
1934
		// serialize
1935
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
1936
		ObjectOutputStream out = new ObjectOutputStream(bos);
1937
		out.writeObject(object);
4964 amit.gupta 1938
 
5370 amit.gupta 1939
		// De-serialization
1940
		ByteArrayInputStream bis = new ByteArrayInputStream(
1941
				bos.toByteArray());
1942
		ObjectInputStream in = new ObjectInputStream(bis);
1943
		return in.readObject();
1944
 
1945
	}
1946
 
1947
	/**
1948
	 * 
1949
	 * @throws Exception
1950
	 */
1951
	private void copyMedia(String newEntityId, String oldEntityId, Media media) throws Exception {
1952
		String mediaDirPath = Utils.CONTENT_DB_PATH + "media" + File.separator + newEntityId;
1953
		File mediaDir = new File(mediaDirPath);
1954
		if(!mediaDir.exists()) {
1955
			mediaDir.mkdir();
1956
		} 
1957
 
1958
		String mediaFilePath = mediaDirPath + File.separator + media.getFileName();
1959
		String oldMediaFilePath = media.getLocation();
1960
 
1961
		File mediaFile = new File(mediaFilePath);
1962
		mediaFile.createNewFile();
1963
 
1964
		File oldMediaFile = new File(oldMediaFilePath);
1965
 
1966
		InputStream in = new FileInputStream(oldMediaFile);
1967
 
1968
		// appending output stream
1969
		// @rajveer : replacing the existing file 
1970
		OutputStream out = new FileOutputStream(mediaFile); 
1971
 
1972
		try {
1973
			IOUtils.copy(in, out);
1974
		}
1975
		finally {
1976
			IOUtils.closeQuietly(in);
1977
			IOUtils.closeQuietly(out);
1978
		}
1979
		media.setLocation(mediaFilePath);
1980
	}
5396 amit.gupta 1981
 
1982
	private void migrateHeadSetBack() throws Exception {
1983
		Map<Long, Long>migratorMap = new HashMap<Long, Long>();
1984
		migratorMap.put(77777000L,1000291L);
1985
		migratorMap.put(77777001L,1000292L);
1986
		migratorMap.put(77777002L,1000293L);
1987
		migratorMap.put(77777003L,1000294L);
1988
		migratorMap.put(77777004L,1000295L);
1989
		migratorMap.put(77777005L,1000296L);
1990
		migratorMap.put(77777006L,1000297L);
1991
		migratorMap.put(77777007L,1000298L);
1992
		migratorMap.put(77777008L,1000299L);
1993
		migratorMap.put(77777009L,1000300L);
1994
		migratorMap.put(77777010L,1000301L);
1995
		migratorMap.put(77777011L,1000302L);
1996
		migratorMap.put(77777012L,1000303L);
1997
		migratorMap.put(77777013L,1000304L);
1998
		migratorMap.put(77777014L,1000305L);
1999
		migratorMap.put(77777015L,1000306L);
2000
		migratorMap.put(77777016L,1000351L);
2001
		migratorMap.put(77777017L,1000352L);
2002
		migratorMap.put(77777018L,1000353L);
2003
		migratorMap.put(77777019L,1000363L);
2004
		migratorMap.put(77777020L,1000364L);
2005
		migratorMap.put(77777021L,1000365L);
2006
		migratorMap.put(77777022L,1000425L);
2007
		migratorMap.put(77777023L,1000426L);
2008
		migratorMap.put(77777024L,1000430L);
2009
		migratorMap.put(77777025L,1000434L);
2010
		migratorMap.put(77777026L,1000435L);
2011
		migratorMap.put(77777027L,1000436L);
2012
		migratorMap.put(77777028L,1000437L);
2013
		migratorMap.put(77777029L,1000438L);
2014
		migratorMap.put(77777030L,1000439L);
2015
		migratorMap.put(77777031L,1000440L);
2016
		migratorMap.put(77777032L,1000441L);
2017
		migratorMap.put(77777033L,1000442L);
2018
		migratorMap.put(77777034L,1000443L);
2019
		migratorMap.put(77777035L,1000444L);
2020
		migratorMap.put(77777036L,1000445L);
2021
		migratorMap.put(77777037L,1000446L);
2022
		migratorMap.put(77777038L,1000447L);
2023
		migratorMap.put(77777039L,1000449L);
2024
		migratorMap.put(77777040L,1000450L);
2025
		migratorMap.put(77777041L,1000451L);
2026
		migratorMap.put(77777042L,1000452L);
2027
		migratorMap.put(77777043L,1000453L);
2028
		migratorMap.put(77777044L,1000454L);
2029
		migratorMap.put(77777045L,1000455L);
2030
		migratorMap.put(77777046L,1000518L);
2031
		migratorMap.put(77777047L,1000521L);
2032
		migratorMap.put(77777048L,1000572L);
2033
		migratorMap.put(77777049L,1000575L);
2034
		migratorMap.put(77777050L,1000623L);
2035
		migratorMap.put(77777051L,1000625L);
2036
		migratorMap.put(77777052L,1000626L);
2037
		migratorMap.put(77777053L,1000627L);
2038
		migratorMap.put(77777054L,1000628L);
2039
		migratorMap.put(77777055L,1000874L);
2040
		migratorMap.put(77777056L,1001200L);
2041
		migratorMap.put(77777057L,1001375L);
2042
		migratorMap.put(77777058L,1001376L);
2043
		migratorMap.put(77777059L,1001378L);
2044
		migratorMap.put(77777060L,1001382L);
2045
		migratorMap.put(77777061L,1001808L);
2046
		migratorMap.put(77777062L,1001809L);
2047
		migratorMap.put(77777063L,1001810L);
2048
		migratorMap.put(77777064L,1001811L);
2049
		migratorMap.put(77777065L,1001812L);
2050
		migratorMap.put(77777066L,1001814L);
2051
		migratorMap.put(77777067L,1001815L);
2052
		migratorMap.put(77777068L,1001816L);
2053
		migratorMap.put(77777069L,1001817L);
2054
		migratorMap.put(77777070L,1001818L);
2055
		migratorMap.put(77777071L,1001819L);
2056
		migratorMap.put(77777072L,1001820L);
2057
		migratorMap.put(77777073L,1001821L);
2058
		migratorMap.put(77777074L,1001822L);
2059
		migratorMap.put(77777075L,1001823L);
2060
		migratorMap.put(77777076L,1001824L);
2061
		migratorMap.put(77777077L,1001825L);
2062
		migratorMap.put(77777078L,1002318L);
2063
		migratorMap.put(77777079L,1002320L);
2064
		migratorMap.put(77777080L,1003852L);
2065
		migratorMap.put(77777081L,1003853L);
2066
		migratorMap.put(77777082L,1003854L);
2067
		migratorMap.put(77777083L,1003855L);
2068
		migratorMap.put(77777084L,1003856L);
2069
		migratorMap.put(77777085L,1003857L);
2070
		migratorMap.put(77777086L,1003916L);
2071
		migratorMap.put(77777087L,1003917L);
2072
		migratorMap.put(77777088L,1003918L);
2073
		migratorMap.put(77777089L,1003919L);
2074
		migratorMap.put(77777090L,1003920L);
2075
		migratorMap.put(77777091L,1003921L);
2076
		migratorMap.put(77777092L,1003922L);
2077
		migratorMap.put(77777093L,1003923L);
2078
		migratorMap.put(77777094L,1003924L);
2079
		migratorMap.put(77777095L,1003925L);
2080
		migratorMap.put(77777096L,1003926L);
2081
		migratorMap.put(77777097L,1003927L);
2082
		migratorMap.put(77777098L,1004087L);
2083
		migratorMap.put(77777099L,1004088L);
2084
		migratorMap.put(77777100L,1004089L);
2085
		migratorMap.put(77777101L,1004134L);
2086
		migratorMap.put(77777102L,1004135L);
2087
		migratorMap.put(77777103L,1004139L);
2088
 
2089
		for(Map.Entry<Long, Long> entry : migratorMap.entrySet()) {
2090
			Long newId  = entry.getKey();
2091
			Long validId  = entry.getValue();
2092
			Entity entity  = CreationUtils.getEntity(newId);
2093
			EntityState es = CreationUtils.getEntityState(newId);
2094
			Slide sl = entity.getSlide(130130);
5397 amit.gupta 2095
			/*entity.setID(validId);
2096
			es.setID(validId);*/
5396 amit.gupta 2097
 
7129 amit.gupta 2098
 
5370 amit.gupta 2099
 
5396 amit.gupta 2100
			CreationUtils.updateEntity(entity);
2101
			CreationUtils.updateEntityState(es);
2102
			CreationUtils.deleteEntity(newId);
2103
			System.out.println(validId + " : " + es.getCategoryID() + ", removed entity id:" + newId);
2104
 
2105
		}
2106
 
2107
	}
7129 amit.gupta 2108
 
2109
	private void migrateTabletsBack() throws Exception {
7131 amit.gupta 2110
		//This entity is created after migration have to be deleted. Vrinda have to rmk it
2111
		CreationUtils.deleteEntity(1006812);
7129 amit.gupta 2112
		Date now = new Date();
2113
		Collection<Entity> entities = CreationUtils.getEntities(20010);
2114
		//entities = (List<Entity>)this.clone(entities);
2115
		for (Entity entity : entities) {
2116
			long entityId = entity.getID();
2117
			if(entityId>9999999){
2118
				long oldEntityId = entityId%10000000;
2119
				System.out.println(oldEntityId);
2120
				EntityState es = CreationUtils.getEntityState(entityId);
2121
				if(es != null) {
2122
					if (es.getStatus().equals(EntityStatus.READY) || es.getStatus().equals(EntityStatus.COMPLETE)){
2123
						es.setStatus(EntityStatus.READY);
2124
						es.setMerkedReadyOn(now);
2125
					}
2126
					es.setID(oldEntityId);
2127
					entity.setID(oldEntityId);
2128
					entity.setCategoryID(10010);
2129
					es.setCategoryID(10010);
2130
					CreationUtils.updateEntity(entity);
2131
					CreationUtils.updateEntityState(es);
2132
					CreationUtils.deleteEntity(entityId);
2133
					System.out.println(entityId + " moved back");
2134
 
2135
				} else {
2136
					CreationUtils.deleteEntity(entityId);
2137
					System.out.println("Deleted " + entityId + " due to incomplete tablets");
2138
				}
2139
			}else {
2140
				entity.setCategoryID(10010);
2141
				EntityState es = CreationUtils.getEntityState(entityId);
2142
				es.setCategoryID(10010);
2143
				CreationUtils.updateEntity(entity);
2144
				CreationUtils.updateEntityState(es);
2145
			}
2146
 
2147
 
2148
		}
2149
 
2150
	}
5760 amit.gupta 2151
 
2152
    public String getTitle(Entity entity){
2153
    	String brand = entity.getBrand();
2154
    	String modelName = entity.getModelName();
2155
    	String modelNumber = entity.getModelNumber();
2156
    	String titleString = "";
2157
    	if(StringUtils.isEmpty(modelName)){
2158
    		titleString = brand + " " + modelNumber + " Price in India | Specifications, Features and Reviews";
2159
    	}else {
2160
    		titleString = brand + " " + modelName + " Price in India | " + modelNumber + " Specifications, Features and Reviews";
2161
    	}
2162
    	return titleString;
2163
    }
2164
 
2165
    public String getMetaDescription(ExpandedEntity expEntity){
2166
    	Category parentCategory= expEntity.getCategory().getParentCategory();
2167
    	String categoryName = parentCategory.getLabel();
2168
    	if (parentCategory.getID()== Utils.MOBILE_ACCESSORIES_CATEGORY){
2169
    		categoryName = expEntity.getCategory().getLabel();
2170
    	}
2171
    	String template = "Buy {0} {1} {2} at $minPriceItem.getSellingPrice(). All {3} are 100% Original and carry full Manufacturers Warranty since we procure directly from the Brand. Free Next Day Delivery.";
2172
    	return MessageFormat.format(template, expEntity.getBrand(), expEntity.getModelName(), expEntity.getModelNumber(), categoryName.toLowerCase());
2173
    }
7037 amit.gupta 2174
 
2175
public void migrateTablets() throws Exception {
2176
 
2177
		//Starting entity id for new Category with 10000
2178
		Collection<Entity> entities = CreationUtils.getEntities(10010);
2179
		long newCounter;
2180
		//entities = (List<Entity>)this.clone(entities);
2181
		for (Entity entity : entities) {
2182
			long entityId = entity.getID();
2183
			newCounter = Long.parseLong("1" + String.valueOf(entityId));
2184
			Entity newEntity = new Entity(newCounter, 20010);
2185
			try {
2186
				List<Slide> entitySlides = entity.getSlides();
2187
				if (entity == null || entitySlides == null) {
2188
					continue;
2189
				}
2190
				List<Slide> newEntitySlides = new ArrayList<Slide>();
2191
				/*Slide introSlide = entity.getSlide(130001);
2192
				Slide summarySlide = entity.getSlide(130054);
2193
				Slide packageContents = entity.getSlide(130025);*/
2194
				for (Slide slide : entitySlides) {
2195
					if (Arrays.asList(130054L, 130025L, 130001L).contains(slide.getSlideDefinitionID())) {
2196
						slide=(Slide)this.clone(slide); 
2197
						newEntitySlides.add(slide);
2198
					}
2199
					FreeformContent ffc1 = slide.getFreeformContent();
2200
					if(ffc1 != null){
2201
						Map<String, Media> mediaMap = ffc1.getMedias();
2202
						if(mediaMap==null){
2203
							continue;
2204
						}
2205
						for(Media media : mediaMap.values()){
2206
							if(media.getType().equals(Type.IMAGE) || media.getType().equals(Type.DOCUMENT)){
2207
								copyMedia(String.valueOf(newCounter), String.valueOf(entityId),media);
2208
							}
2209
						}
2210
					}
2211
				}
2212
 
2213
				List<Long> newSlideSequence = new ArrayList<Long>();
2214
				newSlideSequence.add(130001L);
2215
				newSlideSequence.add(130054L);
2216
				newSlideSequence.add(130172L);
2217
				newSlideSequence.add(130173L);
2218
				newSlideSequence.add(130174L);
2219
				newSlideSequence.add(130175L);
2220
				newSlideSequence.add(130176L);
2221
				newSlideSequence.add(130177L);
2222
				newSlideSequence.add(130178L);
2223
				newSlideSequence.add(130180L);
2224
				newSlideSequence.add(130183L);
2225
				newSlideSequence.add(130025L);
2226
 
2227
				newEntity.setSlideSequence(newSlideSequence);
2228
				newEntity.setBrand(entity.getBrand());
2229
				newEntity.setModelName(entity.getModelName());
2230
				newEntity.setModelNumber(entity.getModelNumber());
2231
				//entitySlides.remove(featureSlide);
2232
				newEntity.setSlides(newEntitySlides);
2233
				EntityState es = new EntityState(newCounter, 20010, "admin");
2234
				es.setBrand(entity.getBrand());
2235
				es.setModelName(entity.getModelName());
2236
				es.setModelNumber(entity.getModelNumber());
2237
				CreationUtils.createEntity(newEntity, es);
2238
				System.out.println("New entity : " + newCounter + " created using : " + entityId);
2239
				System.out.println(CreationUtils.getEntity(newCounter));
2240
				newCounter++;
2241
			}catch(Exception e){
2242
				System.out.println("Could not migrate " + entityId);
2243
			}
2244
		}
2245
 
2246
	}
5396 amit.gupta 2247
 
7111 amit.gupta 2248
public void migrateImagesInTablets() throws Exception {
2249
 
2250
	//Starting entity id for new Category with 10000
2251
	Collection<Entity> entities = CreationUtils.getEntities(10010);
2252
	long newCounter;
2253
	//entities = (List<Entity>)this.clone(entities);
2254
	for (Entity entity : entities) {
2255
		long entityId = entity.getID();
2256
		newCounter = Long.parseLong("1" + String.valueOf(entityId));
2257
		Entity newEntity = CreationUtils.getEntity(newCounter);
2258
		try {
2259
			if (newEntity == null) {
2260
				continue;
2261
			}
2262
			Slide introSlide = newEntity.getSlide(130001L);
2263
			Slide looknfeelSlide = entity.getSlide(130002L);
2264
			/*
2265
			 * Slide introSlide = entity.getSlide(130001); Slide
2266
			 * summarySlide = entity.getSlide(130054); Slide packageContents
2267
			 * = entity.getSlide(130025);
2268
			 */
7037 amit.gupta 2269
 
7111 amit.gupta 2270
			if (looknfeelSlide != null) {
2271
				FreeformContent ffc1 = looknfeelSlide.getFreeformContent();
2272
				if (ffc1 != null) {
2273
					Map<String, Media> mediaMap = ffc1.getMedias();
2274
					if (mediaMap == null) {
2275
						continue;
2276
					}
2277
					FreeformContent introFfc = introSlide
2278
							.getFreeformContent();
7123 amit.gupta 2279
					Map<String, Media> introMediaMap = new LinkedHashMap<String, Media>();
2280
					introFfc.setMedias(introMediaMap);
7111 amit.gupta 2281
					Set<String> introMediaMapKeys = introMediaMap.keySet();
7123 amit.gupta 2282
					for (Map.Entry<String, Media> entry : mediaMap.entrySet()) {
7111 amit.gupta 2283
						Media entryValue = entry.getValue();
2284
						String entryKey = entry.getKey();
2285
						if (!introMediaMapKeys.contains(entryKey)) {
2286
							introMediaMap.put(entryKey,
2287
									(Media) clone(entryValue));
2288
							if (entryValue.getType().equals(Type.IMAGE)
2289
									|| entryValue.equals(Type.DOCUMENT)) {
2290
								try {
2291
									copyMedia(String.valueOf(newCounter),
2292
											String.valueOf(entityId),
2293
											entryValue);
2294
								} catch (Exception e) {
2295
									System.out
2296
											.println("could not copy file "
2297
													+ entityId);
2298
								}
2299
							}
2300
						}
2301
					}
2302
				}
2303
			}
2304
 
2305
			CreationUtils.updateEntity(newEntity);
2306
			System.out.println("New entity : " + newCounter
2307
					+ " created using : " + entityId);
2308
		} catch (Exception e) {
2309
			e.printStackTrace();
2310
			System.out.println("Could not migrate " + entityId);
2311
		}
2312
	}
2313
 
7917 amit.gupta 2314
 
457 rajveer 2315
}
7917 amit.gupta 2316
private void miscilleniousPopulate() throws Exception{
2317
 
2318
	DefinitionsContainer defContainer = Catalog.getInstance().getDefinitionsContainer();
2319
 
2320
	//Get All Enum Values of Communication facilities 70114;
2321
	Map <Long, Entity> allEntities = CreationUtils.getEntities();
2322
	/*Map <Long, Entity> allEntities =new HashMap<Long, Entity>();
2323
	allEntities.put(1000069l, CreationUtils.getEntity(1000069l));*/
2324
	for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){
2325
		Entity entity = entry.getValue();
2326
		Long categoryId = entity.getCategoryID();
2327
		EntityState es = CreationUtils.getEntityState(entity.getID());
2328
		if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005) 
2329
				&& (es != null && es.getStatus().equals(EntityStatus.READY))) {
2330
			ExpandedEntity expEntity = new ExpandedEntity(entity);
2331
			Slide miscSlide = expEntity.getSlide(130024l);
7932 amit.gupta 2332
			if(miscSlide != null) {
2333
				List<Feature> miscFeatures = miscSlide.getFeatures();
2334
				if(CollectionUtils.isNotEmpty(miscFeatures)){
7933 amit.gupta 2335
					Iterator<Feature> iter = miscFeatures.iterator();
2336
					while(iter.hasNext()) {
2337
						Feature f =iter.next();
2338
						if (f.getFeatureDefinitionID() == 120484l || f.getFeatureDefinitionID() == 120483l || f.getFeatureDefinitionID() == 1204821 || f.getFeatureDefinitionID() == 120481l){
7932 amit.gupta 2339
							List<Bullet> bulletList  = f.getBullets();
2340
							PrimitiveDataObject b = (PrimitiveDataObject)bulletList.get(0).getDataObject();
2341
							String bulletValue = b.getValue();
2342
							String newString = bulletValue;
7933 amit.gupta 2343
							if(bulletValue.startsWith(", ") || bulletValue.contains(",,") || bulletValue.contains("<li>")){
7932 amit.gupta 2344
								System.out.println(entity.getID());
2345
								bulletList = new ArrayList<Bullet>();
7933 amit.gupta 2346
								newString = bulletValue.replaceAll("<li>|</li>|<ul>|</ul>", ",").replaceAll(",,", ",").replaceAll(", ,", ", ").replaceAll(", $", "");
2347
 
2348
								System.out.println(newString);
7932 amit.gupta 2349
								if(newString.startsWith(", ") ){
2350
									newString = newString.replaceFirst(", ", "");
7917 amit.gupta 2351
								}
7932 amit.gupta 2352
								bulletList.add(new Bullet(new PrimitiveDataObject(newString)));
2353
								f.setBullets(bulletList);
2354
								System.out.println(newString);
7917 amit.gupta 2355
							}
7932 amit.gupta 2356
							if ( newString.equals(" ") || newString.equals("") || newString.equals("  ") || newString.equals("   ")){
7933 amit.gupta 2357
								iter.remove();
7917 amit.gupta 2358
							}
2359
						}
7932 amit.gupta 2360
					}
7933 amit.gupta 2361
					CreationUtils.updateEntity(entity);
2362
					touchEntityState(entity.getID());
7917 amit.gupta 2363
				}
2364
			}
7932 amit.gupta 2365
			//touchEntityState(entity.getID());
2366
			}
7917 amit.gupta 2367
		}
2368
	}
7973 amit.gupta 2369
 
2370
	private void step2() throws Exception {
2371
		//Get All Enum Values of Communication facilities 70114;
7975 amit.gupta 2372
		//Map <Long, Entity> allEntities = CreationUtils.getEntities();
2373
		Map <Long, Entity> allEntities =new HashMap<Long, Entity>();
2374
		allEntities.put(1007937l, CreationUtils.getEntity(1007937l));
2375
		allEntities.put(1007932l, CreationUtils.getEntity(1007932l));
2376
		allEntities.put(1007930l, CreationUtils.getEntity(1007930l));
2377
		allEntities.put(1007934l, CreationUtils.getEntity(1007934l));
2378
		allEntities.put(1007936l, CreationUtils.getEntity(1007936l));
2379
		allEntities.put(1007935l, CreationUtils.getEntity(1007935l));
7973 amit.gupta 2380
		for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){
2381
			Entity entity = entry.getValue();
2382
			Long categoryId = entity.getCategoryID();
2383
			EntityState es = CreationUtils.getEntityState(entity.getID());
7975 amit.gupta 2384
			if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005) && es != null ) {
7973 amit.gupta 2385
				List<Slide> allSlides = entity.getSlides();
2386
				Slide slMaps = entity.getSlide(130022l);
2387
				Slide slConnectivity = (categoryId == 10005 ? entity.getSlide(130058l) : entity.getSlide(130007l));
2388
				if(slConnectivity != null){
2389
					if(slConnectivity.getSlideDefinitionID() ==130058l){
2390
						Slide newSlide = new Slide(130007l);
2391
						newSlide.setFeatures(slConnectivity.getFeatures());
2392
						allSlides.remove(slConnectivity);
2393
						allSlides.add(newSlide);
2394
						slConnectivity = newSlide;
2395
 
2396
						List<Long> slideSequence = entity.getSlideSequence();
2397
						int index =slideSequence.indexOf(130058l);
2398
						slideSequence.remove(index);;
2399
						slideSequence.add(index, 130007l);
2400
					}
2401
					if(slMaps != null) {
2402
						List<Feature> mapsFeatures = slMaps.getFeatures();
2403
						allSlides.remove(slMaps);
2404
						if(mapsFeatures != null){
2405
							for (Feature mapsFeature : mapsFeatures){
2406
								if(mapsFeature.getFeatureDefinitionID() == 120046l){
2407
									slConnectivity.getFeatures().add(mapsFeature);
2408
									break;
2409
								}
2410
							}
2411
 
2412
						}
2413
					}
2414
 
2415
				}
2416
 
2417
				Slide slKeyBoard = entity.getSlide(130026l);
2418
				Slide slDisplay = entity.getSlide(130003l);
2419
				Slide slSummary = entity.getSlide(130054l);
2420
				Slide slLookNFeel = entity.getSlide(130002l);
2421
				Feature hardkeysFeature = null;
2422
				if (slKeyBoard != null) {
2423
					List<Feature> keyBoardFeatures = slKeyBoard.getFeatures();
2424
					Iterator<Feature> iter = keyBoardFeatures.iterator();
2425
					while(iter.hasNext()){
2426
						Feature feature = iter.next();
2427
						if(feature.getFeatureDefinitionID() == 120010l){
7975 amit.gupta 2428
							if(slSummary!=null){
7984 amit.gupta 2429
							slSummary.getFeatures().add(feature);
7975 amit.gupta 2430
							}
7973 amit.gupta 2431
							iter.remove();
2432
						}
2433
						if(feature.getFeatureDefinitionID() == 120082l){
2434
							slDisplay.getFeatures().add(feature);
2435
							iter.remove();
2436
						}
2437
						if(feature.getFeatureDefinitionID() == 120009l){
2438
							slLookNFeel.getFeatures().add(feature);
2439
							iter.remove();
2440
						}
2441
						if(feature.getFeatureDefinitionID() == 120048l ){
2442
							if(hardkeysFeature == null) {
2443
								hardkeysFeature = feature;
2444
							}else {
2445
								if(feature.getBullets() != null){
2446
									hardkeysFeature.getBullets().addAll(feature.getBullets());
2447
									slLookNFeel.getFeatures().add(hardkeysFeature);
2448
								}
2449
							}
2450
							iter.remove();
2451
						}
2452
						if(feature.getFeatureDefinitionID() == 120049l ){
2453
							if(hardkeysFeature == null){
2454
								hardkeysFeature = new Feature(120048l);
2455
								hardkeysFeature.setBullets(feature.getBullets());
2456
							} else {
2457
								if(feature.getBullets() != null){
2458
									hardkeysFeature.getBullets().addAll(feature.getBullets());
2459
									slLookNFeel.getFeatures().add(hardkeysFeature);
2460
								}
2461
							}
2462
							iter.remove();
2463
						}
2464
					}
2465
 
2466
					allSlides.remove(slKeyBoard);
2467
				}
2468
				CreationUtils.updateEntity(entity);
7975 amit.gupta 2469
				//touchEntityState(entity.getID());
7973 amit.gupta 2470
			}
2471
		}
2472
 
2473
	}
7984 amit.gupta 2474
 
2475
	private void step4() throws Exception {
2476
		//Get All Enum Values of Communication facilities 70114;
2477
		Map <Long, Entity> allEntities = CreationUtils.getEntities();
2478
		/*Map <Long, Entity> allEntities = new HashMap<Long, Entity>();
2479
		allEntities.put(1002529l, CreationUtils.getEntity(1002529l));
2480
		allEntities.put(1007932l, CreationUtils.getEntity(1007932l));
2481
		allEntities.put(1007930l, CreationUtils.getEntity(1007930l));
2482
		allEntities.put(1007934l, CreationUtils.getEntity(1007934l));
2483
		allEntities.put(1007936l, CreationUtils.getEntity(1007936l));
2484
		allEntities.put(1007935l, CreationUtils.getEntity(1007935l));*/
2485
		for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){
2486
			Entity entity = entry.getValue();
2487
			Long categoryId = entity.getCategoryID();
2488
			EntityState es = CreationUtils.getEntityState(entity.getID());
2489
			if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005) && es != null && !es.getStatus().equals(EntityStatus.UNASSIGNED)) {
2490
				List<Slide> allSlides = entity.getSlides();
2491
				if(allSlides != null){
2492
					for(Slide slide:allSlides) {
2493
						if(slide!=null){
2494
							List <Feature> features = slide.getFeatures();
2495
							Iterator<Feature> fIterator = features.iterator();
2496
							while (fIterator.hasNext()){
2497
								Feature f = fIterator.next();
2498
								long fId = f.getFeatureDefinitionID();
2499
								if(fId == 120011 || fId == 120020 || fId == 120051 || fId == 120025 || fId == 120056 || fId == 120216 || fId == 120045 || fId == 120010){
2500
									fIterator.remove();
2501
								}
2502
								if(fId==120144){
2503
									String  value = "Adobe flash player";
2504
									List<Bullet> flashb = f.getBullets();
2505
									if(flashb !=null && flashb.size() > 0){
2506
										value = ((PrimitiveDataObject)flashb.get(0).getDataObject()).getValue();
2507
									}
2508
									Slide miscSlide1 = entity.getSlide(130024l);
2509
									if(miscSlide1 != null){
2510
										List <Feature> mfeatures = miscSlide1.getFeatures();
2511
										Iterator<Feature> mIterator = mfeatures.iterator();
2512
										while (mIterator.hasNext()){
2513
											Feature mf = mIterator.next();
2514
											if(mf != null){
2515
												if(mf.getFeatureDefinitionID() == 120484l){
2516
													Bullet b = mf.getBullets().get(0);
2517
													String finalValue = ((PrimitiveDataObject)b.getDataObject()).getValue() + ", " + value;
2518
													b.setDataObject(new PrimitiveDataObject(finalValue));
2519
												}
2520
											}
2521
										}
2522
									} else {
2523
										System.out.println("no misc for entity : " + entity.getID());
2524
									}
2525
									fIterator.remove();
2526
								}
2527
							}
2528
						}
2529
					}
2530
					try{
2531
						CreationUtils.updateEntity(entity);
2532
					}catch (Exception e){
2533
						System.out.println("Could not update entity : " + entity.getID());
2534
					}
2535
					touchEntityState(entity.getID());
2536
				}
2537
			}
2538
		}
2539
	}
7997 amit.gupta 2540
	private void step6() throws Exception {
2541
		//Get All Enum Values of Communication facilities 70114;
8014 amit.gupta 2542
		DefinitionsContainer defc = Catalog.getInstance().getDefinitionsContainer();
2543
		Map <Long, Long> allEntities = getValues();
2544
		for (Map.Entry<Long, Long> entry:allEntities.entrySet()){
2545
			Long entityId = entry.getKey();
2546
			Entity entity = CreationUtils.getEntity(entityId); 
7997 amit.gupta 2547
			Long categoryId = entity.getCategoryID();
8014 amit.gupta 2548
			boolean found = false;
7997 amit.gupta 2549
			//System.out.println("entity : " + entity.getID());
2550
			EntityState es = CreationUtils.getEntityState(entity.getID());
2551
			if(!es.getStatus().equals(EntityStatus.UNASSIGNED)) {
2552
				if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005) 
2553
						&& es != null) {
8009 amit.gupta 2554
 
7997 amit.gupta 2555
					Slide videoSlide = entity.getSlide(130031l);
2556
					if(videoSlide != null){
8014 amit.gupta 2557
						List<Feature> features = videoSlide.getFeatures();
2558
						if(features != null) {
2559
							Iterator<Feature> iter = features.iterator();
2560
							while(iter.hasNext()){
2561
								Feature f = iter.next();
2562
								if(f.getFeatureDefinitionID() == 120475l){
2563
									found = true;
2564
									if(!entry.getValue().equals(((EnumDataObject)f.getBullets().get(0).getDataObject()).getEnumValueID())){
2565
										f.getBullets().get(0).setDataObject(new EnumDataObject(entry.getValue()));
2566
										try{
2567
											System.out.println("Recording feature updated:" + entityId);
2568
											CreationUtils.updateEntity(entity);
2569
											touchEntityState(entityId);
2570
										}catch (Exception e){
2571
											System.out.println("Could not update entity : " + entity.getID());
2572
										}
2573
									}
2574
									break;
2575
								}
8009 amit.gupta 2576
							}
8014 amit.gupta 2577
 
2578
							if(!found){
2579
								Feature f = new Feature(120475l);
2580
								f.setBullets(Arrays.asList(new Bullet(new EnumDataObject(entry.getValue()))));
2581
								features.add(f);
2582
								try{
2583
									System.out.println("Recording feature created:" + entityId);
2584
									CreationUtils.updateEntity(entity);
2585
									touchEntityState(entityId);
2586
								}catch (Exception e){
2587
									System.out.println("Could not update entity : " + entity.getID());
2588
								}
2589
							}
7997 amit.gupta 2590
						}
2591
					}
2592
				}
2593
 
2594
			}
2595
		}
2596
	}
8014 amit.gupta 2597
 
2598
	private Map<Long,Long> getValues() {
2599
		try {
2600
			Reader reader = new FileReader("/root/sample.json");
2601
			return new Gson().fromJson(reader, new TypeToken<Map<Long,Long>>() {}.getType());
2602
		} catch (FileNotFoundException e) {
2603
			e.printStackTrace();
2604
			return new HashMap<Long, Long>();
2605
		}
2606
	}
8077 amit.gupta 2607
 
2608
	private void reorderPhones() throws Exception {
2609
		DefinitionsContainer defc = Catalog.getInstance().getDefinitionsContainer();
2610
		List<Long> slideSequence = defc.getCategorySlideSequence().get(10003l);
2611
		Map <Long, Entity> allEntities = CreationUtils.getEntities();
2612
		for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){
2613
			Long entityId = entry.getKey();
2614
			Entity entity = entry.getValue(); 
2615
			Long categoryId = entity.getCategoryID();
2616
			//System.out.println("entity : " + entity.getID());
2617
			EntityState es = CreationUtils.getEntityState(entity.getID());
2618
			if(!es.getStatus().equals(EntityStatus.UNASSIGNED)) {
2619
				if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005) 
2620
						&& es != null) {
2621
					entity.setSlideSequence(slideSequence);
2622
					CreationUtils.updateEntity(entity);
2623
					touchEntityState(entityId);
2624
				}
2625
			}
2626
		}
2627
	}
8798 amit.gupta 2628
 
8869 amit.gupta 2629
	private void getTablets() throws Exception {
2630
		StringBuffer sb = new StringBuffer();
2631
		DefinitionsContainer defs = Catalog.getInstance().getDefinitionsContainer();
2632
		Map<Long,FeatureDefinition> allFeatureDefs  = defs.getFeatureDefinitions();
2633
		List<Long> tabletFds = defs.getFeatureDefinitionIDs(10010l);
2634
 
2635
		Collection<Entity> es = CreationUtils.getEntities(10010l);
2636
		String header[] = new String[tabletFds.size()];
2637
		int index = 0;
2638
		for(Long fd : tabletFds) {
2639
			header[index++] = allFeatureDefs.get(fd).getLabel();
2640
		}
2641
		sb.append(StringUtils.join(header, "\t")).append("\n");
2642
		for (Entity entity:es){
2643
			String as[] = new String[tabletFds.size()];
2644
			Map<Long, String> m = AmazonSCDataGenerator.extractFeatureValuesForEntity(entity);
2645
			for(Map.Entry<Long, String> entry : m.entrySet()) {
2646
				if(tabletFds.indexOf(entry.getKey())==-1){
2647
					continue;
2648
				}
2649
				as[tabletFds.indexOf(entry.getKey())] = entry.getValue(); 
2650
			}
8873 amit.gupta 2651
			sb.append(entity.getID() + "\t").append(StringUtils.join(as, "\t")).append("\n");
8869 amit.gupta 2652
		}
2653
		System.out.println(sb);
2654
	}
2655
 
8909 amit.gupta 2656
	private void migrateSoftCategories() throws Exception{
2657
		Long ANDROID = 110614l;
2658
		Long WINDOWS = 110615l;
2659
		Long DUALSIM = 110616l;
2660
		Long TRISIM = 110617l;
2661
		Long CDMA = 110618l;
2662
		Long BASIC = 110619l;
2663
		Long TOUCH = 110620l;
2664
		Long PHABLET = 110621l;
2665
		Long IOS = 110622l;
2666
		Set<Long> softSet = new HashSet<Long>();
2667
		DefinitionsContainer defc = Catalog.getInstance().getDefinitionsContainer();
2668
		Collection<Entity> entities = CreationUtils.getEntities(10006l);
2669
		for(Entity entity : entities){
2670
			EntityState es = CreationUtils.getEntityState(entity.getID());
2671
			if (es.getStatus().equals(EntityStatus.READY)) {
2672
				softSet.clear();
2673
				System.out.println("Entity ID : " + es.getID());
2674
				List <Slide> slides = entity.getSlides();
2675
				if(slides != null) {
2676
					for(Slide slide : slides){
2677
						if(slide.getSlideDefinitionID() == 130020l)  {
2678
							List<Feature> fs = slide.getFeatures();
2679
							if (fs!=null){
2680
								for (Feature f1 : fs){
2681
									if(f1.getFeatureDefinitionID()==120043l){
2682
										List <Bullet> bullets = f1.getBullets();
2683
										if(bullets != null) {
2684
											for(Bullet b : bullets){
2685
												String bulletString = defc.getEnumValue(((EnumDataObject)b.getDataObject()).getEnumValueID()).getValue();
2686
												if (bulletString.contains("Android")){
2687
													softSet.add(ANDROID);
2688
													System.out.println("Added android");
2689
													break;
2690
												} 
2691
												else if (bulletString.contains("Windows")){
2692
													softSet.add(WINDOWS);
2693
													System.out.println("Added Windows");
2694
													break;
2695
												}
2696
												else if (bulletString.contains("iOS")){
2697
													softSet.add(IOS);
2698
													System.out.println("Added Apple");
2699
													break;
2700
												}
2701
											}
2702
										}
2703
									}
2704
								}
2705
							}
2706
						}
2707
 
2708
						if(slide.getSlideDefinitionID() == 130005l)  {
2709
							List<Feature> fs = slide.getFeatures();
2710
							if (fs!=null){
2711
								for (Feature f1 : fs){
2712
									if(f1.getFeatureDefinitionID()==120127l){
2713
										List <Bullet> bullets = f1.getBullets();
2714
										if(bullets != null) {
2715
											for(Bullet b : bullets){
2716
												String bulletString = defc.getEnumValue(((EnumDataObject)b.getDataObject()).getEnumValueID()).getValue();
2717
												if (bulletString.equals("Dual-SIM")){
2718
													softSet.add(DUALSIM);
2719
													System.out.println("Added Dual-SIM");
2720
													break;
2721
												} 
2722
												else if (bulletString.equals("Tri-SIM")){
2723
													softSet.add(TRISIM);
2724
													System.out.println("Added Tri-SIM");
2725
													break;
2726
												}
2727
											}
2728
										}
2729
									}
2730
									else if(f1.getFeatureDefinitionID()==120012l){
2731
										List <Bullet> bullets = f1.getBullets();
2732
										if(bullets != null) {
2733
											for(Bullet b : bullets){
2734
												String bulletString = ""; 
2735
												try{
2736
													bulletString = defc.getEnumValue(((EnumDataObject)b.getDataObject()).getEnumValueID()).getValue();
2737
												}catch (Exception e){
2738
													//b.	
2739
												}
2740
												if (bulletString.contains("CDMA")){
9051 amit.gupta 2741
													if(bulletString.contains("WCDMA")){
2742
														touchEntityState(entity.getID());
2743
													} else {
2744
														softSet.add(CDMA);
2745
														System.out.println("Added CDMA for 2G");
2746
														break;
2747
													}
8909 amit.gupta 2748
												} 
2749
											}
2750
										}
2751
									}
2752
									else if(f1.getFeatureDefinitionID()==120013l){
2753
										List <Bullet> bullets = f1.getBullets();
2754
										if(bullets != null) {
2755
											for(Bullet b : bullets){
2756
												String bulletString = ((PrimitiveDataObject)b.getDataObject()).getValue();
2757
												if (bulletString.contains("CDMA")){
9051 amit.gupta 2758
													if(bulletString.contains("WCDMA")){
2759
														touchEntityState(entity.getID());
2760
													} else {
2761
														softSet.add(CDMA);
2762
														System.out.println("Added CDMA for 3G");
2763
														break;
2764
													}
8909 amit.gupta 2765
												} 
2766
											}
2767
										}
2768
									}
2769
								}
2770
							}
2771
						}
2772
 
2773
						if(slide.getSlideDefinitionID() == 130002l)  {
2774
							List<Feature> fs = slide.getFeatures();
2775
							if (fs!=null){
2776
								for (Feature f1 : fs){
2777
									if(f1.getFeatureDefinitionID()==120009l){
2778
										List <Bullet> bullets = f1.getBullets();
2779
										if(bullets != null) {
2780
											for(Bullet b : bullets){
2781
												String bulletString = defc.getEnumValue(((EnumDataObject)b.getDataObject()).getEnumValueID()).getValue();
2782
												if(bulletString.equals("T9 keyboard")){
2783
													softSet.add(BASIC);
2784
													System.out.println("Added Basic phone");
2785
													break;
2786
												}
2787
											}
2788
										}
2789
									}
2790
								}
2791
							}
2792
						}
2793
 
2794
						if(slide.getSlideDefinitionID() == 130003l)  {
2795
							List<Feature> fs = slide.getFeatures();
2796
							if (fs!=null){
2797
								for (Feature f1 : fs){
2798
									if(f1.getFeatureDefinitionID()==120005l){
2799
										List <Bullet> bullets = f1.getBullets();
2800
										if(bullets != null) {
2801
											for(Bullet b : bullets){
2802
												String bulletString = ((PrimitiveDataObject)b.getDataObject()).getValue();
2803
												float f = Float.valueOf(bulletString);
2804
												if(f >= 5f ){
2805
													softSet.add(PHABLET);
2806
													System.out.println("Added Basic phone");
2807
													break;
2808
												}
2809
											}
2810
										}
2811
									}
2812
									else if(f1.getFeatureDefinitionID() == 120082l){
2813
										softSet.add(TOUCH);
2814
										System.out.println("Added Touch phone");
2815
									}
2816
								}
2817
							}
2818
						}
2819
					}
2820
				}
2821
				if(softSet.size()>0){
2822
					Slide summarySlide = entity.getSlide(130054l);
2823
					Feature f = new Feature(120513l);
2824
					List<Feature> features = summarySlide.getFeatures();
2825
					List<Bullet> softBullets = new ArrayList<Bullet>();
9051 amit.gupta 2826
					for(Feature f1 : features){
2827
						if(f.getFeatureDefinitionID()==120513l){
2828
							features.remove(f1);
2829
							break;
2830
						}
2831
					}
8909 amit.gupta 2832
					features.add(f);
2833
					for(Long enumId : softSet){
2834
						softBullets.add(new Bullet(new EnumDataObject(enumId)));
2835
					}
2836
					f.setBullets(softBullets);
2837
					CreationUtils.updateEntity(entity);
2838
				}
2839
			}
2840
		}
2841
	}
2842
 
2843
	private void clearEmptyPrimitiveBullets() throws Exception{
2844
		Map<Long, Entity> es = CreationUtils.getEntities();
2845
		for( Map.Entry<Long, Entity> entry : es.entrySet()){
2846
			Entity e = entry.getValue();
2847
			List<Slide> slides = e.getSlides();
2848
			if(slides != null){
2849
				for (Slide slide : slides){
2850
					List<Feature> features = slide.getFeatures();
2851
					if (features != null){
2852
						for(Feature feature : features){
2853
							List<Bullet> bullets = feature.getBullets();
2854
							if(bullets != null){
2855
								Iterator<Bullet> bIterator = bullets.iterator();
2856
								while (bIterator.hasNext()){
2857
									BulletDataObject b = bIterator.next().getDataObject();
2858
									if(b.getClass().equals(PrimitiveDataObject.class)){
2859
										PrimitiveDataObject pdo = (PrimitiveDataObject)b;
2860
										if(pdo.getValue().equals("")){
2861
											bIterator.remove();
2862
											System.out.println("Removed empty Primitive from slide :" + slide.getSlideDefinitionID() + " and entity: " + e.getID());
2863
										}
2864
									}
2865
								}
2866
							}
2867
						}
2868
					}
2869
				}
2870
				CreationUtils.updateEntity(e);
2871
			}
2872
		}
2873
	}
2874
 
8913 amit.gupta 2875
	private void updateSummaryMediaLabel() throws Exception{
2876
		Map<Long, Entity> es = CreationUtils.getEntities();
2877
		for( Map.Entry<Long, Entity> entry : es.entrySet()){
2878
			Entity e = entry.getValue();
2879
			Slide summarySlide = e.getSlide(130054l);
2880
			if(summarySlide!=null){
2881
			FreeformContent ffc = summarySlide.getFreeformContent();
2882
				if (ffc !=null){
2883
					Map<String, Media> mediaMap = ffc.getMedias();
2884
					if(mediaMap != null){
2885
						for(Map.Entry<String, Media> mediaEntry : mediaMap.entrySet()) {
2886
							if(mediaEntry.getValue().getLabel().equals("default") && !mediaEntry.getKey().equals("default")){
2887
								mediaMap.put("default", mediaMap.remove(mediaEntry.getKey()));
2888
								CreationUtils.updateEntity(e);
2889
								System.out.println("Upated summary media for:" + e.getID());
9171 amit.gupta 2890
								break;	
8913 amit.gupta 2891
							}
2892
						}
2893
					}
2894
				}
2895
			}
2896
		}
2897
	}
9171 amit.gupta 2898
 
2899
	private void updateCommunication() throws Exception{
2900
		Map<Long,Entity> es = CreationUtils.getEntities();
2901
		for( Map.Entry<Long, Entity> entry: es.entrySet()){
2902
			Entity e = entry.getValue();
2903
			//Slide commSlide = e.getSlide(130005l);
2904
			List<Slide> slides = e.getSlides();
2905
			if(slides != null){
2906
				for(Slide slide : slides){
2907
					List<Feature> features = slide.getFeatures();
2908
					if (features  != null){
2909
						slide.setFeatures(new ArrayList<Feature>(new LinkedHashSet<Feature>(features)));
2910
						if(slide.getFeatures().size() != features.size()){
2911
							System.out.println(e.getCategoryID() + ":" + e.getID() + ":" + slide.getFeatures() + "," + features);
2912
							CreationUtils.updateEntity(e);
2913
						}
2914
					}
2915
				}
2916
			}
2917
		}
2918
	}
8913 amit.gupta 2919
 
9900 amit.gupta 2920
	private void migrateReviews() throws Exception{
2921
		Map<Long, List<ExpertReview>> a =  CreationUtils.getExpertReviews();
2922
		for(Map.Entry<Long, List<ExpertReview>> entry : a.entrySet()) {
2923
			List<ExpertReview> ers = entry.getValue();
2924
			Iterator<ExpertReview> ersIterator = ers.iterator();
2925
			while (ersIterator.hasNext()){
2926
				ExpertReview er = ersIterator.next();
2927
				String review = er.getReviewContent();
2928
				String review1 = review.replaceAll("<[^>]+>", "");
2929
				if(review.equals("")){
2930
					ersIterator.remove();
2931
				} else if(!review.equals(review1)) {
2932
					er.setReviewContent(review1);
2933
				}
2934
			}
2935
			CreationUtils.storeExpertReview(entry.getKey(), ers);
2936
		}
2937
	}
2938
 
10692 amit.gupta 2939
    private List<ExpertReview> getExpertReviews(long catalogId) throws Exception {
2940
		List<ExpertReview> expertReviews = CreationUtils.getExpertReviewByEntity(catalogId);
2941
		if(expertReviews != null) {
2942
			Iterator<ExpertReview> iter = expertReviews.iterator();
2943
			while (iter.hasNext()){
2944
				ExpertReview er = iter.next();
2945
				if(!er.getStatus().equals(ExpertReviewStatus.PUBLISHED)){
2946
					iter.remove();
2947
				}
2948
			}
2949
			if(expertReviews.size()==0){
2950
				expertReviews = null;
2951
			}
2952
 
2953
		}
2954
		return expertReviews;
2955
	}
11151 amit.gupta 2956
 
2957
    private Map<String, String> getEntityParameters(ExpandedEntity expEntity)
2958
    throws Exception {
2959
Map<String, String> params = new HashMap<String, String>();
2960
String warranty = "";
2961
 
2962
// Creating warranty string!
2963
		for (Slide slide : expEntity.getSlide(130054).getChildrenSlides()) {
2964
		    if (slide.getSlideDefinitionID() == 130105) {
2965
		        ExpandedSlide expSlide = new ExpandedSlide(slide);
2966
		        Feature warrantyDurationFeature = expSlide.getExpandedFeature(120125);
2967
		        if (warrantyDurationFeature != null) {
2968
		            ExpandedFeature expFeature = new ExpandedFeature(warrantyDurationFeature);
2969
		            ExpandedBullet expBullet = expFeature.getExpandedBullets().get(0);
2970
		            if (expBullet != null) {
2971
		                String shortForm = expBullet.getUnit().getShortForm();
2972
 
2973
		                // Append 's' to month and year
2974
		                if (!expBullet.getValue().trim().equals("1")) {
2975
		                    shortForm += "s";
2976
		                }
2977
		                warranty += expBullet.getValue() + SPACE + shortForm;
2978
		            }
2979
		        }
2980
 
2981
		        Feature warrantyTypeFeature = expSlide.getExpandedFeature(120219);
2982
		        if (warrantyTypeFeature != null) {
2983
		            ExpandedFeature expFeature = new ExpandedFeature(warrantyTypeFeature);
2984
		            ExpandedBullet expBullet = expFeature.getExpandedBullets().get(0);
2985
		            if (expBullet != null) {
2986
		                warranty += SPACE + expBullet.getExpandedEnumDataObject()
2987
		                                .getEnumValue().getValue();
2988
		            }
2989
		        }
2990
 
2991
		        Feature warrantyCoverageFeature = expSlide.getExpandedFeature(120220);
2992
		        if (warrantyCoverageFeature != null) {
2993
		            ExpandedFeature expFeature = new ExpandedFeature(warrantyCoverageFeature);
2994
		            ExpandedBullet expBullet = expFeature.getExpandedBullets().get(0);
2995
		            if (expBullet != null) {
2996
		                warranty += SPACE + HYPHON + SPACE + expBullet.getExpandedEnumDataObject().getEnumValue().getValue();
2997
		            }
2998
		        }
2999
		    }
3000
		}
3001
		return params;
3002
    }
10692 amit.gupta 3003
 
7111 amit.gupta 3004
}
3005