Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.domain.dao.impl;

import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.utils.StringsUtils;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


//TODO PRECISA DE CHAMAR UM SERVICO EM VEZ DE SER ASSIM porque esta a abrir transacoes por todo lado
//PRECISA DE SE FAZER UM CHECK A TODO O CODIGO QUE ABRE TRANSACOES FORA DOS SERVICOS
/**
 * @author Jorge Machado
 * @date 28/Fev/2008
 * @time 2:51:06
 * @see pt.estgp.estgweb.domain.dao.impl
 */

public class ConfigurationDaoImpl extends ConfigurationDao
{

    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(ConfigurationDaoImpl.class);

    private static 1.5.0/docs/api/java/lang/String.html">String cursosFicticiosBase =
                    "0," + //Erasmus ESTG
                    "4," + //Disciplinas Avulso ESTG
                    "5," + //Disciplinas Avulso ESAE
                    "6," + //Disciplinas Avulso ESE
                    "7," + //Erasmus ESAE
                    "19," +//Vasco da Gama
                    "22," +//Disciplinas Avulso ESS
                    "9999";//Erasmus ESEP


    public static ConfigurationDaoImpl getInstance()
    {
        if (myInstance == null)
            myInstance = new ConfigurationDaoImpl();
        return (ConfigurationDaoImpl) myInstance;
    }

    public 1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration load()
    {
        List<Configuration> configs = createCriteria().list();
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = null;
        if(configs.size() == 0)
        {
            1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration configuration = new ConfigurationImpl();
            configuration.setInterfaceImportYear("201516");
            configuration.setImportsDefaultImportYear("201516");
            configuration.setSigesWebServicesWsdl("http://172.20.100.5:8080/SigesWeb/SiGesWEB.asmx?wsdl");
            configuration.setCourseUnitEvaluationActiveYear("201415");
            configuration.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
            configuration.setSigesInstitutionCode(1);

            configuration.setCursosFicticios(cursosFicticiosBase);
            save(configuration);
            config = configuration;
        }
        else
            config = configs.get(0);

        if(config.getCursosFicticios()==null || config.getCursosFicticios().trim().length() == 0)
            config.setCursosFicticios(cursosFicticiosBase);

        if(config.getConfigurationGrades() == null)
        {
            //init by default with ESTG values
            ConfigurationGradesImpl grades = DomainObjectFactory.createConfigurationGradesImpl();
            grades.create();
            for(ConfigurationGradesEpocaAvaliacao epoca: grades.getEpocasAvaliacao())
                DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().save(epoca);
            for(ConfigurationGradesStatusEpoca status: grades.getStatusEpoca())
                DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().save(status);
            DaoFactory.getConfigurationGradesDaoImpl().save(grades);
            config.setConfigurationGrades(grades);
        }
        return config;
    }

    public 1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration loadSimpleConfigurationForConsult()
    {
        return load();
    }

    public void updateInterfaceImportYearCreateTransaction(1.5.0/docs/api/java/lang/String.html">String importYear)
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setInterfaceImportYear(importYear);
        getCurrentSession().getTransaction().commit();
    }
    public void updateInterfaceImportYear(1.5.0/docs/api/java/lang/String.html">String importYear)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setInterfaceImportYear(importYear);
    }

    public void updateImportsDefaultImportYear(1.5.0/docs/api/java/lang/String.html">String importYear)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setImportsDefaultImportYear(importYear);
    }

    public void updateImportsDefaultImportYearCreateTransaction(1.5.0/docs/api/java/lang/String.html">String importYear)
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setImportsDefaultImportYear(importYear);
        getCurrentSession().getTransaction().commit();
    }

