Subversion Repositories bacoAlunos

Rev

Rev 1926 | Rev 1994 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1926 Rev 1984
1
package pt.estgp.estgweb.services.courses;
1
package pt.estgp.estgweb.services.courses;
2
 
2
 
3
 
3
 
4
import jomm.dao.impl.AbstractDao;
4
import jomm.dao.impl.AbstractDao;
5
import jomm.utils.StreamsUtils;
5
import jomm.utils.StreamsUtils;
6
import org.apache.log4j.Logger;
6
import org.apache.log4j.Logger;
7
import org.json.JSONArray;
7
import org.json.JSONArray;
8
import org.json.JSONException;
8
import org.json.JSONException;
9
import org.json.JSONObject;
9
import org.json.JSONObject;
10
import pt.estgp.estgweb.domain.*;
10
import pt.estgp.estgweb.domain.*;
11
import pt.estgp.estgweb.domain.dao.DaoFactory;
11
import pt.estgp.estgweb.domain.dao.DaoFactory;
12
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
12
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
13
import pt.estgp.estgweb.services.courses.coursereport.CourseReportUtils;
13
import pt.estgp.estgweb.services.courses.coursereport.CourseReportUtils;
14
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.*;
14
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.*;
15
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.courseunitreport.CourseUnitSection;
15
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.courseunitreport.CourseUnitSection;
16
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.LearningGlobalAnalysisSection;
16
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.LearningGlobalAnalysisSection;
17
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.*;
17
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.*;
18
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.CourseUnitDtpStat;
18
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.CourseUnitDtpStat;
19
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.UnitDtpSemester;
19
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.UnitDtpSemester;
20
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.UnitsDtpTable;
20
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.UnitsDtpTable;
21
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.surveys.SurveysResultsSection;
21
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.surveys.SurveysResultsSection;
22
import pt.estgp.estgweb.services.data.RepositoryFile4JsonView;
22
import pt.estgp.estgweb.services.data.RepositoryFile4JsonView;
23
import pt.estgp.estgweb.services.data.RepositoryService;
23
import pt.estgp.estgweb.services.data.RepositoryService;
24
import pt.estgp.estgweb.services.questionarios.QuestionariosReportsService;
24
import pt.estgp.estgweb.services.questionarios.QuestionariosReportsService;
25
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.DataTable;
25
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.DataTable;
26
import pt.estgp.estgweb.utils.Globals;
26
import pt.estgp.estgweb.utils.Globals;
27
import pt.estgp.estgweb.utils.documentBuilder.DocumentSection;
27
import pt.estgp.estgweb.utils.documentBuilder.DocumentSection;
28
import pt.estgp.estgweb.utils.documentBuilder.QuestionariosDataTableComponent;
28
import pt.estgp.estgweb.utils.documentBuilder.QuestionariosDataTableComponent;
29
import pt.estgp.estgweb.web.controllers.utils.FileUploaded;
29
import pt.estgp.estgweb.web.controllers.utils.FileUploaded;
30
import pt.utl.ist.berserk.logic.serviceManager.IService;
30
import pt.utl.ist.berserk.logic.serviceManager.IService;
31
 
31
 
32
import java.io.IOException;
32
import java.io.IOException;
33
import java.io.InputStream;
33
import java.io.InputStream;
34
import java.net.URL;
34
import java.net.URL;
35
import java.net.URLConnection;
35
import java.net.URLConnection;
36
import java.util.*;
36
import java.util.*;
37
 
37
 
38
/**
38
/**
39
 * Created by jorgemachado on 14/10/17.
39
 * Created by jorgemachado on 14/10/17.
40
 */
40
 */
