Subversion Repositories bacoAlunos

Rev

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

Rev Author Line No. Line
1312 jmachado 1
package pt.estgp.estgweb.filters.filters;
2
 
3
import org.apache.log4j.Logger;
4
import pt.estgp.estgweb.Globals;
5
import pt.estgp.estgweb.domain.CourseUnitImpl;
6
import pt.estgp.estgweb.domain.CourseUnitImpl.CourseUnitClearancesOperation;
7
import pt.estgp.estgweb.domain.Teacher;
8
import pt.estgp.estgweb.domain.UserSessionImpl;
9
import pt.estgp.estgweb.domain.dao.DaoFactory;
10
import pt.estgp.estgweb.domain.utils.SimpleClearanceRuledSupport;
11
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
12
import pt.utl.ist.berserk.ServiceRequest;
13
import pt.utl.ist.berserk.ServiceResponse;
14
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
15
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
16
 
17
import java.util.List;
18
 
19
/**
20
 * @author Jorge Machado
21
 * @date 4/Jun/2008
22
 * @see pt.estgp.estgweb.filters.filters
23
 */
24
public class CourseUnitEvaluationClearancesFilter extends LoadControlFilter
25
{
26
    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(CourseUnitEvaluationClearancesFilter.class);
27
    public static final 1.5.0/docs/api/java/lang/String.html">String COURSEUNIT_EVALUATION_CLEARED_SERV_PARAM = "COURSEUNIT_EVALUATION_CLEARED";
28
 
29
    public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, 1.5.0/docs/api/java/lang/Exception.html">Exception
30
    {
31
        UserSessionImpl usession = (UserSessionImpl) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
32
 
33
        1.5.0/docs/api/java/lang/Long.html">Long unitId = (1.5.0/docs/api/java/lang/Long.html">Long) request.getServiceParameters().getParameter((1.5.0/docs/api/java/lang/String.html">String) filterParameters.parametersArray()[0]);
34
        CourseUnitImpl c = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().get(unitId);
35
 
36
        1.5.0/docs/api/java/lang/String.html">String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
37
        List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
38
        List<Long> activeCourseIds = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveCourseIds();
39
 
40
        boolean isActiveYear = activeYear != null && c.getImportYear().equals(activeYear);
41
        boolean isActiveDegree = activeDegrees!=null && activeDegrees.contains(c.getCourse().getDegree());
42
        boolean isActiveCourseId = activeCourseIds!=null && activeCourseIds.contains(c.getCourse().getId());
43
 
44
        boolean activePeriod = (isActiveYear && (isActiveCourseId || isActiveDegree));
45
        boolean active = activePeriod || c.isEvaluationOpenByAdmin();
46
 
1316 jmachado 47
        boolean isComplete = c.getCourseUnitEvaluation() != null && c.getCourseUnitEvaluation().isTeacherComplete() && !c.getCourseUnitEvaluation().isClosed();
48
        boolean isClosed = c.getCourseUnitEvaluation() != null && c.getCourseUnitEvaluation().isClosed();
1312 jmachado 49
        boolean isEdit = !isClosed && !isComplete;
50
 
51
 
52
        SimpleClearanceRuledSupport s = new SimpleClearanceRuledSupport();
53
        s.setDirty();
54
 
55
        if(isEdit)
56
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_STATE_EDIT.name(),usession);
57
        else if(isComplete)
58
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_STATE_COMPLETE.name(),usession);
59
        else if(isClosed)
60
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_STATE_CLOSED.name(),usession);
61
 
62
        if(activePeriod)
63
        {
64
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE.name(),usession);
65
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE_REGULAR_PERIOD.name(),usession);
66
        }
67
        if(c.isEvaluationOpenByAdmin())
68
        {
69
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE.name(),usession);
70
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE_SPECIAL_ADMIN.name(),usession);
71
        }
72
 
73
 
74
        if(usession.getUser() != null && usession.getUser().isSuperuserOrAdmin()
75
                || usession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
76
        {
77
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_ALL.name(),usession);
78
        }
79
 
80
        if(usession.getUser() != null && usession.getUser() instanceof Teacher)
81
        {
82
            boolean teacher = ((Teacher)(usession.getUser())).isTeacherOfCourseUnit(c.getId(),true);
83
            boolean responsable = c.getResponsableTeacher()!=null && usession.getUser().getId() == c.getResponsableTeacher().getId();
84
            if(teacher)
85
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_TEACHER.name(), usession);
86
            if(responsable)
87
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_RESP_TEACHER.name(), usession);
88
            if(teacher || responsable)
89
            {
90
                //s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_TEACHER.name(), usession);
91
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(),usession);
92
                if(active && isEdit)
93
                {
94
                    s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession);
95
                    s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession);
96
                    s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_COMPLETE.name(),usession);
97
                }
98
            }
99
        }
100
 
101
        if(usession.getUser() != null && usession.getUser() instanceof Teacher
102
                && (((usession.getUser())).hasRole(c.getCourse().getValidationRole())
103
                ||
104
                ((usession.getUser()) == c.getCourse().getCoordinator()))
105
                )
106
        {
107
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_COMMISSION.name(), usession);
108
            s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(), usession);
109
            if(active && isEdit)
110
            {
111
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession);
112
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession);
113
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession);
114
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_COMPLETE.name(),usession);
115
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession);
116
            }
117
            else if(active && isComplete)
118
            {
119
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession);
120
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession);
121
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession);
122
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession);
123
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession);
124
            }
125
            else if(active && isClosed)
126
            {
127
                s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession);
128
            }
129
        }
130
        c.setClearanceRuledSupport(s);
131
        request.getServiceParameters().addParameter(COURSEUNIT_EVALUATION_CLEARED_SERV_PARAM,c);
132
    }
133
}