Subversion Repositories SmartDukaan

Rev

Rev 1226 | 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.Catalog;
import in.shop2020.metamodel.definitions.DefinitionsContainer;
//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);
                contentmigrator.migrateEntityState();
                //boolean result = contentmigrator.addMedia();
                //boolean result = contentmigrator.addLearnedFields();
                //boolean result = contentmigrator.migrate();
                //System.out.println("Content migration status:  "+ result);
                
                //boolean result = contentmigrator.migrateEntityState();
                //boolean result = contentmigrator.migrateRemoveBorrowedCategoryIdFromSlide();
                //System.out.println(CreationUtils.getEntity(1000471).getSlide(130011));
                //System.out.println(CreationUtils.getFacetValues());
                
        }

        public ContentMigratorToBDB(String sourceDbPath, String destinationDbPath) {
                this.sourceDbPath = sourceDbPath;
                this.destinationDbPath = destinationDbPath;
        }
        
        
        public boolean migrateEntityState() throws Exception{
                Map<Long, Entity> entities =  CreationUtils.getEntities();
                for(Long entityId: entities.keySet()){
                        Entity entity = entities.get(entityId);
                        EntityState oldState = CreationUtils.getEntityState(entityId);
                        EntityState newState = new EntityState(oldState.getID(), entity.getCategoryID(), oldState.getCreatedBy());
                        
                        newState.setBrand(entity.getBrand());
                        newState.setModelName(entity.getModelName());
                        newState.setModelNumber(entity.getModelNumber());
                        
                        newState.setStatus(oldState.getStatus());
                        newState.setAssignedBy(oldState.getAssignedBy());
                        newState.setAssignedTo(oldState.getAssignedTo());
                        newState.setAssignedOn(oldState.getAssignedOn());
                        
                        newState.setCreatedBy(oldState.getCreatedBy());
                        newState.setCreatedOn(oldState.getCreatedOn());
                        
                        newState.setCompletedOn(oldState.getCompletedOn());
                        newState.setCompletedBy(oldState.getCompletedBy());
                        
                        newState.setMerkedReadyBy(oldState.getMerkedReadyBy());
                        newState.setMerkedReadyOn(oldState.getMerkedReadyOn());
                        CreationUtils.updateEntityState(newState);
                }
                return true;
        }
//      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;
//      }
}