41
public class CourseReportServices implements IService
41
public class CourseReportServices implements IService
42
{
42
{
43
    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(CourseReportServices.class);
43
    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(CourseReportServices.class);
44
 
44
 
45
 
45
 
46
 
46
 
47
 
47
 
48
 
48
 
49
 
49
 
50
 
50
 
51
    /****************************************************************************/
51
    /****************************************************************************/
52
    /* SERVICOS CORE DOS REPORTS
52
    /* SERVICOS CORE DOS REPORTS
53
    /****************************************************************************/
53
    /****************************************************************************/
54
 
54
 
55
 
55
 
56
 
56
 
57
 
57
 
58
    /**
58
    /**
59
     *
59
     *
60
     * @param courseCode
60
     * @param courseCode
61
     * @param year
61
     * @param year
62
     * @return
62
     * @return
63
     * @throws IOException
63
     * @throws IOException
64
     * @throws JSONException
64
     * @throws JSONException
65
     */
65
     */
66
    public CourseReportDocument createNewCourseReportDocument(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String year) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException
66
    public CourseReportDocument createNewCourseReportDocument(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String year) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException
67
    {
67
    {
68
 
68
 
69
        Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
69
        Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
70
 
70
 
71
        CourseReportDocument reportCourseDocument = new CourseReportDocument();
71
        CourseReportDocument reportCourseDocument = new CourseReportDocument();
72
        reportCourseDocument.init(course,year);
72
        reportCourseDocument.init(course,year);
73
 
73
 
74
 
74
 
75
 
75
 
76
        //FIRST SERVICE TO CALL TO OBTAIN UNITS AND EVALUATIONS
76
        //FIRST SERVICE TO CALL TO OBTAIN UNITS AND EVALUATIONS
77
        //THIS IS THE BASE FOR THE REMAIN SERVICE CALLS
77
        //THIS IS THE BASE FOR THE REMAIN SERVICE CALLS
78
        List<DocumentSection> courseUnitSections = updateCleanCourseUnitSections(courseCode, year, reportCourseDocument);
78
        List<DocumentSection> courseUnitSections = updateCleanCourseUnitSections(courseCode, year, reportCourseDocument);
79
 
79
 
80
        //A tabela de resultados globais não vai ser utilizada
80
        //A tabela de resultados globais não vai ser utilizada
81
        //PARA CORRER ESTE SERVICO A PARTIR DA INTERFACE É PRECISO
81
        //PARA CORRER ESTE SERVICO A PARTIR DA INTERFACE É PRECISO
82
        //PERCEBER QUE DEPENDE DO SERVICO DE UPDATE DAS SECOES DAS COURSEUNITS
82
        //PERCEBER QUE DEPENDE DO SERVICO DE UPDATE DAS SECOES DAS COURSEUNITS
83
        UnitsLearningResultsTable unitsLearningResultsTable = updateCleanLearningResultsFromCourseUnitsSections(reportCourseDocument);
83
        UnitsLearningResultsTable unitsLearningResultsTable = updateCleanLearningResultsFromCourseUnitsSections(reportCourseDocument);
84
 
84
 
85
 
85
 
86
        //Atualiza no DOC a tabela de analise DTP
86
        //Atualiza no DOC a tabela de analise DTP
87
        UnitsDtpTable unitsDtpTable = updateDtpStatsTable4Course(reportCourseDocument, courseCode, year);
87
        UnitsDtpTable unitsDtpTable = updateDtpStatsTable4Course(reportCourseDocument, courseCode, year);
88
 
88
 
89
 
89
 
90
        //Atualiza as tabelas dos Quesitonários pedagogicos
90
        //Atualiza as tabelas dos Quesitonários pedagogicos
91
        SurveysResultsSection surveysResultsSection = updateSurveysDataTables(courseCode, year, reportCourseDocument);
91
        SurveysResultsSection surveysResultsSection = updateSurveysDataTables(courseCode, year, reportCourseDocument);
92
 
92
 
93
 
93
 
94
        return reportCourseDocument;
94
        return reportCourseDocument;
95
    }
95
    }
96
 
96
 
97
    public SurveysResultsSection updateSurveysDataTables(1.5.0/docs/api/java/lang/String.html">String courseCode, 1.5.0/docs/api/java/lang/String.html">String year, CourseReportDocument reportCourseDocument) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException {
97
    public SurveysResultsSection updateSurveysDataTables(1.5.0/docs/api/java/lang/String.html">String courseCode, 1.5.0/docs/api/java/lang/String.html">String year, CourseReportDocument reportCourseDocument) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException {
98
        SurveysSection surveysSection = (SurveysSection) reportCourseDocument.findDocumentSection(SurveysSection.class);
98
        SurveysSection surveysSection = (SurveysSection) reportCourseDocument.findDocumentSection(SurveysSection.class);
99
        SurveysResultsSection surveysResultsSection = (SurveysResultsSection) surveysSection.findSection(SurveysResultsSection.class);
99
        SurveysResultsSection surveysResultsSection = (SurveysResultsSection) surveysSection.findSection(SurveysResultsSection.class);
100
        QuestionariosDataTableComponent dataTableComponentS1 = (QuestionariosDataTableComponent) surveysResultsSection.getComponents().get(0);
100
        QuestionariosDataTableComponent dataTableComponentS1 = (QuestionariosDataTableComponent) surveysResultsSection.getComponents().get(0);
101
        QuestionariosDataTableComponent dataTableComponentS2 = (QuestionariosDataTableComponent) surveysResultsSection.getComponents().get(1);
101
        QuestionariosDataTableComponent dataTableComponentS2 = (QuestionariosDataTableComponent) surveysResultsSection.getComponents().get(1);
102
 
102
 
103
        QuestionariosReportsService questionariosReportsService = new QuestionariosReportsService();
103
        QuestionariosReportsService questionariosReportsService = new QuestionariosReportsService();
104
        1.5.0/docs/api/java/lang/String.html">String jsonDataTableS1 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode,year,"S1");
104
        1.5.0/docs/api/java/lang/String.html">String jsonDataTableS1 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode,year,"S1");
105
        1.5.0/docs/api/java/lang/String.html">String jsonDataTableS2 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode,year,"S2");
105
        1.5.0/docs/api/java/lang/String.html">String jsonDataTableS2 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode,year,"S2");
106
        DataTable dataTableS1 = DataTable.fromJson(jsonDataTableS1);
106
        DataTable dataTableS1 = DataTable.fromJson(jsonDataTableS1);
107
        DataTable dataTableS2 = DataTable.fromJson(jsonDataTableS2);
107
        DataTable dataTableS2 = DataTable.fromJson(jsonDataTableS2);
108
        dataTableComponentS1.setDataTable(dataTableS1);
108
        dataTableComponentS1.setDataTable(dataTableS1);
109
        dataTableComponentS2.setDataTable(dataTableS2);
109
        dataTableComponentS2.setDataTable(dataTableS2);
110
        return surveysResultsSection;
110
        return surveysResultsSection;
111
    }
111
    }
112
 
112
 
113
    /**
113
    /**
114
     * Este serviço atualiza a tabela de resultados de aprendizagem com base nas courseunitssections
114
     * Este serviço atualiza a tabela de resultados de aprendizagem com base nas courseunitssections
115
     * @param reportCourseDocument
115
     * @param reportCourseDocument
116
     * @return UnitsLearningResultsTable
116
     * @return UnitsLearningResultsTable
117
     */
117
     */
118
    public UnitsLearningResultsTable updateCleanLearningResultsFromCourseUnitsSections(CourseReportDocument reportCourseDocument)
118
    public UnitsLearningResultsTable updateCleanLearningResultsFromCourseUnitsSections(CourseReportDocument reportCourseDocument)
119
    {
119
    {
120
        CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class);
120
        CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class);
121
 
121
 
122
        LearningResultsSection learningResultsSection = (LearningResultsSection) reportCourseDocument.findDocumentSection(LearningResultsSection.class);
122
        LearningResultsSection learningResultsSection = (LearningResultsSection) reportCourseDocument.findDocumentSection(LearningResultsSection.class);
123
        UnitsLearningResultsTable learningResultsTable = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
123
        UnitsLearningResultsTable learningResultsTable = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
124
 
124
 
125
        Map<Integer,UnitsLearningResultYear> anosPlano = new HashMap<Integer, UnitsLearningResultYear>();
125
        Map<Integer,UnitsLearningResultYear> anosPlano = new HashMap<Integer, UnitsLearningResultYear>();
126
        Map<String,UnitsLearningResultSemester> anoSemestre = new HashMap<String, UnitsLearningResultSemester>();
126
        Map<String,UnitsLearningResultSemester> anoSemestre = new HashMap<String, UnitsLearningResultSemester>();
127
        for(DocumentSection subSection : unitReportsSection.getSections())
127
        for(DocumentSection subSection : unitReportsSection.getSections())
128
        {
128
        {
129
            CourseUnitSection unitSection = (CourseUnitSection) subSection;
129
            CourseUnitSection unitSection = (CourseUnitSection) subSection;
130
            int anoPlano = unitSection.getAnoPlano();
130
            int anoPlano = unitSection.getAnoPlano();
131
            UnitsLearningResultYear anoFound = anosPlano.get(anoPlano);
131
            UnitsLearningResultYear anoFound = anosPlano.get(anoPlano);
132
            if(anoFound == null)
132
            if(anoFound == null)
133
            {
133
            {
134
                anoFound = new UnitsLearningResultYear(anoPlano);
134
                anoFound = new UnitsLearningResultYear(anoPlano);
135
                anosPlano.put(anoPlano,anoFound);
135
                anosPlano.put(anoPlano,anoFound);
136
                learningResultsTable.getYears().add(anoFound);
136
                learningResultsTable.getYears().add(anoFound);
137
            }
137
            }
138
 
138
 
139
            1.5.0/docs/api/java/lang/String.html">String semestreCode = ((CourseUnitSection) subSection).getPeriod();
139
            1.5.0/docs/api/java/lang/String.html">String semestreCode = ((CourseUnitSection) subSection).getPeriod();
140
            UnitsLearningResultSemester semestreFound = anoSemestre.get(anoPlano + "$" + semestreCode);
140
            UnitsLearningResultSemester semestreFound = anoSemestre.get(anoPlano + "$" + semestreCode);
141
            if(semestreFound == null)
141
            if(semestreFound == null)
142
            {
142
            {
143
                semestreFound = new UnitsLearningResultSemester(semestreCode);
143
                semestreFound = new UnitsLearningResultSemester(semestreCode);
144
                anoSemestre.put(anoPlano + "$" + semestreCode,semestreFound);
144
                anoSemestre.put(anoPlano + "$" + semestreCode,semestreFound);
145
                anoFound.getSemesters().add(semestreFound);
145
                anoFound.getSemesters().add(semestreFound);
146
            }
146
            }
147
 
147
 
148
            UnitsLearningResultUc uc = new UnitsLearningResultUc();
148
            UnitsLearningResultUc uc = new UnitsLearningResultUc();
149
            uc.setPeriod(semestreCode);
149
            uc.setPeriod(semestreCode);
150
            uc.setName(unitSection.getName());
150
            uc.setName(unitSection.getName());
151
            uc.setSigesCode(unitSection.getSigesCode());
151
            uc.setSigesCode(unitSection.getSigesCode());
152
            if(unitSection.getCourseUnitEvaluation() != null)
152
            if(unitSection.getCourseUnitEvaluation() != null)
153
            {
153
            {
154
 
154
 
155
                uc.setCumprimentoProgramaPercent(unitSection.getCourseUnitEvaluation().getCumprimentoProgramaPercent());
155
                uc.setCumprimentoProgramaPercent(unitSection.getCourseUnitEvaluation().getCumprimentoProgramaPercent());
156
                uc.setAlunosInscritos(unitSection.getCourseUnitEvaluation().getNumAlunosInscritos());
156
                uc.setAlunosInscritos(unitSection.getCourseUnitEvaluation().getNumAlunosInscritos());
157
 
157
 
158
                uc.setAprovados1013(unitSection.getCourseUnitEvaluation().getNumAlunosAprov1013());
158
                uc.setAprovados1013(unitSection.getCourseUnitEvaluation().getNumAlunosAprov1013());
159
                uc.setAprovados1416(unitSection.getCourseUnitEvaluation().getNumAlunosAprov1416());
159
                uc.setAprovados1416(unitSection.getCourseUnitEvaluation().getNumAlunosAprov1416());
160
                uc.setAprovados1720(unitSection.getCourseUnitEvaluation().getNumAlunosAprov1720());
160
                uc.setAprovados1720(unitSection.getCourseUnitEvaluation().getNumAlunosAprov1720());
161
                uc.setSemElementos(unitSection.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao());
161
                uc.setSemElementos(unitSection.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao());
162
                uc.setAprovados(unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal());
162
                uc.setAprovados(unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal());
163
                uc.setReprovados(unitSection.getCourseUnitEvaluation().getNumAlunosInscritos() - unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal() - unitSection.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao());
163
                uc.setReprovados(unitSection.getCourseUnitEvaluation().getNumAlunosInscritos() - unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal() - unitSection.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao());
164
 
164
 
165
                if(uc.getAlunosInscritos() > 0)
165
                if(uc.getAlunosInscritos() > 0)
166
                {
166
                {
167
                    uc.setAprovadosPercent((float) (uc.getAprovados() * 100.0 / uc.getAlunosInscritos()));
167
                    uc.setAprovadosPercent((float) (uc.getAprovados() * 100.0 / uc.getAlunosInscritos()));
168
                    uc.setReprovadosPercent((float) (uc.getReprovados() * 100.0 / uc.getAlunosInscritos()));
168
                    uc.setReprovadosPercent((float) (uc.getReprovados() * 100.0 / uc.getAlunosInscritos()));
169
                    uc.setSemElementosPercent((float) (uc.getSemElementos() * 100.0 / uc.getAlunosInscritos()));
169
                    uc.setSemElementosPercent((float) (uc.getSemElementos() * 100.0 / uc.getAlunosInscritos()));
170
                }
170
                }
171
 
171
 
172
                if(uc.getAprovados() > 0)
172
                if(uc.getAprovados() > 0)
173
                {
173
                {
174
                    uc.setAprovados1013Percent((float) (uc.getAprovados1013() * 100.0 / uc.getAprovados()));
174
                    uc.setAprovados1013Percent((float) (uc.getAprovados1013() * 100.0 / uc.getAprovados()));
175
                    uc.setAprovados1416Percent((float) (uc.getAprovados1416() * 100.0 / uc.getAprovados()));
175
                    uc.setAprovados1416Percent((float) (uc.getAprovados1416() * 100.0 / uc.getAprovados()));
176
                    uc.setAprovados1720Percent((float) (uc.getAprovados1720() * 100.0 / uc.getAprovados()));
176
                    uc.setAprovados1720Percent((float) (uc.getAprovados1720() * 100.0 / uc.getAprovados()));
177
                }
177
                }
178
            }
178
            }
179
            semestreFound.getUcs().add(uc);
179
            semestreFound.getUcs().add(uc);
180
        }
180
        }
181
 
181
 
182
        1.5.0/docs/api/java/util/Collections.html">Collections.sort(learningResultsTable.getYears(), new Comparator<UnitsLearningResultYear>() {
182
        1.5.0/docs/api/java/util/Collections.html">Collections.sort(learningResultsTable.getYears(), new Comparator<UnitsLearningResultYear>() {
183
            @1.5.0/docs/api/java/lang/Override.html">Override
183
            @1.5.0/docs/api/java/lang/Override.html">Override
184
            public int compare(UnitsLearningResultYear o1, UnitsLearningResultYear o2) {
184
            public int compare(UnitsLearningResultYear o1, UnitsLearningResultYear o2) {
185
                return o1.getAno() - o2.getAno();
185
                return o1.getAno() - o2.getAno();
186
            }
186
            }
187
        });
