Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.domain;

import jomm.dao.impl.AbstractDao;
import org.jboss.util.Objects;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.*;

import java.io.File;
import java.io.IOException;
import java.util.*;

/**
 * @author: Duarte Santos
 * @date: 09-05-2011
 * @time: 23:53
 * @email: a12564 [at] estgp [dot] pt
 */


public class Main
{
    public static Survey createSurvey(User user)
    {
        Survey survey = DomainObjectFactory.createSurveyImpl();
        survey.setStartDate(new 5+0%2Fdocs%2Fapi+Date">Date());
        survey.setSemester("S2");
        survey.setYear("2010");
        survey.setOwner(user);
        SurveyDao.getInstance().save(survey);
        return survey;
    }

    public static List<SurveyStructuralNode> createStructuralNodes(Survey survey)
    {
        List<SurveyStructuralNode> nodes = new ArrayList<SurveyStructuralNode>();
        List<String> nodeTexts = new ArrayList<String>();

        nodeTexts.add("201011");
        nodeTexts.add("Engenharia Informática");
        nodeTexts.add("Semestre1");
        nodeTexts.add("Semestre2");
        nodeTexts.add("Teoria da Computação");
        nodeTexts.add("Redes de computadores I");
        nodeTexts.add("Introdução à Programação");
        nodeTexts.add("Análise de Matemática I");

        int numNodes = nodeTexts.size();
        int i = 0;
        while(numNodes > 0)
        {
            nodes.add(DomainObjectFactory.createSurveyStructuralNodeImpl());
            nodes.get(i).setSurvey(survey);
            nodes.get(i).setNodes(new HashSet<SurveyStructuralNode>(0));
            i++;
            numNodes--;
        }

        nodes.get(0).setMsg(nodeTexts.get(0));
        nodes.get(1).setMsg(nodeTexts.get(1));
        nodes.get(2).setMsg(nodeTexts.get(2));
        nodes.get(3).setMsg(nodeTexts.get(3));
        nodes.get(4).setMsg(nodeTexts.get(4));
        nodes.get(5).setMsg(nodeTexts.get(5));
        nodes.get(6).setMsg(nodeTexts.get(6));
        nodes.get(7).setMsg(nodeTexts.get(7));

        nodes.get(0).getNodes().add(nodes.get(1));
        nodes.get(1).getNodes().add(nodes.get(2));
        nodes.get(1).getNodes().add(nodes.get(3));
        nodes.get(2).getNodes().add(nodes.get(4));
        nodes.get(3).getNodes().add(nodes.get(5));
        nodes.get(3).getNodes().add(nodes.get(6));
        nodes.get(3).getNodes().add(nodes.get(7));

        SurveyStructuralNodeDao.getInstance().save(nodes.get(0));
        SurveyStructuralNodeDao.getInstance().save(nodes.get(1));
        SurveyStructuralNodeDao.getInstance().save(nodes.get(2));
        SurveyStructuralNodeDao.getInstance().save(nodes.get(3));
        SurveyStructuralNodeDao.getInstance().save(nodes.get(4));
        SurveyStructuralNodeDao.getInstance().save(nodes.get(5));
        SurveyStructuralNodeDao.getInstance().save(nodes.get(6));
        SurveyStructuralNodeDao.getInstance().save(nodes.get(7));

        return nodes;
    }

    public static SurveyResponse createSurveyResponses(User user, SurveyStructuralNode node)
    {
        SurveyResponse response = DomainObjectFactory.createSurveyResponseImpl();
        response.setStructuralNode(node);
        response.setAnswered(true);
        response.setOwner(user);
        SurveyResponseDao.getInstance().save(response);

        return response;
    }

    public static List<SurveyQuestion> createSurveyQuestions(Survey survey)
    {
        List<SurveyQuestion> questions = new ArrayList<SurveyQuestion>();
        List<String> questionTexts = new ArrayList<String>();

        questionTexts.add("Pergunta numero 1");
        questionTexts.add("Pergunta numero 2");
        questionTexts.add("Pergunta numero 3");

        int numQuestions = questionTexts.size();
        int i = 0;
        while(numQuestions > 0)
        {
            questions.add(DomainObjectFactory.createSurveyQuestionImpl());
            questions.get(i).setSurvey(survey);
            questions.get(i).setLabelpt(questionTexts.get(i));
            SurveyQuestionDao.getInstance().save(questions.get(i));
            i++;
            numQuestions--;
        }

        return questions;
    }

    public static List<SurveyQuestionItem> createSurveyQuestionItems(List<SurveyQuestion> questions)
    {
        List<SurveyQuestionItem> items = new ArrayList<SurveyQuestionItem>();
        List<String> itemsText = new ArrayList<String>();

        itemsText.add("Item numero 1-1");
        itemsText.add("Item numero 1-2");
        itemsText.add("Item numero 1-3");
        itemsText.add("");
        itemsText.add("");

        int numItems = itemsText.size();
        int i = 0;
        while(numItems > 0)
        {
            items.add(DomainObjectFactory.createSurveyQuestionItemImpl());
            items.get(i).setLabelpt(itemsText.get(i));
            i++;
            numItems--;
        }

        items.get(0).setQuestion(questions.get(0));
        items.get(1).setQuestion(questions.get(0));
        items.get(2).setQuestion(questions.get(0));
        items.get(3).setQuestion(questions.get(1));
        items.get(4).setQuestion(questions.get(2));

        SurveyQuestionItemDao.getInstance().save(items.get(0));
        SurveyQuestionItemDao.getInstance().save(items.get(1));
        SurveyQuestionItemDao.getInstance().save(items.get(2));
        SurveyQuestionItemDao.getInstance().save(items.get(3));
        SurveyQuestionItemDao.getInstance().save(items.get(4));

        return items;
    }

    public static List<SurveyQuestionCandidateAnswer> createSurveyQuestionCandidateAnswers(List<SurveyQuestionItem> items)
    {
        List<SurveyQuestionCandidateAnswer> candidates = new ArrayList<SurveyQuestionCandidateAnswer>();
        List<String> candidatesText = new ArrayList<String>();

        candidatesText.add("Candidate numero 1-1");
        candidatesText.add("Candidate numero 1-2");
        candidatesText.add("Candidate numero 1-3");
        candidatesText.add("Candidate numero 2-1");
        candidatesText.add("Candidate numero 2-2");
        candidatesText.add("Candidate numero 2-3");
        candidatesText.add("Candidate numero 3-1");
        candidatesText.add("Candidate numero 3-2");
        candidatesText.add("Candidate numero 3-3");

        int numCandidates = candidatesText.size();
        int i = 0;
        while(numCandidates > 0)
        {
            candidates.add(DomainObjectFactory.createSurveyQuestionCandidateAnswerImpl());
            candidates.get(i).setLabelpt(candidatesText.get(i));
            i++;
            numCandidates--;
        }

        candidates.get(0).setQuestionItem(items.get(0));
        candidates.get(0).setQuestionItem(items.get(1));
        candidates.get(0).setQuestionItem(items.get(2));
        candidates.get(0).setType("radio");
        candidates.get(1).setQuestionItem(items.get(0));
        candidates.get(1).setQuestionItem(items.get(1));
        candidates.get(1).setQuestionItem(items.get(2));
        candidates.get(1).setType("radio");
        candidates.get(2).setQuestionItem(items.get(0));
        candidates.get(2).setQuestionItem(items.get(1));
        candidates.get(2).setQuestionItem(items.get(2));
        candidates.get(2).setType("radio");
        candidates.get(3).setQuestionItem(items.get(3));
        candidates.get(3).setType("radio");
        candidates.get(4).setQuestionItem(items.get(3));
        candidates.get(4).setType("radio");
        candidates.get(5).setQuestionItem(items.get(3));
        candidates.get(5).setType("radio");
        candidates.get(6).setQuestionItem(items.get(4));
        candidates.get(6).setType("checkbox");
        candidates.get(7).setQuestionItem(items.get(4));
        candidates.get(7).setType("checkbox");
        candidates.get(8).setQuestionItem(items.get(4));
        candidates.get(8).setType("checkbox");

        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(0));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(1));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(2));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(3));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(4));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(5));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(6));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(7));
        SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(8));

        return candidates;
    }

    public static List<SurveyQuestionAnswer> createSurveyQuestionAnswers(SurveyResponse response, List<SurveyQuestionCandidateAnswer> candidates)
    {
        List<SurveyQuestionAnswer> answers = new ArrayList<SurveyQuestionAnswer>();

        int numAnswers = 6;
        int i = 0;
        while(numAnswers > 0)
        {
            answers.add(DomainObjectFactory.createSurveyQuestionAnswerImpl());
            answers.get(i).setResponse(response);
            i++;
            numAnswers--;
        }

        answers.get(0).setCandidateAnswer(candidates.get(0));
        answers.get(1).setCandidateAnswer(candidates.get(1));
        answers.get(2).setCandidateAnswer(candidates.get(1));
        answers.get(3).setCandidateAnswer(candidates.get(4));
        answers.get(4).setCandidateAnswer(candidates.get(7));
        answers.get(5).setCandidateAnswer(candidates.get(8));

        SurveyQuestionAnswerDao.getInstance().save(answers.get(0));
        SurveyQuestionAnswerDao.getInstance().save(answers.get(1));
        SurveyQuestionAnswerDao.getInstance().save(answers.get(2));
        SurveyQuestionAnswerDao.getInstance().save(answers.get(3));
        SurveyQuestionAnswerDao.getInstance().save(answers.get(4));
        SurveyQuestionAnswerDao.getInstance().save(answers.get(5));

        return answers;
    }

    public static void main(1.5.0/docs/api/java/lang/String.html">String[] args)
    {
        AbstractDao.getCurrentSession().beginTransaction();

        User user = DaoFactory.getUserDaoImpl().loadByUsername("super");

        List<Survey> surveys = DaoFactory.getSurveyDaoImpl().loadAllSurveys();

        List<SurveyResponse> responses = DaoFactory.getSurveyResponseDaoImpl()
                                                .loadResponsesByParentStructuralNodeId(surveys.get(0).getStructuralNode().getId());

        if(responses.size() > 0)
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println("--->"+responses.get(0).getAnswers().size());
        }

//        List ll = DaoFactory.getSurveyQuestionAnswerDaoImpl().teste();

        5+0%2Fdocs%2Fapi+List">List ll = new 1.5.0/docs/api/java/util/ArrayList.html">ArrayList();

        1.5.0/docs/api/java/lang/String.html">String[] strs = new 1.5.0/docs/api/java/lang/String.html">String[ll.size()];
        int[] ints = new int[ll.size()];
        1.5.0/docs/api/java/lang/String.html">String question = "";

        1.5.0/docs/api/java/util/Iterator.html">Iterator iter = ll.iterator();

        int i = 0;
        while (iter.hasNext())
        {
            5+0%2Fdocs%2Fapi+Object">Object[] objs = (5+0%2Fdocs%2Fapi+Object">Object[]) iter.next();

            if(question == "")
            {
                SurveyQuestion quest = DaoFactory.getSurveyQuestionDaoImpl().loadById(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(objs[0].toString()));
                question = quest.getLabelpt();
            }

            SurveyQuestionCandidateAnswer cand = DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().loadById(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(objs[2].toString()));
            strs[i] = cand.getLabelpt();
            ints[i] = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(objs[3].toString());
            i++;
        }

        createBarChart(question, "", "Número de Respostas", strs, ints);

