Subversion Repositories bacoAlunos

Rev

Rev 1310 | Rev 1703 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
808 jmachado 1
package pt.estgp.estgweb.services.assessments;
2
 
3
import com.itextpdf.text.DocumentException;
4
import jomm.utils.FilesUtils;
5
import org.apache.log4j.Logger;
6
import org.apache.struts.upload.FormFile;
7
import pt.estgp.estgweb.Globals;
8
import pt.estgp.estgweb.domain.*;
9
import pt.estgp.estgweb.domain.dao.DaoFactory;
10
import pt.estgp.estgweb.domain.views.*;
11
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
12
import pt.estgp.estgweb.services.data.RepositoryService;
13
import pt.utl.ist.berserk.logic.serviceManager.IService;
14
 
15
import java.io.IOException;
16
import java.util.Date;
17
 
18
/**
19
 * Created by IntelliJ IDEA.
20
 * User: Filipe Matos
21
 * Date: 6/Ago/2013
22
 * Time: 2:20:23
23
 * To change this template use File | Settings | File Templates.
24
 */
25
public class InsertAssessmentAnswersService implements IService {
26
 
27
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(InsertAssessmentAnswersService.class);
28
 
29
    private LoadAssessmentService loadAssessmentService = new LoadAssessmentService();
30
    private RepositoryService repositoryService = new RepositoryService();
31
    private GeneratePdfService generatePdfService = new GeneratePdfService();
32
 
33
    public AssessmentView run(long responseId, AssessmentView assessmentView, UserSession userSession)
34
    {
35
        AssessmentResponse response = DaoFactory.getAssessmentResponseDaoImpl().get(responseId);
36
 
37
        if(response.isAnswered()) return null;
38
 
39
        for(AssessmentQuestionView qView : assessmentView.getQuestions())
40
        {
41
            for(AssessmentQuestionItemView iView : qView.getQuestionItems())
42
            {
43
                for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
44
                {
45
                    for(AssessmentQuestionAnswerView aView : pView.getAnswers())
46
                    {
47
                        if(aView.getId() <= 0)
48
                        {
49
                            AssessmentQuestionAnswerImpl a = DomainObjectFactory.createAssessmentQuestionAnswerImpl();
50
                            aView.persistViewInObject(a);
51
 
52
                            AssessmentQuestionPossibleAnswerImpl p = (AssessmentQuestionPossibleAnswerImpl) DaoFactory.getAssessmentQuestionPossibleAnswerDaoImpl().get(pView.getId());
53
 
54
                            a.setPossibleAnswer(p);
55
                            a.setResponse(response);
56
                            a.setEvaluated(false);
57
                            if(iView.getUploadFile() != null && iView.getUploadFile().getFileSize()>0)
58
                            {   //tratar de salvar o ficheiro e guardar o identifier
59
                                FormFile file = iView.getUploadFile();
60
                                1.5.0/docs/api/java/lang/String.html">String extension = FilesUtils.getExtension(file.getFileName());
61
                                1.5.0/docs/api/java/lang/String.html">String description = "assessment.answer.file "+assessmentView.getCourseUnit().getName()+" of "+ userSession.getUser().getUsername();
62
                                1.5.0/docs/api/java/lang/String.html">String identifier = null;
63
                                try {
64
 
65
                                    identifier = repositoryService.storeRepositoryFile(file.getInputStream(),file.getContentType(),extension,file.getFileSize(),file.getFileName(),description, ResourceAccessControlEnum.publicDomain,userSession);
66
                                    a.setIdentifier(identifier);
67
 
68
                                } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
69
                                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
70
                                }
71
                            }
1600 jmachado 72
                            //verificar se sao questoes de correccao automatica para atribuir cotacao
808 jmachado 73
                            //e serem colocadas como corrigidas
74
                            if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_RADIO)
75
                                    || qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX)
76
                                    || qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_CHECK))
77
                            {
78
                                a.setQuotation(p.getQuotation());
79
                                a.setEvaluated(true);
80
                            }
81
 
82
                            DaoFactory.getAssessmentQuestionAnswerDaoImpl().save(a);
83
                        }
84
                    }
85
                }
86
            }
87
        }
88
 
89
        response.setDate(new 5+0%2Fdocs%2Fapi+Date">Date());
90
        response.setAnswered(true);
91
        //verificar se so respondeu a questoes de correccao automatica para ser ja colocada a nota
92
        //e definida a resposta como avaliada
93
        boolean evaluated = true;
94
        double quotationTotal=0;
95
        for(AssessmentQuestionAnswer aQa : response.getAnswers())
96
        {
97
            if(!aQa.isEvaluated())
98
            {
99
                evaluated=false;
100
            }
101
            quotationTotal+=aQa.getQuotation();
102
        }
103
        if(evaluated)
104
        {
105
            response.setEvaluated(true);
106
            response.setQuotation(quotationTotal);
107
        }
108
 
109
        try {
110
            generatePdfService.generateAssessmentResponsePdf(response.getId(),response.getAssessment().getId(),userSession);
111
        } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
112
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
113
        } catch (DocumentException e) {
114
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
115
        }
116
 
117
        logger.info("Answer inserted to assessment with id: "+assessmentView.getId());
118
 
119
        return loadAssessmentService.run(assessmentView.getId(), userSession);
120
    }
121
 
122
}