187
        });
188
 
188
 
189
        for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears())
189
        for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears())
190
        {
190
        {
191
            1.5.0/docs/api/java/util/Collections.html">Collections.sort(learningYearLine.getSemesters(),new Comparator<UnitsLearningResultSemester>() {
191
            1.5.0/docs/api/java/util/Collections.html">Collections.sort(learningYearLine.getSemesters(),new Comparator<UnitsLearningResultSemester>() {
192
                @1.5.0/docs/api/java/lang/Override.html">Override
192
                @1.5.0/docs/api/java/lang/Override.html">Override
193
                public int compare(UnitsLearningResultSemester o1, UnitsLearningResultSemester o2) {
193
                public int compare(UnitsLearningResultSemester o1, UnitsLearningResultSemester o2) {
194
                    return o1.getSemestre().compareTo(o2.getSemestre());
194
                    return o1.getSemestre().compareTo(o2.getSemestre());
195
                }
195
                }
196
            });
196
            });
197
        }
197
        }
198
 
198
 
199
 
199
 
200
        //UPDATE TOTAIS DE SEMESTRES E DE ANOS
200
        //UPDATE TOTAIS DE SEMESTRES E DE ANOS
201
        float totalCumProgPercentGlobal = 0;
201
        float totalCumProgPercentGlobal = 0;
202
        float totalInscritosGlobal = 0;
202
        float totalInscritosGlobal = 0;
203
        float totalReprovadosPercentGlobal = 0;
203
        float totalReprovadosPercentGlobal = 0;
204
        float totalAprovadosPercentGlobal = 0;
204
        float totalAprovadosPercentGlobal = 0;
205
        float totalSemElementosPercentGlobal = 0;
205
        float totalSemElementosPercentGlobal = 0;
206
        float totalAprovados1013PercentGlobal = 0;
206
        float totalAprovados1013PercentGlobal = 0;
207
        float totalAprovados1416PercentGlobal = 0;
207
        float totalAprovados1416PercentGlobal = 0;
208
        float totalAprovados1720PercentGlobal = 0;
208
        float totalAprovados1720PercentGlobal = 0;
209
        for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears())
209
        for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears())
210
        {
210
        {
211
            float totalCumProgPercentAno = 0;
211
            float totalCumProgPercentAno = 0;
212
            float totalInscritosAno = 0;
212
            float totalInscritosAno = 0;
213
            float totalReprovadosPercentAno = 0;
213
            float totalReprovadosPercentAno = 0;
214
            float totalAprovadosPercentAno = 0;
214
            float totalAprovadosPercentAno = 0;
215
            float totalSemElementosPercentAno = 0;
215
            float totalSemElementosPercentAno = 0;
216
            float totalAprovados1013PercentAno = 0;
216
            float totalAprovados1013PercentAno = 0;
217
            float totalAprovados1416PercentAno = 0;
217
            float totalAprovados1416PercentAno = 0;
218
            float totalAprovados1720PercentAno = 0;
218
            float totalAprovados1720PercentAno = 0;
219
 
219
 
220
            for(UnitsLearningResultSemester semester: learningYearLine.getSemesters())
220
            for(UnitsLearningResultSemester semester: learningYearLine.getSemesters())
221
            {
221
            {
222
                float totalCumProgPercent = 0;
222
                float totalCumProgPercent = 0;
223
                float totalInscritos = 0;
223
                float totalInscritos = 0;
224
                float totalReprovadosPercent = 0;
224
                float totalReprovadosPercent = 0;
225
                float totalAprovadosPercent = 0;
225
                float totalAprovadosPercent = 0;
226
                float totalSemElementosPercent = 0;
226
                float totalSemElementosPercent = 0;
227
                float totalAprovados1013Percent = 0;
227
                float totalAprovados1013Percent = 0;
228
                float totalAprovados1416Percent = 0;
228
                float totalAprovados1416Percent = 0;
229
                float totalAprovados1720Percent = 0;
229
                float totalAprovados1720Percent = 0;
230
                for(UnitsLearningResultUc uc: semester.getUcs())
230
                for(UnitsLearningResultUc uc: semester.getUcs())
231
                {
231
                {
232
                    totalCumProgPercent += uc.getCumprimentoProgramaPercent();
232
                    totalCumProgPercent += uc.getCumprimentoProgramaPercent();
233
                    totalInscritos += uc.getAlunosInscritos();
233
                    totalInscritos += uc.getAlunosInscritos();
234
                    totalAprovadosPercent += uc.getAprovadosPercent();
234
                    totalAprovadosPercent += uc.getAprovadosPercent();
235
                    totalReprovadosPercent += uc.getReprovadosPercent();
235
                    totalReprovadosPercent += uc.getReprovadosPercent();
236
                    totalSemElementosPercent += uc.getSemElementosPercent();
236
                    totalSemElementosPercent += uc.getSemElementosPercent();
237
                    totalAprovados1013Percent += uc.getAprovados1013();
237
                    totalAprovados1013Percent += uc.getAprovados1013();
238
                    totalAprovados1416Percent += uc.getAprovados1416();
238
                    totalAprovados1416Percent += uc.getAprovados1416();
239
                    totalAprovados1720Percent += uc.getAprovados1720();
239
                    totalAprovados1720Percent += uc.getAprovados1720();
240
                }
240
                }
241
                //media de inscritos
241
                //media de inscritos
242
                if(semester.getUcs().size() > 0)
242
                if(semester.getUcs().size() > 0)
243
                {
243
                {
244
                    semester.setCumprimentoProgramaPercent( totalCumProgPercent / ((float)semester.getUcs().size()));
244
                    semester.setCumprimentoProgramaPercent( totalCumProgPercent / ((float)semester.getUcs().size()));
245
                    semester.setAlunosInscritos( totalInscritos  / ((float)semester.getUcs().size()));
245
                    semester.setAlunosInscritos( totalInscritos  / ((float)semester.getUcs().size()));
246
                    semester.setAprovadosPercent( totalAprovadosPercent  / ((float)semester.getUcs().size()));
246
                    semester.setAprovadosPercent( totalAprovadosPercent  / ((float)semester.getUcs().size()));
247
                    semester.setReprovadosPercent( totalReprovadosPercent  / ((float)semester.getUcs().size()));
247
                    semester.setReprovadosPercent( totalReprovadosPercent  / ((float)semester.getUcs().size()));
248
                    semester.setSemElementosPercent( totalSemElementosPercent / ((float)semester.getUcs().size()));
248
                    semester.setSemElementosPercent( totalSemElementosPercent / ((float)semester.getUcs().size()));
249
                    semester.setAprovados1013Percent( totalAprovados1013Percent / ((float)semester.getUcs().size()));
249
                    semester.setAprovados1013Percent( totalAprovados1013Percent / ((float)semester.getUcs().size()));
250
                    semester.setAprovados1416Percent( totalAprovados1416Percent / ((float)semester.getUcs().size()));
250
                    semester.setAprovados1416Percent( totalAprovados1416Percent / ((float)semester.getUcs().size()));
251
                    semester.setAprovados1720Percent( totalAprovados1720Percent / ((float)semester.getUcs().size()));
251
                    semester.setAprovados1720Percent( totalAprovados1720Percent / ((float)semester.getUcs().size()));
252
                }
252
                }
253
                totalCumProgPercentAno += semester.getCumprimentoProgramaPercent();
253
                totalCumProgPercentAno += semester.getCumprimentoProgramaPercent();
254
                totalInscritosAno += semester.getAlunosInscritos();
254
                totalInscritosAno += semester.getAlunosInscritos();
255
                totalAprovadosPercentAno += semester.getAprovadosPercent();
255
                totalAprovadosPercentAno += semester.getAprovadosPercent();
256
                totalReprovadosPercentAno += semester.getReprovadosPercent();
256
                totalReprovadosPercentAno += semester.getReprovadosPercent();
257
                totalSemElementosPercentAno += semester.getSemElementosPercent();
257
                totalSemElementosPercentAno += semester.getSemElementosPercent();
258
                totalAprovados1013PercentAno += semester.getAprovados1013();
258
                totalAprovados1013PercentAno += semester.getAprovados1013();
259
                totalAprovados1416PercentAno += semester.getAprovados1416();
259
                totalAprovados1416PercentAno += semester.getAprovados1416();
260
                totalAprovados1720PercentAno += semester.getAprovados1720();
260
                totalAprovados1720PercentAno += semester.getAprovados1720();
261
            }
261
            }
262
            //media de inscritos
262
            //media de inscritos
263
            if(learningYearLine.getSemesters().size() > 0)
263
            if(learningYearLine.getSemesters().size() > 0)
264
            {
264
            {
265
                learningYearLine.setCumprimentoProgramaPercent( totalCumProgPercentAno / ((float)learningYearLine.getSemesters().size()));
265
                learningYearLine.setCumprimentoProgramaPercent( totalCumProgPercentAno / ((float)learningYearLine.getSemesters().size()));
266
                learningYearLine.setAlunosInscritos( totalInscritosAno  / ((float)learningYearLine.getSemesters().size()));
266
                learningYearLine.setAlunosInscritos( totalInscritosAno  / ((float)learningYearLine.getSemesters().size()));
267
                learningYearLine.setAprovadosPercent( totalAprovadosPercentAno  / ((float)learningYearLine.getSemesters().size()));
267
                learningYearLine.setAprovadosPercent( totalAprovadosPercentAno  / ((float)learningYearLine.getSemesters().size()));
268
                learningYearLine.setReprovadosPercent( totalReprovadosPercentAno  / ((float)learningYearLine.getSemesters().size()));
268
                learningYearLine.setReprovadosPercent( totalReprovadosPercentAno  / ((float)learningYearLine.getSemesters().size()));
269
                learningYearLine.setSemElementosPercent( totalSemElementosPercentAno / ((float)learningYearLine.getSemesters().size()));
269
                learningYearLine.setSemElementosPercent( totalSemElementosPercentAno / ((float)learningYearLine.getSemesters().size()));
270
                learningYearLine.setAprovados1013Percent( totalAprovados1013PercentAno / ((float)learningYearLine.getSemesters().size()));
270
                learningYearLine.setAprovados1013Percent( totalAprovados1013PercentAno / ((float)learningYearLine.getSemesters().size()));
271
                learningYearLine.setAprovados1416Percent( totalAprovados1416PercentAno / ((float)learningYearLine.getSemesters().size()));
271
                learningYearLine.setAprovados1416Percent( totalAprovados1416PercentAno / ((float)learningYearLine.getSemesters().size()));
272
                learningYearLine.setAprovados1720Percent( totalAprovados1720PercentAno / ((float)learningYearLine.getSemesters().size()));
272
                learningYearLine.setAprovados1720Percent( totalAprovados1720PercentAno / ((float)learningYearLine.getSemesters().size()));
273
            }
273
            }
274
            totalCumProgPercentGlobal += learningYearLine.getCumprimentoProgramaPercent();
274
            totalCumProgPercentGlobal += learningYearLine.getCumprimentoProgramaPercent();
275
            totalInscritosGlobal += learningYearLine.getAlunosInscritos();
275
            totalInscritosGlobal += learningYearLine.getAlunosInscritos();
276
            totalAprovadosPercentGlobal += learningYearLine.getAprovadosPercent();
276
            totalAprovadosPercentGlobal += learningYearLine.getAprovadosPercent();
277
            totalReprovadosPercentGlobal += learningYearLine.getReprovadosPercent();
277
            totalReprovadosPercentGlobal += learningYearLine.getReprovadosPercent();
278
            totalSemElementosPercentGlobal += learningYearLine.getSemElementosPercent();
278
            totalSemElementosPercentGlobal += learningYearLine.getSemElementosPercent();
279
            totalAprovados1013PercentGlobal += learningYearLine.getAprovados1013();
279
            totalAprovados1013PercentGlobal += learningYearLine.getAprovados1013();
280
            totalAprovados1416PercentGlobal += learningYearLine.getAprovados1416();
280
            totalAprovados1416PercentGlobal += learningYearLine.getAprovados1416();
281
            totalAprovados1720PercentGlobal += learningYearLine.getAprovados1720();
281
            totalAprovados1720PercentGlobal += learningYearLine.getAprovados1720();
282
        }
282
        }
