Subversion Repositories SmartDukaan

Rev

Rev 323 | Rev 1229 | 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.metamodel.definitions.FacetRuleDefinition;
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 rule definitions
         */
        private List<ExpandedFacetRuleDefinition> expandedFacetRuleDefinitions;
        
        /**
         * Constructs Expanded version from CategoryFacetDefinition instance
         * 
         * @param categoryFacetDefinition
         * @throws Exception 
         */
        public ExpandedCategoryFacetDefinition(
                        CategoryFacetDefinition categoryFacetDefinition) throws Exception {
                super(categoryFacetDefinition.getCategoryID());
                
                // Copy other properties
                this.setFacetRuleDefinitions(
                                categoryFacetDefinition.getFacetRuleDefinitions());
                
                // Add expanded objects
                DefinitionsContainer defs = 
                        Catalog.getInstance().getDefinitionsContainer();
                
                // Category
                Category category = 
                        defs.getCategory(categoryFacetDefinition.getCategoryID());
                
                this.setCategory(category);
                
                // List of ExpandedFacetRuleDefinition objects
                List<FacetRuleDefinition> facetRuleDefinitions = 
                        categoryFacetDefinition.getFacetRuleDefinitions();
                
                Utils.info("facetRuleDefinitions=" + facetRuleDefinitions);
                
                for(FacetRuleDefinition facetRuleDef : facetRuleDefinitions) {
                        Utils.info("facetRuleDef=" + facetRuleDef);
                        
                        ExpandedFacetRuleDefinition expandedFacetRuleDefinition = 
                                new ExpandedFacetRuleDefinition(facetRuleDef);
                        
                        Utils.info("expandedFacetRuleDefinition=" + 
                                        expandedFacetRuleDefinition);
                        
                        this.appendExpandedFacetRuleDefinition(expandedFacetRuleDefinition);
                }
                
                Utils.info("expandedFacetRuleDefinitions=" + 
                                this.expandedFacetRuleDefinitions);
        }

        /**
         * @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 expandedFacetRuleDefinition
         */
        public void appendExpandedFacetRuleDefinition(
                        ExpandedFacetRuleDefinition expandedFacetRuleDefinition) {
                if(this.expandedFacetRuleDefinitions == null) {
                        this.expandedFacetRuleDefinitions = 
                                new ArrayList<ExpandedFacetRuleDefinition>();
                }
                
                this.expandedFacetRuleDefinitions.add(expandedFacetRuleDefinition);
        }

        /**
         * @param expandedFacetRuleDefinitions the expandedFacetRuleDefinitions 
         * to set
         */
        public void setExpandedFacetRuleDefinitions(
                        List<ExpandedFacetRuleDefinition> expandedFacetRuleDefinitions) {
                this.expandedFacetRuleDefinitions = expandedFacetRuleDefinitions;
        }

        /**
         * @return the expandedFacetRuleDefinitions
         */
        public List<ExpandedFacetRuleDefinition> getExpandedFacetRuleDefinitions() {
                return expandedFacetRuleDefinitions;
        }

        /* (non-Javadoc)
         * @see java.lang.Object#toString()
         */
        @Override
        public String toString() {
                return "ExpandedCategoryFacetDefinition [category=" + category
                                + ", expandedFacetRuleDefinitions="
                                + expandedFacetRuleDefinitions + ", getCategoryID()="
                                + getCategoryID() + ", getFacetRuleDefinitions()="
                                + getFacetRuleDefinitions() + "]";
        }

}