Subversion Repositories SmartDukaan

Rev

Rev 62 | Blame | Last modification | View Log | RSS feed

/**
 * 
 */
package in.shop2020.util;

import java.util.List;

import in.shop2020.metamodel.core.Entity;
import in.shop2020.metamodel.core.Feature;
import in.shop2020.metamodel.core.Slide;
import in.shop2020.metamodel.definitions.Catalog;
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.util.ExpandedCategoryFacetDefinition;
import in.shop2020.metamodel.util.ExpandedFacetDefinition;

/**
 * Command line utility to convert IR Definitions into IR Data and IR Meta-data
 * 
 * @author naveen
 *
 */
public class IR {
        
        /**
         * Jython source path
         */
        public static String JYTHON_SRC_PATH = "src/jython/";
        
        /**
         * IR XML export path
         */
        public static String EXPORT_IR_PATH = 
                "/home/naveen/workspace/eclipse/export/ir/";
        
        private long categoryID;
        
        /**
         * @param args
         * @throws Exception 
         */
        public static void main(String[] args) throws Exception {
                String usage = "Usage: IR {Category ID}";
                
                if(args.length < 1) {
                        System.out.println(usage);
                        System.exit(-1);
                }
                
                long categoryID = 0;
                try {
                        categoryID = Long.parseLong(args[0]);
                }
                catch (NumberFormatException nfe) {
                        System.out.println(usage);
                        System.exit(-1);
                }
                
                IR ir = new IR(categoryID);
                ir.exportIRData();
        }
        
        /**
         * 
         * @param categoryID
         */
        public IR(long categoryID) {
                this.categoryID = categoryID;
        }
        
        /**
         * @throws Exception 
         * 
         */
        @SuppressWarnings("unchecked")
        public void exportIRData() throws Exception {
                DefinitionsContainer defs = 
                        Catalog.getInstance().getDefinitionsContainer();
                
                EntityContainer ents = 
                        Catalog.getInstance().getEntityContainer();
                
                // Get all facets for the category
                ExpandedCategoryFacetDefinition expCategoryFacetDef = 
                        defs.getExpandedCategoryFacetDefinition(this.categoryID);
                
                List<ExpandedFacetDefinition> expFacetDefs = 
                        expCategoryFacetDef.getExpandedFacetDefinitions();
                
                // Get all entities for the category
                List<Entity> entities = ents.getEntities(this.categoryID);
                
                JythonWrapper jw = new JythonWrapper();
                
                // For each entity 
                if(entities != null) {
                        for(Entity entity : entities) {
                                
                                // For each facet execute Rule
                                for(ExpandedFacetDefinition expFacetDef : expFacetDefs) {
                                        jw.initialize();
                                        
                                        jw.setEntity(entity);
                                        jw.setExpandedFacetDefinition(expFacetDef);
                                        
                                        // To reduce scripts work
                                        
                                        // Set FeatureDefinition
                                        FeatureDefinition featureDef = 
                                                expFacetDef.getFeatureDefinition();
                                        if(featureDef != null) {
                                                jw.setFeatureDefinition(featureDef);
                                                
                                                // Set Feature
                                                Feature feature = 
                                                        ents.getFeature(entity.getID(), featureDef.getID());
                                                jw.setFeature(feature);
                                        }
                                        
                                        // Set SlideDefinition
                                        SlideDefinition slideDef = expFacetDef.getSlideDefinition();
                                        if(slideDef != null) {
                                                jw.setSlideDefinition(slideDef);
                                                
                                                // Set Slide
                                                Slide slide = ents.getSlide(entity.getID(), 
                                                                slideDef.getID());
                                                jw.setSlide(slide);
                                        }
                                        
                                        jw.execIRDataRule();
                                        
                                        List<Object> values = (List<Object>)jw.getValues();
                                        Utils.info("values=" + values);
                                }
                                
                        }
                }
        }
}