283
 
283
 
284
        if(learningResultsTable.getYears().size() > 0)
284
        if(learningResultsTable.getYears().size() > 0)
285
        {
285
        {
286
            learningResultsTable.setCumprimentoProgramaPercent( totalCumProgPercentGlobal / ((float)learningResultsTable.getYears().size()));
286
            learningResultsTable.setCumprimentoProgramaPercent( totalCumProgPercentGlobal / ((float)learningResultsTable.getYears().size()));
287
            learningResultsTable.setAlunosInscritos( totalInscritosGlobal  / (learningResultsTable.getYears().size()));
287
            learningResultsTable.setAlunosInscritos( totalInscritosGlobal  / (learningResultsTable.getYears().size()));
288
            learningResultsTable.setAprovadosPercent( totalAprovadosPercentGlobal  / ((float)learningResultsTable.getYears().size()));
288
            learningResultsTable.setAprovadosPercent( totalAprovadosPercentGlobal  / ((float)learningResultsTable.getYears().size()));
289
            learningResultsTable.setReprovadosPercent( totalReprovadosPercentGlobal  / ((float)learningResultsTable.getYears().size()));
289
            learningResultsTable.setReprovadosPercent( totalReprovadosPercentGlobal  / ((float)learningResultsTable.getYears().size()));
290
            learningResultsTable.setSemElementosPercent( totalSemElementosPercentGlobal / ((float)learningResultsTable.getYears().size()));
290
            learningResultsTable.setSemElementosPercent( totalSemElementosPercentGlobal / ((float)learningResultsTable.getYears().size()));
291
            learningResultsTable.setAprovados1013Percent( totalAprovados1013PercentGlobal / ((float)learningResultsTable.getYears().size()));
291
            learningResultsTable.setAprovados1013Percent( totalAprovados1013PercentGlobal / ((float)learningResultsTable.getYears().size()));
292
            learningResultsTable.setAprovados1416Percent( totalAprovados1416PercentGlobal / ((float)learningResultsTable.getYears().size()));
292
            learningResultsTable.setAprovados1416Percent( totalAprovados1416PercentGlobal / ((float)learningResultsTable.getYears().size()));
293
            learningResultsTable.setAprovados1720Percent( totalAprovados1720PercentGlobal / ((float)learningResultsTable.getYears().size()));
293
            learningResultsTable.setAprovados1720Percent( totalAprovados1720PercentGlobal / ((float)learningResultsTable.getYears().size()));
294
        }
294
        }
295
        return learningResultsTable;
295
        return learningResultsTable;
296
    }
296
    }
297
 
297
 
298
 
298
 
299
    /**
299
    /**
300
     * Gera uma tabela de estatisticas dos DTP recorrendo ao servico WS de
300
     * Gera uma tabela de estatisticas dos DTP recorrendo ao servico WS de
301
     * load de tabelas DTP, caso o serviço nao devolva unidades são criadas novas
301
     * load de tabelas DTP, caso o serviço nao devolva unidades são criadas novas
302
     * com os valores a falso.
302
     * com os valores a falso.
303
     *
303
     *
304
     * @param courseCode
304
     * @param courseCode
305
     * @param year
305
     * @param year
306
     * @return UnitsDtpTable
306
     * @return UnitsDtpTable
307
     * @throws IOException
307
     * @throws IOException
308
     * @throws JSONException
308
     * @throws JSONException
309
     */
309
     */
310
    public UnitsDtpTable updateDtpStatsTable4Course(CourseReportDocument reportCourseDocument, 1.5.0/docs/api/java/lang/String.html">String courseCode, 1.5.0/docs/api/java/lang/String.html">String year) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException
310
    public UnitsDtpTable updateDtpStatsTable4Course(CourseReportDocument reportCourseDocument, 1.5.0/docs/api/java/lang/String.html">String courseCode, 1.5.0/docs/api/java/lang/String.html">String year) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException
311
    {
311
    {
312
 
312
 
313
        ReportsUcSummarySection reportsUcSummarySection = (ReportsUcSummarySection) reportCourseDocument.findDocumentSection(ReportsUcSummarySection.class);
313
        ReportsUcSummarySection reportsUcSummarySection = (ReportsUcSummarySection) reportCourseDocument.findDocumentSection(ReportsUcSummarySection.class);
314
        UnitsDtpTable unitsDtpTable = (UnitsDtpTable) reportsUcSummarySection.findDocComponent(UnitsDtpTable.class);
314
        UnitsDtpTable unitsDtpTable = (UnitsDtpTable) reportsUcSummarySection.findDocComponent(UnitsDtpTable.class);
315
        UnitDtpSemester semester1 = new UnitDtpSemester();
315
        UnitDtpSemester semester1 = new UnitDtpSemester();
316
        UnitDtpSemester semester2 = new UnitDtpSemester();
316
        UnitDtpSemester semester2 = new UnitDtpSemester();
317
        unitsDtpTable.setSemester1(semester1);
317
        unitsDtpTable.setSemester1(semester1);
318
        unitsDtpTable.setSemester2(semester2);
318
        unitsDtpTable.setSemester2(semester2);
319
 
319
 
320
        List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
320
        List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
321
 
321
 
322
        CourseUnitDtpStat[] statsLoaded;
322
        CourseUnitDtpStat[] statsLoaded;
323
        try
323
        try
324
        {
324
        {
325
            1.5.0/docs/api/java/lang/String.html">String json = loadCourseUnitDtpStats(courseCode,year);
325
            1.5.0/docs/api/java/lang/String.html">String json = loadCourseUnitDtpStats(courseCode,year);
326
            JSONObject response = new JSONObject(json);
326
            JSONObject response = new JSONObject(json);
327
            JSONArray stats = (JSONArray) response.get("dtpstats");
327
            JSONArray stats = (JSONArray) response.get("dtpstats");
328
            statsLoaded = CourseUnitDtpStat.fromJson(stats);
328
            statsLoaded = CourseUnitDtpStat.fromJson(stats);
329
        }
329
        }
330
        catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
330
        catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
331
        {
331
        {
332
            logger.error(e,e);
332
            logger.error(e,e);
333
            statsLoaded = new CourseUnitDtpStat[0];
333
            statsLoaded = new CourseUnitDtpStat[0];
334
        }
334
        }
335
 
335
 
336
 
336
 
337
        for(CourseUnit cu :units)
337
        for(CourseUnit cu :units)
338
        {
338
        {
339
            CourseUnitDtpStat statFound = CourseReportUtils.findCourseUnitDtpStat(statsLoaded, (CourseUnitImpl) cu);
339
            CourseUnitDtpStat statFound = CourseReportUtils.findCourseUnitDtpStat(statsLoaded, (CourseUnitImpl) cu);
340
            if(statFound == null)
340
            if(statFound == null)
341
            {
341
            {
342
                statFound = CourseReportUtils.createCourseUnitDtpStat(cu);
342
                statFound = CourseReportUtils.createCourseUnitDtpStat(cu);
343
            }
343
            }
344
 
344
 
345
            if(((CourseUnitImpl) cu).getSemestreAbsolutoS1S2().equals("S1"))
345
            if(((CourseUnitImpl) cu).getSemestreAbsolutoS1S2().equals("S1"))
346
                semester1.getCourseUnitDtpStats().add(statFound);
346
                semester1.getCourseUnitDtpStats().add(statFound);
347
            else
347
            else
348
                semester2.getCourseUnitDtpStats().add(statFound);
348
                semester2.getCourseUnitDtpStats().add(statFound);
349
        }
349
        }
350
 
350
 
351
        return unitsDtpTable;
351
        return unitsDtpTable;
352
 
352
 
353
    }
353
    }
354
 
354
 
355
    /**
355
    /**
356
     * Update course unit sections with reports, this method dows not change learning results table
356
     * Update course unit sections with reports, this method dows not change learning results table
357
     * values from learning results stays in unit but does not change learning results Table
357
     * values from learning results stays in unit but does not change learning results Table
358
     * @param courseCode
358
     * @param courseCode
359
     * @param year
359
     * @param year
360
     * @param reportCourseDocument
360
     * @param reportCourseDocument
361
     * @throws JSONException
361
     * @throws JSONException
362
     * @throws IOException
362
     * @throws IOException
363
     * @return a list of CourseUnitSection
363
     * @return a list of CourseUnitSection
364
     */
364
     */
365
    public List<DocumentSection> updateCleanCourseUnitSections(1.5.0/docs/api/java/lang/String.html">String courseCode, 1.5.0/docs/api/java/lang/String.html">String year, CourseReportDocument reportCourseDocument) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
365
    public List<DocumentSection> updateCleanCourseUnitSections(1.5.0/docs/api/java/lang/String.html">String courseCode, 1.5.0/docs/api/java/lang/String.html">String year, CourseReportDocument reportCourseDocument) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
366
 
366
 
367
        List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
367
        List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
368
 
368
 
369
        CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class);
369
        CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class);
370
        CourseUnitSection[] courseUnitSections = null;
370
        CourseUnitSection[] courseUnitSections = null;
371
        try{
371
        try{
372
            1.5.0/docs/api/java/lang/String.html">String courseUnitSectionsJson = loadCourseEvaluationSections(courseCode,year);
372
            1.5.0/docs/api/java/lang/String.html">String courseUnitSectionsJson = loadCourseEvaluationSections(courseCode,year);
373
            JSONObject object = new JSONObject(courseUnitSectionsJson);
373
            JSONObject object = new JSONObject(courseUnitSectionsJson);
374
            JSONArray evaluations = object.getJSONArray("evaluations");
374
            JSONArray evaluations = object.getJSONArray("evaluations");
375
            courseUnitSections = CourseUnitSection.fromJsonArray(evaluations.toString());
375
            courseUnitSections = CourseUnitSection.fromJsonArray(evaluations.toString());
376
        }
376
        }
377
        catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
377
        catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
378
        {
378
        {
379
            logger.error(e,e);
379
            logger.error(e,e);
380
            courseUnitSections = new CourseUnitSection[0];
380
            courseUnitSections = new CourseUnitSection[0];
381
        }
381
        }
382
 
382
 
383
 
383
 
384
        ArrayList<DocumentSection> subSections = new ArrayList<DocumentSection>();
384
        ArrayList<DocumentSection> subSections = new ArrayList<DocumentSection>();
385
        unitReportsSection.setSections(subSections);
385
        unitReportsSection.setSections(subSections);
386
        for(CourseUnit cu :units)
386
        for(CourseUnit cu :units)
387
        {
387
        {
388
            CourseUnitSection sectionFound = CourseReportUtils.findCourseUnitSection(courseUnitSections, (CourseUnitImpl) cu);
388
            CourseUnitSection sectionFound = CourseReportUtils.findCourseUnitSection(courseUnitSections, (CourseUnitImpl) cu);
389
            if(sectionFound == null)
389
            if(sectionFound == null)
390
            {
390
            {
391
                sectionFound = CourseReportUtils.createCourseUnitEvaluationSection((CourseUnitImpl) cu);
391
                sectionFound = CourseReportUtils.createCourseUnitEvaluationSection((CourseUnitImpl) cu);
392
            }
392
            }
393
            if(sectionFound.getCourseUnitEvaluation() == null)
393
            if(sectionFound.getCourseUnitEvaluation() == null)
394
            {
394
            {
395
                CourseUnitEvaluationImpl courseUnitEvaluation = DomainObjectFactory.createCourseUnitEvaluationImpl();
395
                CourseUnitEvaluationImpl courseUnitEvaluation = DomainObjectFactory.createCourseUnitEvaluationImpl();
396
                courseUnitEvaluation.setAutoGeneratedCourseReport(true);
396
                courseUnitEvaluation.setAutoGeneratedCourseReport(true);
397
                DaoFactory.getCourseUnitEvaluationDaoImpl().save(courseUnitEvaluation);
397
                DaoFactory.getCourseUnitEvaluationDaoImpl().save(courseUnitEvaluation);
398
                cu.setCourseUnitEvaluation(courseUnitEvaluation);
398
                cu.setCourseUnitEvaluation(courseUnitEvaluation);
399
                sectionFound.setCourseUnitEvaluation(courseUnitEvaluation);
399
                sectionFound.setCourseUnitEvaluation(courseUnitEvaluation);
400
            }
400
            }
401
            unitReportsSection.getSections().add(sectionFound);
401
            unitReportsSection.getSections().add(sectionFound);
402
        }
402
        }
403
        return subSections;
403
        return subSections;
404
    }
404
    }
405
 
405
 
406
 
406
 
407
 
407
 
408
    /**
408
    /**
409
     * Este servico gera um grafico com a taxa global de aproveitamento e grava-o no repositorio digital
409
     * Este servico gera um grafico com a taxa global de aproveitamento e grava-o no repositorio digital
410
     * devolvendo o respectivo RepositoryFile4JsonView em json para poder ser anexado ao objecto imagem do
410
     * devolvendo o respectivo RepositoryFile4JsonView em json para poder ser anexado ao objecto imagem do
411
     * widget do grafico
411
     * widget do grafico
412
     * @param reportDocumentJson
412
     * @param reportDocumentJson
413
     * @param session
413
     * @param session
414
     * @return
414
     * @return
415
     * @throws IOException
415
     * @throws IOException
416
     */