//        // ----------------- POPULAR
//        Survey survey = createSurvey(user);
//        List<SurveyStructuralNode> nodes = createStructuralNodes(survey);
//        SurveyResponse responses = createSurveyResponses(user, nodes.get(0));
//        List<SurveyQuestion> questions = createSurveyQuestions(survey);
//        List<SurveyQuestionItem> items = createSurveyQuestionItems(questions);
//        List<SurveyQuestionCandidateAnswer> candidates = createSurveyQuestionCandidateAnswers(items);
//        List<SurveyQuestionAnswer> answers = createSurveyQuestionAnswers(responses, candidates);

        AbstractDao.getCurrentSession().getTransaction().commit();
    }

    public static void printSurveyStructuralNodesOrganized(SurveyStructuralNode node)
    {
        if(node == null) return;
       
        for(SurveyStructuralNode n : node.getNodes())
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println(+n.getId()+" - "+n.getMsg());
            printSurveyStructuralNodesOrganized(n);
        }
    }

    public static void createBarChart(1.5.0/docs/api/java/lang/String.html">String mText, 1.5.0/docs/api/java/lang/String.html">String hText, 1.5.0/docs/api/java/lang/String.html">String vText, 1.5.0/docs/api/java/lang/String.html">String[] series, int[] numbers)
    {
        1.5.0/docs/api/java/io/File.html">File img = new 1.5.0/docs/api/java/io/File.html">File(Globals.TMP_DIR + "/teste.png");

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        if(series.length == numbers.length)
        {
            for(int i=0; i<series.length; i++)
            {
                dataset.addValue(numbers[i], series[i], "");
            }
        }

        CategoryDataset datasett = dataset;

        JFreeChart chart = ChartFactory.createBarChart(mText,hText,vText,datasett,PlotOrientation.VERTICAL,true,true,false);

        try {
            ChartUtilities.saveChartAsPNG(img, chart, 400, 300);
        } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
            e.printStackTrace();
        }
    }

    public static void displayObjectList(5+0%2Fdocs%2Fapi+List">List list)
    {
        1.5.0/docs/api/java/util/Iterator.html">Iterator iter = list.iterator();
        if (!iter.hasNext())
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println("No objects to display.");
            return;
        }
        while (iter.hasNext())
        {
            5+0%2Fdocs%2Fapi+Object">Object obj = iter.next();

            1.5.0/docs/api/java/lang/System.html">System.out.println(obj);
        }
    }

    public static void displayObjectListArray(5+0%2Fdocs%2Fapi+List">List list)
    {
        1.5.0/docs/api/java/util/Iterator.html">Iterator iter = list.iterator();
        if (!iter.hasNext())
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println("No objects to display.");
            return;
        }
        while (iter.hasNext())
        {
            5+0%2Fdocs%2Fapi+Object">Object[] objs = (5+0%2Fdocs%2Fapi+Object">Object[]) iter.next();

            1.5.0/docs/api/java/lang/System.html">System.out.print(objs[0]);
            1.5.0/docs/api/java/lang/System.html">System.out.print(" ");
            1.5.0/docs/api/java/lang/System.html">System.out.print(objs[1]);
            1.5.0/docs/api/java/lang/System.html">System.out.print(" ");
            1.5.0/docs/api/java/lang/System.html">System.out.println(objs[2]);
        }
    }
}