Subversion Repositories bacoAlunos

Rev

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

Rev Author Line No. Line
1244 jmachado 1
package pt.estgp.estgweb.services.sigesimports.oracle.dao;
2
 
3
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Disciplina;
4
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Docente;
5
 
6
import java.sql.Connection;
7
import java.sql.PreparedStatement;
8
import java.sql.ResultSet;
9
import java.sql.SQLException;
10
import java.util.ArrayList;
11
import java.util.List;
12
 
13
/**
14
 * Created by jorgemachado on 20/01/16.
15
 */
16
public class DocenteDao extends AbstractDao<Docente> {
17
 
18
    private static DocenteDao instance = null;
19
 
20
    private DocenteDao() {
21
    }
22
 
23
    public static DocenteDao getInstance() {
24
        if (instance == null)
25
            instance = new DocenteDao();
26
        return instance;
27
    }
28
 
29
    //deprecated
30
    public 1.5.0/docs/api/java/lang/String.html">String getTable() {
31
        //return "DOCENTE";
32
        return "DOCENTE";
33
    }
34
 
35
    public 1.5.0/docs/api/java/lang/String.html">String getIdColumn() {
36
        return "CD_FUNCIONARIO";
37
    }
38
 
39
 
1270 jmachado 40
    public Docente load(1.5.0/docs/api/java/lang/Integer.html">Integer codigo, 1.5.0/docs/api/java/lang/Integer.html">Integer codigoInstituicao, 1.5.0/docs/api/java/lang/String.html">String ano,1.5.0/docs/api/java/sql/Connection.html">Connection conn) throws 1.5.0/docs/api/java/sql/SQLException.html">SQLException {
1244 jmachado 41
 
1270 jmachado 42
        boolean closeConn = conn == null;
43
        if(conn == null)
44
            conn = getCurrentConnection();
1244 jmachado 45
 
46
        //NOVO DESDE A ALTERACAO DO SIGES
47
        1.5.0/docs/api/java/sql/PreparedStatement.html">PreparedStatement catCMD = conn.prepareStatement("SELECT * FROM CSP.T_FUNCIONARIOS INNER JOIN SIGES.T_INDIVIDUO on SIGES.T_INDIVIDUO.ID_INDIVIDUO = CSP.T_FUNCIONARIOS.ID_INDIVIDUO where  " + getIdColumn() + "=" + codigo);
48
        1.5.0/docs/api/java/sql/ResultSet.html">ResultSet aReader = catCMD.executeQuery();
49
        if (aReader.next()) {
50
            Docente c = load(aReader);
51
            c.disciplinas = loadDisciplinasDosDocentes(codigo, codigoInstituicao, ano);
52
            catCMD.close();
53
            aReader.close();
1270 jmachado 54
            if(closeConn)
55
                conn.close();
1244 jmachado 56
            return c;
57
        }
58
        aReader.close();
59
        catCMD.close();
1270 jmachado 60
        if(closeConn)
61
            conn.close();
1244 jmachado 62
        //close the reader
63
        return null;
64
    }
65
 
66
 