    public 1.5.0/docs/api/java/lang/String.html">String getImportsDefaultImportYearCreateTransaction()
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/java/lang/String.html">String importYear = load().getImportsDefaultImportYear();
        getCurrentSession().getTransaction().commit();
        return importYear;
    }


    public 1.5.0/docs/api/java/lang/String.html">String getInterfaceImportYearCreateTransaction()
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/java/lang/String.html">String importYear = load().getInterfaceImportYear();
        getCurrentSession().getTransaction().commit();
        return importYear;
    }


    public 1.5.0/docs/api/java/lang/String.html">String getImportsDefaultImportYear()
    {
        1.5.0/docs/api/java/lang/String.html">String importYear = load().getImportsDefaultImportYear();
        return importYear;
    }


    public 1.5.0/docs/api/java/lang/String.html">String getInterfaceImportYear()
    {
        1.5.0/docs/api/java/lang/String.html">String importYear = load().getInterfaceImportYear();
        return importYear;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getCourseUnitEvaluationActiveYear()
    {
        return load().getCourseUnitEvaluationActiveYear();
    }

    public List<String> getCourseUnitEvaluationActiveDegrees()
    {
        1.5.0/docs/api/java/lang/String.html">String degrees = load().getCourseUnitEvaluationActiveDegrees();
        if(degrees == null || degrees.trim().length() == 0)
            return null;
        List<String> degreesList = StringsUtils.getStringsFromSerial(degrees,";");
        return degreesList;
    }

    public List<Long> getCourseUnitEvaluationActiveCourseIds()
    {
        1.5.0/docs/api/java/lang/String.html">String courseIds = load().getCourseUnitEvaluationActiveCourseIds();
        if(courseIds == null || courseIds.trim().length() == 0)
            return null;
        List<Long> courseIdsListLongs = StringsUtils.getLongsFromSerial(courseIds,";");
        return courseIdsListLongs;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getCourseUnitEvaluationActiveYearCreateTransaction()
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/java/lang/String.html">String activeYear = getCourseUnitEvaluationActiveYear();
        getCurrentSession().getTransaction().commit();
        return activeYear;
    }

    public List<String> getCourseUnitEvaluationActiveDegreesCreateTransaction()
    {
        getCurrentSession().beginTransaction();
        List<String> activeDegrees = getCourseUnitEvaluationActiveDegrees();
        getCurrentSession().getTransaction().commit();
        return activeDegrees;
    }

    public List<Long> getCourseUnitEvaluationActiveCourseIdsCreateTransaction()
    {
        getCurrentSession().beginTransaction();
        List<Long> activeCourseIds = getCourseUnitEvaluationActiveCourseIds();
        getCurrentSession().getTransaction().commit();
        return activeCourseIds;
    }

    public void updateCourseUnitEvaluationActiveYear(1.5.0/docs/api/java/lang/String.html">String activeYear)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setCourseUnitEvaluationActiveYear(activeYear);
    }

    public void updateCourseUnitEvaluationActiveDegrees(List<String> activeDegrees)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setCourseUnitEvaluationActiveDegrees(StringsUtils.getSerialStrings(activeDegrees,";"));
    }

    public void updateCourseUnitEvaluationActiveCourseIds(List<Long> activeCourseIds)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setCourseUnitEvaluationActiveCourseIds(StringsUtils.getSerialLongs(activeCourseIds,";"));
    }

    public void updateCourseUnitEvaluationActiveYearCreateTransaction(1.5.0/docs/api/java/lang/String.html">String activeYear)
    {
        getCurrentSession().beginTransaction();
        updateCourseUnitEvaluationActiveYear(activeYear);
        getCurrentSession().getTransaction().commit();
    }

    public void updateCourseUnitEvaluationActiveDegreesCreateTransaction(List<String> activeDegrees)
    {
        getCurrentSession().beginTransaction();
        updateCourseUnitEvaluationActiveDegrees(activeDegrees);
        getCurrentSession().getTransaction().commit();
    }

    public void updateCourseUnitEvaluationActiveCourseIdsCreateTransaction(List<Long> activeCourseIds)
    {
        getCurrentSession().beginTransaction();
        updateCourseUnitEvaluationActiveCourseIds(activeCourseIds);
        getCurrentSession().getTransaction().commit();
    }

    /**
     * Return if the course id or the degree  together with import year is active
     * or if the unit is specially opened for edition
     * @param courseUnitId
     * @return
     */

    public boolean isCourseUniEvaluationActivePeriodInTransaction(long courseUnitId)
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/java/lang/String.html">String activeYear = getCourseUnitEvaluationActiveYear();
        List<String> activeDegrees = getCourseUnitEvaluationActiveDegrees();
        List<Long> activeCourseIds = getCourseUnitEvaluationActiveCourseIds();
        CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId);
        boolean isActiveYear = activeYear != null && cu.getImportYear().equals(activeYear);
        boolean isActiveDegree = activeDegrees!=null && activeDegrees.contains(cu.getCourse().getDegree());
        boolean isActiveCourseId = activeCourseIds!=null && activeCourseIds.contains(cu.getCourse().getId());


        boolean activePeriod =
                cu.isEvaluationOpenByAdmin() ||
                        (isActiveYear && (isActiveCourseId || isActiveDegree));
        getCurrentSession().getTransaction().commit();
        return activePeriod;
    }

    /**
     * Return if the course or the degree ant import year is active
     * @param courseUnitId
     * @return
     */

    public boolean isCourseUniEvaluationRegularActivePeriodInTransaction(long courseUnitId)
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/java/lang/String.html">String activeYear = getCourseUnitEvaluationActiveYear();
        List<String> activeDegrees = getCourseUnitEvaluationActiveDegrees();
        List<Long> activeCourseIds = getCourseUnitEvaluationActiveCourseIds();
        CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId);
        boolean isActiveYear = activeYear != null && cu.getImportYear().equals(activeYear);
        boolean isActiveDegree = activeDegrees!=null && activeDegrees.contains(cu.getCourse().getDegree());
        boolean isActiveCourseId = activeCourseIds!=null && activeCourseIds.contains(cu.getCourse().getId());


        boolean activePeriod = (isActiveYear && (isActiveCourseId || isActiveDegree));
        getCurrentSession().getTransaction().commit();
        return activePeriod;
    }



    public 1.5.0/docs/api/java/lang/String.html">String getSigesWebServicesWsdl()
    {
        return load().getSigesWebServicesWsdl();
    }

    public 1.5.0/docs/api/java/lang/String.html">String getSigesWebServicesWsdlCreateTransaction()
    {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/java/lang/String.html">String wsdl = getSigesWebServicesWsdl();
        getCurrentSession().getTransaction().commit();
        return wsdl;
    }

    public void updateSigesWebServicesWsdl(1.5.0/docs/api/java/lang/String.html">String wsdl)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setSigesWebServicesWsdl(wsdl);
    }

    public void updateSigesWebServicesWsdlCreateTransaction(1.5.0/docs/api/java/lang/String.html">String wsdl)
    {
        getCurrentSession().beginTransaction();
        updateSigesWebServicesWsdl(wsdl);
        getCurrentSession().getTransaction().commit();
    }



    public int getSigesInstitutionCode()
    {
        return load().getSigesInstitutionCode();
    }

    public int getInstitutionCodeCreateTransaction()
    {
        getCurrentSession().beginTransaction();
        int code = getSigesInstitutionCode();
        getCurrentSession().getTransaction().commit();
        return code;
    }

    public void updateSigesInstitutionCode(int instCode)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setSigesInstitutionCode(instCode);
    }

    public void updateSigesInstitutionCodeCreateTransaction(int instCode)
    {
        getCurrentSession().beginTransaction();
        updateSigesInstitutionCode(instCode);
        getCurrentSession().getTransaction().commit();
    }





    public int getNationalInstitutionCode()
    {
        return load().getNationalInstitutionCode();
    }

    /**
     * This method only creates transaction if not already active
     * @return
     */

    public int getNationalInstitutionCodeCreateTransaction()
    {
        //boolean alreadyActive = getCurrentSession().getTransaction().isActive();
        //if(!alreadyActive)
            getCurrentSession().beginTransaction();
        int code = getNationalInstitutionCode();
        //if(!alreadyActive)
            getCurrentSession().getTransaction().commit();
        return code;
    }

    /**
     * Not problematic update only for interfaces
     * Will not work only in MultiWebServer environment
     * in that case needs a restart
     * @param instCode
     */

    public void updateNationalInstitutionCode(int instCode)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setNationalInstitutionCode(instCode);
        //Globals.NATIONAL_INSTITUTION_CODE = new BigDecimal(instCode);
    }


    /**
     * Not problematic update only for interfaces
     * Will not work only in MultiWebServer environment
     * in that case needs a restart
     * @param instCode
     */

    public void updateNationalInstitutionCodeCreateTransaction(int instCode)
    {
        getCurrentSession().beginTransaction();
        updateNationalInstitutionCode(instCode);
        //Globals.NATIONAL_INSTITUTION_CODE = new BigDecimal(instCode);
        getCurrentSession().getTransaction().commit();
    }


    public 1.5.0/docs/api/java/lang/Integer.html">Integer[] getCursosFicticios() {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        1.5.0/docs/api/java/lang/String.html">String[] cursosCodes = config.getCursosFicticios().split(",");
        List<Integer> cursosFicticios = new ArrayList<Integer>();
        for(1.5.0/docs/api/java/lang/String.html">String c: cursosCodes)
        {
            try{
                cursosFicticios.add(new 1.5.0/docs/api/java/lang/Integer.html">Integer(c));
            }catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
            {
                logger.error("ERRO CURSO FICTICIO ERRADO: " + c);
            }
        }
        1.5.0/docs/api/java/lang/Integer.html">Integer[] cursos = new 1.5.0/docs/api/java/lang/Integer.html">Integer[cursosFicticios.size()];
        for(int i=0; i < cursos.length;i++)
        {
            cursos[i] = cursosFicticios.get(i);
        }
        return cursos;
    }

    public 1.5.0/docs/api/java/lang/Integer.html">Integer[] getCursosFicticiosCreateTransaction() {
        getCurrentSession().beginTransaction();
        1.5.0/docs/api/java/lang/Integer.html">Integer[] cursos = getCursosFicticios();
        getCurrentSession().getTransaction().commit();
        return cursos;
    }

    public void setCursosFicticios(1.5.0/docs/api/java/lang/String.html">String cursos)
    {
        1.5.0/docs/api/javax/security/auth/login/Configuration.html">Configuration config = load();
        config.setCursosFicticios(cursos);
    }

    public void setCursosFicticiosCreateTransaction(1.5.0/docs/api/java/lang/String.html">String cursos)
    {
        getCurrentSession().beginTransaction();
        setCursosFicticios(cursos);
        getCurrentSession().getTransaction().commit();
    }
}