416
     */
417
    public 1.5.0/docs/api/java/lang/String.html">String generateGlobalLearningResultsChartImg(1.5.0/docs/api/java/lang/String.html">String reportDocumentJson,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
417
    public 1.5.0/docs/api/java/lang/String.html">String generateGlobalLearningResultsChartImg(1.5.0/docs/api/java/lang/String.html">String reportDocumentJson,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
418
 
418
 
419
        CourseReportDocument reportDocument =  CourseReportDocument.fromJson(reportDocumentJson);
419
        CourseReportDocument reportDocument =  CourseReportDocument.fromJson(reportDocumentJson);
420
        LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class);
420
        LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class);
421
        LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class);
421
        LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class);
422
        GlobalLearningResultsChartImg chartImg = (GlobalLearningResultsChartImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartImg.class);
422
        GlobalLearningResultsChartImg chartImg = (GlobalLearningResultsChartImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartImg.class);
423
 
423
 
424
 
424
 
425
        UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
425
        UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
426
 
426
 
427
 
427
 
428
        FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument);
428
        FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument);
429
 
429
 
430
        RepositoryService repositoryService = new RepositoryService();
430
        RepositoryService repositoryService = new RepositoryService();
431
 
431
 
432
        boolean imageInitialized = chartImg.getImage() != null
432
        boolean imageInitialized = chartImg.getImage() != null
433
                &&
433
                &&
434
                chartImg.getImage().getIdentifier() != null;
434
                chartImg.getImage().getIdentifier() != null;
435
 
435
 
436
        RepositoryFile4JsonView view;
436
        RepositoryFile4JsonView view;
437
        if(imageInitialized)
437
        if(imageInitialized)
438
        {
438
        {
439
            1.5.0/docs/api/java/lang/String.html">String identifier = chartImg.getImage().getIdentifier();
439
            1.5.0/docs/api/java/lang/String.html">String identifier = chartImg.getImage().getIdentifier();
440
            view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session);
440
            view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session);
441
        }
441
        }
442
        else
442
        else
443
        {
443
        {
444
            view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session);
444
            view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session);
445
        }
445
        }
446
        chartImg.setImage(view);
446
        chartImg.setImage(view);
447
        //TODO FALTA GUARDAR O JSON NO CURSO
447
        //TODO FALTA GUARDAR O JSON NO CURSO
448
        return view.toJson();
448
        return view.toJson();
449
    }
449
    }
450
 
450
 
451
    /* Grafico 2*/
451
    /* Grafico 2*/
452
    public 1.5.0/docs/api/java/lang/String.html">String generateGlobalLearningResultsChartYearImg(1.5.0/docs/api/java/lang/String.html">String reportDocumentJson,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
452
    public 1.5.0/docs/api/java/lang/String.html">String generateGlobalLearningResultsChartYearImg(1.5.0/docs/api/java/lang/String.html">String reportDocumentJson,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
453
 
453
 
454
        CourseReportDocument reportDocument =  CourseReportDocument.fromJson(reportDocumentJson);
454
        CourseReportDocument reportDocument =  CourseReportDocument.fromJson(reportDocumentJson);
455
        LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class);
455
        LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class);
456
        LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class);
456
        LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class);
457
        GlobalLearningResultsChartYearImg chartImg = (GlobalLearningResultsChartYearImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartYearImg.class);
457
        GlobalLearningResultsChartYearImg chartImg = (GlobalLearningResultsChartYearImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartYearImg.class);
458
 
458
 
459
        UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
459
        UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
460
 
460
 
461
 
461
 
462
        FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument);
462
        FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument);
463
 
463
 
464
        RepositoryService repositoryService = new RepositoryService();
464
        RepositoryService repositoryService = new RepositoryService();
465
 
465
 
466
        boolean imageInitialized = chartImg.getImage() != null
466
        boolean imageInitialized = chartImg.getImage() != null
467
                &&
467
                &&
468
                chartImg.getImage().getIdentifier() != null;
468
                chartImg.getImage().getIdentifier() != null;
469
 
469
 
470
        RepositoryFile4JsonView view;
470
        RepositoryFile4JsonView view;
471
        if(imageInitialized)
471
        if(imageInitialized)
472
        {
472
        {
473
            1.5.0/docs/api/java/lang/String.html">String identifier = chartImg.getImage().getIdentifier();
473
            1.5.0/docs/api/java/lang/String.html">String identifier = chartImg.getImage().getIdentifier();
474
            view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session);
474
            view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session);
475
        }
475
        }
476
        else
476
        else
477
        {
477
        {
478
            view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session);
478
            view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session);
479
        }
479
        }
480
        chartImg.setImage(view);
480
        chartImg.setImage(view);
481
        //TODO FALTA GUARDAR O JSON NO CURSO
481
        //TODO FALTA GUARDAR O JSON NO CURSO
482
        return view.toJson();
482
        return view.toJson();
483
    }
483
    }
484
 
484
 
485
 
485
 
486
    /*  Guardar report */
486
    /*  Guardar report */
487
 
487
 
488
    public 1.5.0/docs/api/java/lang/String.html">String saveCourseReportDoc(1.5.0/docs/api/java/lang/String.html">String reportDocumentJson,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
488
    public 1.5.0/docs/api/java/lang/String.html">String saveCourseReportDoc(1.5.0/docs/api/java/lang/String.html">String reportDocumentJson,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
489
 
489
 
490
        CourseReportDocument reportDocument =  CourseReportDocument.fromJson(reportDocumentJson);
490
        CourseReportDocument reportDocument =  CourseReportDocument.fromJson(reportDocumentJson);
491
 
491
 
492
        Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(reportDocument.getCourseCode());
492
        Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(reportDocument.getCourseCode());
493
        List<CourseYear> courseYr = DaoFactory.getCourseYearDaoImpl().findCourseYear(reportDocument.getCourseCode(), reportDocument.getYear());
493
        List<CourseYear> courseYr = DaoFactory.getCourseYearDaoImpl().findCourseYear(reportDocument.getCourseCode(), reportDocument.getYear());
494
 
494
 
495
        if(courseYr.isEmpty()){
495
        if(courseYr.isEmpty()){
496
            courseYr.add(DomainObjectFactory.createCourseYearImpl());
496
            courseYr.add(DomainObjectFactory.createCourseYearImpl());
497
            courseYr.get(0).setCourse(course);
497
            courseYr.get(0).setCourse(course);
498
            course.getCourseYears().add(courseYr.get(0));
498
            course.getCourseYears().add(courseYr.get(0));
499
            courseYr.get(0).setImportYear(reportDocument.getYear());
499
            courseYr.get(0).setImportYear(reportDocument.getYear());
500
            DaoFactory.getCourseYearDaoImpl().save(courseYr.get(0));
500
            DaoFactory.getCourseYearDaoImpl().save(courseYr.get(0));
501
        }
501
        }
502
 
502
 
503
        courseYr.get(0).setCourseReportDocument(reportDocumentJson);
503
        courseYr.get(0).setCourseReportDocument(reportDocumentJson);
504
 
504
 
505
        return reportDocument.toJson();
505
        return reportDocument.toJson();
506
    }
506
    }
507
 
507
 
508
    /* Ler o relatorio */
508
    /* Ler o relatorio */
509
 
509
 
510
    public 1.5.0/docs/api/java/lang/String.html">String loadCourseReportDoc(UserSession session, 1.5.0/docs/api/java/lang/String.html">String year, 1.5.0/docs/api/java/lang/String.html">String courseCode) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
510
    public 1.5.0/docs/api/java/lang/String.html">String loadCourseReportDoc(/*UserSession session, */1.5.0/docs/api/java/lang/String.html">String year, 1.5.0/docs/api/java/lang/String.html">String courseCode) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
511
 
511
 
512
        List<CourseYear> courseYr = DaoFactory.getCourseYearDaoImpl().findCourseYear(courseCode, year);
512
        List<CourseYear> courseYr = DaoFactory.getCourseYearDaoImpl().findCourseYear(courseCode, year);
513
 
513
 
514
        1.5.0/docs/api/java/lang/String.html">String courseReport = null;
514
        1.5.0/docs/api/java/lang/String.html">String courseReport = null;
515
        if(!courseYr.isEmpty()){
515
        if(!courseYr.isEmpty()){
516
            courseReport =  courseYr.get(0).getCourseReportDocument();
516
            courseReport =  courseYr.get(0).getCourseReportDocument();
517
        }
517
        }
518
 
518
 
519
        if(courseReport == null){
519
        if(courseReport == null){
520
            CourseReportDocument report = null;
-
 
521
            try{
520
            try{
522
                report = new CourseReportServices().createNewCourseReportDocument(courseCode, year);
521
                courseReport = new CourseReportServices().createNewCourseReportDocument(courseCode, year).toJson();
523
                courseReport = report.toJson();
522
                /*saveCourseReportDoc(courseReport, session);*/
-
 
523
 
524
            } catch (JSONException e) {
524
            } catch (JSONException e) {
525
                e.printStackTrace();
525
                e.printStackTrace();
526
            }
526
            }
527
        }
527
        }
