Rev 8841 | Rev 8869 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.util;import in.shop2020.metamodel.core.Bullet;import in.shop2020.metamodel.core.Entity;import in.shop2020.metamodel.core.EntityState;import in.shop2020.metamodel.core.EntityStatus;import in.shop2020.metamodel.core.EnumDataObject;import in.shop2020.metamodel.core.ExpertReview;import in.shop2020.metamodel.core.ExpertReviewSource;import in.shop2020.metamodel.core.Feature;import in.shop2020.metamodel.core.FreeformContent;import in.shop2020.metamodel.core.Helpdoc;import in.shop2020.metamodel.core.Media;import in.shop2020.metamodel.core.Media.Type;import in.shop2020.metamodel.core.PrimitiveDataObject;import in.shop2020.metamodel.core.Slide;import in.shop2020.metamodel.core.SpecialPage;import in.shop2020.metamodel.definitions.BulletDefinition;import in.shop2020.metamodel.definitions.Catalog;import in.shop2020.metamodel.definitions.Category;import in.shop2020.metamodel.definitions.CategorySlideDefinition;import in.shop2020.metamodel.definitions.DefinitionsContainer;import in.shop2020.metamodel.definitions.FeatureDefinition;import in.shop2020.metamodel.definitions.SlideDefinition;import in.shop2020.metamodel.definitions.SlideFeatureDefinition;import in.shop2020.metamodel.util.CreationUtils;import in.shop2020.metamodel.util.CreationUtils1;import in.shop2020.metamodel.util.ExpandedBullet;import in.shop2020.metamodel.util.ExpandedEntity;import in.shop2020.model.v1.catalog.CatalogService.Client;import in.shop2020.model.v1.catalog.Item;import in.shop2020.model.v1.catalog.status;import in.shop2020.storage.mongo.StorageManager;import in.shop2020.thrift.clients.CatalogClient;import in.shop2020.utils.Logger;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.io.Reader;import java.text.MessageFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Collection;import java.util.Collections;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Set;import java.util.TimeZone;import java.util.TreeMap;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.io.IOUtils;import org.apache.commons.lang.StringUtils;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;/** @author rajveer***/public class ContentMigrator {private String sourceDbPath;private String destinationDbPath;public static void main(String[] args) throws Exception {String usage = "Usage: ContentMigrator {source db path}{destination db path}";String sourceDbPath = null, destinationDbPath = null;String dryRun = null;// if(args.length < 2) {// System.out.println(usage);// System.exit(-1);// }else{// sourceDbPath = args[0];// destinationDbPath = args[1];// dryRun = args[2];// }//ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath,destinationDbPath);/*List<Long> entityId = Arrays.asList(1001674l,1002575l,1005331l,1005165l,1005164l,1005111l,1005109l,1004952l,1004940l,1004871l,1004701l,1004429l,1004197l,1006174l,1006077l,1005901l,1005757l,1005754l,1005724l,1005704l,1005598l,1005576l,1005558l,1007394l,1007230l,1007226l,1007218l,1007089l,1006925l,1006822l,1006814l,1006175l);for (Long eId : entityId){}*///contentmigrator.reorderPhones();//System.out.println(contentmigrator.getItems().size());/*contentmigrator.touchEntityState(1008423l);contentmigrator.touchEntityState(1008424l);contentmigrator.touchEntityState(1008427l);contentmigrator.touchEntityState(1008428l);*///contentmigrator.migrateToMongo();contentmigrator.getEditedEntities();}private void changeKeys() throws Exception {Map<Long, Entity> e = CreationUtils.getEntities();for (Map.Entry<Long, Entity> entry : e.entrySet()) {CreationUtils.updateEntity(entry.getValue());System.out.println("updated " + entry.getValue().getID());}//CreationUtils.updateEntity(e);//CreationUtils.}public void getEditedEntities() throws Exception {Collection<EntityState> es = CreationUtils1.getEntitiesState().values();for (EntityState es1 : es) {if(es1.getStatus().equals(EntityStatus.READY)){long mongotime = CreationUtils.getEntityState(es1.getID()).getMerkedReadyOn().getTime()/1000;long bdbtime = es1.getMerkedReadyOn().getTime()/1000;if(bdbtime!=mongotime){System.out.println(es1.getID());}}}}private void migrateToMongo() throws Exception{long counter = 0;Collection<EntityState> es = CreationUtils1.getEntitiesState().values();boolean updated = false;for (EntityState es1 : es) {if(es1.getStatus().equals(EntityStatus.READY)){updated = false;Entity e = CreationUtils1.getEntity(es1.getID());List<Slide> slides = e.getSlides();for(Slide slide:slides) {FreeformContent ffc = slide.getFreeformContent();if (ffc !=null){Map<String,Media> m1 = ffc.getMedias();if (m1!=null){Map<String,Media> m = new LinkedHashMap<String, Media>(m1);for (Map.Entry<String, Media> m2 : m.entrySet()){m1.put(Long.toString(++counter), m1.remove(m2.getKey()));updated = true;}}}}if(updated){CreationUtils.updateEntity(e);}}}}private void migrateContentStore() throws Exception {for (Map.Entry<Long, Entity> entry :CreationUtils.getEntities().entrySet()){Entity e = entry.getValue();Iterator<Slide> it = e.getSlides().iterator();while(it.hasNext()){Slide sl = it.next();//sl.getFreeformContent().me}}}private void updateSources() throws Exception{Map<Long,List<ExpertReview>> erMap = CreationUtils.getExpertReviews();for(Map.Entry<Long, List<ExpertReview>> erEntry : erMap.entrySet()){List<ExpertReview> erList = erEntry.getValue();Iterator<ExpertReview> iter = erList.iterator();while (iter.hasNext()){ExpertReview er = iter.next();if (er.getSource().equals("iGyan")){er.setSource("iGyaan");System.out.println("changed to iGyaan in entity : " + erEntry.getKey());}else if(er.getSource().equals("TheMobileIndian")){er.setSource("The Mobile Indian");System.out.println("changed to The Mobile Indian in entity : " + erEntry.getKey());}}CreationUtils.storeExpertReview(erEntry.getKey(), erList);}}private void touchEntityState(Long eId) throws Exception {EntityState es = CreationUtils.getEntityState(eId);es.setMerkedReadyOn(new Date());CreationUtils.updateEntityState(es);//System.out.println("Entity touched:" + eId);}private void touchEntityStates() throws Exception {Map<Long, EntityState> ess = CreationUtils.getEntitiesState();Calendar calReady = Calendar.getInstance();Calendar cal5daysBack = Calendar.getInstance();Date today = new Date();cal5daysBack.add(Calendar.DATE, -5);for (Map.Entry<Long, EntityState> es : ess.entrySet()) {EntityState est = es.getValue();if(est.getMerkedReadyOn()!=null){calReady.setTime(est.getMerkedReadyOn());if(calReady.compareTo(cal5daysBack) > 0){est.setMerkedReadyOn(today);CreationUtils.updateEntityState(est);System.out.println("Entity touched:" + est.getID());}}}}private void updateModelForBBQ10() throws Exception{Long entityId = 1007315l;EntityState e1 = CreationUtils.getEntityState(entityId);Entity e2 = CreationUtils.getEntity(entityId);e1.setModelName("Blackkberry Q10");e2.setModelName("Blackberry Q10");CreationUtils.updateEntity(e2);CreationUtils.updateEntityState(e1);}private void migrateWarrantyForCategory(Long catgoryId) throws Exception {Collection<Entity> entities = CreationUtils.getEntities(catgoryId);int count = 0;for (Entity entity : entities) {Slide slide = entity.getSlide(130054l);if(slide!=null){List<Slide> childrenSlide = slide.getChildrenSlides();if(childrenSlide != null){Iterator<Slide> it = childrenSlide.iterator();while (it.hasNext()){Slide sl = it.next();if (130105l == sl.getSlideDefinitionID()){it.remove();System.out.println("Removed warranty slide from entity:" + entity.getID());break;}}CreationUtils.updateEntity(entity);}}}}private void checkYouTube() throws Exception {// TODO Auto-generated method stubCollection<Entity> entities = CreationUtils.getEntities().values();//entities = (List<Entity>)this.clone(entities);for (Entity entity : entities) {long entityId = entity.getID();try {List<Slide> entitySlides = entity.getSlides();if (entity == null || entitySlides == null) {continue;}Slide summarySlide = null;FreeformContent ffc = null;List<Slide> newEntitySlides = new ArrayList<Slide>();Slide connectivitySlide = new Slide(130129);Slide looknfeelSlide = new Slide(130128);for (Slide slide : entitySlides) {ffc = slide.getFreeformContent();if(ffc != null){Map<String, Media> mediaMap = ffc.getMedias();if(mediaMap!=null){for(Media media : mediaMap.values()){if(media.getType().equals(Type.VIDEO_WITHOUT_SKIN) || media.getType().equals(Type.VIDEO_WITH_SKIN)){if(media.getYoutubeId().contains("&"))System.out.println(entityId + " : " + media.getLabel() + ":" + media.getYoutubeId());}}}}}}catch(Exception e){System.out.println("Could not migrate " + entityId);}}}private void renameTitles() throws Exception {Map<Long, Entity> map = CreationUtils.getEntities();for (Long entityId : map.keySet()) {Entity entity = map.get(entityId);if (entity == null || entity.getSlides() == null) {continue;}Slide summarySlide = entity.getSlide(130054);if(summarySlide != null){boolean isupdated = false;for(Feature f : summarySlide.getFeatures()){if(f.getFeatureDefinitionID()==120132l){if(f.getBullets() == null){f.setBullets(new ArrayList<Bullet>());}else {f.getBullets().clear();}Bullet titleBullet = new Bullet(new PrimitiveDataObject(getTitle(entity)));f.getBullets().add(titleBullet);isupdated = true;continue;}if(f.getFeatureDefinitionID()==120133l){if(f.getBullets() == null){f.setBullets(new ArrayList<Bullet>());}else {f.getBullets().clear();}Bullet metaDescBullet = new Bullet(new PrimitiveDataObject(getMetaDescription(new ExpandedEntity(entity))));f.getBullets().add(metaDescBullet);isupdated = true;continue;}}if(isupdated){CreationUtils.updateEntity(entity);System.out.println("Updated entity : " + entity.getID());}}}}private void migrateNetwork() throws Exception {Map<Long, Entity> map = CreationUtils.getEntities();for (Long entityId : map.keySet()) {Entity entity = map.get(entityId);if (entity == null || entity.getSlides() == null) {continue;}for (Slide slide : entity.getSlides()) {if (slide.getSlideDefinitionID() == 130095) {List<Slide> slides = slide.getChildrenSlides();for(Slide slide1 : slides){if(slide1.getSlideDefinitionID() == 130096){List<Feature> features = slide1.getFeatures();for (Feature f : features) {if (f.getFeatureDefinitionID() == 120175) {List<Bullet> bs = f.getBullets();for (Bullet b : bs) {Long enumValueId = ((EnumDataObject) b.getDataObject()).getEnumValueID();String value = Catalog.getInstance().getDefinitionsContainer().getEnumValue(enumValueId).getValue();if (value.trim().equals("")) {continue;}System.out.println(value);}}}}}}}CreationUtils.updateEntity(entity);}}private void migrateHeadSet() throws Exception {//Starting entity id for new Category with 10000long newCounter = 77777000;Collection<Entity> entities = CreationUtils.getEntities(10015);//entities = (List<Entity>)this.clone(entities);for (Entity entity : entities) {long entityId = entity.getID();try {List<Slide> entitySlides = entity.getSlides();if (entity == null || entitySlides == null) {continue;}Slide summarySlide = null;FreeformContent ffc = null;List<Slide> newEntitySlides = new ArrayList<Slide>();Slide connectivitySlide = new Slide(130129);Slide looknfeelSlide = new Slide(130128);for (Slide slide : entitySlides) {slide=(Slide)this.clone(slide);if (slide.getSlideDefinitionID() == 130068) {List<Feature> connectivityFeatures = new ArrayList<Feature>();List<Feature> looknfeelFeatures = new ArrayList<Feature>();List<Feature> features = slide.getFeatures();for (Feature f : features) {if (f.getFeatureDefinitionID() == 120105) {connectivityFeatures.add(f);}if (f.getFeatureDefinitionID() == 120106) {looknfeelFeatures.add(f);}}ffc = slide.getFreeformContent();if(ffc != null){Map<String, Media> mediaMap = ffc.getMedias();if(mediaMap!=null){for(Media media : mediaMap.values()){if(media.getType().equals(Type.IMAGE) || media.getType().equals(Type.DOCUMENT)){copyMedia(String.valueOf(newCounter), String.valueOf(entityId),media);}}}}connectivitySlide.setFeatures(connectivityFeatures);looknfeelSlide.setFeatures(looknfeelFeatures);looknfeelSlide.setFreeformContent(ffc);}//Summary slideif(slide.getSlideDefinitionID() == 130054) {summarySlide = slide;FreeformContent ffc1 = slide.getFreeformContent();if(ffc1 != null){Map<String, Media> mediaMap = ffc1.getMedias();if(mediaMap==null){continue;}for(Media media : mediaMap.values()){if(media.getType().equals(Type.IMAGE) || media.getType().equals(Type.DOCUMENT)){copyMedia(String.valueOf(newCounter), String.valueOf(entityId),media);}}}}}Entity newEntity = new Entity(newCounter, 10099);List<Long> newSlideSequence = new ArrayList<Long>();newSlideSequence.add(130128L);newSlideSequence.add(130129L);newSlideSequence.add(130054L);newEntity.setSlideSequence(newSlideSequence);newEntity.setBrand(entity.getBrand());newEntity.setModelName(entity.getModelName());newEntity.setModelNumber(entity.getModelNumber());//entitySlides.remove(featureSlide);newEntitySlides.add(connectivitySlide);newEntitySlides.add(looknfeelSlide);newEntitySlides.add(summarySlide);newEntity.setSlides(newEntitySlides);EntityState es = new EntityState(newCounter, 10099, "admin");es.setBrand(entity.getBrand());es.setModelName(entity.getModelName());es.setModelNumber(entity.getModelNumber());CreationUtils.createEntity(newEntity, es);System.out.println("New entity : " + newCounter + " created using : " + entityId);System.out.println(CreationUtils.getEntity(newCounter));newCounter++;}catch(Exception e){System.out.println("Could not migrate " + entityId);}}}private long getEnumValueForNetwork(String value, Long entityLong) {value = value.toLowerCase().replaceAll(" ", "");Map<String, Long> map = new HashMap<String, Long>();map.put("quadband(gsm850/900/1800/1900)", 110382L);map.put("quadband(gsm850/900/1800/1900)-sim1", 110383l);map.put("quadband(gsm850/900/1800/1900)-sim2", 110384l);map.put("triband(gsm900/1800/1900)", 110385l);map.put("triband(gsm900/1800/1900)-sim1", 110386l);map.put("triband(gsm900/1800/1900)-sim2", 110387l);map.put("dualband(gsm900/1800)", 110388l);map.put("dualband(gsm900/1800)-sim1", 110389l);map.put("dualband(gsm900/1800)-sim2", 110390l);map.put("cdma800", 110391l); // CDMA 800map.put("cdma800-sim2", 110392l); // CDMA 800-SIM 2map.put("cdma800-sim3", 110393l); // CDMA 800-SIM 3if (!StringUtils.contains(value, "sim")&& StringUtils.contains(value, "850/900/1800/1900")) {return map.get("quadband(gsm850/900/1800/1900)");}if (StringUtils.contains(value, "sim1")&& StringUtils.contains(value, "850/900/1800/1900")) {return map.get("quadband(gsm850/900/1800/1900)-sim1");}if (StringUtils.contains(value, "sim2")&& StringUtils.contains(value, "850/900/1800/1900")) {return map.get("quadband(gsm850/900/1800/1900)-sim2");}if (!StringUtils.contains(value, "sim")&& StringUtils.contains(value, "900/1800/1900")) {return map.get("triband(gsm900/1800/1900)");}if (StringUtils.contains(value, "sim1")&& StringUtils.contains(value, "900/1800/1900")) {return map.get("triband(gsm900/1800/1900)-sim1");}if (StringUtils.contains(value, "sim2")&& StringUtils.contains(value, "900/1800/1900")) {return map.get("triband(gsm900/1800/1900)-sim2");}if (!StringUtils.contains(value, "sim")&& StringUtils.contains(value, "900/1800")) {return map.get("dualband(gsm900/1800)");}if (StringUtils.contains(value, "sim1")&& StringUtils.contains(value, "900/1800")) {return map.get("dualband(gsm900/1800)-sim1");}if (StringUtils.contains(value, "sim2")&& StringUtils.contains(value, "900/1800")) {return map.get("dualband(gsm900/1800)-sim2");}if (StringUtils.contains(value, "cdma")) {if (StringUtils.contains(value, "sim2")) {return map.get("cdma800-sim2");}if (StringUtils.contains(value, "sim3")) {return map.get("cdma800-sim3");}return map.get("cdma800");} else {System.out.println("Unknown networks: " + value + " : "+ entityLong);return 0;}}public ContentMigrator(String sourceDbPath, String destinationDbPath) {this.sourceDbPath = sourceDbPath;this.destinationDbPath = destinationDbPath;}public void migrateWarrantyType() throws Exception {Map<Long, Entity> map = CreationUtils.getEntities();for (Long entityId : map.keySet()) {Entity entity = map.get(entityId);if (entity == null || entity.getSlides() == null) {continue;}for (Slide slide : entity.getSlides()) {if (slide.getSlideDefinitionID() == 130054) {Slide warrantySlide = new Slide(130105);warrantySlide.setFeatures(new ArrayList<Feature>());Feature feature = new Feature(120219);feature.setBullets(Collections.singletonList(new Bullet(new EnumDataObject(110299))));warrantySlide.getFeatures().add(feature);Feature existingWarrantyFeature = null;for (Feature summaryFeature : slide.getFeatures()) {if (summaryFeature.getFeatureDefinitionID() == 120125) {existingWarrantyFeature = summaryFeature;warrantySlide.getFeatures().add(summaryFeature);break;}}slide.getFeatures().remove(existingWarrantyFeature);slide.addChild(warrantySlide);break;}}CreationUtils.updateEntity(entity);}}public void migrateMedia() throws Exception {Map<Long, Entity> map = CreationUtils.getEntities();for (Long entityId : map.keySet()) {Entity entity = map.get(entityId);if (entity == null || entity.getSlides() == null) {continue;}for (Slide slide : entity.getSlides()) {FreeformContent ffc = slide.getFreeformContent();// if (ffc == null || ffc.getMediasNew() == null) {// continue;// }//// Map<String, Media> newMap = new LinkedHashMap<String,// Media>();// Media media = null;// for (String label : ffc.getMediasNew().keySet()) {// MediaNew m = ffc.getMediasNew().get(label);// media = new Media(m.getLabel(), Media.Type.valueOf(m// .getType().name()), m.getLocation());// media.setTitle(m.getTitle());// media.setFileName(m.getFileName());// newMap.put(label, media);// }// ffc.setMedias(newMap);// ffc.setMediasNew(null);// if (ffc == null || ffc.getMedias() == null) {// continue;// }// Map<String, MediaNew> newMap = new LinkedHashMap<String,// MediaNew>();// MediaNew mediaNew = null;// for (String label : ffc.getMedias().keySet()) {// Media m = ffc.getMedias().get(label);// if (m.getType().equalsIgnoreCase("image")) {// mediaNew = new MediaNew(m.getLabel(),// MediaNew.Type.IMAGE, m.getLocation());// mediaNew.setFileName(m.getFileName());// } else if (m.getType().equalsIgnoreCase("youtube")) {// if (m.getVideoType().equalsIgnoreCase("withskin")) {// mediaNew = new MediaNew(m.getLabel(),// MediaNew.Type.VIDEO_WITH_SKIN,// m.getLocation());// } else {// mediaNew = new MediaNew(m.getLabel(),// MediaNew.Type.VIDEO_WITHOUT_SKIN,// m.getLocation());// }// }//// if (mediaNew != null) {// mediaNew.setTitle(m.getTitle());// newMap.put(label, mediaNew);// }// }// ffc.setMediasNew(newMap);// ffc.setMedias(null);}}}public boolean populateHelpdocEntityIds() throws Exception {for (Entity entity : CreationUtils.getEntities().values()) {CreationUtils.updateEntity(entity);}return true;}public boolean migrateBrandModel(String dryRun) throws Exception {CatalogClient catalogServiceClient = new CatalogClient();Client client = catalogServiceClient.getClient();List<Item> items = client.getAllItemsByStatus(status.ACTIVE);items.addAll(client.getAllItemsByStatus(status.PAUSED));items.addAll(client.getAllItemsByStatus(status.CONTENT_COMPLETE));Map<Long, Entity> entities = CreationUtils.getEntities();long count = 0;StringBuffer sb = new StringBuffer();for (Item item : items) {long entityId = item.getCatalogItemId();Entity entity = entities.get(entityId);if (entity == null) {continue;}String itemBrand = item.getBrand().trim();String itemModelName = item.getModelName();if (itemModelName != null) {itemModelName = itemModelName.trim();}String itemModelNumber = item.getModelNumber().trim();String entityBrand = entity.getBrand().trim();String entityModelName = entity.getModelName().trim();if (entityModelName != null) {entityModelName = entityModelName.trim();}String entityModelNumber = entity.getModelNumber().trim();if (itemBrand.equals(entityBrand)&& itemModelNumber.equals(entityModelNumber)) {if (itemModelName != null && entityModelName != null&& itemModelName.equals(entityModelName)) {continue;} else if (itemModelName == null && entityModelName == null) {continue;}}count++;sb.append(count + ") Item: " + itemBrand + "\t" + itemModelName+ "\t" + itemModelNumber + "\t" + item.getId() + "\n");sb.append(count + ") Entity: " + entityBrand + "\t"+ entityModelName + "\t" + entityModelNumber + "\t"+ entity.getID() + "\n");if (dryRun.equals("false")) {item.setBrand(entityBrand);item.setModelName(entityModelName);item.setModelNumber(entityModelNumber);client.updateItem(item);}}System.out.println(sb.toString());return true;}/*** this function will read source definition and source entities, and will* convert source entities to destination entities according to destination* definitions.** @return boolean* @throws Exception*/public void printSlides() throws Exception {DefinitionsContainer defc = Catalog.getInstance().getDefinitionsContainer();for (Category category : defc.getCategories().values()) {if (category.getChildrenCategory() != null)continue;System.out.println(category.getID() + "\t" + category.getLabel());for (CategorySlideDefinition defs : defc.getCategorySlideDefinitions(category.getID())) {System.out.println(defs.getSlideDefintionID()+ "\t"+ defs.getEditorialImportance()+ "\t"+ defc.getSlideDefinition(defs.getSlideDefintionID()).getLabel()+ "\t"+ defc.getSlideDefinition(defs.getSlideDefintionID()).getChildrenSlideDefinitionIDs());}}}public void removeBrowserBullets() throws Exception {Map<Long, List<ExpandedBullet>> learnedBullets = CreationUtils.getLearnedBullets();learnedBullets.get(new Long(120076));learnedBullets.remove(new Long(120076));CreationUtils.storeLearnedBullets(learnedBullets);}public boolean changeEntityState() throws Exception {Map<Long, EntityState> entitiesState = CreationUtils.getEntitiesState();Entity entity;for (Long entityId : entitiesState.keySet()) {EntityState state = entitiesState.get(entityId);entity = CreationUtils.getEntity(entityId);if (state.getCategoryID() == 10006) {//state.setCategoryID(10006);entity.setCategoryID(10006);//CreationUtils.updateEntityState(state);CreationUtils.updateEntity(entity);touchEntityState(entityId);}}return true;}public boolean migrateDataBack() throws Exception {Map<Long, Entity> entities = CreationUtils.getEntities();for (Entity entity : entities.values()) {if (entity == null) {continue;}List<Slide> slides = entity.getSlides();if (slides != null) {for (Slide slide : slides) {if (slide.getSlideDefinitionID() == 130054) {List<Feature> features = slide.getFeatures();int length = features.size();features.remove(length - 1);features.remove(length - 2);features.remove(length - 3);/** boolean a = false,b=false,c=false; for(Feature* feature: features){ switch* ((int)feature.getFeatureDefinitionID()) { case* 120132: if(a){** }else{ a=true; } break; case 120133: break; case* 120134: break; default: break; } }*/CreationUtils.updateEntity(entity);}}}}return true;}public boolean migrateData() throws Exception {Map<Long, Entity> entities = CreationUtils.getEntities();for (Entity entity : entities.values()) {ExpandedEntity expEntity = new ExpandedEntity(entity);List<Slide> slides = entity.getSlides();if (slides != null) {for (Slide slide : slides) {if (slide.getSlideDefinitionID() == 130054) {List<Feature> features = slide.getFeatures();String title = expEntity.getBrand() + " "+ expEntity.getModelName() + " "+ expEntity.getModelNumber();if (expEntity.getCategory().getParentCategory().getID() == 10001) {title += " | " + expEntity.getBrand()+ " Mobile Phones";}if (expEntity.getCategory().getParentCategory().getID() == 10011) {title += " " + expEntity.getCategory().getLabel()+ " | " + expEntity.getBrand()+ " Mobile Phone Accessories";}title += " | Saholic.com";// Add page titleFeature feature1 = new Feature(120132);PrimitiveDataObject pdo1 = new PrimitiveDataObject(title);List<Bullet> bullets1 = new ArrayList<Bullet>();Bullet bullet1 = new Bullet(pdo1);bullets1.add(bullet1);feature1.setBullets(bullets1);features.add(feature1);String description = "Best Price "+ expEntity.getBrand() + " "+ expEntity.getModelName() + " "+ expEntity.getModelNumber() + " ";if (expEntity.getCategory().getParentCategory().getID() == 10011) {description += expEntity.getCategory().getLabel()+ " in India.";} else {description += ".";}description += " Experience n' buy online. FREE Next Day delivery."+ " Original product - Full manufacturer warranty. Comprehensive reviews.";description = description.replaceAll("--", "-");// Add meta descriptionFeature feature2 = new Feature(120133);PrimitiveDataObject pdo2 = new PrimitiveDataObject(description);List<Bullet> bullets2 = new ArrayList<Bullet>();Bullet bullet2 = new Bullet(pdo2);bullets2.add(bullet2);feature2.setBullets(bullets2);features.add(feature2);String keywords = expEntity.getBrand() + " "+ expEntity.getModelName() + " "+ expEntity.getModelNumber() + ", ";if (expEntity.getCategory().getParentCategory().getID() == 10001) {keywords += expEntity.getBrand()+ " mobile phones, ";}if (expEntity.getCategory().getParentCategory().getID() == 10011) {keywords += "phone accessories, ";}keywords += expEntity.getBrand() + " "+ expEntity.getModelName() + " "+ expEntity.getModelNumber() + " Price, ";keywords += expEntity.getBrand() + " "+ expEntity.getModelName() + " "+ expEntity.getModelNumber() + " India, ";if (expEntity.getCategory().getParentCategory().getID() == 10001) {keywords += expEntity.getBrand() + " "+ expEntity.getModelName() + " "+ expEntity.getModelNumber() + " Review, ";}// Add meta keyboradFeature feature3 = new Feature(120134);PrimitiveDataObject pdo3 = new PrimitiveDataObject(keywords);List<Bullet> bullets3 = new ArrayList<Bullet>();Bullet bullet3 = new Bullet(pdo3);bullets3.add(bullet3);feature3.setBullets(bullets3);features.add(feature3);CreationUtils.updateEntity(entity);}}}}return true;}public boolean migrateModel2() throws Exception {Map<Long, Entity> entities = CreationUtils.getEntities();for (Entity entity : entities.values()) {List<Slide> slides = entity.getSlides();if (slides != null) {for (Slide slide : slides) {if (slide.getSlideDefinitionID() == 130011) {for (Feature feature : slide.getFeatures()) {if (feature.getFeatureDefinitionID() == 120054) {// feature.setFeatureDefinitionID(120030);System.out.println("* " + entity.getID() + ":"+ entity.getCategoryID());}}}if (slide.getSlideDefinitionID() == 130029) {// System.out.println("** " + entity.getID() + ":" +// entity.getCategoryID());if (entity.getCategoryID() == 10002) {Feature feature = new Feature(120051);slide.getFeatures().add(feature);System.out.println("** " + entity.getID() + ":"+ entity.getCategoryID());}}}}CreationUtils.updateEntity(entity);}return true;}/** public boolean migrateModel1() throws Exception{ //DefinitionsContainer* oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH +* "olddefinitions" + File.separator); //DefinitionsContainer newDfc = new* DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" +* File.separator);** Map<Long, Entity> entities = CreationUtils.getEntities(); for(Entity* entity: entities.values()){ List<Long> slideSequence =* entity.getSlideSequence(); Map<Long,Long> removeMap = new HashMap<Long,* Long>(); List<Slide> slides = entity.getSlides(); if(slides!=null){* for(Slide slide: slides){ List<Feature> features; Slide childSlide;* switch ((int)slide.getSlideDefinitionID()) {** //Keyboard case 130004: case 130026: case 130027: case 130057:* removeMap.put(slide.getSlideDefinitionID(), (long)130026);* slide.setSlideDefinitionID(130026); break;** //Voice Calling case 130005: removeMap.put(slide.getSlideDefinitionID(),* (long)130005); slide.setSlideDefinitionID(130005); features = new* ArrayList<Feature>(); features.addAll(slide.getFeatures()); childSlide =* slide.getChildrenSlides().get(0);* features.addAll(childSlide.getFeatures());* if(childSlide.getFreeformContent()!=null){* System.out.println("Voice Calling : HAS FFC : " +* childSlide.getFreeformContent().getFreeformText() +* childSlide.getFreeformContent().getMedias()); }* slide.setChildrenSlides(null); slide.setFeatures(features); break; case* 130035: removeMap.put(slide.getSlideDefinitionID(), (long)130005);* slide.setSlideDefinitionID(130005); for(Feature feata:* slide.getFeatures()){ if(feata.getFeatureDefinitionID()==120055){* feata.setFeatureDefinitionID(120012); } } break;** //Data Connectivity case 130007: case 130028:* removeMap.put(slide.getSlideDefinitionID(), (long)130007);* slide.setSlideDefinitionID(130007); break;** //Music case 130029: case 130030: case 130008:* removeMap.put(slide.getSlideDefinitionID(), (long)130029);* slide.setSlideDefinitionID(130029); break;** //Video case 130031: case 130009:* removeMap.put(slide.getSlideDefinitionID(), (long)130031);* slide.setSlideDefinitionID(130031); break;** //Camera case 130010: case 130036: case 130037:* removeMap.put(slide.getSlideDefinitionID(), (long)130010);* slide.setSlideDefinitionID(130010); break; case 130060:* removeMap.put(slide.getSlideDefinitionID(), (long)130010);* slide.setSlideDefinitionID(130010);** features = slide.getFeatures(); // Just to add camera feature in basic* phones Feature feature = new Feature(120056); List<Bullet> bullets = new* ArrayList<Bullet>(); PrimitiveDataObject pdo = new* PrimitiveDataObject("1"); Bullet bullet = new Bullet(pdo);* bullets.add(bullet); feature.setBullets(bullets); features.add(feature);* //Created new feature break;** //Memory case 130011: removeMap.put(slide.getSlideDefinitionID(),* (long)130011); slide.setSlideDefinitionID(130011); break; case 130032:* case 130061: removeMap.put(slide.getSlideDefinitionID(), (long)130011);* slide.setSlideDefinitionID(130011); features = slide.getFeatures();* for(Feature feat: features){ if(feat.getFeatureDefinitionID() == 120054){* feat.setFeatureDefinitionID(120030); } } break;** //Battery case 130044: removeMap.put(slide.getSlideDefinitionID(),* (long)130043); slide.setSlideDefinitionID(130043);* if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){* slide.getChildrenSlides().get(0).setSlideDefinitionID(130046); } break;** case 130042: removeMap.put(slide.getSlideDefinitionID(), (long)130043);* slide.setSlideDefinitionID(130043); childSlide =* slide.getChildrenSlides().get(0); if(childSlide.getSlideDefinitionID() ==* 130045){ childSlide.setSlideDefinitionID(130046); }** List<Feature> childFeatures1 = new ArrayList<Feature>(); List<Feature>* childFeatures2 = new ArrayList<Feature>(); Slide childChildSlide1 = new* Slide(130048); Slide childChildSlide2 = new Slide(130049);** childChildSlide1.setFeatures(childFeatures1);* childChildSlide2.setFeatures(childFeatures2);** childSlide.addChild(childChildSlide1);* childSlide.addChild(childChildSlide2);*** for(Feature f: childSlide.getFeatures()){ if(f.getFeatureDefinitionID()* == 120063){ f.setFeatureDefinitionID(120068); childFeatures1.add(f); }* if(f.getFeatureDefinitionID() == 120064){* f.setFeatureDefinitionID(120069); childFeatures2.add(f); } }** childSlide.setFeatures(null);** break;** case 130062: removeMap.put(slide.getSlideDefinitionID(), (long)130043);* slide.setSlideDefinitionID(130043);** childSlide = new Slide(130046); features = new ArrayList<Feature>();** slide.addChild(childSlide);** List<Feature> childFeatures11 = new ArrayList<Feature>(); List<Feature>* childFeatures21 = new ArrayList<Feature>(); Slide childChildSlide11 = new* Slide(130048); Slide childChildSlide21 = new Slide(130049);** childChildSlide11.setFeatures(childFeatures11);* childChildSlide21.setFeatures(childFeatures21);** childSlide.addChild(childChildSlide11);* childSlide.addChild(childChildSlide21); for(Feature f:* slide.getFeatures()){ if(f.getFeatureDefinitionID() == 120072){* features.add(f); } if(f.getFeatureDefinitionID() == 120073){* features.add(f); } if(f.getFeatureDefinitionID() == 120063){* f.setFeatureDefinitionID(120068); childFeatures11.add(f); }* if(f.getFeatureDefinitionID() == 120064){* f.setFeatureDefinitionID(120069); childFeatures21.add(f); } }* slide.setFeatures(features); break;*** //Mail n Msg case 130041: case 130063:* removeMap.put(slide.getSlideDefinitionID(), (long)130039);* slide.setSlideDefinitionID(130039); break; case 130039:* removeMap.put(slide.getSlideDefinitionID(), (long)130039);* slide.setSlideDefinitionID(130039);** childSlide = slide.getChildrenSlides().get(0);* slide.setFeatures(childSlide.getFeatures());* if(childSlide.getFreeformContent()!=null){* System.out.println("Mail n Msg : HAS FFC : " +* childSlide.getFreeformContent().getFreeformText() +* childSlide.getFreeformContent().getMedias()); }* slide.setChildrenSlides(null); break;** //Software case 130020: case 130034:* removeMap.put(slide.getSlideDefinitionID(), (long)130020);* slide.setSlideDefinitionID(130020); break;*** //Internet case 130050: removeMap.put(slide.getSlideDefinitionID(),* (long)130050); slide.setSlideDefinitionID(130050);* slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures());** if(slide.getChildrenSlides().get(0).getFreeformContent()!=null){ String* ffc = slide.getFreeformContent().getFreeformText();* if(slide.getChildrenSlides* ().get(0).getFreeformContent().getFreeformText()!=null){* if(slide.getChildrenSlides* ().get(0).getFreeformContent().getFreeformText().trim()!=""){ ffc = ffc +* "\n ********* " +* slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText();* System.out.println("**************" +* slide.getChildrenSlides().get(0).getFreeformContent().getFreeformText());* } }** List<String> ffcs = new ArrayList<String>(); ffcs.add(ffc);* slide.getFreeformContent().setFreeformTexts(ffcs); }** slide.setChildrenSlides(null); //System.out.println("Slide: 130050");* //printSlideContent(slide); break;** case 130052: removeMap.put(slide.getSlideDefinitionID(), (long)130050);* slide.setSlideDefinitionID(130050);** for(Feature f2: slide.getFeatures()){ if(f2.getFeatureDefinitionID() ==* 120077){ f2.setFeatureDefinitionID(120074); // List<Bullet> newBullets =* new ArrayList<Bullet>(); // for(Bullet bul: f2.getBullets()){ //* CompositeDataObject cdo = (CompositeDataObject) bul.getDataObject(); //* for(PrimitiveDataObject pdo1: cdo.getPrimitiveDataObjects()){ //* pdo1.getValue(); // BulletDataObject bdo2 = new* EnumDataObject(enumValueID); // Bullet newbul = new Bullet(bdo2); //* newBullets.add(newbul); // } // // } // f2.setBullets(newBullets); }* if(f2.getFeatureDefinitionID() == 120078){* f2.setFeatureDefinitionID(120075); } } //* slide.setFeatures(slide.getChildrenSlides().get(0).getFeatures()); //* slide.setChildrenSlides(null); //System.out.println("Slide: 130052");** //printSlideContent(slide); break;** case 130051: removeMap.put(slide.getSlideDefinitionID(), (long)130050);* slide.setSlideDefinitionID(130050); // System.out.println(slide);* //System.out.println("Slide 130051:"); // printSlideContent(slide);* break;** default: break; }** } List<Long> newSequence = new ArrayList<Long>(); for(Long id:* slideSequence){ if(removeMap.containsKey(id)){* newSequence.add(removeMap.get(id)); }else{ newSequence.add(id); } }* entity.setSlideSequence(newSequence); CreationUtils.updateEntity(entity);* } }** return true; }*/public void printSlideContent(Slide slide) {System.out.println("Slide: "+ slide.getFreeformContent().getFreeformText());if (slide.getFeatures() != null) {for (Feature feature : slide.getFeatures()) {if (feature.getBullets() != null) {for (Bullet bullet : feature.getBullets()) {// System.out.println(bullet.getDataObject().toString());// System.out.println(bullet.getFreeformContent());}}if (feature.getFreeformContent() != null) {System.out.println("Feature: "+ feature.getFreeformContent().getFreeformText());}}}if (slide.getChildrenSlides() != null) {for (Slide sl : slide.getChildrenSlides()) {System.out.println("Child1: ");printSlideContent(sl);System.out.println("Child2: ");}}}/** public boolean migrateModel() throws Exception{ //DefinitionsContainer* oldDfc = new DefinitionsContainer(Utils.CONTENT_DB_PATH +* "olddefinitions" + File.separator); //DefinitionsContainer newDfc = new* DefinitionsContainer(Utils.CONTENT_DB_PATH + "olddefinitions" +* File.separator);** Map<Long, Entity> entities = CreationUtils.getEntities(); for(Entity* entity: entities.values()){ List<Slide> slides = entity.getSlides();* if(slides!=null){ List<Slide> newSlides = new ArrayList<Slide>();* for(Slide slide: slides){ Slide newSlide; List<Feature> features; Slide* childSlide; switch ((int)slide.getSlideDefinitionID()) {** //Keyboard case 130004: case 130026: case 130027: case 130057: newSlide =* new Slide(130026); newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Voice Calling case 130005: newSlide = new Slide(130005);* newSlide.setChildrenSlides(null); features = new ArrayList<Feature>();* features.addAll(slide.getFeatures()); childSlide =* slide.getChildrenSlides().get(0);* features.addAll(childSlide.getFeatures());* if(childSlide.getFreeformContent()!=null){* System.out.println("Voice Calling : HAS FFC : " +* childSlide.getFreeformContent().getFreeformText() +* childSlide.getFreeformContent().getMedias()); }* newSlide.setFeatures(features);* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break; case 130035: newSlide = new* Slide(130035); newSlide.setChildrenSlides(slide.getChildrenSlides());* for(Feature feata: slide.getFeatures()){* if(feata.getFeatureDefinitionID()==120055){* feata.setFeatureDefinitionID(120012); } }* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Data Connectivity case 130007: case 130028: newSlide = new* Slide(130007); newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Music case 130029: case 130030: case 130008: newSlide = new* Slide(130029); newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Video case 130031: case 130009: newSlide = new Slide(130031);* newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Camera case 130010: case 130036: case 130037: newSlide = new* Slide(130010); newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break; case 130060: newSlide = new* Slide(130010); newSlide.setChildrenSlides(slide.getChildrenSlides());* features = slide.getFeatures(); // Just to add camera feature in basic* phones Feature feature = new Feature(120056); List<Bullet> bullets = new* ArrayList<Bullet>(); PrimitiveDataObject pdo = new* PrimitiveDataObject("1"); Bullet bullet = new Bullet(pdo);* bullets.add(bullet); feature.setBullets(bullets); features.add(feature);* //Created new feature newSlide.setFeatures(features);* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Memory case 130011: newSlide = new Slide(130011);* newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break; case 130032: case 130061: newSlide = new* Slide(130011); newSlide.setChildrenSlides(slide.getChildrenSlides());* features = slide.getFeatures(); for(Feature feat: features){* if(feat.getFeatureDefinitionID() == 130054){* feat.setFeatureDefinitionID(120030); } }* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Battery case 130044: newSlide = new Slide(130043);* if(slide.getChildrenSlides().get(0).getSlideDefinitionID() == 130047){* slide.getChildrenSlides().get(0).setSlideDefinitionID(130046); }* newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** case 130042: newSlide = new Slide(130043); childSlide =* slide.getChildrenSlides().get(0); if(childSlide.getSlideDefinitionID() ==* 130045){ childSlide.setSlideDefinitionID(130046); }* newSlide.setChildrenSlides(slide.getChildrenSlides());** List<Feature> childFeatures1 = new ArrayList<Feature>(); List<Feature>* childFeatures2 = new ArrayList<Feature>(); Slide childChildSlide1 = new* Slide(130048); Slide childChildSlide2 = new Slide(130049);** childChildSlide1.setFeatures(childFeatures1);* childChildSlide2.setFeatures(childFeatures2);** childSlide.addChild(childChildSlide1);* childSlide.addChild(childChildSlide2);*** for(Feature f: childSlide.getFeatures()){ if(f.getFeatureDefinitionID()* == 120063){ f.setFeatureDefinitionID(120068); childFeatures1.add(f); }* if(f.getFeatureDefinitionID() == 120064){* f.setFeatureDefinitionID(120069); childFeatures2.add(f); } }** childSlide.setFeatures(null);** newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** case 130062: newSlide = new Slide(130043);* newSlide.setChildrenSlides(slide.getChildrenSlides()); childSlide = new* Slide(130046); features = new ArrayList<Feature>();* newSlide.setFeatures(features); newSlide.addChild(childSlide);** List<Feature> childFeatures11 = new ArrayList<Feature>(); List<Feature>* childFeatures21 = new ArrayList<Feature>(); Slide childChildSlide11 = new* Slide(130048); Slide childChildSlide21 = new Slide(130049);** childChildSlide11.setFeatures(childFeatures11);* childChildSlide21.setFeatures(childFeatures21);** childSlide.addChild(childChildSlide11);* childSlide.addChild(childChildSlide21); for(Feature f:* slide.getFeatures()){ if(f.getFeatureDefinitionID() == 120072){* features.add(f); } if(f.getFeatureDefinitionID() == 120073){* features.add(f); } if(f.getFeatureDefinitionID() == 120063){* f.setFeatureDefinitionID(120068); childFeatures11.add(f); }* if(f.getFeatureDefinitionID() == 120064){* f.setFeatureDefinitionID(120069); childFeatures21.add(f); } }** newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;*** //Mail n Msg case 130041: case 130063: newSlide = new Slide(130039);* newSlide.setChildrenSlides(slide.getChildrenSlides());* newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break; case 130039: newSlide = new* Slide(130039); //newSlide.setChildrenSlides(slide.getChildrenSlides());* childSlide = slide.getChildrenSlides().get(0);* newSlide.setFeatures(childSlide.getFeatures());* if(childSlide.getFreeformContent()!=null){* System.out.println("Mail n Msg : HAS FFC : " +* childSlide.getFreeformContent().getFreeformText() +* childSlide.getFreeformContent().getMedias()); }* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;** //Software case 130020: case 130034: newSlide = new Slide(130034);* newSlide.setChildrenSlides(slide.getChildrenSlides()); features =* slide.getFeatures(); newSlide.setFeatures(slide.getFeatures());* newSlide.setFreeformContent(slide.getFreeformContent());* newSlides.add(newSlide); break;*** default: newSlides.add(slide); break; } } entity.setSlides(newSlides);* CreationUtils.updateEntity(entity); } }** return true; }*/public boolean migrateRemoveBorrowedCategoryIdFromSlide() throws Exception {Map<Long, Entity> entities = CreationUtils.getEntities();for (Entity entity : entities.values()) {if (entity.getID() == 0) {CreationUtils.deleteEntity(entity.getID());}List<Slide> slides = entity.getSlides();if (slides != null) {List<Slide> newSlides = new ArrayList<Slide>();for (Slide slide : slides) {Slide newSlide = new Slide(slide.getSlideDefinitionID());newSlide.setChildrenSlides(slide.getChildrenSlides());newSlide.setFeatures(slide.getFeatures());newSlide.setFreeformContent(slide.getFreeformContent());newSlides.add(newSlide);}entity.setSlides(newSlides);CreationUtils.updateEntity(entity);}}return true;}public boolean migrate() throws Exception {/** DefinitionsContainer sourceDefs = new* DefinitionsContainer(sourceDbPath); DefinitionsContainer* destinationDefs = new DefinitionsContainer(destinationDbPath);* EntityContainer sourceEnts = new EntityContainer(sourceDbPath);* EntityContainer destinationEnts = new* EntityContainer(destinationDbPath);** Map<Long, Entity> entities = sourceEnts.getEntities();** File f = new File("/home/rajveer/Desktop/info.txt"); FileWriter* fstream = new FileWriter(f); BufferedWriter out = new* BufferedWriter(fstream); StringBuilder sb = new StringBuilder();*** for(Entity entity: entities.values()){ List<Slide> slides =* entity.getSlides();** //List<String> vidLabels =* CreationUtils.getMediaLabels(entity.getID(),"youtube");* //List<String> imgLabels =* CreationUtils.getMediaLabels(entity.getID(),"image");** //Map<String, Media> rawMedia =* CreationUtils.getRawMedia(entity.getID());*** // List<String> vidLabels =* OldCreationUtils.getMediaLabels(entity.getID(),"youtube"); //* List<String> imgLabels =* OldCreationUtils.getMediaLabels(entity.getID(),"image");** Entity newEntity = new Entity(entity.getID(),* entity.getCategoryID()); newEntity.setBrand(entity.getBrand());* newEntity.setModelName(entity.getModelName());* newEntity.setModelNumber(entity.getModelNumber());*** Map<String, in.shop2020.creation.util.Media> rawMedia =* OldCreationUtils.getRawMedia(entity.getID());** Map<String, Media> newrawMedia = new HashMap<String, Media>();*** int totalRawVideos = 0; int totalRawImages = 0;** if(rawMedia!=null){ for(String label: rawMedia.keySet()){* in.shop2020.creation.util.Media media = rawMedia.get(label);** label = media.getLabel(); String type = media.getType(); String* location = media.getLocation();** Media newMedia = new Media(label, type, location);** newMedia.setTitle("Title"); if(type.equals("image")){* totalRawImages++; newMedia.setFileName(media.getFileName());* newMedia.setVideoType(""); }else{ totalRawVideos++;* newMedia.setVideoType("withoutskin"); newMedia.setFileName(""); }** newrawMedia.put(label, newMedia); System.out.println("old " +* media.toString()); // System.out.println("new " +* newMedia.toString()); // OldCreationUtils.removeMedia(entity.getID(),* label); // CreationUtils.addMedia(entity.getID(), newMedia); } }** int totalVideos = 0; int totalImages = 0; if(rawMedia==null){* for(Slide slide: slides ){*//** FreeformContent ffc = slide.getFreeformContent(); List<String>* vidList = new ArrayList<String>(); List<String> imgList = new* ArrayList<String>();** if(ffc!=null){ List<String> vidFfcLabels = ffc.getYoutubeRefs();* if(vidFfcLabels!=null){ for(String vidFfcLabel: vidFfcLabels){* StringTokenizer strTkn = new StringTokenizer(vidFfcLabel,"~!~");* String vidLabel = null; if(strTkn.hasMoreTokens()){ vidLabel =* strTkn.nextToken(); vidList.add(vidFfcLabel);** // ffc.removeMedia("youtube", vidFfcLabel); //* ffc.addMedia("youtube", vidLabel); } if(vidLabel == null){* System.out.println("Something is really breaking .. bu ha ha !!!"); }* totalVideos++; } } List<String> imgFfcLabels = ffc.getImageRefs();* if(imgFfcLabels!=null){ for(String imgFfcLabel: imgFfcLabels){* StringTokenizer strTkn = new StringTokenizer(imgFfcLabel,"~!~");* String imgLabel = null; if(strTkn.hasMoreTokens()){ imgLabel =* strTkn.nextToken(); imgList.add(imgFfcLabel);** // ffc.removeMedia("image", imgFfcLabel); // ffc.addMedia("image",* imgLabel); } if(imgLabel == null){* System.out.println("Something is really breaking .. bu ha ha !!!"); }* totalImages++; } }** for(String vidlab : vidList){ ffc.removeMedia("youtube", vidlab);* ffc.addMedia("youtube", (new StringTokenizer(vidlab,* "~!~")).nextToken()); } for(String imglab : imgList){* ffc.removeMedia("image",imglab); ffc.addMedia("image", (new* StringTokenizer(imglab, "~!~")).nextToken()); }* slide.setFreeformContent(ffc); System.out.println("Slide id is " +* slide.getSlideDefinitionID() + " vid labels: " + vidFfcLabels +* " img labels" + imgFfcLabels); }*//** newEntity.addSlide(slide); }** // System.out.println("entity:"+ entity.getID() + ":trv:" +* totalRawVideos + ":tri:" + totalRawImages +":tv:" + totalVideos* +":ti:" + totalImages); // sb.append("entity:"+ entity.getID() +* ":trv:" + totalRawVideos + ":tri:" + totalRawImages +":tv:" +* totalVideos +":ti:" + totalImages+ ":tr:"* +(totalRawVideos+totalRawImages) + ":t:" +(totalVideos+totalImages) +* ":vd:" +(totalRawVideos-totalVideos) + ":id:"* +(totalRawImages-totalImages) + "\n"); sb.append(entity.getID() +* "\n");*** destinationEnts.updateEntity(newEntity);* CreationUtils.storeEntity(newEntity);** Map<Long, List<Entity>> entitiesByCategory =* sourceEnts.getEntitiesbyCategory();** Map<Long, Entity> xentities = destinationEnts.getEntities();** CreationUtils.rewriteRepository(xentities, entitiesByCategory); }* else{ sb.append(" " + entity.getID() + "\n"); } }*** out.write(sb.toString()); out.close();*/return true;}private boolean makeEntitiesObject() throws Exception {// DefinitionsContainer sourceDefs = new// DefinitionsContainer(sourceDbPath);// DefinitionsContainer destinationDefs = new// DefinitionsContainer(destinationDbPath);// EntityContainer sourceEnts = new EntityContainer(sourceDbPath);// EntityContainer destinationEnts = new// EntityContainer(destinationDbPath);/** Map<Long, List<Entity>> catEntities =* sourceEnts.getEntitiesbyCategory();** Map<Long, Entity> entities = sourceEnts.getEntities(); for(Long* catId: catEntities.keySet()){ List<Entity> ents =* catEntities.get(catId); for(Entity entity: ents){* entities.put(entity.getID(), entity);* System.out.println(entity.getID() + ":" + entity.getCategoryID() +* ":"+ entity.getBrand() + " "+ entity.getModelName() + " " +* entity.getModelNumber()); } }*/Map<Long, List<Entity>> catEntities = new TreeMap<Long, List<Entity>>();Map<Long, Entity> entities = new TreeMap<Long, Entity>();FileInputStream fstream = new FileInputStream("/home/rajveer/Desktop/1");DataInputStream in = new DataInputStream(fstream);BufferedReader br = new BufferedReader(new InputStreamReader(in));String strLine;while ((strLine = br.readLine()) != null) {long entityID = Long.parseLong(strLine);String entityDBFile = sourceDbPath + "entities" + File.separator+ entityID + "/entity.ser";System.out.println(entityDBFile);Entity entity = (Entity) DBUtils.read(entityDBFile);entities.put(entityID, entity);List<Entity> catent = catEntities.get(entity.getCategoryID());if (catent == null) {catent = new ArrayList<Entity>();}catent.add(entity);catEntities.put(entity.getCategoryID(), catent);}in.close();String entitiesDBFile = sourceDbPath + "entities" + File.separator+ "entities.ser";String entitiesbycategoryDBFile = sourceDbPath + "entities"+ File.separator + "entitiesbycategory.ser";DBUtils.delete(entitiesDBFile);DBUtils.store(entities, entitiesDBFile);// Remove existingDBUtils.delete(entitiesbycategoryDBFile);DBUtils.store(catEntities, entitiesbycategoryDBFile);return false;}private boolean printDataModel() throws Exception {DefinitionsContainer dfc = Catalog.getInstance().getDefinitionsContainer();StringBuilder sb = new StringBuilder();Map<Long, SlideDefinition> allSlideDefs = dfc.getSlideDefinitions();for (Long slideDefId : allSlideDefs.keySet()) {SlideDefinition slideDef = allSlideDefs.get(slideDefId);sb.append(slideDefId + " - " + slideDef.getLabel() + "\n");if (!slideDef.getChildrenSlideDefinitionIDs().isEmpty()) {sb.append("Child Slides are: \t"+ slideDef.getChildrenSlideDefinitionIDs() + "\n");}List<SlideFeatureDefinition> featureDefs = slideDef.getSlideFeatureDefinitions();for (SlideFeatureDefinition featureDef : featureDefs) {sb.append("\t"+ featureDef.getFeatureDefintionID()+ "\t"+ dfc.getFeatureDefinition(featureDef.getFeatureDefintionID()).getLabel()+ "\t" + featureDef.getEditorialImportance() + "\n");}}System.out.println(sb.toString());Map<Long, Category> categories = dfc.getCategories();if (categories != null) {return true;}for (Category category : categories.values()) {if (category.getChildrenCategory() != null) {continue;}sb.append(category.getLabel() + "\n");List<CategorySlideDefinition> slideDefs = dfc.getCategorySlideDefinitions(category.getID());List<Long> slideSequence = dfc.getCategorySlideSequence(category.getID());for (CategorySlideDefinition slideDef : slideDefs) {sb.append("\t"+ dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getLabel() + "\t"+ slideDef.getEditorialImportance() + "\n");// List<FeatureDefinition> featureDefs =// dfc.getFeatureDefinitions(slideDef.getSlideDefintionID());List<SlideFeatureDefinition> slideFeatureDefs = dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getSlideFeatureDefinitions();for (SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {FeatureDefinition featureDef = dfc.getFeatureDefinition(slideFeatureDef.getFeatureDefintionID());BulletDefinition bulletDef = featureDef.getBulletDefinition();sb.append("\t\t\t" + featureDef.getLabel() + "\t"+ slideFeatureDef.getEditorialImportance() + "\t"+ featureDef.allowsBlank() + "\t"+ bulletDef.isLearned() + "\t"+ bulletDef.isMultivalue());List<Long> units = bulletDef.getUnitIDs();if (bulletDef.getDatatypeDefinitionID() != null) {sb.append("\t"+ dfc.getDatatypeDefinition(bulletDef.getDatatypeDefinitionID()).getName());}if (units != null) {for (Long unit : units) {sb.append("\t" + dfc.getUnit(unit).getFullForm()+ "\t" + dfc.getUnit(unit).getShortForm());}}sb.append("\n");}/** for(FeatureDefinition featureDef: featureDefs){* BulletDefinition bulletDef =* featureDef.getBulletDefinition(); System.out.println(" " +* featureDef.getLabel() + " " + featureDef.allowsBlank() + " "* + bulletDef.isLearned() + " " + bulletDef.isMultivalue());* List<Long> units = bulletDef.getUnitIDs(); if(units!=null){* for(Long unit: units){ System.out.println(" "+* dfc.getUnit(unit).getFullForm() + " "+* dfc.getUnit(unit).getShortForm()); } }* if(bulletDef.getDatatypeDefinitionID()!=null){* System.out.println(" " +* dfc.getDatatypeDefinition(bulletDef* .getDatatypeDefinitionID()).getName());** } }*/}}System.out.println(sb.toString());return true;}public boolean migrateOS() throws Exception {Map<Long, Entity> map = CreationUtils.getEntities();for (Long entityId : map.keySet()) {Entity entity = map.get(entityId);if (entity == null || entity.getSlides() == null) {continue;}for (Slide slide : entity.getSlides()) {if (slide.getSlideDefinitionID() == 130020) {List<Feature> features = slide.getFeatures();for (Feature f : features) {if (f.getFeatureDefinitionID() == 120043) {Bullet b = f.getBullets().get(0);String value = ((PrimitiveDataObject) b.getDataObject()).getValue();long enumValueID = getEnumValueForOS(value);if (enumValueID == 110371L) {Logger.log("Set entity:" + entityId+ " as proprietary software", entity);}b.setDataObject(new EnumDataObject(enumValueID));}}}}CreationUtils.updateEntity(entity);}return true;}private long getEnumValueForOS(String value) {value = value.toLowerCase();Map<String, Long> map = getOSEnumMap();String os = "Proprietary software";if (value.contains("android")) {if (value.contains("1.5")) {os = "Android v1.5 (Cupcake)";}if (value.contains("1.6")) {os = "Android v1.6 (Donut)";}if (value.contains("2.1")) {os = "Android v2.1 (Eclair)";}if (value.contains("2.2")) {os = "Android v2.2 (Froyo)";}if (value.contains("2.3")) {os = "Android v2.3 (Gingerbread)";}if (value.contains("3.0")) {os = "Android v3.0 (Honeycomb)";}if (value.contains("3.1")) {os = "Android v3.1 (Honeycomb)";}if (value.contains("3.2")) {os = "Android v3.2 (Honeycomb)";}}if (value.contains("blackberry")) {if (value.contains("os")) {os = "BlackBerry OS";}if (value.contains("5.0")) {os = "BlackBerry OS 5.0";}if (value.contains("6.0")) {os = "BlackBerry OS 6.0";}if (value.contains("7.0")) {os = "BlackBerry OS 7.0";}if (value.contains("tablet os")) {os = "BlackBerry Tablet OS";}}if (value.contains("brew mobile platform")) {os = "Brew Mobile Platform";}if (value.contains("maemo 5")) {os = "Maemo 5";}if (value.contains("windows phone 7")) {os = "Windows Phone 7";}if (value.contains("windows phone 7.5 mango")) {os = "Windows Phone 7.5 Mango";}if (value.contains("proprietary")) {if (value.contains("lg"))os = "Proprietary LG software";else if (value.contains("micromax")) {os = "Proprietary Micromax software";} else if (value.contains("samsung")) {os = "Proprietary Samsung software";} else if (value.contains("sony ericsson")) {os = "Proprietary Sony Ericsson software";} else if (value.contains("spice")) {os = "Proprietary Spice software";} else if (value.contains("lava")) {os = "Proprietary Lava software";} else if (value.contains("alcatel")) {os = "Proprietary Alcatel software";} else if (value.contains("motorola")) {os = "Proprietary Motorola software";} else if (value.contains("karbonn")) {os = "Proprietary Karbonn software";} else {os = "Proprietary software";}}if (value.contains("mmp")) {os = "Proprietary Samsung software";}if (value.contains("samsung")) {if (value.contains("bada")) {os = "Samsung bada";}if (value.contains("bada 1.2")) {os = "Samsung bada 1.2";}}if (value.contains("sony ericsson java platform 8")) {os = "Proprietary Sony Ericsson software";}if (value.contains("s60")) {os = "Symbian 60";}if (value.contains("symbian")) {if (value.contains("40")) {os = "Symbian 40";}if (value.contains("60")) {os = "Symbian 60";}if (value.contains("^3")) {os = "Symbian^3";}if (value.contains("anna")) {os = "Symbian Anna";}if (value.contains("belle")) {os = "Symbian Belle";}}if (value.contains("ios 4")) {os = "iOS 4";}if (value.contains("ios 5")) {os = "iOS 5";}return map.get(os);}private Map<String, Long> getOSEnumMap() {Map<String, Long> map = new HashMap<String, Long>();map.put("Android v1.5 (Cupcake)", 110335L);map.put("Android v1.6 (Donut)", 110336L);map.put("Android v2.1 (Eclair)", 110337L);map.put("Android v2.2 (Froyo)", 110338L);map.put("Android v2.3 (Gingerbread)", 110339L);map.put("Android v3.0 (Honeycomb)", 110340L);map.put("Android v3.1 (Honeycomb)", 110341L);map.put("Android v3.2 (Honeycomb)", 110342L);map.put("BlackBerry OS", 110343L);map.put("BlackBerry OS 5.0", 110344L);map.put("BlackBerry OS 6.0", 110345L);map.put("BlackBerry OS 7.0", 110346L);map.put("BlackBerry Tablet OS", 110347L);map.put("Brew Mobile Platform", 110348L);map.put("Maemo 5", 110349L);map.put("Windows Phone 7", 110350L);map.put("Windows Phone 7.5 Mango", 110351L);map.put("Proprietary LG software", 110352L);map.put("Proprietary Micromax software", 110353L);map.put("Proprietary Samsung software", 110354L);map.put("Proprietary Sony Ericsson software", 110355L);map.put("Proprietary Spice software", 110356L);map.put("Proprietary Lava software", 110367L);map.put("Proprietary Karbonn software", 110368L);map.put("Proprietary Motorola software", 110369L);map.put("Proprietary Alcatel software", 110370L);map.put("Proprietary software", 110371L);map.put("Samsung bada", 110357L);map.put("Samsung bada 1.2", 110358L);map.put("Symbian 40", 110360L);map.put("Symbian 60", 110361L);map.put("Symbian^3", 110362L);map.put("Symbian Anna", 110363L);map.put("Symbian Belle", 110364L);map.put("iOS 4", 110365L);map.put("iOS 5", 110366L);return map;}private Object clone(Object object) throws Exception{// Serializing and deserializing to clone the slide// serializeByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectOutputStream out = new ObjectOutputStream(bos);out.writeObject(object);// De-serializationByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());ObjectInputStream in = new ObjectInputStream(bis);return in.readObject();}/**** @throws Exception*/private void copyMedia(String newEntityId, String oldEntityId, Media media) throws Exception {String mediaDirPath = Utils.CONTENT_DB_PATH + "media" + File.separator + newEntityId;File mediaDir = new File(mediaDirPath);if(!mediaDir.exists()) {mediaDir.mkdir();}String mediaFilePath = mediaDirPath + File.separator + media.getFileName();String oldMediaFilePath = media.getLocation();File mediaFile = new File(mediaFilePath);mediaFile.createNewFile();File oldMediaFile = new File(oldMediaFilePath);InputStream in = new FileInputStream(oldMediaFile);// appending output stream// @rajveer : replacing the existing fileOutputStream out = new FileOutputStream(mediaFile);try {IOUtils.copy(in, out);}finally {IOUtils.closeQuietly(in);IOUtils.closeQuietly(out);}media.setLocation(mediaFilePath);}private void migrateHeadSetBack() throws Exception {Map<Long, Long>migratorMap = new HashMap<Long, Long>();migratorMap.put(77777000L,1000291L);migratorMap.put(77777001L,1000292L);migratorMap.put(77777002L,1000293L);migratorMap.put(77777003L,1000294L);migratorMap.put(77777004L,1000295L);migratorMap.put(77777005L,1000296L);migratorMap.put(77777006L,1000297L);migratorMap.put(77777007L,1000298L);migratorMap.put(77777008L,1000299L);migratorMap.put(77777009L,1000300L);migratorMap.put(77777010L,1000301L);migratorMap.put(77777011L,1000302L);migratorMap.put(77777012L,1000303L);migratorMap.put(77777013L,1000304L);migratorMap.put(77777014L,1000305L);migratorMap.put(77777015L,1000306L);migratorMap.put(77777016L,1000351L);migratorMap.put(77777017L,1000352L);migratorMap.put(77777018L,1000353L);migratorMap.put(77777019L,1000363L);migratorMap.put(77777020L,1000364L);migratorMap.put(77777021L,1000365L);migratorMap.put(77777022L,1000425L);migratorMap.put(77777023L,1000426L);migratorMap.put(77777024L,1000430L);migratorMap.put(77777025L,1000434L);migratorMap.put(77777026L,1000435L);migratorMap.put(77777027L,1000436L);migratorMap.put(77777028L,1000437L);migratorMap.put(77777029L,1000438L);migratorMap.put(77777030L,1000439L);migratorMap.put(77777031L,1000440L);migratorMap.put(77777032L,1000441L);migratorMap.put(77777033L,1000442L);migratorMap.put(77777034L,1000443L);migratorMap.put(77777035L,1000444L);migratorMap.put(77777036L,1000445L);migratorMap.put(77777037L,1000446L);migratorMap.put(77777038L,1000447L);migratorMap.put(77777039L,1000449L);migratorMap.put(77777040L,1000450L);migratorMap.put(77777041L,1000451L);migratorMap.put(77777042L,1000452L);migratorMap.put(77777043L,1000453L);migratorMap.put(77777044L,1000454L);migratorMap.put(77777045L,1000455L);migratorMap.put(77777046L,1000518L);migratorMap.put(77777047L,1000521L);migratorMap.put(77777048L,1000572L);migratorMap.put(77777049L,1000575L);migratorMap.put(77777050L,1000623L);migratorMap.put(77777051L,1000625L);migratorMap.put(77777052L,1000626L);migratorMap.put(77777053L,1000627L);migratorMap.put(77777054L,1000628L);migratorMap.put(77777055L,1000874L);migratorMap.put(77777056L,1001200L);migratorMap.put(77777057L,1001375L);migratorMap.put(77777058L,1001376L);migratorMap.put(77777059L,1001378L);migratorMap.put(77777060L,1001382L);migratorMap.put(77777061L,1001808L);migratorMap.put(77777062L,1001809L);migratorMap.put(77777063L,1001810L);migratorMap.put(77777064L,1001811L);migratorMap.put(77777065L,1001812L);migratorMap.put(77777066L,1001814L);migratorMap.put(77777067L,1001815L);migratorMap.put(77777068L,1001816L);migratorMap.put(77777069L,1001817L);migratorMap.put(77777070L,1001818L);migratorMap.put(77777071L,1001819L);migratorMap.put(77777072L,1001820L);migratorMap.put(77777073L,1001821L);migratorMap.put(77777074L,1001822L);migratorMap.put(77777075L,1001823L);migratorMap.put(77777076L,1001824L);migratorMap.put(77777077L,1001825L);migratorMap.put(77777078L,1002318L);migratorMap.put(77777079L,1002320L);migratorMap.put(77777080L,1003852L);migratorMap.put(77777081L,1003853L);migratorMap.put(77777082L,1003854L);migratorMap.put(77777083L,1003855L);migratorMap.put(77777084L,1003856L);migratorMap.put(77777085L,1003857L);migratorMap.put(77777086L,1003916L);migratorMap.put(77777087L,1003917L);migratorMap.put(77777088L,1003918L);migratorMap.put(77777089L,1003919L);migratorMap.put(77777090L,1003920L);migratorMap.put(77777091L,1003921L);migratorMap.put(77777092L,1003922L);migratorMap.put(77777093L,1003923L);migratorMap.put(77777094L,1003924L);migratorMap.put(77777095L,1003925L);migratorMap.put(77777096L,1003926L);migratorMap.put(77777097L,1003927L);migratorMap.put(77777098L,1004087L);migratorMap.put(77777099L,1004088L);migratorMap.put(77777100L,1004089L);migratorMap.put(77777101L,1004134L);migratorMap.put(77777102L,1004135L);migratorMap.put(77777103L,1004139L);for(Map.Entry<Long, Long> entry : migratorMap.entrySet()) {Long newId = entry.getKey();Long validId = entry.getValue();Entity entity = CreationUtils.getEntity(newId);EntityState es = CreationUtils.getEntityState(newId);Slide sl = entity.getSlide(130130);/*entity.setID(validId);es.setID(validId);*/CreationUtils.updateEntity(entity);CreationUtils.updateEntityState(es);CreationUtils.deleteEntity(newId);System.out.println(validId + " : " + es.getCategoryID() + ", removed entity id:" + newId);}}private void migrateTabletsBack() throws Exception {//This entity is created after migration have to be deleted. Vrinda have to rmk itCreationUtils.deleteEntity(1006812);Date now = new Date();Collection<Entity> entities = CreationUtils.getEntities(20010);//entities = (List<Entity>)this.clone(entities);for (Entity entity : entities) {long entityId = entity.getID();if(entityId>9999999){long oldEntityId = entityId%10000000;System.out.println(oldEntityId);EntityState es = CreationUtils.getEntityState(entityId);if(es != null) {if (es.getStatus().equals(EntityStatus.READY) || es.getStatus().equals(EntityStatus.COMPLETE)){es.setStatus(EntityStatus.READY);es.setMerkedReadyOn(now);}es.setID(oldEntityId);entity.setID(oldEntityId);entity.setCategoryID(10010);es.setCategoryID(10010);CreationUtils.updateEntity(entity);CreationUtils.updateEntityState(es);CreationUtils.deleteEntity(entityId);System.out.println(entityId + " moved back");} else {CreationUtils.deleteEntity(entityId);System.out.println("Deleted " + entityId + " due to incomplete tablets");}}else {entity.setCategoryID(10010);EntityState es = CreationUtils.getEntityState(entityId);es.setCategoryID(10010);CreationUtils.updateEntity(entity);CreationUtils.updateEntityState(es);}}}public String getTitle(Entity entity){String brand = entity.getBrand();String modelName = entity.getModelName();String modelNumber = entity.getModelNumber();String titleString = "";if(StringUtils.isEmpty(modelName)){titleString = brand + " " + modelNumber + " Price in India | Specifications, Features and Reviews";}else {titleString = brand + " " + modelName + " Price in India | " + modelNumber + " Specifications, Features and Reviews";}return titleString;}public String getMetaDescription(ExpandedEntity expEntity){Category parentCategory= expEntity.getCategory().getParentCategory();String categoryName = parentCategory.getLabel();if (parentCategory.getID()== Utils.MOBILE_ACCESSORIES_CATEGORY){categoryName = expEntity.getCategory().getLabel();}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.";return MessageFormat.format(template, expEntity.getBrand(), expEntity.getModelName(), expEntity.getModelNumber(), categoryName.toLowerCase());}public void migrateTablets() throws Exception {//Starting entity id for new Category with 10000Collection<Entity> entities = CreationUtils.getEntities(10010);long newCounter;//entities = (List<Entity>)this.clone(entities);for (Entity entity : entities) {long entityId = entity.getID();newCounter = Long.parseLong("1" + String.valueOf(entityId));Entity newEntity = new Entity(newCounter, 20010);try {List<Slide> entitySlides = entity.getSlides();if (entity == null || entitySlides == null) {continue;}List<Slide> newEntitySlides = new ArrayList<Slide>();/*Slide introSlide = entity.getSlide(130001);Slide summarySlide = entity.getSlide(130054);Slide packageContents = entity.getSlide(130025);*/for (Slide slide : entitySlides) {if (Arrays.asList(130054L, 130025L, 130001L).contains(slide.getSlideDefinitionID())) {slide=(Slide)this.clone(slide);newEntitySlides.add(slide);}FreeformContent ffc1 = slide.getFreeformContent();if(ffc1 != null){Map<String, Media> mediaMap = ffc1.getMedias();if(mediaMap==null){continue;}for(Media media : mediaMap.values()){if(media.getType().equals(Type.IMAGE) || media.getType().equals(Type.DOCUMENT)){copyMedia(String.valueOf(newCounter), String.valueOf(entityId),media);}}}}List<Long> newSlideSequence = new ArrayList<Long>();newSlideSequence.add(130001L);newSlideSequence.add(130054L);newSlideSequence.add(130172L);newSlideSequence.add(130173L);newSlideSequence.add(130174L);newSlideSequence.add(130175L);newSlideSequence.add(130176L);newSlideSequence.add(130177L);newSlideSequence.add(130178L);newSlideSequence.add(130180L);newSlideSequence.add(130183L);newSlideSequence.add(130025L);newEntity.setSlideSequence(newSlideSequence);newEntity.setBrand(entity.getBrand());newEntity.setModelName(entity.getModelName());newEntity.setModelNumber(entity.getModelNumber());//entitySlides.remove(featureSlide);newEntity.setSlides(newEntitySlides);EntityState es = new EntityState(newCounter, 20010, "admin");es.setBrand(entity.getBrand());es.setModelName(entity.getModelName());es.setModelNumber(entity.getModelNumber());CreationUtils.createEntity(newEntity, es);System.out.println("New entity : " + newCounter + " created using : " + entityId);System.out.println(CreationUtils.getEntity(newCounter));newCounter++;}catch(Exception e){System.out.println("Could not migrate " + entityId);}}}public void migrateImagesInTablets() throws Exception {//Starting entity id for new Category with 10000Collection<Entity> entities = CreationUtils.getEntities(10010);long newCounter;//entities = (List<Entity>)this.clone(entities);for (Entity entity : entities) {long entityId = entity.getID();newCounter = Long.parseLong("1" + String.valueOf(entityId));Entity newEntity = CreationUtils.getEntity(newCounter);try {if (newEntity == null) {continue;}Slide introSlide = newEntity.getSlide(130001L);Slide looknfeelSlide = entity.getSlide(130002L);/** Slide introSlide = entity.getSlide(130001); Slide* summarySlide = entity.getSlide(130054); Slide packageContents* = entity.getSlide(130025);*/if (looknfeelSlide != null) {FreeformContent ffc1 = looknfeelSlide.getFreeformContent();if (ffc1 != null) {Map<String, Media> mediaMap = ffc1.getMedias();if (mediaMap == null) {continue;}FreeformContent introFfc = introSlide.getFreeformContent();Map<String, Media> introMediaMap = new LinkedHashMap<String, Media>();introFfc.setMedias(introMediaMap);Set<String> introMediaMapKeys = introMediaMap.keySet();for (Map.Entry<String, Media> entry : mediaMap.entrySet()) {Media entryValue = entry.getValue();String entryKey = entry.getKey();if (!introMediaMapKeys.contains(entryKey)) {introMediaMap.put(entryKey,(Media) clone(entryValue));if (entryValue.getType().equals(Type.IMAGE)|| entryValue.equals(Type.DOCUMENT)) {try {copyMedia(String.valueOf(newCounter),String.valueOf(entityId),entryValue);} catch (Exception e) {System.out.println("could not copy file "+ entityId);}}}}}}CreationUtils.updateEntity(newEntity);System.out.println("New entity : " + newCounter+ " created using : " + entityId);} catch (Exception e) {e.printStackTrace();System.out.println("Could not migrate " + entityId);}}}private void miscilleniousPopulate() throws Exception{DefinitionsContainer defContainer = Catalog.getInstance().getDefinitionsContainer();//Get All Enum Values of Communication facilities 70114;Map <Long, Entity> allEntities = CreationUtils.getEntities();/*Map <Long, Entity> allEntities =new HashMap<Long, Entity>();allEntities.put(1000069l, CreationUtils.getEntity(1000069l));*/for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){Entity entity = entry.getValue();Long categoryId = entity.getCategoryID();EntityState es = CreationUtils.getEntityState(entity.getID());if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005)&& (es != null && es.getStatus().equals(EntityStatus.READY))) {ExpandedEntity expEntity = new ExpandedEntity(entity);Slide miscSlide = expEntity.getSlide(130024l);if(miscSlide != null) {List<Feature> miscFeatures = miscSlide.getFeatures();if(CollectionUtils.isNotEmpty(miscFeatures)){Iterator<Feature> iter = miscFeatures.iterator();while(iter.hasNext()) {Feature f =iter.next();if (f.getFeatureDefinitionID() == 120484l || f.getFeatureDefinitionID() == 120483l || f.getFeatureDefinitionID() == 1204821 || f.getFeatureDefinitionID() == 120481l){List<Bullet> bulletList = f.getBullets();PrimitiveDataObject b = (PrimitiveDataObject)bulletList.get(0).getDataObject();String bulletValue = b.getValue();String newString = bulletValue;if(bulletValue.startsWith(", ") || bulletValue.contains(",,") || bulletValue.contains("<li>")){System.out.println(entity.getID());bulletList = new ArrayList<Bullet>();newString = bulletValue.replaceAll("<li>|</li>|<ul>|</ul>", ",").replaceAll(",,", ",").replaceAll(", ,", ", ").replaceAll(", $", "");System.out.println(newString);if(newString.startsWith(", ") ){newString = newString.replaceFirst(", ", "");}bulletList.add(new Bullet(new PrimitiveDataObject(newString)));f.setBullets(bulletList);System.out.println(newString);}if ( newString.equals(" ") || newString.equals("") || newString.equals(" ") || newString.equals(" ")){iter.remove();}}}CreationUtils.updateEntity(entity);touchEntityState(entity.getID());}}//touchEntityState(entity.getID());}}}private void step2() throws Exception {//Get All Enum Values of Communication facilities 70114;//Map <Long, Entity> allEntities = CreationUtils.getEntities();Map <Long, Entity> allEntities =new HashMap<Long, Entity>();allEntities.put(1007937l, CreationUtils.getEntity(1007937l));allEntities.put(1007932l, CreationUtils.getEntity(1007932l));allEntities.put(1007930l, CreationUtils.getEntity(1007930l));allEntities.put(1007934l, CreationUtils.getEntity(1007934l));allEntities.put(1007936l, CreationUtils.getEntity(1007936l));allEntities.put(1007935l, CreationUtils.getEntity(1007935l));for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){Entity entity = entry.getValue();Long categoryId = entity.getCategoryID();EntityState es = CreationUtils.getEntityState(entity.getID());if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005) && es != null ) {List<Slide> allSlides = entity.getSlides();Slide slMaps = entity.getSlide(130022l);Slide slConnectivity = (categoryId == 10005 ? entity.getSlide(130058l) : entity.getSlide(130007l));if(slConnectivity != null){if(slConnectivity.getSlideDefinitionID() ==130058l){Slide newSlide = new Slide(130007l);newSlide.setFeatures(slConnectivity.getFeatures());allSlides.remove(slConnectivity);allSlides.add(newSlide);slConnectivity = newSlide;List<Long> slideSequence = entity.getSlideSequence();int index =slideSequence.indexOf(130058l);slideSequence.remove(index);;slideSequence.add(index, 130007l);}if(slMaps != null) {List<Feature> mapsFeatures = slMaps.getFeatures();allSlides.remove(slMaps);if(mapsFeatures != null){for (Feature mapsFeature : mapsFeatures){if(mapsFeature.getFeatureDefinitionID() == 120046l){slConnectivity.getFeatures().add(mapsFeature);break;}}}}}Slide slKeyBoard = entity.getSlide(130026l);Slide slDisplay = entity.getSlide(130003l);Slide slSummary = entity.getSlide(130054l);Slide slLookNFeel = entity.getSlide(130002l);Feature hardkeysFeature = null;if (slKeyBoard != null) {List<Feature> keyBoardFeatures = slKeyBoard.getFeatures();Iterator<Feature> iter = keyBoardFeatures.iterator();while(iter.hasNext()){Feature feature = iter.next();if(feature.getFeatureDefinitionID() == 120010l){if(slSummary!=null){slSummary.getFeatures().add(feature);}iter.remove();}if(feature.getFeatureDefinitionID() == 120082l){slDisplay.getFeatures().add(feature);iter.remove();}if(feature.getFeatureDefinitionID() == 120009l){slLookNFeel.getFeatures().add(feature);iter.remove();}if(feature.getFeatureDefinitionID() == 120048l ){if(hardkeysFeature == null) {hardkeysFeature = feature;}else {if(feature.getBullets() != null){hardkeysFeature.getBullets().addAll(feature.getBullets());slLookNFeel.getFeatures().add(hardkeysFeature);}}iter.remove();}if(feature.getFeatureDefinitionID() == 120049l ){if(hardkeysFeature == null){hardkeysFeature = new Feature(120048l);hardkeysFeature.setBullets(feature.getBullets());} else {if(feature.getBullets() != null){hardkeysFeature.getBullets().addAll(feature.getBullets());slLookNFeel.getFeatures().add(hardkeysFeature);}}iter.remove();}}allSlides.remove(slKeyBoard);}CreationUtils.updateEntity(entity);//touchEntityState(entity.getID());}}}private void step4() throws Exception {//Get All Enum Values of Communication facilities 70114;Map <Long, Entity> allEntities = CreationUtils.getEntities();/*Map <Long, Entity> allEntities = new HashMap<Long, Entity>();allEntities.put(1002529l, CreationUtils.getEntity(1002529l));allEntities.put(1007932l, CreationUtils.getEntity(1007932l));allEntities.put(1007930l, CreationUtils.getEntity(1007930l));allEntities.put(1007934l, CreationUtils.getEntity(1007934l));allEntities.put(1007936l, CreationUtils.getEntity(1007936l));allEntities.put(1007935l, CreationUtils.getEntity(1007935l));*/for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){Entity entity = entry.getValue();Long categoryId = entity.getCategoryID();EntityState es = CreationUtils.getEntityState(entity.getID());if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005) && es != null && !es.getStatus().equals(EntityStatus.UNASSIGNED)) {List<Slide> allSlides = entity.getSlides();if(allSlides != null){for(Slide slide:allSlides) {if(slide!=null){List <Feature> features = slide.getFeatures();Iterator<Feature> fIterator = features.iterator();while (fIterator.hasNext()){Feature f = fIterator.next();long fId = f.getFeatureDefinitionID();if(fId == 120011 || fId == 120020 || fId == 120051 || fId == 120025 || fId == 120056 || fId == 120216 || fId == 120045 || fId == 120010){fIterator.remove();}if(fId==120144){String value = "Adobe flash player";List<Bullet> flashb = f.getBullets();if(flashb !=null && flashb.size() > 0){value = ((PrimitiveDataObject)flashb.get(0).getDataObject()).getValue();}Slide miscSlide1 = entity.getSlide(130024l);if(miscSlide1 != null){List <Feature> mfeatures = miscSlide1.getFeatures();Iterator<Feature> mIterator = mfeatures.iterator();while (mIterator.hasNext()){Feature mf = mIterator.next();if(mf != null){if(mf.getFeatureDefinitionID() == 120484l){Bullet b = mf.getBullets().get(0);String finalValue = ((PrimitiveDataObject)b.getDataObject()).getValue() + ", " + value;b.setDataObject(new PrimitiveDataObject(finalValue));}}}} else {System.out.println("no misc for entity : " + entity.getID());}fIterator.remove();}}}}try{CreationUtils.updateEntity(entity);}catch (Exception e){System.out.println("Could not update entity : " + entity.getID());}touchEntityState(entity.getID());}}}}private void step6() throws Exception {//Get All Enum Values of Communication facilities 70114;DefinitionsContainer defc = Catalog.getInstance().getDefinitionsContainer();Map <Long, Long> allEntities = getValues();for (Map.Entry<Long, Long> entry:allEntities.entrySet()){Long entityId = entry.getKey();Entity entity = CreationUtils.getEntity(entityId);Long categoryId = entity.getCategoryID();boolean found = false;//System.out.println("entity : " + entity.getID());EntityState es = CreationUtils.getEntityState(entity.getID());if(!es.getStatus().equals(EntityStatus.UNASSIGNED)) {if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005)&& es != null) {Slide videoSlide = entity.getSlide(130031l);if(videoSlide != null){List<Feature> features = videoSlide.getFeatures();if(features != null) {Iterator<Feature> iter = features.iterator();while(iter.hasNext()){Feature f = iter.next();if(f.getFeatureDefinitionID() == 120475l){found = true;if(!entry.getValue().equals(((EnumDataObject)f.getBullets().get(0).getDataObject()).getEnumValueID())){f.getBullets().get(0).setDataObject(new EnumDataObject(entry.getValue()));try{System.out.println("Recording feature updated:" + entityId);CreationUtils.updateEntity(entity);touchEntityState(entityId);}catch (Exception e){System.out.println("Could not update entity : " + entity.getID());}}break;}}if(!found){Feature f = new Feature(120475l);f.setBullets(Arrays.asList(new Bullet(new EnumDataObject(entry.getValue()))));features.add(f);try{System.out.println("Recording feature created:" + entityId);CreationUtils.updateEntity(entity);touchEntityState(entityId);}catch (Exception e){System.out.println("Could not update entity : " + entity.getID());}}}}}}}}private Map<Long,Long> getValues() {try {Reader reader = new FileReader("/root/sample.json");return new Gson().fromJson(reader, new TypeToken<Map<Long,Long>>() {}.getType());} catch (FileNotFoundException e) {e.printStackTrace();return new HashMap<Long, Long>();}}private void reorderPhones() throws Exception {DefinitionsContainer defc = Catalog.getInstance().getDefinitionsContainer();List<Long> slideSequence = defc.getCategorySlideSequence().get(10003l);Map <Long, Entity> allEntities = CreationUtils.getEntities();for (Map.Entry<Long, Entity> entry:allEntities.entrySet()){Long entityId = entry.getKey();Entity entity = entry.getValue();Long categoryId = entity.getCategoryID();//System.out.println("entity : " + entity.getID());EntityState es = CreationUtils.getEntityState(entity.getID());if(!es.getStatus().equals(EntityStatus.UNASSIGNED)) {if ((categoryId == 10002 || categoryId == 10003 || categoryId == 10004 || categoryId == 10005)&& es != null) {entity.setSlideSequence(slideSequence);CreationUtils.updateEntity(entity);touchEntityState(entityId);}}}}}