67
    protected Docente load(1.5.0/docs/api/java/sql/ResultSet.html">ResultSet aReader) throws 1.5.0/docs/api/java/sql/SQLException.html">SQLException
68
    {
69
        Docente d = new Docente();
70
        d.codigoFuncionario = getDecimal("CD_FUNCIONARIO", aReader); //ok T_FUNCIONARIO
71
 
72
        d.nome = getString("NOME", aReader); //ok T_INDIVIDUO  FALTA VER O "NOME"
73
 
74
        //d.nomeFuncionario = getString("NM_FUNCIONARIO", aReader); //ok
75
        d.nomeFuncionarioInt = getString("NM_COMPLETO", aReader); //ok T_INDIVIDUO  FALTA VER O "NOME"
76
 
77
        //d.nomeFuncionarioInt = getString("NM_FUNC_INT", aReader);
78
        d.nomeFuncionario = getString("NM_ABREVIADO", aReader); //ok T_INDIVIDUO
79
 
80
        d.nomeAcademico = getString("NM_ACADEMICO", aReader);   //ok T_INDIVIDUO
81
 
82
        //d.sexo = getString("CD_SEXO", aReader);
83
        d.sexo = getString("SEXO", aReader); //ok
84
 
85
        d.data_nascimento = getDateTime("DT_NASCIMENTO", aReader); //ok T_INDIVIDUO
86
 
87
        d.morada = getString("DS_MORADA", aReader); //ok T_INDIVIDUO
88
 
89
        d.codigoPostal = getDecimal("CD_POSTAL", aReader); //ok T_INDIVIDUO confirmar com CD_POSTAL
90
 
91
        //d.subCodigoPostal = getInteger("CD_SUBCOD2", aReader);
92
        d.subCodigoPostal = getDecimal("CD_SUBPOS", aReader); //ok T_INDIVIDUO confirmar com CD_SUPPOS
93
 
94
        //d.email = getString("DS_EMAIL",aReader);
95
        d.email = getString("EMAIL", aReader); //ok T_INDIVIDUO
96
 
97
        //d.numeroBi = getString("NR_BI", aReader); // FALTA VER CODIGO DE IDENTIFICACAO_TIPO  em CD_TIPO_ID
98
        d.numeroBi = getString("IDENTIFICACAO", aReader); //ok T_INDIVIDUO
99
 
100
        //d.usernameNetpa = getString("USERNAME_NETPA", aReader);
101
        d.usernameNetpa = getString("USER_NETPA", aReader); //ok T_FUNCIONARIO
1553 jmachado 102
 
103
        d.codigoNacionalidade = getDecimal("CD_NACIONA",aReader);
1244 jmachado 104
        return d;
105
    }
106
 
107
    public ArrayList<Integer> loadCodigosDocentes(1.5.0/docs/api/java/lang/Integer.html">Integer codigoInstituicao, 1.5.0/docs/api/java/lang/String.html">String ano) throws 1.5.0/docs/api/java/sql/SQLException.html">SQLException {
108
        ArrayList<Integer> codigos = new ArrayList<Integer>();
109
        1.5.0/docs/api/java/sql/Connection.html">Connection conn = getCurrentConnection();
110
        1.5.0/docs/api/java/sql/PreparedStatement.html">PreparedStatement catCMD = conn.prepareStatement("SELECT DISTINCT CSD.T_DOC_TURMA.CD_DOCENTE AS CD FROM CSD.T_DOC_TURMA INNER JOIN CSE.T_TBDISCIP ON CSE.T_TBDISCIP.CD_DISCIP =  CSD.T_DOC_TURMA.CD_DISCIP WHERE CSD.T_DOC_TURMA.CD_LECTIVO='" + ano + "' AND CSE.T_TBDISCIP.CD_INSTITUIC=" + codigoInstituicao);
111
        1.5.0/docs/api/java/sql/ResultSet.html">ResultSet aReader = catCMD.executeQuery();
112
        while (aReader.next()) {
113
            codigos.add(getDecimal("CD", aReader));
114
        }
115
        //close the reader
116
        aReader.close();
117
        catCMD.close();
118
        conn.close();
119
        return codigos;
120
    }
121
 
