Rev 1061 | Rev 1070 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.util;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import in.shop2020.metamodel.core.Entity;import in.shop2020.metamodel.core.EntityState;import in.shop2020.metamodel.core.FreeformContent;import in.shop2020.metamodel.core.Media;import in.shop2020.metamodel.core.Slide;import in.shop2020.metamodel.definitions.OldEntityContainer;import in.shop2020.metamodel.util.CreationUtils;import in.shop2020.metamodel.util.ExpandedBullet;import in.shop2020.metamodel.util.OldCreationUtils;import in.shop2020.storage.bdb.StorageManager;/** @author rajveer***/public class ContentMigratorToBDB {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];}StorageManager.getStorageManager().close();ContentMigratorToBDB contentmigrator = new ContentMigratorToBDB(sourceDbPath, destinationDbPath);//boolean result = contentmigrator.addMedia();//boolean result = contentmigrator.addLearnedFields();//boolean result = contentmigrator.migrate();//System.out.println("Content migration status: "+ result);}public ContentMigratorToBDB(String sourceDbPath, String destinationDbPath) {this.sourceDbPath = sourceDbPath;this.destinationDbPath = destinationDbPath;}public boolean addLearnedFields() throws Exception{OldEntityContainer oldEnts = new OldEntityContainer(sourceDbPath);Map<Long, List<ExpandedBullet>> learnedBullets = oldEnts.getLearnedBullets();CreationUtils.storeLearnedBullets(learnedBullets);return true;}public boolean addMedia() throws NumberFormatException, IOException, Exception{FileInputStream fstream = new FileInputStream("/home/rajveer/Desktop/test1");DataInputStream in = new DataInputStream(fstream);BufferedReader br = new BufferedReader(new InputStreamReader(in));String strLine;while ((strLine = br.readLine()) != null) {String[] parts = strLine.split(":");long entityID = Long.parseLong(parts[0]);long slideID = Long.parseLong(parts[1]);Entity entity = StorageManager.getStorageManager().getEntity(entityID);Map<String, Media> medias = OldCreationUtils.getRawMedia(entityID);String imageLabels = parts[2];String videoLabels = parts[3];if(!imageLabels.equalsIgnoreCase("null")){String[] labels = imageLabels.split(",");for(int i = 0; i < labels.length; i++){if(medias.containsKey(labels[i])){Media media = medias.get(labels[i]);entity.getSlide(slideID).getFreeformContent().addMedia(media);}}}if(!videoLabels.equalsIgnoreCase("null")){String[] labels = videoLabels.split(",");for(int i = 0; i < labels.length; i++){if(medias.containsKey(labels[i])){Media media = medias.get(labels[i]);entity.getSlide(slideID).getFreeformContent().addMedia(media);}}}StorageManager.getStorageManager().updateEntity(entity);}in.close();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 boolean migrate() throws Exception{OldEntityContainer sourceEnts = new OldEntityContainer(sourceDbPath);StringBuilder sb = new StringBuilder();Map<Long, Entity> entities = sourceEnts.getEntities();for(Long entityId: entities.keySet()){Entity entity = OldCreationUtils.getEntity(entityId);if(entity.getID() == 0){continue;}Entity newEntity = new Entity(entity.getID(), entity.getCategoryID());newEntity.setBrand(entity.getBrand());newEntity.setModelName(entity.getModelName());newEntity.setModelNumber(entity.getModelNumber());newEntity.setSlideSequence(OldCreationUtils.getSlideSequence(entity.getID()));List<Slide> slides = entity.getSlides();if(slides!=null){for(Slide slide: slides){FreeformContent ffc = slide.getFreeformContent();//sb.append(entityId+ ":" + slide.getSlideDefinitionID() + ":"+ ffc.getFreeformTexts()+"\n");FreeformContent newFfc = new FreeformContent();newFfc.setFreeformTexts(ffc.getFreeformTexts());slide.setFreeformContent(newFfc);//if(ffc.getAllLabels()!=null && !ffc.getAllLabels().isEmpty()){//sb.append(entity.getID() + ":" + slide.getSlideDefinitionID() + ":" + ffc.getAllLabels() + "\n");//sb.append(entity.getID() + ":" + slide.getSlideDefinitionID() + ":" + ffc.getImageLabels() + ":" + ffc.getYoutubeLabels() + "\n");//System.out.println(entity.getID() + ":" + slide.getSlideDefinitionID() + ":" + ffc.getImageLabels() + ":" + ffc.getYoutubeLabels());// System.out.println("some image found");// System.out.println(ffc.getImageLabels());// System.out.println(ffc.getYoutubeLabels());//}//System.out.println(ffc.getImageLabels());//System.out.println(ffc.getYoutubeLabels());//FreeformContent newFfc = new FreeformContent();//newFfc.setFreeformTexts(ffc.getFreeformTexts());}}newEntity.setSlides(slides);EntityState entityMetadata = new EntityState(entityId, "admin");StorageManager.getStorageManager().createEntity(newEntity, entityMetadata);//System.out.println(StorageManager.getStorageManager().getStorageManager().getEntity(entityId).getSlide(130033).getFreeformContent().getFreeformTexts());//StorageManager.getStorageManager().close();//System.out.println("Entity id is" + entity.getID());}StorageManager.getStorageManager().close();//System.out.println(sb.toString());return true;}}