Subversion Repositories bacoAlunos

Rev

Rev 726 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.domain;

import jomm.dao.utils.HibernateUtils;
import jomm.utils.PdfUtils;
import org.apache.fop.apps.FOPException;
import org.dom4j.*;
import org.hibernate.Session;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;

import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import java.io.*;
import java.net.MalformedURLException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static pt.estgp.estgweb.utils.Dom4jUtil.parse;

/**
 * @author Jorge Machado
 * @date 8/Jul/2008
 * @see pt.estgp.estgweb.domain
 */

public class CourseUnitProgramImpl extends CourseUnitProgram
{
    public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable()
    {
        return getId();
    }

    public static class CourseUnitInputLine
    {

        1.5.0/docs/api/java/lang/String.html">String codigoCurso;

        1.5.0/docs/api/java/lang/String.html">String codigoSIGESUnidade;
        1.5.0/docs/api/java/lang/String.html">String ano;
        1.5.0/docs/api/java/lang/String.html">String semestre;
        1.5.0/docs/api/java/lang/String.html">String nomeUnidadeCurricular;

        1.5.0/docs/api/java/lang/String.html">String codSIGESDocenteResponsavel;
        1.5.0/docs/api/java/lang/String.html">String nomeDocenteResponsavel;
        1.5.0/docs/api/java/lang/String.html">String emailDocenteResponsavel;

        1.5.0/docs/api/java/lang/String.html">String codigoSIGESDocente1;
        1.5.0/docs/api/java/lang/String.html">String outroDocente1;
        1.5.0/docs/api/java/lang/String.html">String docenteEmail1;

        1.5.0/docs/api/java/lang/String.html">String codigoSIGESDocente2;
        1.5.0/docs/api/java/lang/String.html">String outroDocente2;
        1.5.0/docs/api/java/lang/String.html">String docenteEmail2;

        1.5.0/docs/api/java/lang/String.html">String codigoSIGESDocente3;
        1.5.0/docs/api/java/lang/String.html">String outroDocente3;
        1.5.0/docs/api/java/lang/String.html">String docenteEmail3;

        1.5.0/docs/api/java/lang/String.html">String codigoSIGESDocente4;
        1.5.0/docs/api/java/lang/String.html">String outroDocente4;
        1.5.0/docs/api/java/lang/String.html">String docenteEmail4;

        1.5.0/docs/api/java/lang/String.html">String objetivosDaAprendizagem;
        1.5.0/docs/api/java/lang/String.html">String conteudosProgramaticos;
        1.5.0/docs/api/java/lang/String.html">String demonstracaoCoerenciaConteudosObjectivos;
        1.5.0/docs/api/java/lang/String.html">String metodologiasEnsino;
        1.5.0/docs/api/java/lang/String.html">String alunosOrdinariosPorFrequencia;
        1.5.0/docs/api/java/lang/String.html">String alunosOrdinariosPorExame;
        1.5.0/docs/api/java/lang/String.html">String alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia;
        1.5.0/docs/api/java/lang/String.html">String alunosMobilidadeAlunosComEstatutoEspecialPorExame;
        1.5.0/docs/api/java/lang/String.html">String demonstracaoDaCoerenciaMetodologiasObjectivos;
        1.5.0/docs/api/java/lang/String.html">String bibliografiaPrincipal;
        1.5.0/docs/api/java/lang/String.html">String bibliografiaComplementar;
        1.5.0/docs/api/java/lang/String.html">String adaptacaoMetodologiasObjectivos;
        1.5.0/docs/api/java/lang/String.html">String verificacaoCargaECTS;
        1.5.0/docs/api/java/lang/String.html">String avaliacaoFuncaoObjectivos;
        1.5.0/docs/api/java/lang/String.html">String metodologiasFacilitamParticipacaoCientificas;

        1.5.0/docs/api/java/lang/String.html">String ects;
        1.5.0/docs/api/java/lang/String.html">String preRequisitos;
        1.5.0/docs/api/java/lang/String.html">String obrigatoria;
        1.5.0/docs/api/java/lang/String.html">String lingua1;
        1.5.0/docs/api/java/lang/String.html">String lingua2;


