Rev 3127 | Rev 4818 | 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.BulletDataObject;import in.shop2020.metamodel.core.Entity;import in.shop2020.metamodel.core.EntityState;import in.shop2020.metamodel.core.EnumDataObject;import in.shop2020.metamodel.core.Feature;import in.shop2020.metamodel.core.FreeformContent;import in.shop2020.metamodel.core.PrimitiveDataObject;import in.shop2020.metamodel.core.Slide;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.ExpandedBullet;import in.shop2020.metamodel.util.ExpandedEntity;import in.shop2020.model.v1.catalog.InventoryService.Client;import in.shop2020.model.v1.catalog.Item;import in.shop2020.model.v1.catalog.status;import in.shop2020.thrift.clients.CatalogClient;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Map;import java.util.TreeMap;/** @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);contentmigrator.migrateWarrantyType();// CreationUtils.storeComparisonStats(null);// contentmigrator.migrateMedia();//contentmigrator.populateHelpdocEntityIds();//contentmigrator.migrateDataBack();//contentmigrator.migrateBrandModel(dryRun);//contentmigrator.migrateData();//contentmigrator.migrateRemoveBorrowedCategoryIdFromSlide();//contentmigrator.migrateModel1();//contentmigrator.changeEntityState();//contentmigrator.removeBrowserBullets();//contentmigrator.migrateModel2();//contentmigrator.printDataModel();//contentmigrator.makeEntitiesObject();//contentmigrator.printSlides();/*DefinitionsContainer dfc = Catalog.getInstance().getDefinitionsContainer();for(Long fid: dfc.getCategoryFacetDefinitions().keySet()){for(FacetDefinition facetDef: dfc.getCategoryFacetDefinitions().get(fid).getFacetDefinitions()){System.out.println("***" + fid + " *** " + facetDef.getID() + facetDef.getTarget() );}}*///System.out.println("**********" + dfc.getCategoryFacetDefinitions());//System.out.println("**********" + dfc.getSlideFacetDefinitions());/*for(Long defID : dfc.getSlideFacetDefinitions().keySet()){for(FacetDefinition facetDef: dfc.getSlideFacetDefinitions().get(defID)){System.out.println(defID + "****" + facetDef.getID() + facetDef.getDescription());}}*//*System.out.println(OldCreationUtils.getSlideSequence(1000194));List<Slide> slides = OldCreationUtils.getEntity(1000194).getSlides();for(Slide slide: slides){System.out.println(slide.getSlideDefinitionID());}*///ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath, destinationDbPath);//boolean result = contentmigrator.migrate();//System.out.println("Content migration status: "+ result);}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);}CreationUtils.updateEntity(entity);}}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();for(Long entityId: entitiesState.keySet()){EntityState state = entitiesState.get(entityId);if(state.getCategoryID() == 10002 || state.getCategoryID() == 10003 || state.getCategoryID() == 10004 || state.getCategoryID() == 10005){state.setCompletedBy("");state.setMerkedReadyBy("");//state.setStatus(EntityStatus.ASSIGNED);//CreationUtils.updateEntityState(state);System.out.println(entityId + ":" + state.getStatus());}CreationUtils.updateEntityState(state);}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()) {//Keyboardcase 130004:case 130026:case 130027:case 130057:removeMap.put(slide.getSlideDefinitionID(), (long)130026);slide.setSlideDefinitionID(130026);break;//Voice Callingcase 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 Connectivitycase 130007:case 130028:removeMap.put(slide.getSlideDefinitionID(), (long)130007);slide.setSlideDefinitionID(130007);break;//Musiccase 130029:case 130030:case 130008:removeMap.put(slide.getSlideDefinitionID(), (long)130029);slide.setSlideDefinitionID(130029);break;//Videocase 130031:case 130009:removeMap.put(slide.getSlideDefinitionID(), (long)130031);slide.setSlideDefinitionID(130031);break;//Cameracase 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 phonesFeature 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 featurebreak;//Memorycase 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;//Batterycase 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 Msgcase 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;//Softwarecase 130020:case 130034:removeMap.put(slide.getSlideDefinitionID(), (long)130020);slide.setSlideDefinitionID(130020);break;//Internetcase 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()) {//Keyboardcase 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 Callingcase 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 Connectivitycase 130007:case 130028:newSlide = new Slide(130007);newSlide.setChildrenSlides(slide.getChildrenSlides());newSlide.setFeatures(slide.getFeatures());newSlide.setFreeformContent(slide.getFreeformContent());newSlides.add(newSlide);break;//Musiccase 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;//Videocase 130031:case 130009:newSlide = new Slide(130031);newSlide.setChildrenSlides(slide.getChildrenSlides());newSlide.setFeatures(slide.getFeatures());newSlide.setFreeformContent(slide.getFreeformContent());newSlides.add(newSlide);break;//Cameracase 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 phonesFeature 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 featurenewSlide.setFeatures(features);newSlide.setFreeformContent(slide.getFreeformContent());newSlides.add(newSlide);break;//Memorycase 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;//Batterycase 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 Msgcase 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;//Softwarecase 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;}}