528
 
528
 
529
        return courseReport;
529
        return courseReport;
530
    }
530
    }
531
 
531
 
532
 
532
 
533
    /****************************************************************************/
533
    /****************************************************************************/
534
    /*
534
    /*
535
 
535
 
536
 
536
 
537
 
537
 
538
                                    SERVICOS WS-API
538
                                    SERVICOS WS-API
539
 
539
 
540
 
540
 
541
 
541
 
542
     */
542
     */
543
    /****************************************************************************/
543
    /****************************************************************************/
544
 
544
 
545
 
545
 
546
    /**
546
    /**
547
     * This service loads a list of course units given course code and year
547
     * This service loads a list of course units given course code and year
548
     * with dtp stats codes pre-filled
548
     * with dtp stats codes pre-filled
549
     * @param courseCode
549
     * @param courseCode
550
     * @param year
550
     * @param year
551
     * @return
551
     * @return
552
     * @throws JSONException
552
     * @throws JSONException
553
     * @throws IOException
553
     * @throws IOException
554
     */
554
     */
555
    public 1.5.0/docs/api/java/lang/String.html">String loadCourseUnitDtpStats(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String year) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
555
    public 1.5.0/docs/api/java/lang/String.html">String loadCourseUnitDtpStats(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String year) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
556
 
556
 
557
 
557
 
558
        if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS.indexOf("localhost")>=0)
558
        if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS.indexOf("localhost")>=0)
559
        {
559
        {
560
            JSONArray array = new JSONArray();
560
            JSONArray array = new JSONArray();
561
            List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
561
            List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
562
            for(CourseUnit cu: units)
562
            for(CourseUnit cu: units)
563
            {
563
            {
564
                CourseUnitDtpStat stat = CourseReportUtils.createCourseUnitDtpStat(cu);
564
                CourseUnitDtpStat stat = CourseReportUtils.createCourseUnitDtpStat(cu);
565
                //sections.add(courseUnitSection);
565
                //sections.add(courseUnitSection);
566
                array.put(stat.toJsonObject());
566
                array.put(stat.toJsonObject());
567
            }
567
            }
568
 
568
 
569
            JSONObject obj = new JSONObject();
569
            JSONObject obj = new JSONObject();
570
            obj.put("dtpstats",array);
570
            obj.put("dtpstats",array);
571
 
571
 
572
            return obj.toString();
572
            return obj.toString();
573
        }
573
        }
574
        else
574
        else
575
        {
575
        {
576
            1.5.0/docs/api/java/lang/String.html">String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS + "?code=" + courseCode  + "&year=" + year;
576
            1.5.0/docs/api/java/lang/String.html">String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS + "?code=" + courseCode  + "&year=" + year;
577
            1.5.0/docs/api/java/lang/String.html">String json = "{ dtpstats : [] }";
577
            1.5.0/docs/api/java/lang/String.html">String json = "{ dtpstats : [] }";
578
            try{
578
            try{
579
                1.5.0/docs/api/java/net/URL.html">URL url = new 1.5.0/docs/api/java/net/URL.html">URL(serviceUrl);
579
                1.5.0/docs/api/java/net/URL.html">URL url = new 1.5.0/docs/api/java/net/URL.html">URL(serviceUrl);
580
 
580
 
581
                1.5.0/docs/api/java/net/URLConnection.html">URLConnection conn = url.openConnection();
581
                1.5.0/docs/api/java/net/URLConnection.html">URLConnection conn = url.openConnection();
582
                5+0%2Fdocs%2Fapi+InputStream">InputStream is = conn.getInputStream();
582
                5+0%2Fdocs%2Fapi+InputStream">InputStream is = conn.getInputStream();
583
 
583
 
584
                json = StreamsUtils.readString(is);
584
                json = StreamsUtils.readString(is);
585
                is.close();
585
                is.close();
586
            }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
586
            }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
587
            {
587
            {
588
                logger.error("Connecting " + serviceUrl,e);
588
                logger.error("Connecting " + serviceUrl,e);
589
                return json;
589
                return json;
590
            }
590
            }
591
            JSONObject jsonObject = new JSONObject(json);
591
            JSONObject jsonObject = new JSONObject(json);
592
            if(jsonObject.get("service").equals("ok"))
592
            if(jsonObject.get("service").equals("ok"))
593
                return jsonObject.get("response").toString();
593
                return jsonObject.get("response").toString();
594
            else
594
            else
595
                return json;
595
                return json;
596
        }
596
        }
597
    }
597
    }
598
 
598
 
599
 
599
 
600
 
600
 
601
 
601
 
602
    /**
602
    /**
603
     *
603
     *
604
     * Para um determinado curso e ano o serviço faz uma listagem de todas as suas unidades curriculares
604
     * Para um determinado curso e ano o serviço faz uma listagem de todas as suas unidades curriculares
605
     * e lista a sua informação básica juntamente com o relatório de avaliação disponivel
605
     * e lista a sua informação básica juntamente com o relatório de avaliação disponivel
606
     * O serviço adiciona ainda o Ano de cada unidade por inspeção do Plano de Estudos
606
     * O serviço adiciona ainda o Ano de cada unidade por inspeção do Plano de Estudos
607
     * caso a unidade não seja encontrada no Plano de estudos o ano irá ser preenchido com -1
607
     * caso a unidade não seja encontrada no Plano de estudos o ano irá ser preenchido com -1
608
     *
608
     *
609
     * @param courseCode codigo Siges na base de dados
609
     * @param courseCode codigo Siges na base de dados
610
     * @param year  201617, 201718
610
     * @param year  201617, 201718
611
     * @return String JSONObject with a JSON ARRAY of List<CourseUnitSection>
611
     * @return String JSONObject with a JSON ARRAY of List<CourseUnitSection>
612
     */
612
     */
613
    public 1.5.0/docs/api/java/lang/String.html">String loadCourseEvaluationSections(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String year) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
613
    public 1.5.0/docs/api/java/lang/String.html">String loadCourseEvaluationSections(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String year) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
614
 
614
 
615
 
615
 
616
        if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT.indexOf("localhost")>=0)
616
        if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT.indexOf("localhost")>=0)
617
        {
617
        {
618
            JSONArray array = new JSONArray();
618
            JSONArray array = new JSONArray();
619
            List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
619
            List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
620
            for(CourseUnit cu: units)
620
            for(CourseUnit cu: units)
621
            {
621
            {
622
                CourseUnitSection courseUnitSection = CourseReportUtils.createCourseUnitEvaluationSection((CourseUnitImpl) cu);
622
                CourseUnitSection courseUnitSection = CourseReportUtils.createCourseUnitEvaluationSection((CourseUnitImpl) cu);
623
                if(courseUnitSection.getAnoPlano() < 0)
623
                if(courseUnitSection.getAnoPlano() < 0)
624
                {
624
                {
625
                    logger.info("Ano do Plano not available from courseUnitsEvaluation Service, will read from API loadPlanYearForCourseUnitCode");
625
                    logger.info("Ano do Plano not available from courseUnitsEvaluation Service, will read from API loadPlanYearForCourseUnitCode");
626
                    try{
626
                    try{
627
                        1.5.0/docs/api/java/lang/String.html">String json = loadPlanYearForCourseUnitCode(courseCode,cu.getCode(),cu.getSemestre());
627
                        1.5.0/docs/api/java/lang/String.html">String json = loadPlanYearForCourseUnitCode(courseCode,cu.getCode(),cu.getSemestre());
628
                        int ano = new JSONObject(json).getInt("year");
628
                        int ano = new JSONObject(json).getInt("year");
629
                        courseUnitSection.setAnoPlano(ano);
629
                        courseUnitSection.setAnoPlano(ano);
630
                    }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e )
630
                    }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e )
631
                    {
631
                    {
632
                        logger.error("Nao conseguiu obter o ano do plano da API: " + e.toString(),e);
632
                        logger.error("Nao conseguiu obter o ano do plano da API: " + e.toString(),e);
633
                    }
633
                    }
634
                }
634
                }
635
                array.put(courseUnitSection.toJsonObject());
635
                array.put(courseUnitSection.toJsonObject());
636
            }
636
            }
637
 
637
 
638
            JSONObject obj = new JSONObject();
638
            JSONObject obj = new JSONObject();
639
            obj.put("evaluations",array);
639
            obj.put("evaluations",array);
640
 
640
 
641
            return obj.toString();
641
            return obj.toString();
642
        }
642
        }
643
        else
643
        else
