Subversion Repositories SmartDukaan

Rev

Rev 62 | Rev 81 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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

import java.util.ArrayList;
import java.util.List;

import in.shop2020.metamodel.definitions.Catalog;
import in.shop2020.metamodel.definitions.Category;
import in.shop2020.metamodel.definitions.CategoryFacetDefinition;
import in.shop2020.metamodel.definitions.DefinitionsContainer;
import in.shop2020.util.Utils;

/**
 * Utility class to support CategoryFacetDefintion class. Expands all 
 * references into respect detail objects
 * 
 * @author naveen
 *
 */
public class ExpandedCategoryFacetDefinition extends CategoryFacetDefinition {

        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        /**
         * Expanded Category ID
         */
        private Category category;
        
        /**
         * List of expanded facet definition IDs
         */
        private List<ExpandedFacetDefinition> expandedFacetDefinitions;
        
        /**
         * Constructs Expanded version from CategoryFacetDefinition instance
         * 
         * @param categoryFacetDefinition
         * @throws Exception 
         */
        public ExpandedCategoryFacetDefinition(
                        CategoryFacetDefinition categoryFacetDefinition) throws Exception {
                super(categoryFacetDefinition.getCategoryID());
                
                // Copy other properties
                this.setFacetDefinitionIDs(
                                categoryFacetDefinition.getFacetDefinitionIDs());
                
                // Add expanded objects
                DefinitionsContainer defs = 
                        Catalog.getInstance().getDefinitionsContainer();
                
                // Category
                Category category = 
                        defs.getCategory(categoryFacetDefinition.getCategoryID());
                
                this.setCategory(category);
                
                // List of ExpandedFacetDefinition objects
                List<Long> facetDefinitionIDs = 
                        categoryFacetDefinition.getFacetDefinitionIDs();
                Utils.info("facetDefinitionIDs=" + facetDefinitionIDs);
                
                for(Long facetDefinitionID : facetDefinitionIDs) {
                        Utils.info("facetDefinitionID=" + facetDefinitionID);
                        
                        ExpandedFacetDefinition expandedFacetDefinition = 
                                defs.getExpandedFacetDefinition(facetDefinitionID.longValue());
                        
                        this.appendExpandedFacetDefinition(expandedFacetDefinition);
                }
        }

        /**
         * @param category the category to set
         */
        public void setCategory(Category category) {
                this.category = category;
        }

        /**
         * @return the category
         */
        public Category getCategory() {
                return category;
        }

        /**
         * Utility method to add new elements
         * 
         * @param expandedFacetDefinition
         */
        public void appendExpandedFacetDefinition(
                        ExpandedFacetDefinition expandedFacetDefinition) {
                if(this.expandedFacetDefinitions == null) {
                        this.expandedFacetDefinitions = 
                                new ArrayList<ExpandedFacetDefinition>();
                }
                
                this.expandedFacetDefinitions.add(expandedFacetDefinition);
        }

        /**
         * @param expandedFacetDefinitions the expandedFacetDefinitions to set
         */
        public void setExpandedFacetDefinitions(
                        List<ExpandedFacetDefinition> expandedFacetDefinitions) {
                this.expandedFacetDefinitions = expandedFacetDefinitions;
        }

        /**
         * @return the expandedFacetDefinitions
         */
        public List<ExpandedFacetDefinition> getExpandedFacetDefinitions() {
                return expandedFacetDefinitions;
        }

}