Subversion Repositories bacoAlunos

Rev

Rev 1310 | 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 jomm.dao.impl.AbstractDao;
4
import org.apache.log4j.Logger;
5
import pt.estgp.estgweb.domain.*;
6
import pt.estgp.estgweb.domain.dao.DaoFactory;
7
import pt.estgp.estgweb.domain.views.AssessmentQuestionItemView;
8
import pt.estgp.estgweb.domain.views.AssessmentQuestionPossibleAnswerView;
9
import pt.estgp.estgweb.domain.views.AssessmentQuestionView;
10
import pt.estgp.estgweb.domain.views.AssessmentView;
11
import pt.estgp.estgweb.services.data.ImageManager;
12
import pt.estgp.estgweb.services.surveys.SurveyStatusEnum;
13
import pt.estgp.estgweb.utils.DatesUtils;
14
import pt.utl.ist.berserk.logic.serviceManager.IService;
15
 
16
import java.util.Date;
17
 
18
/**
19
 * Created by IntelliJ IDEA.
20
 * User: Filipe Matos
21
 * Date: 31/Jul/2013
22
 * Time: 16:46:26
23
 * To change this template use File | Settings | File Templates.
24
 */
25
public class CreateEditAssessmentService 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(CreateEditAssessmentService.class);
28
 
29
    public AssessmentView createEditAssessmentService(AssessmentView assessmentView, UserSession userSession)
30
    {
31
        // Assessment
32
        AssessmentImpl a;
33
        if(assessmentView.getId() <= 0)
34
        {
35
            a = DomainObjectFactory.createAssessmentImpl();
36
            assessmentView.persistViewInObject(a);
37
            a.setOwner(userSession.getUser());
38
            a.setSemester(DatesUtils.getSemestre());
995 jmachado 39
            a.setYear(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());//nao e' usado este metodo
808 jmachado 40
            a.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
41
            a.setStatusPercentage(0);
42
            a.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus());
43
            CourseUnit cU = DaoFactory.getCourseUnitDaoImpl().get(assessmentView.getCourseUnit().getId());
44
            a.setCourseUnit(cU);
45
 
46
            DaoFactory.getAssessmentDaoImpl().save(a);
47
        }
48
        else
49
        {
50
            // delete questions, items, possibles
51
            processDeletedObjects(assessmentView);
52
            a = DaoFactory.getAssessmentDaoImpl().get(assessmentView.getId());
53
            assessmentView.persistViewInObject(a);
54
            CourseUnit cU = DaoFactory.getCourseUnitDaoImpl().get(assessmentView.getCourseUnit().getId());
55
            a.setCourseUnit(cU);
56
        }
57
 
58
        // AssessmentQuestions
59
        for(AssessmentQuestionView questionView: assessmentView.getQuestions())
60
        {
61
            AssessmentQuestion q;
62
            if(questionView.getId() <= 0)
63
            {
64
                q = DomainObjectFactory.createAssessmentQuestionImpl();
65
                questionView.persistViewInObject(q);
66
                q.setAssessment(a);
67
                //image
68
                if(questionView.getImage() != null)
69
                {
70
                    DaoFactory.getImageDaoImpl().save(questionView.getImage());
71
                    ImageManager.store((ImageImpl) questionView.getImage());
72
                    ((ImageImpl)questionView.getImage()).setImage(null);
73
                    q.setImage(questionView.getImage());
74
                }
75
                DaoFactory.getAssessmentQuestionDaoImpl().save(q);
76
            }
77
            else
78
            {
79
                q = DaoFactory.getAssessmentQuestionDaoImpl().get(questionView.getId());
80
                questionView.persistViewInObject(q);
81
                //image
82
                if(questionView.getImage() != null)
83
                {
84
                    if(q.getImage() != null)
85
                    {
86
                        DaoFactory.getImageDaoImpl().delete(q.getImage().getId());
87
                    }
88
                    DaoFactory.getImageDaoImpl().save(questionView.getImage());
89
                    ImageManager.store((ImageImpl) questionView.getImage());
90
                    q.setImage(questionView.getImage());
91
                }
92
            }
93
 
94
            // AssessmentQuestionItems
95
            for(AssessmentQuestionItemView itemView: questionView.getQuestionItems())
96
            {
97
                AssessmentQuestionItem qi;
98
                if(itemView.getId() <= 0)
99
                {
100
                    qi = DomainObjectFactory.createAssessmentQuestionItemImpl();
101
                    itemView.persistViewInObject(qi);
102
                    qi.setQuestion(q);
103
                    DaoFactory.getAssessmentQuestionItemDaoImpl().save(qi);
104
                }
105
                else
106
                {
107
                    qi = DaoFactory.getAssessmentQuestionItemDaoImpl().get(itemView.getId());
108
                    itemView.persistViewInObject(qi);
109
                }
110
 
111
                // AssessmentQuestionPossibleAnswers
112
                for(AssessmentQuestionPossibleAnswerView possibleAnswerView: itemView.getPossibleAnswers())
113
                {
114
                    AssessmentQuestionPossibleAnswer pa;
115
                    if(possibleAnswerView.getId() <= 0)
116
                    {
117
                        pa = DomainObjectFactory.createAssessmentQuestionPossibleAnswerImpl();
118
                        possibleAnswerView.persistViewInObject(pa);
119
                        pa.setQuestionItem(qi);
120
                        DaoFactory.getAssessmentQuestionPossibleAnswerDaoImpl().save(pa);
121
                    }
122
                    else
123
                    {
124
                        pa = DaoFactory.getAssessmentQuestionPossibleAnswerDaoImpl().get(possibleAnswerView.getId());
125
                        possibleAnswerView.persistViewInObject(pa);
126
                    }
127
                }
128
            }
129
        }