644
        {
644
        {
645
            1.5.0/docs/api/java/lang/String.html">String json = "{ evaluations : [] }";
645
            1.5.0/docs/api/java/lang/String.html">String json = "{ evaluations : [] }";
646
            1.5.0/docs/api/java/lang/String.html">String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT + "?code=" + courseCode  + "&year=" + year;
646
            1.5.0/docs/api/java/lang/String.html">String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT + "?code=" + courseCode  + "&year=" + year;
647
            try{
647
            try{
648
                1.5.0/docs/api/java/net/URL.html">URL url = new 1.5.0/docs/api/java/net/URL.html">URL(serviceUrl);
648
                1.5.0/docs/api/java/net/URL.html">URL url = new 1.5.0/docs/api/java/net/URL.html">URL(serviceUrl);
649
 
649
 
650
                1.5.0/docs/api/java/net/URLConnection.html">URLConnection conn = url.openConnection();
650
                1.5.0/docs/api/java/net/URLConnection.html">URLConnection conn = url.openConnection();
651
                5+0%2Fdocs%2Fapi+InputStream">InputStream is = conn.getInputStream();
651
                5+0%2Fdocs%2Fapi+InputStream">InputStream is = conn.getInputStream();
652
 
652
 
653
                json = StreamsUtils.readString(is);
653
                json = StreamsUtils.readString(is);
654
                is.close();
654
                is.close();
655
            }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
655
            }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
656
            {
656
            {
657
                logger.error("Connecting " + serviceUrl,e);
657
                logger.error("Connecting " + serviceUrl,e);
658
                return json;
658
                return json;
659
            }
659
            }
660
 
660
 
661
            JSONObject jsonObject = new JSONObject(json);
661
            JSONObject jsonObject = new JSONObject(json);
662
            if(jsonObject.get("service").equals("ok"))
662
            if(jsonObject.get("service").equals("ok"))
663
                return jsonObject.get("response").toString();
663
                return jsonObject.get("response").toString();
664
            else
664
            else
665
                return json;
665
                return json;
666
        }
666
        }
667
    }
667
    }
668
 
668
 
669
 
669
 
670
    /**
670
    /**
671
     *
671
     *
672
     *
672
     *
673
     * @param courseCode codigo Siges na base de dados
673
     * @param courseCode codigo Siges na base de dados
674
     * @param unitCode
674
     * @param unitCode
675
     * @return Json com o ano do plano exemplo: { year : 1 }
675
     * @return Json com o ano do plano exemplo: { year : 1 }
676
     * ou -1 se não for encontrado
676
     * ou -1 se não for encontrado
677
     */
677
     */
678
    public 1.5.0/docs/api/java/lang/String.html">String loadPlanYearForCourseUnitCode(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String unitCode,1.5.0/docs/api/java/lang/String.html">String period) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
678
    public 1.5.0/docs/api/java/lang/String.html">String loadPlanYearForCourseUnitCode(1.5.0/docs/api/java/lang/String.html">String courseCode,1.5.0/docs/api/java/lang/String.html">String unitCode,1.5.0/docs/api/java/lang/String.html">String period) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {
679
 
679
 
680
 
680
 
681
        if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR.indexOf("localhost")>=0)
681
        if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR.indexOf("localhost")>=0)
682
        {
682
        {
683
            CourseImpl c = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
683
            CourseImpl c = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
684
            int year = c.getUnidadeAnoPlano(period,unitCode);
684
            int year = c.getUnidadeAnoPlano(period,unitCode);
685
            return "{ year : " + year + " }";
685
            return "{ year : " + year + " }";
686
 
686
 
687
        }
687
        }
688
        else
688
        else
689
        {
689
        {
690
            1.5.0/docs/api/java/lang/String.html">String json = "{ year : -1 }";
690
            1.5.0/docs/api/java/lang/String.html">String json = "{ year : -1 }";
691
            1.5.0/docs/api/java/lang/String.html">String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR + "?courseCode=" + courseCode  + "&unitCode=" + unitCode + "&period=" + period;
691
            1.5.0/docs/api/java/lang/String.html">String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR + "?courseCode=" + courseCode  + "&unitCode=" + unitCode + "&period=" + period;
692
            try{
692
            try{
693
                1.5.0/docs/api/java/net/URL.html">URL url = new 1.5.0/docs/api/java/net/URL.html">URL(serviceUrl);
693
                1.5.0/docs/api/java/net/URL.html">URL url = new 1.5.0/docs/api/java/net/URL.html">URL(serviceUrl);
694
 
694
 
695
                1.5.0/docs/api/java/net/URLConnection.html">URLConnection conn = url.openConnection();
695
                1.5.0/docs/api/java/net/URLConnection.html">URLConnection conn = url.openConnection();
696
                5+0%2Fdocs%2Fapi+InputStream">InputStream is = conn.getInputStream();
696
                5+0%2Fdocs%2Fapi+InputStream">InputStream is = conn.getInputStream();
697
 
697
 
698
                json = StreamsUtils.readString(is);
698
                json = StreamsUtils.readString(is);
699
                is.close();
699
                is.close();
700
            }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
700
            }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
701
            {
701
            {
702
                logger.error("Connecting " + serviceUrl,e);
702
                logger.error("Connecting " + serviceUrl,e);
703
                return json;
703
                return json;
704
            }
704
            }
705
 
705
 
706
            JSONObject jsonObject = new JSONObject(json);
706
            JSONObject jsonObject = new JSONObject(json);
707
            if(jsonObject.get("service").equals("ok"))
707
            if(jsonObject.get("service").equals("ok"))
708
                return jsonObject.get("response").toString();
708
                return jsonObject.get("response").toString();
709
            else
709
            else
710
                return json;
710
                return json;
711
        }
711
        }
712
    }
712
    }
713
 
713
 
714
 
714
 
715
 
715
 
716
 
716
 
717
 
717
 
718
 
718
 
719
 
719
 
720
 
720
 
721
 
721
 
722
 
722
 
723
 
723
 
724
 
724
 
725
 
725
 
726
    public static void main(1.5.0/docs/api/java/lang/String.html">String[] args) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException {
726
    public static void main(1.5.0/docs/api/java/lang/String.html">String[] args) throws 1.5.0/docs/api/java/io/IOException.html">IOException, JSONException {
727
        AbstractDao.getCurrentSession().beginTransaction();
727
        AbstractDao.getCurrentSession().beginTransaction();
728
 
728
 
729
        CourseReportDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44","201617");
729
        CourseReportDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44","201617");
730
        1.5.0/docs/api/java/lang/System.html">System.out.println(reportCourseDocument.toJson());
730
        1.5.0/docs/api/java/lang/System.html">System.out.println(reportCourseDocument.toJson());
731
        AbstractDao.getCurrentSession().getTransaction().commit();
731
        AbstractDao.getCurrentSession().getTransaction().commit();
732
 
732
 
733
        //System.setProperty("javax.net.ssl.trustStore", "/JORGE/COPIAS/.keystore");
733
        //System.setProperty("javax.net.ssl.trustStore", "/JORGE/COPIAS/.keystore");
734
        //System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
734
        //System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
735
 
735
 
736
        /*URL url = new URL("http://pae.ipportalegre.pt/wsjson/api/app/ws-course-pedagogic-results-list?code=44&year=201617&period=S1");
736
        /*URL url = new URL("http://pae.ipportalegre.pt/wsjson/api/app/ws-course-pedagogic-results-list?code=44&year=201617&period=S1");
737
 
737
 
738
 
738
 
739
 
739
 
740
        System.out.println(StreamsUtils.readString(url.openStream()));*/
740
        System.out.println(StreamsUtils.readString(url.openStream()));*/
741
    }
741
    }
742
 
742
 
743
    /*
743
    /*
744
 
744
 
745
    public String loadUnitsAndCreateLearningResultsTables4Course(String courseCode, String year) throws IOException, JSONException
745
    public String loadUnitsAndCreateLearningResultsTables4Course(String courseCode, String year) throws IOException, JSONException
746
    {
746
    {
747
 
747
 
748
    }
748
    }
749
    */
749
    */
750
    //TODO loadUnitsAndCreateLearningResultsTables4Course
750
    //TODO loadUnitsAndCreateLearningResultsTables4Course
751
    //HIPOTESE DEVOLVER DOIS OBJECTOS
751
    //HIPOTESE DEVOLVER DOIS OBJECTOS
752
    //SERVICO DE ARRANQUE
752
    //SERVICO DE ARRANQUE
753
    //DEVOLVE UM REPORT DOCUMENT E O CHAMADOR USA O QUE QUISER
753
    //DEVOLVE UM REPORT DOCUMENT E O CHAMADOR USA O QUE QUISER
754
    //A GERACAO DE GRAFICOS FAZ-SE APENAS A PEDIDO
754
    //A GERACAO DE GRAFICOS FAZ-SE APENAS A PEDIDO
755
 
755
 
756
    // SE ELE PEDIR PARA ATUALIZAR TUDO CARREGA-SE UNIDADES E TABELAS NU DOC NOVO
756
    // SE ELE PEDIR PARA ATUALIZAR TUDO CARREGA-SE UNIDADES E TABELAS NU DOC NOVO
757
    // E NO BROWSER SUBSTITUI-SE ESSES ELEMENTOS NOS ANTIGOS a seccao das unidades
757
    // E NO BROWSER SUBSTITUI-SE ESSES ELEMENTOS NOS ANTIGOS a seccao das unidades
758
    // e as as tabelas
758
    // e as as tabelas
759
 
759
 
760
 
760
 
761
 
761
 
762
}
762
}
763
 
763