Results.java :  » Portal » Open-Portal » com » sun » portal » app » collab » survey » faces » Java Open Source

Java Open Source » Portal » Open Portal 
Open Portal » com » sun » portal » app » collab » survey » faces » Results.java
package com.sun.portal.app.collab.survey.faces;

import com.sun.portal.app.collab.survey.model.SurveyException;
import java.beans.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.text.DecimalFormat;
import java.util.List;
import java.util.ArrayList;

import com.sun.web.ui.model.Option;
import com.sun.data.provider.impl.ObjectArrayDataProvider;

import com.sun.portal.app.collab.survey.model.QuestionModel;
import com.sun.portal.app.collab.survey.model.AnswerModel;
import com.sun.portal.app.collab.survey.util.SurveyUtil;
import com.sun.portal.app.collab.survey.util.Resources;

/**
 * @author bshankar@sun.com
 */
public class Results {
    
    private QuestionModel m = null;
    private boolean getCustomAnswers = false;
    
    private String questionText = null;
    private String questionOrder = null;
    private String responseCount = null;
    private String respondantCount = null;
    private Answer answers[] = null;
    boolean isOpen = false;
    boolean hasAnswers = true;
    private int openAnswerCount;
    private float openAnswerPct;
    DecimalFormat formatter = new DecimalFormat("0.00");
    
    public Results(QuestionModel m) {
        this.m = m;
    }
    
    public Results(QuestionModel m, boolean getCustomAnswers) {
        this.m = m;
        this.getCustomAnswers = getCustomAnswers;
    }
    
    public void init() throws SurveyException {
        if (m == null) {
            return;
        }
        if(getCustomAnswers) {
            getCustomAnswers();
        } else {
            getPredefinedAnswers();
        }
    }
    
    /**
     * Set questionText and create an array of Answer[] with predefined options.
     */
    private void getPredefinedAnswers() throws SurveyException {
        
        questionOrder = String.valueOf(m.getQuestionOrder());
        questionText = m.getQuestionText();
        
        responseCount = String.valueOf(m.getResponseCount());
        respondantCount = String.valueOf(m.getRespondantCount());
        AnswerModel amodel[] = m.getAnswers();
        
        isOpen = m.isOpen();
        
        if (amodel == null || amodel.length == 0) {
            hasAnswers = false;
            isOpen = true;
            Answer ans = new Answer(null);
            ans.init();
            ans.setAnswerText(new Resources().getString("answer-all"));
            answers = new Answer[]{ans};
        } else {
            if(isOpen && m.getCustomAnswerCount() > 0) {
                answers = new Answer[amodel.length + 1];
                Answer ans = new Answer(null);
                ans.init();
                ans.setAnswerText(new Resources().getString("Other"));
                answers[amodel.length] = ans;
            } else {
                answers = new Answer[amodel.length];
            }
        }
        for(int i=0; hasAnswers && i<amodel.length;i++) {
            answers[i] = new Answer(amodel[i]);
            answers[i].init();
        }
        
        if(isOpen) {
            openAnswerCount = m.getCustomAnswerCount();
            openAnswerPct = m.getCustomAnswerPct();
        }
        
    }
    
    /**
     * Set questionText and create an array of Answer[] with predefined options.
     */
    private void getCustomAnswers() throws SurveyException {
        
        questionOrder = String.valueOf(m.getQuestionOrder());
        questionText = m.getQuestionText();
        
        isOpen = m.isOpen();
        
        if (isOpen && m.getCustomAnswerCount() > 0) {
            answers = new Answer[m.getCustomAnswerCount()];
            String[] customAnswers = m.getCustomAnswers();
            for(int i=0; i<customAnswers.length; i++) {
                answers[i] = new Answer(null);
                answers[i].init();
                answers[i].setAnswerOrder(i+1);
                answers[i].setAnswerText(customAnswers[i]);
            }
        }
        
    }
    
    public String getQuestionOrder() {
        return questionOrder;
    }

    public String getQuestionText() {
        if(new SurveyUtil().isSurvey()) {
            return questionOrder + ". " + questionText;
        }
        return questionText;
    }
    
    public String getRespondantCount() {
        return respondantCount;
    }
    
    public String getResponseCount() {
        return responseCount;
    }
    
    public ObjectArrayDataProvider getAnswers() {
        return new ObjectArrayDataProvider(answers);
    }
    
    public List getAnswerList() {
        List l = new ArrayList();
        for(int i=0; i<answers.length; i++) {
            l.add(answers[i]);
        }
        return l;
    }
    
    public class Answer {
        
        private AnswerModel am = null;
        private String answerText;
        private String answerOrder;
        private String respPct;
        private String respCount;
        private boolean isOpen = false;
        
        public Answer(AnswerModel m) {
            this.am = m;
        }
        
        public void init() throws SurveyException {
            if (am != null) {
                answerText = am.getAnswerText();
                respPct = formatter.format(am.getResponsePct()).toString();
                respCount = String.valueOf(am.getResponseCount());
                isOpen = false;
            } else {
                isOpen = true;
            }
        }
        
        public String getAnswerText() {
            return answerText;
        }
        
        public void setAnswerText(String answerText) {
            this.answerText = answerText;
        }
        
        public String getAnswerOrder() {
            return answerOrder;
        }
        
        public void setAnswerOrder(int ansOrder) {
            answerOrder = String.valueOf(ansOrder);
        }
        
        public String getResponsePct() {
            if (isOpen && hasAnswers) {
                return formatter.format(openAnswerPct).toString();
            }
            return respPct;
        }
        
        public String getResponseCount() {
            if (isOpen) {
                return String.valueOf(openAnswerCount);
            }
            return respCount;
        }
        
        public boolean getShowAnswerAsLink() {
            return isOpen;
        }
        
        public boolean getShowAnswerAsText() {
            return !getShowAnswerAsLink();
        }
        
    }
    
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.