Subversion Repositories SmartDukaan

Rev

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

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

import in.shop2020.metamodel.util.MetaModelComponent;

/**
 * Represents un-structured data about Slide, Feature and Bullet. It is used
 * judiciously by content developers to store multi-media content in support
 * component they are attached to.
 * 
 * @author naveen
 *
 */
public class FreeformContent extends MetaModelComponent {
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        // Un-structured text only
        private List<String> freeformTexts;

        private Map<String, Media> medias;
        
        /**
     * 
     */
    public FreeformContent() {
    }

    /**
     * 
     * @param freeformText
     */
    public FreeformContent(String freeformText) {
        this.addFreeformText(freeformText);
    }

        /**
         * @param freeformTexts the freeformTexts to set
         */
        public void setFreeformTexts(List<String> freeformTexts) {
                this.freeformTexts = freeformTexts;
        }
        
        /**
         * 
         * @param fft
         */
        public void addFreeformText(String fft) {
                if(this.freeformTexts == null) {
                        this.freeformTexts = new ArrayList<String>();
                }
                
                this.freeformTexts.add(fft);
        }
        
        /**
         * @return the freeformTexts
         */
        public List<String> getFreeformTexts() {
                return freeformTexts;
        }

        
        /**
         * Return first free-form text
         * 
         * @return the freeformTexts
         */
        public String getFreeformText() {
                if(this.freeformTexts != null && this.freeformTexts.size() > 0) {
                        return this.freeformTexts.get(0);
                }
                
                return null;
        }

        public String[] getFreeformLines() {
                if(this.freeformTexts != null && this.freeformTexts.size() > 0) {
                        return this.freeformTexts.get(0).split("\n");
                }
                return null;
        }
        /**
         * Return list of free-form text separeted by new line
         * 
         * @return the freeformTexts
         */
        public List<String> getFreeformTextLines() {
                List<String> lines = null;
                if(this.freeformTexts != null && this.freeformTexts.size() > 0) {
                        lines = new ArrayList<String>();
                        StringTokenizer tokenizer = new StringTokenizer(this.freeformTexts.get(0), "\n");
                        while(tokenizer.hasMoreTokens()){
                                lines.add(tokenizer.nextToken());
                        }
                        return lines;
                }
                
                return null;
        }
        

        public void setMedias(Map<String, Media> medias) {
                this.medias = medias;
        }

        public Map<String, Media> getMedias() {
                return medias;
        }
        
        public void addMedia(Media media) {
                if(this.medias == null){
                        this.medias = new HashMap<String, Media>();
                }
                this.medias.put(media.getLabel(), media);
        }

        public void removeMedia(String label) {
                if(this.medias != null){
                        medias.remove(label);
                }
        }
        
        
        public List<String> getImageLabels(){
                List<String> imageLabels = new ArrayList<String>();
                if(this.medias != null){
                        for(Media media: medias.values()){
                                if(media.getType().equalsIgnoreCase("image")){
                                        imageLabels.add(media.getLabel());
                                }
                        }
                }
                return imageLabels;
        }

        public List<String> getYoutubeLabels(){
                List<String> youtubeLabels = new ArrayList<String>();
                if(this.medias != null){
                        for(Media media: medias.values()){
                                if(media.getType().equalsIgnoreCase("youtube")){
                                        youtubeLabels.add(media.getLabel());
                                }
                        }
                }
                return youtubeLabels;
        }

}