Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.creation.util;

import in.shop2020.metamodel.core.Entity;
import in.shop2020.metamodel.core.Slide;
import in.shop2020.metamodel.definitions.Catalog;
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
import in.shop2020.metamodel.definitions.EditorialImportance;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 
 * @author naveen
 *
 */
public class ContentValidator {
        /**
         * 
         * @param entity
         * @return
         * @throws Exception 
         */
        
        private static Log log = LogFactory.getLog(ContentValidator.class);
        public boolean validate(Entity entity) throws Exception {
                List<Long> slideDefIDs = this.getSlideDefinitionIDs(entity);
                
                if(slideDefIDs == null) {
                        return false;
                }
                
                List<Long> requiredSlideDefIDs = entity.getSlideSequence();
                
                if(requiredSlideDefIDs == null) {
                        requiredSlideDefIDs = new ArrayList<Long>();
                        
                        List<CategorySlideDefinition> catSlideDefs = 
                                Catalog.getInstance().getDefinitionsContainer().
                                getCategorySlideDefinitions(entity.getCategoryID());
                        
                        for(CategorySlideDefinition catSlideDef : catSlideDefs) {
                                if(catSlideDef.getEditorialImportance() == 
                                        EditorialImportance.MANDATORY) {
                                        requiredSlideDefIDs.add(
                                                        new Long(catSlideDef.getSlideDefintionID()));
                                }
                        }
                }
                
                for(Long requiredSlideDefID : requiredSlideDefIDs) {
                        if(!slideDefIDs.contains(requiredSlideDefID)) {
                                log.info("Could not find required slide: -------- " + requiredSlideDefID);
                                return false;
                        }
                }
                
                // Validate required features per slide
                // TODO
                
                // Validate bullets per feature
                // TODO
                return true;
        }
        
        /**
         * 
         * @param entity
         * @return
         */
        private List<Long> getSlideDefinitionIDs(Entity entity) {
                List<Long> slideDefIDs = new ArrayList<Long>();
                List<Slide> slides = entity.getSlides();
                if(slides == null) {
                        return null;
                }
                
                for(Slide slide : slides) {
                        slideDefIDs.add(new Long(slide.getSlideDefinitionID()));
                }
                
                return slideDefIDs;
        }
}