122
    /*por esta nos cursos para obter topologias das cadeiras em vez de o fazermos no docente
123
 
124
   /*
125
Extrai do Horario de Trabalho (dos Sumários) todas as combinações de códigos Tipo aula cadeiras do docente
126
20128
127
QUERY DAS TOPOLOGIAS A PARTIR DAS CADEIRAS
128
 
129
    SELECT DISTINCT
130
    CSE.T_TBDISCIP.CD_INSTITUIC,
131
    CSH.T_DETALHE_AULA.CD_LECTIVO AS CD_LECTIVO,
132
    CSH.T_DETALHE_AULA.CD_PERIODO AS CD_PERIODO,
133
    CSH.T_DETALHE_AULA.CD_DISCIP AS CD_DISCIP,
134
    CSH.T_DETALHE_AULA.CD_TURMA AS CD_TURMA,
135
    CSH.T_DETALHE_AULA.CD_DOCENTE AS CD_DOCENTE,
136
    CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA AS CD_TIPO_AULA
137
    FROM CSH.T_DETALHE_AULA
138
    JOIN CSD.T_SUMARIOS_AULAS ON
139
    CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO
140
    AND CSD.T_SUMARIOS_AULAS.CD_ESTADO = 1
141
    JOIN
142
    CSE.T_TURMA ON
143
    CSH.T_DETALHE_AULA.CD_TURMA = CSE.T_TURMA.CD_TURMA
144
            AND
145
    CSH.T_DETALHE_AULA.CD_LECTIVO = CSE.T_TURMA.CD_LECTIVO
146
            AND
147
    CSH.T_DETALHE_AULA.CD_PERIODO = CSE.T_TURMA.CD_DURACAO
148
            AND
149
    CSH.T_DETALHE_AULA.CD_DISCIP = CSE.T_TURMA.CD_DISCIP
150
            JOIN
151
    CSE.T_TBDISCIP ON
152
    CSE.T_TBDISCIP.CD_DISCIP =  CSH.T_DETALHE_AULA.CD_DISCIP
153
                                WHERE
154
            (CSE.T_TURMA.CD_CURSO = '9500' OR CSE.T_TURMA.CD_CURSO is NULL) AND
155
    CSE.T_TBDISCIP.CD_INSTITUIC = 4 AND
156
    CSH.T_DETALHE_AULA.CD_DISCIP = 704330 AND
157
    CSH.T_DETALHE_AULA.CD_LECTIVO = '201516' AND
158
    CSH.T_DETALHE_AULA.CD_PERIODO = 'S1';
159
 
160
    *
161
    * */