130
 
131
        AssessmentView view = new AssessmentView(a);
132
 
133
        AbstractDao.getCurrentSession().flush();
134
        AbstractDao.getCurrentSession().getTransaction().commit();
135
        AbstractDao.getCurrentSession().beginTransaction();
136
 
137
        return view;
138
 
139
    }
140
 
141
    private void processDeletedObjects(AssessmentView assessmentView)
142
    {
143
 
144
        1.5.0/docs/api/java/lang/String.html">String deletedCandidatesIdsStr = assessmentView.getDeletedCandidates();
145
        if(deletedCandidatesIdsStr != null)
146
        {
147
            1.5.0/docs/api/java/lang/String.html">String[] deletedCandidatesIds = deletedCandidatesIdsStr.split(",");
148
            for(1.5.0/docs/api/java/lang/String.html">String deletedCandidateId : deletedCandidatesIds)
149
            {
150
                if(deletedCandidateId.length() <= 0) continue;
151
                long id = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(deletedCandidateId);
152
                AssessmentQuestionPossibleAnswerImpl pa = (AssessmentQuestionPossibleAnswerImpl) DaoFactory.getAssessmentQuestionPossibleAnswerDaoImpl().load(id);
153
                DaoFactory.getAssessmentQuestionPossibleAnswerDaoImpl().delete(pa);
154
            }
155
        }
156
 
157
        1.5.0/docs/api/java/lang/String.html">String deletedItemsIdsStr = assessmentView.getDeletedItems();
158
        if(deletedItemsIdsStr != null)
159
        {
160
            1.5.0/docs/api/java/lang/String.html">String[] deletedItemsIds = deletedItemsIdsStr.split(",");
161
            for(1.5.0/docs/api/java/lang/String.html">String deletedItemId : deletedItemsIds)
162
            {
163
                if(deletedItemId.length() <= 0) continue;
164
                long id = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(deletedItemId);
165
                AssessmentQuestionItemImpl qi = (AssessmentQuestionItemImpl) DaoFactory.getAssessmentQuestionItemDaoImpl().load(id);
166
                DaoFactory.getAssessmentQuestionItemDaoImpl().delete(qi);
167
            }
168
        }
169
 
170
        1.5.0/docs/api/java/lang/String.html">String deletedQuestionsIdsStr = assessmentView.getDeletedQuestions();
171
        if(deletedQuestionsIdsStr != null)
172
        {
173
            1.5.0/docs/api/java/lang/String.html">String[] deletedQuestionsIds = deletedQuestionsIdsStr.split(",");
174
            for(1.5.0/docs/api/java/lang/String.html">String deletedQuestionId : deletedQuestionsIds)
175
            {
176
                if(deletedQuestionId.length() <= 0) continue;
177
                long id = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(deletedQuestionId);
178
                AssessmentQuestionImpl q = (AssessmentQuestionImpl) DaoFactory.getAssessmentQuestionDaoImpl().load(id);
179
                //delete image
180
                if(q.getImage() != null)
181
                {
182
                    DaoFactory.getImageDaoImpl().delete(q.getImage().getId());
183
                }
184
                DaoFactory.getAssessmentQuestionDaoImpl().delete(q);
185
            }
186
        }
187
    }
188
}