Subversion Repositories SmartDukaan

Rev

Rev 1061 | 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.ChildSlideDefinition;
import in.shop2020.metamodel.definitions.SlideDefinition;
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;

/**
 * Utility class that supports SlideDefinition class. All related 
 * objects are fetched from database and aggregated here.
 * 
 * @author naveen
 *
 */
public class ExpandedSlideDefinition extends SlideDefinition {

        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        /**
         * Expanded from list of SlideFeatureDefinition IDs
         */
        private List<ExpandedSlideFeatureDefinition> 
                expandedSlideFeatureDefinitions;
        
        /**
         * Expanded from list of children SlideDefinition objects
         */
        private List<ExpandedChildSlideDefinition> expandedChildSlideDefinitions;

        /**
         * Takes SlideDefinition object as input and converts all references 
         * into corresponding detail objects
         * 
         * @param slideDefinition SlideDefinition object
         * @throws Exception
         */
        public ExpandedSlideDefinition(SlideDefinition slideDefinition) 
                throws Exception {
                super(slideDefinition.getID(), slideDefinition.getLabel());

                // Copy rest of the properties
                this.setChildSlideDefinitions(
                                slideDefinition.getChildSlideDefinitions());
                
                this.setDescription(slideDefinition.getDescription());
                this.setLabel(slideDefinition.getLabel());
                
                this.setSlideFeatureDefinitions(
                                slideDefinition.getSlideFeatureDefinitions());
                
                // Expand SlideFeatureDefinition
                List<SlideFeatureDefinition> slideFeatureDefs = 
                        slideDefinition.getSlideFeatureDefinitions();
                
                if(slideFeatureDefs != null) {
                        this.expandedSlideFeatureDefinitions = 
                                new ArrayList<ExpandedSlideFeatureDefinition>();
                        
                        for(SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
                                this.expandedSlideFeatureDefinitions.add(
                                                new ExpandedSlideFeatureDefinition(slideFeatureDef));
                        }
                }
                                
                List<ChildSlideDefinition> childrenSlideDefs = this.getChildSlideDefinitions();
                if(childrenSlideDefs != null) {
                        this.expandedChildSlideDefinitions = 
                                new ArrayList<ExpandedChildSlideDefinition>();
                        
                        for(ChildSlideDefinition childSlideDef : childrenSlideDefs) {                           
                                this.expandedChildSlideDefinitions.add(
                                                new ExpandedChildSlideDefinition(childSlideDef));
                        }
                }
        }

        /**
         * @return the expandedSlideFeatureDefinitions List of 
         * ExpandedSlideFeatureDefinition objects
         */
        public List<ExpandedSlideFeatureDefinition> 
                getExpandedSlideFeatureDefinitions() {
                return expandedSlideFeatureDefinitions;
        }

        /**
         * @return the expandedChildrentSlideDefinitions List of children 
         * ExpandedSlideDefinition objects
         */
        public List<ExpandedChildSlideDefinition> getExpandedChildSlideDefinitions(){
                return expandedChildSlideDefinitions;
        }

        /* (non-Javadoc)
         * @see java.lang.Object#toString()
         */
        @Override
        public String toString() {
                return "ExpandedSlideDefinition [expandedSlideFeatureDefinitions="
                                + expandedSlideFeatureDefinitions
                                + ", getChildSlideDefinitions()="
                                + getChildSlideDefinitions() + ", getDescription()="
                                + getDescription() + ", getLabel()=" + getLabel()
                                + ", getSlideFeatureDefinitions()="
                                + getSlideFeatureDefinitions()
                                + ", getExpandedChildSlideDefinitions()="
                                + getExpandedChildSlideDefinitions() + 
                                ", getID()=" + getID() + "]";
        }

}