Rev 1055 | Rev 1153 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.util;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.StringTokenizer;import java.util.TreeMap;import in.shop2020.metamodel.core.Entity;import in.shop2020.metamodel.core.FreeformContent;import in.shop2020.metamodel.core.Media;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.EntityContainer;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.OldCreationUtils;//import in.shop2020.metamodel.util.OldCreationUtils;/** @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;if(args.length < 2) {System.out.println(usage);System.exit(-1);}else{sourceDbPath = args[0];destinationDbPath = args[1];}ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath, destinationDbPath);//contentmigrator.makeEntitiesObject();/*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;}/*** 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 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();Map<Long, Category> categories = dfc.getCategories();for(Category category: categories.values()){if(category.getChildrenCategory() != null){continue;}System.out.println(category.getLabel());List<CategorySlideDefinition> slideDefs = dfc.getCategorySlideDefinitions(category.getID());for(CategorySlideDefinition slideDef: slideDefs){System.out.println(" "+ dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getLabel() + " " + slideDef.getEditorialImportance());//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();System.out.println(" " + slideFeatureDef.getEditorialImportance() + " " + 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());}}/*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());}}*/}}return true;}}