Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.domain;

import jomm.dao.utils.HibernateUtils;
import org.apache.fop.apps.FOPException;
import org.dom4j.*;
import org.hibernate.NonUniqueResultException;
import org.hibernate.Session;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram;

import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.sql.SQLException;
import java.util.*;

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 CourseUnitProgramImpl() {

        setBibliografia("");
        setBibliografiaComplementar("");
        setAdaptacaoObjectivosMetodologia("");
        setDemonstracaoCargaEcts("");
        setGarantiaAvaliacaoFuncaObjectivos("");
        setMetodologiasActividadeCientifica("");
        setEcts("");
        setPrerequisitos("");
        setObrigatoria("");
        setLingua1("");
        setLingua2("");
        setCargaHorariaTotal("");
        setCargaHorariaT("");
        setCargaHorariaTP("");
        setCargaHorariaPL("");
        setCargaHorariaS("");
        setCargaHorariaTC("");
        setCargaHorariaO("");
        setCargaHorariaOT("");

    }

    public void consistNullValues()
    {
        if(getBibliografia() == null)
            setBibliografia("");
        if(getBibliografiaComplementar() == null)
            setBibliografiaComplementar("");
        if(getAdaptacaoObjectivosMetodologia() == null)
            setAdaptacaoObjectivosMetodologia("");
        if(getDemonstracaoCargaEcts() == null)
            setDemonstracaoCargaEcts("");
        if(getGarantiaAvaliacaoFuncaObjectivos() == null)
            setGarantiaAvaliacaoFuncaObjectivos("");
        if(getMetodologiasActividadeCientifica() == null)
            setMetodologiasActividadeCientifica("");
        if(getEcts() == null)
            setEcts("");
        if(getPrerequisitos() == null)
            setPrerequisitos("");
        if(getObrigatoria() == null)
            setObrigatoria("");
        if(getLingua1() == null)
            setLingua1("");
        if(getLingua2() == null)
            setLingua2("");
        if(getCargaHorariaTotal() == null)
            setCargaHorariaTotal("");
        if(getCargaHorariaT() == null)
            setCargaHorariaT("");
        if(getCargaHorariaTP() == null)
            setCargaHorariaTP("");
        if(getCargaHorariaPL() == null)
            setCargaHorariaPL("");
        if(getCargaHorariaS() == null)
            setCargaHorariaS("");
        if(getCargaHorariaTC() == null)
            setCargaHorariaTC("");
        if(getCargaHorariaO() == null)
            setCargaHorariaO("");
        if(getCargaHorariaOT() == null)
            setCargaHorariaOT("");
        if(getCourseUnitProgramPart2() != null)
        {
            ((CourseUnitProgramPart2Impl)getCourseUnitProgramPart2()).consistNullValues();
        }
    }

    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 + '\'' +
                    '}';
        }
    }



    static boolean valiPrograms = true;
    static int contaProgramas = 0;
    static boolean considerProblems = false;
    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, DocumentException, 1.5.0/docs/api/java/sql/SQLException.html">SQLException, 1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException {


        1.5.0/docs/api/java/lang/System.html">System.out.println("CONSISTING COURSE IDS in units:");
        HibernateUtils.getCurrentSession().beginTransaction();
        DaoFactory.getCourseUnitDaoImpl().consistCourseUnitCourseCodes(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());
        HibernateUtils.getCurrentSession().getTransaction().commit();
        1.5.0/docs/api/java/lang/System.html">System.out.println("Done");

        1.5.0/docs/api/java/lang/String.html">String file = "D:\\Jorge\\Documents\\estg\\projectos\\Fichas Curriculares Baco\\FICHAS_CORRIGIDAS\\DC - 10.jan.13.xml";
        if(args.length > 0)
            file = args[0];
        if(args.length > 1)
            valiPrograms = 1.5.0/docs/api/java/lang/Boolean.html">Boolean.parseBoolean(args[1]);
        if(args.length > 2)
            considerProblems = 1.5.0/docs/api/java/lang/Boolean.html">Boolean.parseBoolean(args[2]);
        1.5.0/docs/api/java/io/File.html">File f = new 1.5.0/docs/api/java/io/File.html">File(file);
        1.5.0/docs/api/java/io/File.html">File f2 = f;

        try{
            if(f.isDirectory())
            {
                for(1.5.0/docs/api/java/io/File.html">File f3 : f.listFiles())
                {
                    f2 = f3;
                    if(f3.getName().endsWith("xml"))
                    {
                        contaProgramas++;
                        1.5.0/docs/api/java/lang/System.html">System.out.println("TOTAL Programas: " + contaProgramas);
                        importFile(f3);
                    }
                }
            }
            else
            {
                importFile(f);
            }
        }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println(e.toString());
            e.printStackTrace();
            1.5.0/docs/api/java/lang/System.html">System.out.println("Falhou a importar o ficheiro: " + f2.getName());
        }
        for(1.5.0/docs/api/java/lang/String.html">String error: errors)
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println("ERRO:" + error);
        }
        1.5.0/docs/api/java/lang/System.html">System.out.println("INFOS:" + infos.size() + "#############################################");
        for(1.5.0/docs/api/java/lang/String.html">String info: infos)
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println(info);
        }
        1.5.0/docs/api/java/lang/System.html">System.out.println("ERROS:" + errors.size() + "#############################################");
        for(1.5.0/docs/api/java/lang/String.html">String error: errors)
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println(error);
        }


    }

    public static void importFile(1.5.0/docs/api/java/io/File.html">File f) 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(f));

//        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");
        namespaces.put("ss","urn:schemas-microsoft-com:office:spreadsheet");

        1.5.0/docs/api/javax/xml/xpath/XPath.html">XPath xPath = dom.createXPath("//m:Worksheet");
        xPath.setNamespaceURIs(namespaces);
        List<Element> worksheets = xPath.selectNodes(dom.getRootElement());
        Map<Integer,String> affectedRows = new HashMap<Integer,String>();
        for(5+0%2Fdocs%2Fapi+Element">Element worksheet:worksheets)
        {
            xPath = worksheet.createXPath(".//m:Row");
            xPath.setNamespaceURIs(namespaces);
            List<Element> rows = xPath.selectNodes(worksheet);

            for(int r = 3; r < 56; r++)
            {
                if(lista[r-3] == null)
                    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);
                    5+0%2Fdocs%2Fapi+Attribute">Attribute attr = cell.attribute("Index");
                    1.5.0/docs/api/java/lang/System.html">System.out.println("###############################" + attr);
                    if(attr != null)
                    {
                        if(attr.getValue() != null && attr.getValue().length() > 0)
                        {
                            1.5.0/docs/api/java/lang/System.html">System.out.println("###############################");
                            int index = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(attr.getValue());
                            affectedRows.put((r-3),"AFFECTED");
                            if(index > i+1)
                            {
                                int indexHoles = index - 1 - i ; //porque o Index come�a em 1
                                for(int j=0; j < indexHoles;j++)
                                {
                                    1.5.0/docs/api/java/lang/System.html">System.out.println("SPACES    ###############################");
                                   lista[r-3].add("");
                                }
                            }
                        }
                    }

                    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("");

                }
            }

        }

        if(!considerProblems || affectedRows.size() > 0)
        {
            errors.add("IMPORTING AGAIN COURSE: " + f.getName());
        }
        else
        {
            errors.add("COURSE " + f.getName() + "no problems found");
            return;
        }
        int maxUnits = lista[0].size();
        for(int unit = 0; unit < maxUnits; unit++)
        {
            CourseUnitInputLine courseUnitInputLine = new CourseUnitInputLine();
            if(lista[0].size() > unit)
                courseUnitInputLine.codigoCurso = lista[0].get(unit);
            if(lista[2].size() > unit)
                courseUnitInputLine.codigoSIGESUnidade = lista[2].get(unit);
            if(lista[3].size() > unit)
                courseUnitInputLine.ano = lista[3].get(unit);
            if(lista[4].size() > unit)
                courseUnitInputLine.semestre = lista[4].get(unit);
            if(lista[5].size() > unit)
                courseUnitInputLine.nomeUnidadeCurricular = lista[5].get(unit);

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

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

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

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

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


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

            if(lista[45].size() > unit)
                courseUnitInputLine.cargaHorariaT = lista[45].get(unit);
            if(lista[46].size() > unit)
                courseUnitInputLine.cargaHorariaTP = lista[46].get(unit);
            if(lista[47].size() > unit)
                courseUnitInputLine.cargaHorariaPL = lista[47].get(unit);
            if(lista[48].size() > unit)
                courseUnitInputLine.cargaHorariaS = lista[48].get(unit);
            if(lista[49].size() > unit)
                courseUnitInputLine.cargaHorariaTC = lista[49].get(unit);
            if(lista[50].size() > unit)
                courseUnitInputLine.cargaHorariaO = lista[50].get(unit);
            if(lista[51].size() > unit)
                courseUnitInputLine.cargaHorariaOT = lista[51].get(unit);
            if(lista[52].size() > 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);
            1.5.0/docs/api/java/lang/System.html">System.out.println("Unidade curricular " + line.codigoSIGESUnidade + " " + line.nomeUnidadeCurricular);
            importCourseUnit(line,importYear);

            1.5.0/docs/api/java/lang/System.html">System.out.println(line.alunosOrdinariosPorFrequencia);
            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 = null;
        try{
            //todo revisao necessaria
            1.5.0/docs/api/java/lang/System.html">System.out.println("######FRAGMENTO DE CODIGO DESATUALIZADO, NESTE MOMENTO UMA CADEIRA AQUI NAO E UNICA (FALTA ID DE TURMA) -> NECESSITA DE REVISAO");
            List<CourseUnit> cs = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear);
            if(cs!=null && cs.size() > 0)
                cu=cs.get(0);
        }catch(NonUniqueResultException e)
        {
            errors.add("unidade nao unica: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear );
            return;
        }
        if(cu != null)
        {
            if(!setCourse(cu, line))
            {
                errors.add("Curso n�o encontrada: line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear );
                return;
            }
        }
        else
        {
            errors.add("Unidade n�o encontrada: line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear );
//            cu = createNewCourseUnit(cu,line,importYear);
            return;
        }
        persistCourseUnitProgram(cu,line);
        setTeachers(cu,line);

        new SaveCourseUnitProgram().createPdf(cu,errors);

        cu.setValidProgram(valiPrograms);
    }

    private static void setTeachers(CourseUnit cu, CourseUnitInputLine line)
    {
        if(line.codSIGESDocenteResponsavel != null && line.codSIGESDocenteResponsavel.trim().length() > 0)
        {
            checkTeacherResponsable(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);
    }






    static List<String> errors = new ArrayList<String>();
    static List<String> infos = new ArrayList<String>();
    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 && t != null)
                cu.getTeachers().add((TeacherImpl) t);
            else if(!found && t == null)
            {

                errors.add("Teacher: " + codSIGESDocenteResponsavel + " not found in courseUnit " + cu.getName() + "(" + cu.getCode() + ") no curso " + cu.getCourseName());

            }
        }catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
        {

        }

    }


    private static void checkTeacherResponsable(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));

            if(t != null)
            {
                cu.setResponsableTeacher(t);
                if(cu.getTeachers().contains(t))
                {
                    infos.add("Docente Responsavel removido da lista de docentes da unidade: " + t.getName()+ " - unit(" + cu.getId() + ") " + cu.getName());
                    cu.getTeachers().remove(t);
                }
            }
            else
            {
                errors.add("Teacher: " + codSIGESDocenteResponsavel + " not found in courseUnit " + cu.getName() + "(" + cu.getCode() + ") no curso " + cu.getCourseName());
            }
        }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("" + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode());

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

    private static boolean 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");
            return false;
        }
        cu.setCourse(c);
        return true;
    }

    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();
        CourseUnitProgramPart2 program2;
        if(program == null)
        {
            program = new CourseUnitProgramImpl();
            program2 = new CourseUnitProgramPart2Impl();
            program.setSaveDate(new java.util.5+0%2Fdocs%2Fapi+Date">Date());
            program2.setSaveDate(new java.util.5+0%2Fdocs%2Fapi+Date">Date());
            program.setCourseUnitProgramPart2(program2);
            sess.save(program);
            sess.save(program2);
            cu.setCourseUnitProgram(program);
        }
        else
            program2 = program.getCourseUnitProgramPart2();
        program.setAdaptacaoObjectivosMetodologia(line.adaptacaoMetodologiasObjectivos);
        program2.setAvaliacaoEspeciaisFrequencia(line.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia);
        program2.setAvaliacaoEspeciaissExame(line.alunosMobilidadeAlunosComEstatutoEspecialPorExame);
        program2.setAvaliacaoOrdinariosFrequencia(line.alunosOrdinariosPorFrequencia);
        program2.setAvaliacaoOrdinariosExame(line.alunosOrdinariosPorExame);
        program.setBibliografia(line.bibliografiaPrincipal);
        program.setBibliografiaComplementar(line.bibliografiaComplementar);
        program2.setConteudos(line.conteudosProgramaticos);
        program.setDemonstracaoCargaEcts(line.verificacaoCargaECTS);
        program2.setDemonstracaoObjectivosMetodologia(line.demonstracaoDaCoerenciaMetodologiasObjectivos);
        program.setEcts(line.ects);
        program.setGarantiaAvaliacaoFuncaObjectivos(line.avaliacaoFuncaoObjectivos);
        program.setLingua1(line.lingua1);
        program.setLingua2(line.lingua2);
        program.setMetodologiasActividadeCientifica(line.metodologiasFacilitamParticipacaoCientificas);
        program2.setMetodologiasEnsino(line.metodologiasEnsino);
        program2.setDemonstracaoCoerenciaConteudos(line.demonstracaoCoerenciaConteudosObjectivos);
        program2.setObjectivos(line.objetivosDaAprendizagem);
        program.setObrigatoria(line.obrigatoria);
        program.setPrerequisitos(line.preRequisitos);
        program.setCargaHorariaTotal(line.cargaHorariaTotal);
        program.setCargaHorariaT(line.cargaHorariaT);
        program.setCargaHorariaTP(line.cargaHorariaTP);
        program.setCargaHorariaPL(line.cargaHorariaPL);
        program.setCargaHorariaS(line.cargaHorariaS);
        program.setCargaHorariaTC(line.cargaHorariaTC);
        program.setCargaHorariaO(line.cargaHorariaO);
        program.setCargaHorariaOT(line.cargaHorariaOT);



    }


//    private static void createPdf(CourseUnitInputLine line, CourseUnit cu) throws IOException, TransformerException, FOPException {
//        Document responseDoc = DocumentHelper.createDocument();
//        Namespace namespace = new Namespace("uc", "http://baco.estgp.pt/schemas/courseunits/program/");
//        responseDoc.setXMLEncoding("ISO-8859-1");
//
//        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
//        Element curriculum = responseDoc.addElement(new QName("UnidadeCurricular", namespace));
//        curriculum.addAttribute(new QName("data",namespace),sdf.format(new java.util.Date()));
//
//        Element curso = curriculum.addElement(new QName("curso",namespace));
//        if(cu.getCourseName() == null)
//        {
//            if(cu.getCourse() == null)
//            {
//                System.out.println("Unidade nao tem curso");
//                curso.setText("Desactualizado");
//            }
//            else
//            {
//                System.out.println("Unidade nao tem nome no curso a actualizar com " + cu.getCourse().getName());
//                curso.setText(cu.getCourse().getName());
//                cu.setCourseName(cu.getCourse().getName());
//            }
//        }
//        else
//            curso.setText(cu.getCourseName());
//
//        Element anoLectivo = curriculum.addElement(new QName("anoLectivo",namespace));
//        anoLectivo.setText(DatesUtils.getImportYearPrograms(cu.getImportYear()));
//
//        Element unidadeCurricular = curriculum.addElement(new QName("unidadeCurricular",namespace));
//        unidadeCurricular.setText(cu.getName());
//
//        Element responsavel = curriculum.addElement(new QName("responsavel",namespace));
//        responsavel.setText(line.nomeDocenteResponsavel);
//
//        Element responsavelEmail = curriculum.addElement(new QName("responsavelEmail",namespace));
//        responsavelEmail.setText(line.emailDocenteResponsavel);
//
//
//
//        Element apresentacaoObjectivos = curriculum.addElement(new QName("objetivosDaAprendizagem",namespace));
//        apresentacaoObjectivos.setText(line.objetivosDaAprendizagem);
//
//
//
//        Element codigoSIGESDocente1 = curriculum.addElement(new QName("codigoSIGESDocente1",namespace));
//        codigoSIGESDocente1.setText(line.codigoSIGESDocente1);
//        Element outroDocente1 = curriculum.addElement(new QName("outroDocente1",namespace));
//        outroDocente1.setText(line.outroDocente1);
//        Element docenteEmail1 = curriculum.addElement(new QName("docenteEmail1",namespace));
//        docenteEmail1.setText(line.docenteEmail1);
//
//
//        Element codigoSIGESDocente2 = curriculum.addElement(new QName("codigoSIGESDocente2",namespace));
//        codigoSIGESDocente2.setText(line.codigoSIGESDocente2);
//        Element outroDocente2 = curriculum.addElement(new QName("outroDocente2",namespace));
//        outroDocente2.setText(line.outroDocente2);
//        Element docenteEmail2 = curriculum.addElement(new QName("docenteEmail2",namespace));
//        docenteEmail2.setText(line.docenteEmail2);
//
//        Element codigoSIGESDocente3 = curriculum.addElement(new QName("codigoSIGESDocente3",namespace));
//        codigoSIGESDocente3.setText(line.codigoSIGESDocente2);
//        Element outroDocente3 = curriculum.addElement(new QName("outroDocente3",namespace));
//        outroDocente3.setText(line.outroDocente3);
//        Element docenteEmail3 = curriculum.addElement(new QName("docenteEmail3",namespace));
//        docenteEmail3.setText(line.docenteEmail3);
//
//
//        Element codigoSIGESDocente4 = curriculum.addElement(new QName("codigoSIGESDocente4",namespace));
//        codigoSIGESDocente4.setText(line.codigoSIGESDocente4);
//        Element outroDocente4 = curriculum.addElement(new QName("outroDocente4",namespace));
//        outroDocente4.setText(line.outroDocente4);
//        Element docenteEmail4 = curriculum.addElement(new QName("docenteEmail4",namespace));
//        docenteEmail4.setText(line.docenteEmail4);
//
//
//        Element conteudosProgramaticos = curriculum.addElement(new QName("conteudosProgramaticos",namespace));
//        conteudosProgramaticos.setText(line.conteudosProgramaticos);
//
//        Element demonstracaoCoerenciaConteudosObjectivos = curriculum.addElement(new QName("demonstracaoCoerenciaConteudosObjectivos",namespace));
//        demonstracaoCoerenciaConteudosObjectivos.setText(line.demonstracaoCoerenciaConteudosObjectivos);
//
//        Element metodologiasEnsino = curriculum.addElement(new QName("metodologiasEnsino",namespace));
//        metodologiasEnsino.setText(line.metodologiasEnsino);
//
//        Element alunosOrdinariosPorFrequencia = curriculum.addElement(new QName("alunosOrdinariosPorFrequencia",namespace));
//        alunosOrdinariosPorFrequencia.setText(line.alunosOrdinariosPorFrequencia);
//
//        Element alunosOrdinariosPorExame = curriculum.addElement(new QName("alunosOrdinariosPorExame",namespace));
//        alunosOrdinariosPorExame.setText(line.alunosOrdinariosPorExame);
//
//        Element alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = curriculum.addElement(new QName("alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia",namespace));
//        alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia.setText(line.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia);
//
//        Element alunosMobilidadeAlunosComEstatutoEspecialPorExame = curriculum.addElement(new QName("alunosMobilidadeAlunosComEstatutoEspecialPorExame",namespace));
//        alunosMobilidadeAlunosComEstatutoEspecialPorExame.setText(line.alunosMobilidadeAlunosComEstatutoEspecialPorExame);
//
//
//        Element demonstracaoDaCoerenciaMetodologiasObjectivos = curriculum.addElement(new QName("demonstracaoDaCoerenciaMetodologiasObjectivos",namespace));
//        demonstracaoDaCoerenciaMetodologiasObjectivos.setText(line.demonstracaoDaCoerenciaMetodologiasObjectivos);
//
//
//        Element bibliografiaPrincipal = curriculum.addElement(new QName("bibliografiaPrincipal",namespace));
//        bibliografiaPrincipal.setText(line.bibliografiaPrincipal);
//
//        Element bibliografiaComplementar = curriculum.addElement(new QName("bibliografiaComplementar",namespace));
//        bibliografiaComplementar.setText(line.bibliografiaComplementar);
//
//        Element adaptacaoMetodologiasObjectivos = curriculum.addElement(new QName("adaptacaoMetodologiasObjectivos",namespace));
//        adaptacaoMetodologiasObjectivos.setText(line.adaptacaoMetodologiasObjectivos);
//
//        Element verificacaoCargaECTS = curriculum.addElement(new QName("verificacaoCargaECTS",namespace));
//        verificacaoCargaECTS.setText(line.verificacaoCargaECTS);
//
//        Element avaliacaoFuncaoObjectivos = curriculum.addElement(new QName("avaliacaoFuncaoObjectivos",namespace));
//        avaliacaoFuncaoObjectivos.setText(line.avaliacaoFuncaoObjectivos);
//
//        Element metodologiasFacilitamParticipacaoCientificas = curriculum.addElement(new QName("metodologiasFacilitamParticipacaoCientificas",namespace));
//        metodologiasFacilitamParticipacaoCientificas.setText(line.metodologiasFacilitamParticipacaoCientificas);
//
//        Element ects = curriculum.addElement(new QName("ects",namespace));
//        ects.setText(line.ects);
//
//
//        Element preRequisitos = curriculum.addElement(new QName("preRequisitos",namespace));
//        preRequisitos.setText(line.preRequisitos);
//
//        Element obrigatoria = curriculum.addElement(new QName("obrigatoria",namespace));
//        obrigatoria.setText(line.obrigatoria);
//
//        Element lingua1 = curriculum.addElement(new QName("lingua1",namespace));
//        lingua1.setText(line.lingua1);
//
//        Element lingua2 = curriculum.addElement(new QName("lingua2",namespace));
//        lingua2.setText(line.lingua2);
//
//        Element cargaHorariaT = curriculum.addElement(new QName("cargaHorariaT",namespace));
//        cargaHorariaT.setText(line.cargaHorariaT);
//        Element cargaHorariaTP = curriculum.addElement(new QName("cargaHorariaTP",namespace));
//        cargaHorariaTP.setText(line.cargaHorariaTP);
//        Element cargaHorariaPL = curriculum.addElement(new QName("cargaHorariaPL",namespace));
//        cargaHorariaPL.setText(line.cargaHorariaPL);
//        Element cargaHorariaS = curriculum.addElement(new QName("cargaHorariaS",namespace));
//        cargaHorariaS.setText(line.cargaHorariaS);
//        Element cargaHorariaTC = curriculum.addElement(new QName("cargaHorariaTC",namespace));
//        cargaHorariaTC.setText(line.cargaHorariaTC);
//        Element cargaHorariaO = curriculum.addElement(new QName("cargaHorariaO",namespace));
//        cargaHorariaO.setText(line.cargaHorariaO);
//        Element cargaHorariaOT = curriculum.addElement(new QName("cargaHorariaOT",namespace));
//        cargaHorariaOT.setText(line.cargaHorariaOT);
//
//        Element cargaHorariaTotal = curriculum.addElement(new QName("cargaHorariaTotal",namespace));
//        cargaHorariaTotal.setText(line.cargaHorariaTotal);
//
//
//
//
//
//
//
//
//
//
//
////        Dom4jUtil.writeSout(responseDoc);
//        System.out.println("");
//
//        String path = Globals.TMP_DIR + File.separator + cu.getName() + ".pdf";
//        FileOutputStream teste = new FileOutputStream(path);
//        Map<String,Object> params = new HashMap<String,Object>();
//        params.put("site", Globals.SITE_URL);
//        PdfUtils.createPdfFromXml(new DOMSource(Dom4jUtil.toW3c(responseDoc)), "pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", teste,params);
//        teste.flush();
//        teste.close();
//
//
//        RepositoryService repositoryService = new RepositoryService();
//        User owner;
//        if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
//            owner = cu.getTeachers().iterator().next();
//        else
//            owner = DaoFactory.getUserDaoImpl().load(new Long(1));
//        if(owner.getUsername() == null)
//        {
//            errors.add("Docente: " + owner.getName() + " ( " + owner.getId()  + " ) don't have username check that situation");
////            owner.setUsername("UKNOWN");
//        }
//        if(cu.getProgramStreamId() == null)
//        {
//            String identifier = repositoryService.storeRepositoryFile(new FileInputStream(path), "application/pdf", "pdf",((int) new File(path).length()), cu.getCode() + ".pdf", "courseunit.program.description" + cu.getName(), ResourceAccessControlEnum.publicDomain,owner);
//            cu.setProgramStreamId(identifier);
//        }
//        else
//        {
//            repositoryService.updateRepositoryFile(cu.getProgramStreamId(), new FileInputStream(path),  "application/pdf", "pdf", ((int)new File(path).length()),cu.getCode() + ".pdf", "courseunit.program.description " + cu.getName(), ResourceAccessControlEnum.publicDomain);
//        }
//        cu.setObjectives(line.objetivosDaAprendizagem);
//        //Obrigar a ser falso
//        cu.setValidProgram(valiPrograms);
//    }



       /**
     *
     * Este metodo de clonagem apenas copia valores ddo proprio programa para o programa a clonar
     *
     * @param toClone
     */


    public void cloneFrom(CourseUnitProgram toClone)
    {
        setAdaptacaoObjectivosMetodologia(toClone.getAdaptacaoObjectivosMetodologia());
        setBibliografia(toClone.getBibliografia());
        setBibliografiaComplementar(toClone.getBibliografiaComplementar());
        setCargaHorariaO(toClone.getCargaHorariaO());
        setCargaHorariaOT(toClone.getCargaHorariaOT());
        setCargaHorariaPL(toClone.getCargaHorariaPL());
        setCargaHorariaS(toClone.getCargaHorariaS());
        setCargaHorariaT(toClone.getCargaHorariaT());
        setCargaHorariaTC(toClone.getCargaHorariaTC());
        setCargaHorariaTotal(toClone.getCargaHorariaTotal());
        setCargaHorariaTP(toClone.getCargaHorariaTP());
        setDemonstracaoCargaEcts(toClone.getDemonstracaoCargaEcts());
        setEcts(toClone.getEcts());
        setGarantiaAvaliacaoFuncaObjectivos(toClone.getGarantiaAvaliacaoFuncaObjectivos());
        setLingua1(toClone.getLingua1());
        setLingua2(toClone.getLingua2());
        setMetodologiasActividadeCientifica(toClone.getMetodologiasActividadeCientifica());
        setObrigatoria(toClone.getObrigatoria());
        setPrerequisitos(toClone.getPrerequisitos());
        if(getSaveDate() == null)
            setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
        setUpdateDate(new 5+0%2Fdocs%2Fapi+Date">Date());


        getCourseUnitProgramPart2().setAvaliacaoEspeciaisFrequencia(toClone.getCourseUnitProgramPart2().getAvaliacaoEspeciaisFrequencia());
        getCourseUnitProgramPart2().setAvaliacaoEspeciaissExame(toClone.getCourseUnitProgramPart2().getAvaliacaoEspeciaissExame());
        getCourseUnitProgramPart2().setAvaliacaoOrdinariosExame(toClone.getCourseUnitProgramPart2().getAvaliacaoOrdinariosExame());
        getCourseUnitProgramPart2().setAvaliacaoOrdinariosFrequencia(toClone.getCourseUnitProgramPart2().getAvaliacaoOrdinariosFrequencia());
        getCourseUnitProgramPart2().setConteudos(toClone.getCourseUnitProgramPart2().getConteudos());
        getCourseUnitProgramPart2().setDemonstracaoCoerenciaConteudos(toClone.getCourseUnitProgramPart2().getDemonstracaoCoerenciaConteudos());
        getCourseUnitProgramPart2().setDemonstracaoObjectivosMetodologia(toClone.getCourseUnitProgramPart2().getDemonstracaoObjectivosMetodologia());
        getCourseUnitProgramPart2().setMetodologiasEnsino(toClone.getCourseUnitProgramPart2().getMetodologiasEnsino());
        getCourseUnitProgramPart2().setObjectivos(toClone.getCourseUnitProgramPart2().getObjectivos());
        if(getCourseUnitProgramPart2().getSaveDate() == null)
            getCourseUnitProgramPart2().setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
        getCourseUnitProgramPart2().setUpdateDate(new 5+0%2Fdocs%2Fapi+Date">Date());

    }
}