162
    public ArrayList<Disciplina> loadDisciplinasDosDocentes(1.5.0/docs/api/java/lang/Integer.html">Integer codigo, 1.5.0/docs/api/java/lang/Integer.html">Integer codigoInstituicao, 1.5.0/docs/api/java/lang/String.html">String ano) throws 1.5.0/docs/api/java/sql/SQLException.html">SQLException {
163
        ArrayList<Disciplina> disciplinas = new ArrayList<Disciplina>();
164
        1.5.0/docs/api/java/sql/Connection.html">Connection conn = getCurrentConnection();
165
        1.5.0/docs/api/java/sql/PreparedStatement.html">PreparedStatement catCMD = conn.prepareStatement(
166
                "SELECT DISTINCT CSE.T_TBDISCIP.CD_DISCIP AS CD_DISCIP, " +
167
                        //"              CSD.T_DOC_TURMA.CD_TURMA AS CD_TURMA, " +
168
                        "              CSD.T_DOC_TURMA.CD_LECTIVO, " +
169
                        "              CSD.T_DOC_TURMA.CD_DURACAO, " +
1312 jmachado 170
                        "              CSD.T_DOC_TURMA.CD_CURSO " +   //PODE VIR A NULL SE FOR DE TURMAS MISTAS
1244 jmachado 171
                        //"              CSD.T_DOC_TURMA.CD_FUNCAO_DOC, " +
172
                        //"              CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA " +
173
                        " FROM (CSD.T_DOC_TURMA " +
174
                        "  INNER JOIN CSE.T_TBDISCIP ON CSE.T_TBDISCIP.CD_DISCIP =  CSD.T_DOC_TURMA.CD_DISCIP) " +
175
                     /*   "   LEFT OUTER JOIN CSH.T_DETALHE_AULA ON " +
176
                        "            CSH.T_DETALHE_AULA.CD_DOCENTE = CSD.T_DOC_TURMA.CD_DOCENTE " +
177
                        "            AND " +
178
                        "            CSH.T_DETALHE_AULA.CD_TURMA = CSD.T_DOC_TURMA.CD_TURMA " +
179
                        "            AND " +
180
                        "            CSH.T_DETALHE_AULA.CD_LECTIVO = CSD.T_DOC_TURMA.CD_LECTIVO " +
181
                        "            AND " +
182
                        "            CSH.T_DETALHE_AULA.CD_PERIODO = CSD.T_DOC_TURMA.CD_DURACAO " +
183
                        "            AND " +
184
                        "            CSH.T_DETALHE_AULA.CD_DISCIP = CSD.T_DOC_TURMA.CD_DISCIP  " +
185
 
186
                        "        LEFT OUTER JOIN CSD.T_SUMARIOS_AULAS ON CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO " +
187
                        "               AND CSD.T_SUMARIOS_AULAS.CD_ESTADO = 1 " +
188
                     */ "WHERE  " + /*((" +
189
                        "          CSH.T_DETALHE_AULA.CAMPO_REFERENCIA is not null " +
190
                        "          AND " +
191
                        "          CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA is not NULL)" + //Queremos apenas casos em que haja Detalhe e Sumario
192
                        "            or CSH.T_DETALHE_AULA.CAMPO_REFERENCIA IS NULL ) " + //Se nao houver detalhe tambem queremos
193
                        " AND " +
194
                        */
1250 jmachado 195
                        "          CSD.T_DOC_TURMA.CD_LECTIVO='" + ano + "' AND CSE.T_TBDISCIP.CD_INSTITUIC=" + codigoInstituicao + " AND CSD.T_DOC_TURMA.CD_DOCENTE = " + codigo );
1244 jmachado 196
 
197
 
198
        1.5.0/docs/api/java/sql/ResultSet.html">ResultSet aReader = catCMD.executeQuery();
199
        while (aReader.next()) {
200
            Disciplina d = new Disciplina();
201
            d.codigo = getDecimal("CD_DISCIP", aReader);
202
            d.codigoCurso = getDecimal("CD_CURSO", aReader);
203
            //d.cdTurma = getString("CD_TURMA", aReader);
204
            d.codigoInstituicao = codigoInstituicao;
205
            d.cdLectivo = ano;
206
            d.cdDuracao = getString("CD_DURACAO", aReader);
207
            //d.cdTipologia = getDecimal("CD_TIPO_AULA", aReader);
208
            //d.codigoFuncaoDocente = getDecimal("CD_FUNCAO_DOC",aReader);
209
            disciplinas.add(d);
1422 jmachado 210
 
211
            1.5.0/docs/api/java/sql/PreparedStatement.html">PreparedStatement queryTurmas = conn.prepareStatement
212
                    ("SELECT DISTINCT CSD.T_DOC_TURMA.CD_TURMA AS CD_TURMA " +
213
                            " FROM (CSD.T_DOC_TURMA " +
214
                            "  INNER JOIN CSE.T_TBDISCIP ON CSE.T_TBDISCIP.CD_DISCIP =  CSD.T_DOC_TURMA.CD_DISCIP) " +
215
                      " WHERE " +
216
                            " CSE.T_TBDISCIP.CD_DISCIP = " + d.codigo + " " +
217
                            " AND CSD.T_DOC_TURMA.CD_CURSO  = '" + d.codigoCurso + "'" +
218
                            " AND CSD.T_DOC_TURMA.CD_DURACAO = '" + d.cdDuracao + "'" +
219
                            " AND CSD.T_DOC_TURMA.CD_LECTIVO='" + ano + "'" +
220
                            " AND CSE.T_TBDISCIP.CD_INSTITUIC=" + codigoInstituicao + " " +
221
                            " AND CSD.T_DOC_TURMA.CD_DOCENTE = " + codigo );
222
            1.5.0/docs/api/java/sql/ResultSet.html">ResultSet turmas = queryTurmas.executeQuery();
223
            while(turmas.next())
224
            {
225
                d.turmasDocente.add(turmas.getString("CD_TURMA"));
226
            }
227
            turmas.close();
228
            queryTurmas.close();
229
 
1244 jmachado 230
        }
231
        //close the reader
232
        aReader.close();
233
        catCMD.close();
234
        conn.close();
235
        return disciplinas;
236
    }
