Subversion Repositories SmartDukaan

Rev

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

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

import in.shop2020.metamodel.core.Media.Type;
import in.shop2020.metamodel.util.MetaModelComponent;

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

/**
 * 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 LinkedHashMap<String, Media>();
        }
        this.medias.put(Long.toString(System.currentTimeMillis()), 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(Map.Entry<String, Media> mediaE: medias.entrySet()){
                Media media = mediaE.getValue();
                if(media.getType().equals(Type.IMAGE)){
                    imageLabels.add(mediaE.getKey());
                }
            }
        }
        return imageLabels;
    }

    public List<String> getYoutubeLabels(){
        List<String> youtubeLabels = new ArrayList<String>();
        if(this.medias != null){
            for(Map.Entry<String, Media> mediaE: medias.entrySet()){
                Media media = mediaE.getValue();
                if(media.getType().equals(Type.VIDEO_WITH_SKIN) || 
                   media.getType().equals(Type.VIDEO_WITHOUT_SKIN))
                {
                    youtubeLabels.add(mediaE.getKey());
                }
            }
        }
        return youtubeLabels;
    }

    public List<String> getDocumentLabels(){
        List<String> documentLabels = new ArrayList<String>();
        if(this.medias != null){
                for(Map.Entry<String, Media> mediaE: medias.entrySet()){
                Media media = mediaE.getValue();
                if(media.getType().equals(Type.DOCUMENT))
                {
                    documentLabels.add(mediaE.getKey());
                }
            }
        }
        return documentLabels;
    }

}