Subversion Repositories SmartDukaan

Rev

Rev 12242 | Details | Compare with Previous | Last modification | View Log | RSS feed

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