        1.5.0/docs/api/java/lang/String.html">String cargaHorariaT;
        1.5.0/docs/api/java/lang/String.html">String cargaHorariaTP;
        1.5.0/docs/api/java/lang/String.html">String cargaHorariaPL;
        1.5.0/docs/api/java/lang/String.html">String cargaHorariaS;
        1.5.0/docs/api/java/lang/String.html">String cargaHorariaTC;
        1.5.0/docs/api/java/lang/String.html">String cargaHorariaO;
        1.5.0/docs/api/java/lang/String.html">String cargaHorariaOT;
        1.5.0/docs/api/java/lang/String.html">String cargaHorariaTotal;

        @1.5.0/docs/api/java/lang/Override.html">Override
        public 1.5.0/docs/api/java/lang/String.html">String toString() {
            return "CourseUnitInputLine{" +
                    "codigoCurso='" + codigoCurso + '\'' +
                    ", codigoSIGESUnidade='" + codigoSIGESUnidade + '\'' +
                    ", ano='" + ano + '\'' +
                    ", semestre='" + semestre + '\'' +
                    ", nomeUnidadeCurricular='" + nomeUnidadeCurricular + '\'' +
                    ", codSIGESDocenteResponsavel='" + codSIGESDocenteResponsavel + '\'' +
                    ", nomeDocenteResponsavel='" + nomeDocenteResponsavel + '\'' +
                    ", emailDocenteResponsavel='" + emailDocenteResponsavel + '\'' +
                    ", codigoSIGESDocente1='" + codigoSIGESDocente1 + '\'' +
                    ", outroDocente1='" + outroDocente1 + '\'' +
                    ", docenteEmail1='" + docenteEmail1 + '\'' +
                    ", codigoSIGESDocente2='" + codigoSIGESDocente2 + '\'' +
                    ", outroDocente2='" + outroDocente2 + '\'' +
                    ", docenteEmail2='" + docenteEmail2 + '\'' +
                    ", codigoSIGESDocente3='" + codigoSIGESDocente3 + '\'' +
                    ", outroDocente3='" + outroDocente3 + '\'' +
                    ", docenteEmail3='" + docenteEmail3 + '\'' +
                    ", codigoSIGESDocente4='" + codigoSIGESDocente4 + '\'' +
                    ", outroDocente4='" + outroDocente4 + '\'' +
                    ", docenteEmail4='" + docenteEmail4 + '\'' +
                    ", objetivosDaAprendizagem='" + objetivosDaAprendizagem + '\'' +
                    ", conteudosProgramaticos='" + conteudosProgramaticos + '\'' +
                    ", demonstracaoCoerenciaConteudosObjectivos='" + demonstracaoCoerenciaConteudosObjectivos + '\'' +
                    ", metodologiasEnsino='" + metodologiasEnsino + '\'' +
                    ", alunosOrdinariosPorFrequencia='" + alunosOrdinariosPorFrequencia + '\'' +
                    ", alunosOrdinariosPorExame='" + alunosOrdinariosPorExame + '\'' +
                    ", alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia='" + alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia + '\'' +
                    ", alunosMobilidadeAlunosComEstatutoEspecialPorExame='" + alunosMobilidadeAlunosComEstatutoEspecialPorExame + '\'' +
                    ", demonstracaoDaCoerenciaMetodologiasObjectivos='" + demonstracaoDaCoerenciaMetodologiasObjectivos + '\'' +
                    ", bibliografiaPrincipal='" + bibliografiaPrincipal + '\'' +
                    ", bibliografiaCompletmentar='" + bibliografiaComplementar + '\'' +
                    ", adaptacaoMetodologiasObjectivos='" + adaptacaoMetodologiasObjectivos + '\'' +
                    ", verificacaoCargaECTS='" + verificacaoCargaECTS + '\'' +
                    ", avaliacaoFuncaoObjectivos='" + avaliacaoFuncaoObjectivos + '\'' +
                    ", metodologiasFacilitamParticipacaoCientificas='" + metodologiasFacilitamParticipacaoCientificas + '\'' +
                    ", ects='" + ects + '\'' +
                    ", preRequisitos='" + preRequisitos + '\'' +
                    ", obrigatoria='" + obrigatoria + '\'' +
                    ", lingua1='" + lingua1 + '\'' +
                    ", lingua2='" + lingua2 + '\'' +
                    ", cargaHorariaT='" + cargaHorariaT + '\'' +
                    ", cargaHorariaTP='" + cargaHorariaTP + '\'' +
                    ", cargaHorariaPL='" + cargaHorariaPL + '\'' +
                    ", cargaHorariaS='" + cargaHorariaS + '\'' +
                    ", cargaHorariaTC='" + cargaHorariaTC + '\'' +
                    ", cargaHorariaOT='" + cargaHorariaOT + '\'' +
                    ", cargaHorariaOT='" + cargaHorariaOT + '\'' +
                    ", cargaHorariaTotal='" + cargaHorariaTotal + '\'' +
                    '}';
        }
    }



    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, 1.5.0/docs/api/java/net/MalformedURLException.html">MalformedURLException, DocumentException, 1.5.0/docs/api/java/sql/SQLException.html">SQLException, 1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException {

        List<CourseUnitInputLine> unitsLines = new ArrayList<CourseUnitInputLine>();
        5+0%2Fdocs%2Fapi+Document">Document dom = parse(new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(new 1.5.0/docs/api/java/io/File.html">File("D:\\Jorge\\Documents\\estg\\projectos\\Fichas Curriculares Baco\\APM.20.dez.12.xml")));

        Dom4jUtil.writeSout(dom);

        List<String>[] lista = new 1.5.0/docs/api/java/util/ArrayList.html">ArrayList[56];

        Map<String,String> namespaces = new HashMap<String,String>();
        namespaces.put("m","urn:schemas-microsoft-com:office:spreadsheet");

        1.5.0/docs/api/javax/xml/xpath/XPath.html">XPath xPath = dom.createXPath("//m:Row");
        xPath.setNamespaceURIs(namespaces);
        List<Element> rows = xPath.selectNodes(dom.getRootElement());

        for(int r = 3; r < 56; r++)
        {
            lista[r - 3] = new ArrayList<String>();
            5+0%2Fdocs%2Fapi+Element">Element row = rows.get(r);
            1.5.0/docs/api/javax/xml/xpath/XPath.html">XPath xPathCells = dom.createXPath("m:Cell");
            xPathCells.setNamespaceURIs(namespaces);
            List<Element> cells = xPathCells.selectNodes(row);
            for(int i = 6; i < cells.size();i++)
            {
                5+0%2Fdocs%2Fapi+Element">Element cell = cells.get(i);
                1.5.0/docs/api/javax/xml/xpath/XPath.html">XPath xPathData = dom.createXPath("m:Data");
                xPathData.setNamespaceURIs(namespaces);
                5+0%2Fdocs%2Fapi+Element">Element data = (5+0%2Fdocs%2Fapi+Element">Element) xPathData.selectSingleNode(cell);
                if(data!=null)
                {
                    1.5.0/docs/api/java/lang/String.html">String text = data.getText();
                    lista[r-3].add(text);
                }
                else
                    lista[r-3].add("");
            }
        }
        int maxUnits = lista[0].size();
        for(int unit = 0; unit < maxUnits; unit++)
        {
            CourseUnitInputLine courseUnitInputLine = new CourseUnitInputLine();
            courseUnitInputLine.codigoCurso = lista[0].get(unit);
            courseUnitInputLine.codigoSIGESUnidade = lista[2].get(unit);
            courseUnitInputLine.ano = lista[3].get(unit);
            courseUnitInputLine.semestre = lista[4].get(unit);
            courseUnitInputLine.nomeUnidadeCurricular = lista[5].get(unit);

            courseUnitInputLine.codSIGESDocenteResponsavel = lista[7].get(unit);
            courseUnitInputLine.nomeDocenteResponsavel = lista[8].get(unit);
            courseUnitInputLine.emailDocenteResponsavel = lista[9].get(unit);

            courseUnitInputLine.codigoSIGESDocente1 = lista[10].get(unit);
            courseUnitInputLine.outroDocente1 = lista[11].get(unit);
            courseUnitInputLine.docenteEmail1 = lista[12].get(unit);

            courseUnitInputLine.codigoSIGESDocente2 = lista[13].get(unit);
            courseUnitInputLine.outroDocente2 = lista[14].get(unit);
            courseUnitInputLine.docenteEmail2 = lista[15].get(unit);

            courseUnitInputLine.codigoSIGESDocente3 = lista[16].get(unit);
            courseUnitInputLine.outroDocente3 = lista[17].get(unit);
            courseUnitInputLine.docenteEmail3 = lista[18].get(unit);

            courseUnitInputLine.codigoSIGESDocente4 = lista[19].get(unit);
            courseUnitInputLine.outroDocente4 = lista[20].get(unit);
            courseUnitInputLine.docenteEmail4 = lista[21].get(unit);

            courseUnitInputLine.objetivosDaAprendizagem = lista[22].get(unit);
            courseUnitInputLine.conteudosProgramaticos = lista[23].get(unit);
            courseUnitInputLine.demonstracaoCoerenciaConteudosObjectivos = lista[24].get(unit);
            courseUnitInputLine.metodologiasEnsino = lista[25].get(unit);
            courseUnitInputLine.alunosOrdinariosPorFrequencia = lista[26].get(unit);
            courseUnitInputLine.alunosOrdinariosPorExame = lista[27].get(unit);
            courseUnitInputLine.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = lista[28].get(unit);
            courseUnitInputLine.alunosMobilidadeAlunosComEstatutoEspecialPorExame = lista[29].get(unit);
            courseUnitInputLine.demonstracaoDaCoerenciaMetodologiasObjectivos = lista[30].get(unit);
            courseUnitInputLine.bibliografiaPrincipal = lista[31].get(unit);
            courseUnitInputLine.bibliografiaComplementar = lista[32].get(unit);
            courseUnitInputLine.adaptacaoMetodologiasObjectivos = lista[34].get(unit);
            courseUnitInputLine.verificacaoCargaECTS = lista[35].get(unit);
            courseUnitInputLine.avaliacaoFuncaoObjectivos = lista[36].get(unit);
            courseUnitInputLine.metodologiasFacilitamParticipacaoCientificas = lista[37].get(unit);
            courseUnitInputLine.ects = lista[39].get(unit);
            courseUnitInputLine.preRequisitos = lista[40].get(unit);
            courseUnitInputLine.obrigatoria = lista[41].get(unit);
            courseUnitInputLine.lingua1 = lista[42].get(unit);
            courseUnitInputLine.lingua2 = lista[43].get(unit);

            courseUnitInputLine.cargaHorariaT = lista[45].get(unit);
            courseUnitInputLine.cargaHorariaTP = lista[46].get(unit);
            courseUnitInputLine.cargaHorariaPL = lista[47].get(unit);
            courseUnitInputLine.cargaHorariaS = lista[48].get(unit);
            courseUnitInputLine.cargaHorariaTC = lista[49].get(unit);
            courseUnitInputLine.cargaHorariaO = lista[50].get(unit);
            courseUnitInputLine.cargaHorariaOT = lista[51].get(unit);
            courseUnitInputLine.cargaHorariaTotal = lista[52].get(unit);




            if(courseUnitInputLine.semestre.equals("S1") || courseUnitInputLine.semestre.equals("S2") || courseUnitInputLine.semestre.equals("A"))
                unitsLines.add(courseUnitInputLine);
            else
                1.5.0/docs/api/java/lang/System.html">System.out.println("Unidade curricular " + courseUnitInputLine.nomeUnidadeCurricular + " ( " + courseUnitInputLine.codigoSIGESUnidade +  " ) tem o semestre mal definido ");
        }


        for(CourseUnitInputLine line: unitsLines)
        {
//            System.out.println(line.toString());
            HibernateUtils.getCurrentSession().beginTransaction();

            HibernateUtils.getCurrentSession().connection().setAutoCommit(false);
            importCourseUnit(line,importYear);

            HibernateUtils.getCurrentSession().getTransaction().commit();

        }


    }

    static 1.5.0/docs/api/java/lang/String.html">String importYear = "201213";
    private static void importCourseUnit(CourseUnitInputLine line, 1.5.0/docs/api/java/lang/String.html">String importYear) throws 1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, 1.5.0/docs/api/java/io/IOException.html">IOException, FOPException {

        CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear);
        if(cu != null)
        {
            setCourse(cu, line);
        }
        else
        {
            cu = createNewCourseUnit(cu,line,importYear);
        }
        persistCourseUnitProgram(cu,line);
        setTeachers(cu,line);

        createPdf(line,cu);

    }

    private static void createPdf(CourseUnitInputLine line, CourseUnit cu) throws 1.5.0/docs/api/java/io/IOException.html">IOException, 1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException {
        5+0%2Fdocs%2Fapi+Document">Document responseDoc = DocumentHelper.createDocument();
        Namespace namespace = new Namespace("uc", "http://baco.estgp.pt/schemas/courseunits/program/");
        responseDoc.setXMLEncoding("ISO-8859-1");

        1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat sdf = new 1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat("dd-MM-yyyy");
        5+0%2Fdocs%2Fapi+Element">Element curriculum = responseDoc.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("UnidadeCurricular", namespace));
        curriculum.addAttribute(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("data",namespace),sdf.format(new java.util.5+0%2Fdocs%2Fapi+Date">Date()));

        5+0%2Fdocs%2Fapi+Element">Element curso = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("curso",namespace));
        curso.setText(cu.getCourseName());

        5+0%2Fdocs%2Fapi+Element">Element anoLectivo = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("anoLectivo",namespace));
        anoLectivo.setText(DatesUtils.getImportYearPrograms(cu.getImportYear()));

        5+0%2Fdocs%2Fapi+Element">Element unidadeCurricular = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("unidadeCurricular",namespace));
        unidadeCurricular.setText(cu.getName());

        5+0%2Fdocs%2Fapi+Element">Element responsavel = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("responsavel",namespace));
        responsavel.setText(line.nomeDocenteResponsavel);

        5+0%2Fdocs%2Fapi+Element">Element responsavelEmail = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("responsavelEmail",namespace));
        responsavelEmail.setText(line.emailDocenteResponsavel);



        5+0%2Fdocs%2Fapi+Element">Element apresentacaoObjectivos = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("objetivosDaAprendizagem",namespace));
        apresentacaoObjectivos.setText(line.objetivosDaAprendizagem);



        5+0%2Fdocs%2Fapi+Element">Element codigoSIGESDocente1 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("codigoSIGESDocente1",namespace));
        codigoSIGESDocente1.setText(line.codigoSIGESDocente1);
        5+0%2Fdocs%2Fapi+Element">Element outroDocente1 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("outroDocente1",namespace));
        outroDocente1.setText(line.outroDocente1);
        5+0%2Fdocs%2Fapi+Element">Element docenteEmail1 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("docenteEmail1",namespace));
        docenteEmail1.setText(line.docenteEmail1);


        5+0%2Fdocs%2Fapi+Element">Element codigoSIGESDocente2 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("codigoSIGESDocente2",namespace));
        codigoSIGESDocente2.setText(line.codigoSIGESDocente2);
        5+0%2Fdocs%2Fapi+Element">Element outroDocente2 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("outroDocente2",namespace));
        outroDocente2.setText(line.outroDocente2);
        5+0%2Fdocs%2Fapi+Element">Element docenteEmail2 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("docenteEmail2",namespace));
        docenteEmail2.setText(line.docenteEmail2);

        5+0%2Fdocs%2Fapi+Element">Element codigoSIGESDocente3 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("codigoSIGESDocente3",namespace));
        codigoSIGESDocente3.setText(line.codigoSIGESDocente2);
        5+0%2Fdocs%2Fapi+Element">Element outroDocente3 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("outroDocente3",namespace));
        outroDocente3.setText(line.outroDocente3);
        5+0%2Fdocs%2Fapi+Element">Element docenteEmail3 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("docenteEmail3",namespace));
        docenteEmail3.setText(line.docenteEmail3);


        5+0%2Fdocs%2Fapi+Element">Element codigoSIGESDocente4 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("codigoSIGESDocente4",namespace));
        codigoSIGESDocente4.setText(line.codigoSIGESDocente4);
        5+0%2Fdocs%2Fapi+Element">Element outroDocente4 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("outroDocente4",namespace));
        outroDocente4.setText(line.outroDocente4);
        5+0%2Fdocs%2Fapi+Element">Element docenteEmail4 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("docenteEmail4",namespace));
        docenteEmail4.setText(line.docenteEmail4);


        5+0%2Fdocs%2Fapi+Element">Element conteudosProgramaticos = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("conteudosProgramaticos",namespace));
        conteudosProgramaticos.setText(line.conteudosProgramaticos);

        5+0%2Fdocs%2Fapi+Element">Element demonstracaoCoerenciaConteudosObjectivos = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("demonstracaoCoerenciaConteudosObjectivos",namespace));
        demonstracaoCoerenciaConteudosObjectivos.setText(line.demonstracaoCoerenciaConteudosObjectivos);

        5+0%2Fdocs%2Fapi+Element">Element metodologiasEnsino = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("metodologiasEnsino",namespace));
        metodologiasEnsino.setText(line.metodologiasEnsino);

        5+0%2Fdocs%2Fapi+Element">Element alunosOrdinariosPorFrequencia = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosOrdinariosPorFrequencia",namespace));
        alunosOrdinariosPorFrequencia.setText(line.alunosOrdinariosPorFrequencia);

        5+0%2Fdocs%2Fapi+Element">Element alunosOrdinariosPorExame = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosOrdinariosPorExame",namespace));
        alunosOrdinariosPorExame.setText(line.alunosOrdinariosPorExame);

        5+0%2Fdocs%2Fapi+Element">Element alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia",namespace));
        alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia.setText(line.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia);

        5+0%2Fdocs%2Fapi+Element">Element alunosMobilidadeAlunosComEstatutoEspecialPorExame = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosMobilidadeAlunosComEstatutoEspecialPorExame",namespace));
        alunosMobilidadeAlunosComEstatutoEspecialPorExame.setText(line.alunosMobilidadeAlunosComEstatutoEspecialPorExame);


        5+0%2Fdocs%2Fapi+Element">Element demonstracaoDaCoerenciaMetodologiasObjectivos = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("demonstracaoDaCoerenciaMetodologiasObjectivos",namespace));
        demonstracaoDaCoerenciaMetodologiasObjectivos.setText(line.demonstracaoDaCoerenciaMetodologiasObjectivos);


        5+0%2Fdocs%2Fapi+Element">Element bibliografiaPrincipal = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("bibliografiaPrincipal",namespace));
        bibliografiaPrincipal.setText(line.bibliografiaPrincipal);

        5+0%2Fdocs%2Fapi+Element">Element bibliografiaComplementar = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("bibliografiaComplementar",namespace));
        bibliografiaComplementar.setText(line.bibliografiaComplementar);

        5+0%2Fdocs%2Fapi+Element">Element adaptacaoMetodologiasObjectivos = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("adaptacaoMetodologiasObjectivos",namespace));
        adaptacaoMetodologiasObjectivos.setText(line.adaptacaoMetodologiasObjectivos);

        5+0%2Fdocs%2Fapi+Element">Element verificacaoCargaECTS = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("verificacaoCargaECTS",namespace));
        verificacaoCargaECTS.setText(line.verificacaoCargaECTS);

        5+0%2Fdocs%2Fapi+Element">Element avaliacaoFuncaoObjectivos = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("avaliacaoFuncaoObjectivos",namespace));
        avaliacaoFuncaoObjectivos.setText(line.avaliacaoFuncaoObjectivos);

        5+0%2Fdocs%2Fapi+Element">Element metodologiasFacilitamParticipacaoCientificas = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("metodologiasFacilitamParticipacaoCientificas",namespace));
        metodologiasFacilitamParticipacaoCientificas.setText(line.metodologiasFacilitamParticipacaoCientificas);

        5+0%2Fdocs%2Fapi+Element">Element ects = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("ects",namespace));
        ects.setText(line.ects);


        5+0%2Fdocs%2Fapi+Element">Element preRequisitos = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("preRequisitos",namespace));
        preRequisitos.setText(line.preRequisitos);

        5+0%2Fdocs%2Fapi+Element">Element obrigatoria = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("obrigatoria",namespace));
        obrigatoria.setText(line.obrigatoria);

        5+0%2Fdocs%2Fapi+Element">Element lingua1 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("lingua1",namespace));
        lingua1.setText(line.lingua1);

        5+0%2Fdocs%2Fapi+Element">Element lingua2 = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("lingua2",namespace));
        lingua2.setText(line.lingua2);

        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaT = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaT",namespace));
        cargaHorariaT.setText(line.cargaHorariaT);
        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaTP = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaTP",namespace));
        cargaHorariaTP.setText(line.cargaHorariaTP);
        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaPL = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaPL",namespace));
        cargaHorariaPL.setText(line.cargaHorariaPL);
        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaS = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaS",namespace));
        cargaHorariaS.setText(line.cargaHorariaS);
        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaTC = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaTC",namespace));
        cargaHorariaTC.setText(line.cargaHorariaTC);
        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaO = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaO",namespace));
        cargaHorariaO.setText(line.cargaHorariaO);
        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaOT = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaOT",namespace));
        cargaHorariaOT.setText(line.cargaHorariaOT);

        5+0%2Fdocs%2Fapi+Element">Element cargaHorariaTotal = curriculum.addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaTotal",namespace));
        cargaHorariaTotal.setText(line.cargaHorariaTotal);











        Dom4jUtil.writeSout(responseDoc);
        1.5.0/docs/api/java/lang/System.html">System.out.println("");

        1.5.0/docs/api/java/lang/String.html">String path = Globals.TMP_DIR + 1.5.0/docs/api/java/io/File.html">File.separator + "cu.pdf";
        1.5.0/docs/api/java/io/FileOutputStream.html">FileOutputStream teste = new 1.5.0/docs/api/java/io/FileOutputStream.html">FileOutputStream(path);
        Map<String,Object> params = new HashMap<String,Object>();
        params.put("site", Globals.SITE_URL);
        PdfUtils.createPdfFromXml(new 1.5.0/docs/api/javax/xml/transform/dom/DOMSource.html">DOMSource(Dom4jUtil.toW3c(responseDoc)), "pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", teste,params);
        teste.flush();
        teste.close();


        RepositoryService repositoryService = new RepositoryService();
        User owner = null;
        if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
            owner = cu.getTeachers().iterator().next();
        else
            owner = DaoFactory.getUserDaoImpl().load(1);
        if(cu.getProgramStreamId() == null)
        {
            1.5.0/docs/api/java/lang/String.html">String identifier = repositoryService.storeRepositoryFile(new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(path), "application/pdf", "pdf",((int) new 1.5.0/docs/api/java/io/File.html">File(path).length()), cu.getCode() + ".pdf", "courseunit.program.description" + cu.getName(), ResourceAccessControlEnum.publicDomain,owner);
            cu.setProgramStreamId(identifier);
        }
        else
        {
            repositoryService.updateRepositoryFile(cu.getProgramStreamId(), new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(path),  "application/pdf", "pdf", ((int)new 1.5.0/docs/api/java/io/File.html">File(path).length()),cu.getCode() + ".pdf", "courseunit.program.description " + cu.getName(), ResourceAccessControlEnum.publicDomain);
        }
        //Obrigar a ser falso
        cu.setValidProgram(false);
    }

    private static void setTeachers(CourseUnit cu, CourseUnitInputLine line)
    {
        if(line.codSIGESDocenteResponsavel != null && line.codSIGESDocenteResponsavel.trim().length() > 0)
        {
            checkTeacher(cu, line.codSIGESDocenteResponsavel,line.nomeDocenteResponsavel,line.emailDocenteResponsavel);
        }
        else
            1.5.0/docs/api/java/lang/System.html">System.out.println("Nao existe docente responsavel para a unidade " + cu.getCode());

        if(line.codigoSIGESDocente1 != null && line.codigoSIGESDocente1.trim().length() > 0)
            checkTeacher(cu, line.codigoSIGESDocente1,line.outroDocente1,line.docenteEmail1);
        if(line.codigoSIGESDocente2 != null && line.codigoSIGESDocente2.trim().length() > 0)
            checkTeacher(cu, line.codigoSIGESDocente2,line.outroDocente2,line.docenteEmail2);
        if(line.codigoSIGESDocente3 != null && line.codigoSIGESDocente3.trim().length() > 0)
            checkTeacher(cu, line.codigoSIGESDocente3,line.outroDocente3,line.docenteEmail3);
        if(line.codigoSIGESDocente4 != null && line.codigoSIGESDocente4.trim().length() > 0)
            checkTeacher(cu, line.codigoSIGESDocente4,line.outroDocente4,line.docenteEmail4);
    }

    private static void checkTeacher(CourseUnit cu, 1.5.0/docs/api/java/lang/String.html">String codSIGESDocenteResponsavel, 1.5.0/docs/api/java/lang/String.html">String nomeDocenteResponsavel, 1.5.0/docs/api/java/lang/String.html">String emailDocenteResponsavel) {

        try{
            Teacher t = DaoFactory.getTeacherDaoImpl().loadBySigesCode(1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(codSIGESDocenteResponsavel));
            boolean found = false;
            for(Teacher ts : cu.getTeachers())
            {
                if(ts.getId() == t.getId())
                {
                    found = true;
                    break;
                }
            }
            if(!found)
                cu.getTeachers().add((TeacherImpl) t);
        }catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
        {

        }

    }

    private static CourseUnit createNewCourseUnit(CourseUnit cu, CourseUnitInputLine line,1.5.0/docs/api/java/lang/String.html">String importYear)
    {
        cu = DomainObjectFactory.createCourseUnitImpl();
        cu.setSemestre(line.semestre);
        cu.setImportYear(importYear);
        cu.setCode(line.codigoSIGESUnidade);
        cu.setCourseCode(line.codigoCurso);
        cu.setName(line.nomeUnidadeCurricular);
        cu.setInstitutionCode("" + Globals.SIGES_INSTITUTION_CODE);

        setCourse(cu, line);
        DaoFactory.getCourseUnitDaoImpl().save(cu);
        return cu;
    }

    private static void setCourse(CourseUnit cu, CourseUnitInputLine line) {
        Course c = DaoFactory.getCourseDaoImpl().findCourseByCode(line.codigoCurso);
        if(c == null)
            1.5.0/docs/api/java/lang/System.html">System.out.println("Curso " + line.codigoCurso + " nao existe por favor crie e importe novamente");
        cu.setCourse(c);
    }

    private static void persistCourseUnitProgram(CourseUnit cu, CourseUnitInputLine line) throws 1.5.0/docs/api/java/io/IOException.html">IOException, 1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException {
        Session sess = HibernateUtils.getCurrentSession();

        CourseUnitProgram program = cu.getCourseUnitProgram();
        if(program == null)
        {
            program = new CourseUnitProgramImpl();
            program.setSaveDate(new java.util.5+0%2Fdocs%2Fapi+Date">Date());
            sess.save(program);
            cu.setCourseUnitProgram(program);
        }
        program.setAdaptacaoObjectivosMetodologia(line.adaptacaoMetodologiasObjectivos);
        program.setAvaliacaoEspeciaisFrequencia(line.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia);
        program.setAvaliacaoEspeciaissExame(line.alunosMobilidadeAlunosComEstatutoEspecialPorExame);
        program.setAvaliacaoOrdinariosFrequencia(line.alunosOrdinariosPorFrequencia);
        program.setAvaliacaoOrdinariosExame(line.alunosOrdinariosPorExame);
        program.setBibliografia(line.bibliografiaPrincipal);
        program.setBibliografiaComplementar(line.bibliografiaComplementar);
        program.setConteudos(line.conteudosProgramaticos);
        program.setDemonstracaoCargaEcts(line.verificacaoCargaECTS);
        program.setDemonstracaoObjectivosMetodologia(line.demonstracaoDaCoerenciaMetodologiasObjectivos);
        program.setEcts(line.ects);
        program.setGarantiaAvaliacaoFuncaObjectivos(line.avaliacaoFuncaoObjectivos);
        program.setLingua1(line.lingua1);
        program.setLingua2(line.lingua2);
        program.setMetodologiasActividadeCientifica(line.metodologiasFacilitamParticipacaoCientificas);
        program.setMetodologiasEnsino(line.metodologiasEnsino);
        program.setDemonstracaoCoerenciaConteudos(line.demonstracaoCoerenciaConteudosObjectivos);
        program.setObjectivos(line.objetivosDaAprendizagem);
        program.setObrigatoria(line.obrigatoria);
        program.setPrerequisitos(line.preRequisitos);


    }

}