237
 
238
 
239
    /** Versao antes das Tipologias
240
 
241
    public List<Disciplina> loadDisciplinasDosDocentes(Integer codigo, Integer codigoInstituicao, String ano) throws SQLException {
242
        List<Disciplina> disciplinas = new ArrayList<Disciplina>();
243
        Connection conn = getCurrentConnection();
244
        PreparedStatement catCMD = conn.prepareStatement("SELECT DISTINCT CSE.T_TBDISCIP.CD_DISCIP AS CD_DISCIP, CSD.T_DOC_TURMA.CD_TURMA AS CD_TURMA, CSD.T_DOC_TURMA.CD_LECTIVO, CD_DURACAO, CD_CURSO FROM ((CSD.T_DOC_TURMA INNER JOIN CSE.T_TBDISCIP ON CSE.T_TBDISCIP.CD_DISCIP =  CSD.T_DOC_TURMA.CD_DISCIP) INNER JOIN CSH.T_DETALHE_AULA ON CSH.T_DETALHE_AULA.CD_DOCENTE = CSD.T_DOC_TURMA.CD_DOCENTE AND CSH.T_DETALHE_AULA.CD_DISCIP = CSE.T_TBDISCIP.CD_DISCIP) WHERE CSD.T_DOC_TURMA.CD_LECTIVO='" + ano + "' AND CSE.T_TBDISCIP.CD_INSTITUIC=" + codigoInstituicao + " AND CSD.T_DOC_TURMA.CD_DOCENTE = " + codigo);
245
 
246
        ResultSet aReader = catCMD.executeQuery();
247
        while (aReader.next()) {
248
            Disciplina d = new Disciplina();
249
            d.codigo = getDecimal("CD_DISCIP", aReader);
250
            d.codigoCurso = getDecimal("CD_CURSO", aReader);
251
            d.cdTurma = getString("CD_TURMA", aReader);
252
            d.codigoInstituicao = codigoInstituicao;
253
            d.cdLectivo = ano;
254
            d.cdDuracao = getString("CD_DURACAO", aReader);
255
            disciplinas.add(d);
256
        }
257
        //close the reader
258
        aReader.close();
259
        catCMD.close();
260
        conn.close();
261
        return disciplinas;
262
    }
263
     ***/
264
 
265
 
266
    public static void main(1.5.0/docs/api/java/lang/String.html">String[] args) throws 1.5.0/docs/api/java/sql/SQLException.html">SQLException {
1247 jmachado 267
        List<Integer> cods = new DocenteDao().loadCodigosDocentes(1,"201516");
268
        for(1.5.0/docs/api/java/lang/Integer.html">Integer c:cods)
269
            1.5.0/docs/api/java/lang/System.html">System.out.println(c);
1244 jmachado 270
        List<Disciplina> ds = new DocenteDao().loadDisciplinasDosDocentes(20074,1,"201516");
271
        for(Disciplina d: ds)
272
        {
273
            1.5.0/docs/api/java/lang/System.html">System.out.println(d.codigo + " - " + d.nome + " - " + d.codigoCurso + "-" + d.nomeCurso);
274
        }
275
        1.5.0/docs/api/java/lang/System.html">System.out.println(ds);
276
        ds = new DocenteDao().loadDisciplinasDosDocentes(20128,1,"201516");
277
        1.5.0/docs/api/java/lang/System.html">System.out.println(ds);
278
    }
279
}