Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.services.users;

import org.apache.log4j.Logger;
import org.reflections.Reflections;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.RoleContainer;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedException;
import pt.utl.ist.berserk.logic.serviceManager.IService;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/**
 * Created by jorgemachado on 29/01/16.
 */

public class UserRoleConfigService implements IService
{
    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(UserRoleConfigService.class);

    private List<UserRoleConfig> loadRolesTranslations(UserSession sess)
    {
        List<UserRoleConfig> roles = DaoFactory.getUserRoleConfigDaoImpl().findAll();
        if(roles == null || roles.size() == 0)
        {
            roles = initRoles();
        }
        return roles;
    }




    private static long lastUpdate = 0;

    public List<UserRoleConfig> loadRolesIfDirty(UserSession sess)
    {
        if(lastUpdate == 0)
        {
            return loadRolesTranslations(sess);
        }
        UserRoleConfig lastChangeRole = DaoFactory.getUserRoleConfigDaoImpl().getLast("updateDate");
        if(lastChangeRole.getUpdateDate().getTime() >= lastUpdate)
        {
            List<UserRoleConfig> roles = loadRolesTranslations(sess);
            lastUpdate = 1.5.0/docs/api/java/lang/System.html">System.currentTimeMillis();
            return roles;
        }

        return null;
    }


    /**
     * Serviço Tear 1 para substituição de Roles ou criação de Novos
     * @param oldRole
     * @param nomeRole
     * @param newRoleStr
     * @param session
     * @return
     * @throws AccessDeniedException
     */

    public ReplaceRoleResult createNewNormalizedRoleService(1.5.0/docs/api/java/lang/String.html">String oldRole,1.5.0/docs/api/java/lang/String.html">String nomeRole,1.5.0/docs/api/java/lang/String.html">String newRoleStr,UserSession session) throws AccessDeniedException {
        ReplaceRoleResult result;

        UserRoleConfigImpl newUserRoleConfig = DomainObjectFactory.createUserRoleConfigImpl();
        newUserRoleConfig.setRole(newRoleStr);
        newUserRoleConfig.setValid(true);
        newUserRoleConfig.setValue(nomeRole);
        newUserRoleConfig.setValuePt(nomeRole);
        newUserRoleConfig.setValueEn("");
        newUserRoleConfig.setValueEs("");
        newUserRoleConfig.setValueFr("");

        try {

            if(oldRole == null || oldRole.trim().length() == 0)
            {
                result = new  UserRoleConfigService().addUpdateRole(newUserRoleConfig,session,false);
            }
            else
            {

                result = new  UserRoleConfigService().updateOldRoleWithView(oldRole, newUserRoleConfig, session,false);
            }


            if(result.roleKeyAlreadyExist)
            {
                logger.error("Tentado CRIAR um Role que já existe e não é Administrador nem Super user");
                throw new AccessDeniedException("Tentado CRIAR um Role que já existe e não é Administrador nem Super user");
            }


        } catch (AccessDeniedException e) {
            logger.error("Tentado alterar um Role e não é Administrador nem Super user");
            throw e;
        }

        return result;
    }

    public ReplaceRoleResult updateOldRoleWithView(1.5.0/docs/api/java/lang/String.html">String oldRole,UserRoleConfigImpl newViewRoleConfig, UserSession sess)
            throws AccessDeniedException
    {
        return updateOldRoleWithView(oldRole, newViewRoleConfig, sess,true);
    }

    public ReplaceRoleResult updateOldRoleWithView(1.5.0/docs/api/java/lang/String.html">String oldRole,UserRoleConfigImpl newViewRoleConfig, UserSession sess,boolean updateCourses)
            throws AccessDeniedException
    {
        UserRoleConfig oldUserRoleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(oldRole);
        if(oldUserRoleConfig == null)
        {
            return addUpdateRole(newViewRoleConfig,sess,updateCourses);
        }
        else
        {
            newViewRoleConfig.setId(oldUserRoleConfig.getId());
            return addUpdateRole(newViewRoleConfig,sess,updateCourses);
        }
    }

    public ReplaceRoleResult addUpdateRole(UserRoleConfigImpl viewRoleConfig, UserSession sess) throws AccessDeniedException {
        return addUpdateRole(viewRoleConfig, sess,true);
    }
    public ReplaceRoleResult addUpdateRole(UserRoleConfigImpl viewRoleConfig, UserSession sess, boolean updateCourseRoles)
            throws AccessDeniedException
    {

        ReplaceRoleResult replaceRoleResult;
        //boolean isNew = userRoleConfig.getId() <= 0;
        UserRoleConfig persistent;
        1.5.0/docs/api/java/lang/String.html">String newRoleStr = viewRoleConfig.getRole().trim();
        if(viewRoleConfig.getId() <= 0)
        {
            replaceRoleResult = replaceOrCreateRoleKey(null, newRoleStr, sess,updateCourseRoles);
            if(replaceRoleResult.roleKeyAlreadyExist)
                return replaceRoleResult;
            persistent = replaceRoleResult.updatedUserRoleConfig;
        }
        else
        {
            persistent = DaoFactory.getUserRoleConfigDaoImpl().get(viewRoleConfig.getId());

            boolean chaveMudou = !newRoleStr.equals(persistent.getRole());
            if(chaveMudou)
            {
                if(sess.getUser().isSuperuserOrAdmin())
                {
                    replaceRoleResult = replaceOrCreateRoleKey(persistent.getRole(), newRoleStr, sess,updateCourseRoles);

                    if(replaceRoleResult.roleKeyAlreadyExist)
                        return replaceRoleResult;
                    persistent = replaceRoleResult.updatedUserRoleConfig;
                }
                else
                {
                    throw new AccessDeniedException("Nao pode alterar o código do papel porque não é administrador");
                }
            }
            else
            {
                replaceRoleResult = new ReplaceRoleResult(newRoleStr);
            }

        }


        persistent.setValue(viewRoleConfig.getValue());
        persistent.setValid(viewRoleConfig.isValid());
        persistent.setValueEn(viewRoleConfig.getValueEn());
        persistent.setValueEs(viewRoleConfig.getValueEs());
        persistent.setValueFr(viewRoleConfig.getValueFr());
        persistent.setValuePt(viewRoleConfig.getValuePt());
        persistent.setObs(viewRoleConfig.getObs());

        return replaceRoleResult;
    }


    public static Set<Class<? extends RoleContainer>> roleContainerClasses = null;
    private synchronized void init()
    {
        if(roleContainerClasses == null)
        {
            Reflections reflections = new Reflections("pt.estgp.estgweb");

            roleContainerClasses = reflections.getSubTypesOf(RoleContainer.class);
        }
    }


    /**
     * Serviço de nível SUPORTE
     * Usado pelo update de Roles e Pela normalização de Roles de Comissões de Curso
     * Substitui a presença de um ROLE por um NOVO
     *
     *
     * @param oldRole if null does not find old users for replace
     * @param newRole need to be filled
     * @param sess
     * @return ReplaceRoleResult if roleKeyAlreadyExist = true - nothing was done need to be a none existing new role key
     * ReplaceRoleResult.updatedUserRoleConfig tem o role antigo atualizado ou o novo criado com o newRole
     */

    public ReplaceRoleResult replaceOrCreateRoleKey(1.5.0/docs/api/java/lang/String.html">String oldRole, 1.5.0/docs/api/java/lang/String.html">String newRole, UserSession sess,boolean updateCourses)
    {
        ReplaceRoleResult result = new ReplaceRoleResult(newRole);

        UserRoleConfig roleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(newRole);
        if(roleConfig != null)
        {
            result.roleKeyAlreadyExist = true;
            return result;
        }
        else if(oldRole == null)
        {
            roleConfig = DomainObjectFactory.createUserRoleConfigImpl();
            roleConfig.setRole(newRole);
            DaoFactory.getUserRoleConfigDaoImpl().save(roleConfig);
            result.updatedUserRoleConfig = roleConfig;
        }
        else
        {
            roleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(oldRole);
            roleConfig.setRole(newRole);
            result.updatedUserRoleConfig = roleConfig;

            replaceUserRoles(oldRole, newRole, result);

            if(updateCourses)
                replaceCourseRoles(oldRole, newRole, result);

            replaceSchoolAndDepartmentRoles(oldRole, newRole, result);

            replaceEventClasseManagerRoles(oldRole, newRole, result);
            init();
            for (1.5.0/docs/api/java/lang/Class.html">Class serviceClass : roleContainerClasses) {
                1.5.0/docs/api/java/lang/System.html">System.out.println("Replacing Roles Notification Found: " + serviceClass.getName());
                try {
                    ((RoleContainer)serviceClass.newInstance()).replaceRoleNotification(oldRole,newRole,result);
                } catch (1.5.0/docs/api/java/lang/InstantiationException.html">InstantiationException e) {
                    logger.error(e,e);
                } catch (1.5.0/docs/api/java/lang/IllegalAccessException.html">IllegalAccessException e) {
                    logger.error(e, e);
                }
            }
            //DaoFactory.getBpmnRoleSelectorDaoImpl().replaceRoleNotification(oldRole, newRole, result);

            //replaceBpmnActorPoolRoles(oldRole, newRole, result);


        }
        return result;
    }


    private void replaceEventClasseManagerRoles(1.5.0/docs/api/java/lang/String.html">String oldRole, 1.5.0/docs/api/java/lang/String.html">String newRole, ReplaceRoleResult result) {
        List<EventClass> eventClasses = DaoFactory.getEventClassDaoImpl().findByManagerRole(oldRole);
        result.afectedEventClassManagers = eventClasses.size();
        for(EventClass eventClass: eventClasses)
        {
            eventClass.setManagersRole(newRole);
        }
    }

    private void replaceUserRoles(1.5.0/docs/api/java/lang/String.html">String oldRole, 1.5.0/docs/api/java/lang/String.html">String newRole, ReplaceRoleResult result) {
        List<User> users = DaoFactory.getUserDaoImpl().loadRoleUsers(oldRole);
        result.afetectedUsers = users.size();
        for(User u : users)
        {
            if(u.hasRole(oldRole))
            {
                u.removeRole(oldRole);
            }
            u.addRole(newRole);
        }
    }

    private void replaceCourseRoles(1.5.0/docs/api/java/lang/String.html">String oldRole, 1.5.0/docs/api/java/lang/String.html">String newRole, ReplaceRoleResult result) {
        List<Course> courses = DaoFactory.getCourseDaoImpl().findValidateRole(oldRole);
        result.afetectedCoursesValidatePrograms = courses.size();
        for(Course c :courses)
        {
            c.setValidationRole(newRole);
        }
    }

    private void replaceSchoolAndDepartmentRoles(1.5.0/docs/api/java/lang/String.html">String oldRole, 1.5.0/docs/api/java/lang/String.html">String newRole, ReplaceRoleResult result) {
        List<CourseDepartment> departments = DaoFactory.getCourseDepartmentDaoImpl().findByDirectorRole(oldRole);
        result.afetectedDepartmentsDirectors = departments.size();
        for(CourseDepartment department: departments)
        {
            department.setDirectorRole(newRole);
        }

        departments = DaoFactory.getCourseDepartmentDaoImpl().findByBoardRole(oldRole);
        result.afetectedDepartmentsBoards = departments.size();
        for(CourseDepartment department: departments)
        {
            department.setBoardRole(newRole);
        }

        List<CourseSchool> schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolDirector(oldRole);
        result.afetectedSchoolsDirectors = schools.size();
        for(CourseSchool school: schools)
        {
            school.setSchoolDirectorRole(newRole);
        }

        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolBoard(oldRole);
        result.afetectedSchoolsBoard = schools.size();
        for(CourseSchool school: schools)
        {
            school.setSchoolBoardRole(newRole);
        }

        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolSecretariado(oldRole);
        result.afetectedSchoolsSecretario = schools.size();
        for(CourseSchool school: schools)
        {
            school.setSchoolSecretariadoRole(newRole);
        }

        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolPresidentCtc(oldRole);
        result.afetectedSchoolsPresidentCtc = schools.size();
        for(CourseSchool school: schools)
        {
            school.setCtcPresidentRole(newRole);
        }
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolMemberCtc(oldRole);
        result.afetectedSchoolsMemberCtc = schools.size();
        for(CourseSchool school: schools)
        {
            school.setCtcMemberRole(newRole);
        }
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolSecretariadoCtc(oldRole);
        result.afetectedSchoolsSecretarioCtc = schools.size();
        for(CourseSchool school: schools)
        {
            school.setCtcSecretariadoRole(newRole);
        }

        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolPresidentPedagogico(oldRole);
        result.afetectedSchoolsPresidentPedagogico = schools.size();
        for(CourseSchool school: schools)
        {
            school.setPedagogicoPresidentRole(newRole);
        }
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolMemberPedagogico(oldRole);
        result.afetectedSchoolsMemberPedagogico = schools.size();
        for(CourseSchool school: schools)
        {
            school.setPedagogicoMemberRole(newRole);
        }
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolSecretariadoPedagogico(oldRole);
        result.afetectedSchoolsSecretarioPedagogico = schools.size();
        for(CourseSchool school: schools)
        {
            school.setPedagogicoSecretariadoRole(newRole);
        }
    }


    private List<UserRoleConfig> initRoles()
    {
        List<UserRoleConfig> roles = new ArrayList<UserRoleConfig>();
        1.5.0/docs/api/java/io/BufferedReader.html">BufferedReader reader = new 1.5.0/docs/api/java/io/BufferedReader.html">BufferedReader(new 1.5.0/docs/api/java/io/StringReader.html">StringReader(INIT_ROLES));
        1.5.0/docs/api/java/lang/String.html">String roleSpec = null;
        try {
            while((roleSpec = reader.readLine()) != null)
            {
                1.5.0/docs/api/java/lang/String.html">String[] fields = roleSpec.split("=");
                1.5.0/docs/api/java/lang/String.html">String role = fields[0].substring("user.role.".length());
                1.5.0/docs/api/java/lang/String.html">String desc = fields[1];
                UserRoleConfigImpl userRoleConfig = DomainObjectFactory.createUserRoleConfigImpl();
                userRoleConfig.setRole(role.trim());
                userRoleConfig.setValue(desc);
                userRoleConfig.setValid(true);
                roles.add(userRoleConfig);
                DaoFactory.getUserRoleConfigDaoImpl().save(userRoleConfig);
            }
        } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
            logger.error(e,e);
        }
        return roles;
    }

    public 1.5.0/docs/api/java/lang/Integer.html">Integer checkIfAreNewStandardRoles(UserSession userSession)
    {
        int totalNew = 0;
        1.5.0/docs/api/java/io/BufferedReader.html">BufferedReader reader = new 1.5.0/docs/api/java/io/BufferedReader.html">BufferedReader(new 1.5.0/docs/api/java/io/StringReader.html">StringReader(INIT_ROLES));
        1.5.0/docs/api/java/lang/String.html">String roleSpec = null;
        try {
            while((roleSpec = reader.readLine()) != null)
            {

                1.5.0/docs/api/java/lang/String.html">String[] fields = roleSpec.split("=");
                1.5.0/docs/api/java/lang/String.html">String role = fields[0].substring("user.role.".length());
                1.5.0/docs/api/java/lang/String.html">String desc = fields[1];

                UserRoleConfigImpl userRoleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(role);
                if(userRoleConfig == null)
                {
                    totalNew++;
                    userRoleConfig = DomainObjectFactory.createUserRoleConfigImpl();
                    userRoleConfig.setRole(role.trim());
                    userRoleConfig.setValue(desc);
                    userRoleConfig.setValid(true);
                    DaoFactory.getUserRoleConfigDaoImpl().save(userRoleConfig);
                }
            }
        } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
            logger.error(e,e);
        }
        return totalNew;
    }

    private static final 1.5.0/docs/api/java/lang/String.html">String INIT_ROLES = "user.role.all=Todos\n" +
            "user.role.admin=Administrador\n" +
            "user.role.student=Estudante\n" +
            "user.role.comissao.avaliacao.desempenho.docente=Comissão de Avaliação de Desempenho Docente\n" +
            "user.role.erasmusStudent=Estudante de Erasmus\n" +
            "user.role.teacher=Professor\n" +
            "user.role.teacher.eg=Professor da Área de Engenharia\n" +
            "user.role.teacher.dg=Professor da Área de Design\n" +
            "user.role.teacher.ce=Professor da Área de Ciencias Empresariais\n" +
            "user.role.teacher.ch=Professor da Área de Ciencias Humanas\n" +
            "user.role.teacher.td=Professor do DTD\n" +
            "user.role.teacher.cesh=Professor do DCESH\n" +
            "user.role.student.eg=Aluno da Área de Engenharia\n" +
            "user.role.student.dg=Aluno da Área de Design\n" +
            "user.role.student.ce=Aluno da Área de Ciencias Empresariais\n" +
            "user.role.student.ch=Aluno da Área de Ciencias Humanas\n" +
            "user.role.student.td=Aluno do DTD\n" +
            "user.role.student.cesh=Aluno do DCESH\n" +
            "user.role.ci=Centro Informático\n" +
            "user.role.worker=Funcionário\n" +
            "user.role.invited=Convidado\n" +
            "user.role.services=Serviços\n" +
            "user.role.questionarios.tipologias.admin=Questionarios - Verificação de Tipologias\n" +
            "user.role.questionarios.atribuicoes.admin=Questionarios - Atribuições de Cursos\n" +
            "user.role.questionarios.atribuicoes.check_teachers=Questionarios - Verificação de Professores\n" +
            "user.role.questionarios.admin=Questionários - Super Administrador\n" +
            "user.role.questionarios.gerais=Questionários - Permissões Básicas (necessário)\n" +
            "user.role.servicesPrograms=Gestão de Programas Curriculares\n" +
            "user.role.servicesStudiesPlans=Gestão de Planos de Estudos\n" +
            "user.role.servicesCoursesManagement=Gestão de Cursos\n" +
            "user.role.servicesRolesManagement=Gestão de Papeis Institucionais\n" +
            "user.role.event_class_manager=Gestão de Classes de Eventos\n" +
            "user.role.event_manager_nfc=Gestão de Eventos do Nucleo de Formacao Continua\n" +
            "user.role.administrativeCouncil=Membro da Direcção\n" +
            "user.role.administrativeCouncil.director=Director\n" +
            "user.role.administrativeCouncil.vice=Vice Director\n" +
            "user.role.schoolSecretary=Secretário da Escola\n" +
            "user.role.administrativeCouncilSecretariat=Secretaria da Direcção\n" +
            "user.role.teachersSecretariat=Secretaria de Pessoal Docente\n" +
            "user.role.dtd.president=Presidente do DTD\n" +
            "user.role.cesh.president=Presidente do DCESH\n" +
            "user.role.dtd.presidency=Membro da Presidencia do DTD\n" +
            "user.role.cesh.presidency=Membro da Presidencia do DCESH\n" +
            "user.role.scientificCouncil.president=CTC Presidente (Não utilizado)\n" +



            "user.role.representativeCouncil.president=Presidente do Conselho de Representantes\n" +
            "user.role.pedagogicCouncil.president=Presidente do Conselho Pedagógico\n" +
            "user.role.representativeCouncil=Conselho de Representantes\n" +
            "user.role.scientificCouncil=CTC Membro (Não utilizado)\n" +
            "user.role.erasmusCouncil=Conselho Erasmus\n" +
            "user.role.pedagogicCouncil=Conselho Pedagógico\n" +
            "user.role.courseCoordinator=Coordenadores\n" +
            "user.role.futureStudent=Futuros Alunos\n" +
            "user.role.oldStudent=Antigos Alunos\n" +
            "user.role.studentAssociation=Associação de Estudantes\n" +
            "user.role.computerCenter=Centro Informático\n" +
            "user.role.courseDirector=Presidente de Departamento\n" +
            "user.role.identifiersManager=Utilizador de Gestão de Identificadores\n" +
            "user.role.identifiersCollectionCreator=Administrador de Colecções de Identificadores\n" +
            "user.role.studentsID=Alunos de Informação e Documentação\n" +
            "user.role.studentsFSIR=Alunos de Fontes de Informação e Serviço de Referência\n" +
            "user.role.sendMailMessages=Enviar Mensagens de Correio Electronico\n" +
            "user.role.pedagogicCouncilSecretariat=Secretariado do Conselho Pedagógico\n" +
            "user.role.directionSecretariat=Secretariado da Direcção\n" +
            "user.role.studentsSecretariat=Secretaria de Alunos\n" +
            "user.role.assessementsTester=Testador de Provas de Avaliação\n" +
            "user.role.processes.admin=Inspector de Processos" +
            "user.role.validate.ei=Comissão de Curso de Engenharia Informática\n" +
            "user.role.courseValidateProgramGPME=Comissão de Curso de Gestão de PME\n" +
            "user.role.courseValidateProgramCET_TD=Comissão de Curso de CETS de TD\n" +
            "user.role.courseValidateProgramEI=Comissão de Curso de EI\n" +
            "user.role.courseValidateProgramEC=Comissão de Curso de EC\n" +
            "user.role.courseValidateProgramBioEng=Comissão de Curso de BioEng\n" +
            "user.role.courseValidateProgramEGI=Comissão de Curso de EGI\n" +
            "user.role.courseValidateProgramEERA=Comissão de Curso de EERA\n" +
            "user.role.courseValidateProgramDC=Comissão de Curso de DC\n" +
            "user.role.courseValidateProgramDA=Comissão de Curso de DA\n" +
            "user.role.courseValidateProgramTVAPE=Comissão de Curso de TVAPE\n" +
            "user.role.courseValidateProgramMI=Comissão de Curso de MI\n" +
            "user.role.courseValidateProgramEGPMEestranho=Comissão de Curso de EPGME\n" +
            "user.role.courseValidatePrograms=Validação de Programas\n" +
            "user.role.courseValidateProgramCET_CESH=Comissão de Curso de CETS de CESH\n" +
            "user.role.courseValidateProgramAPM=Comissão de Curso de APM\n" +
            "user.role.courseValidateProgramAA=Comissão de Curso de AA\n" +
            "user.role.courseValidateProgramG=Comissão de Curso de G\n" +
            "user.role.courseValidateProgramID=Comissão de Curso de ID\n" +
            "user.role.courseValidateProgramRPS=Comissão de Curso de RPS\n" +
            "user.role.courseValidateProgramTGI=Comissão de Curso de TGI\n" +
            "user.role.courseValidateProgramRU=Comissão de Curso de RU\n" +
            "user.role.courseValidateProgramCF=Comissão de Curso de Contabilidade e Finanças\n" +
            "user.role.courseValidateProgramNONE=Nenhuma\n" +
            "user.role.courseValidateProgramTPB=Comissão de Curso de Tecnologias de Produção de Biocombustíveis\n"+
            "user.role.board.institution=Board de Direcção do Instituto Politecnico\n"+
            "user.role.repositoryDocs=Administração do Repositório Digital\n"+
            "user.role.repositoryDeposit=Depositante do Repositório Digital\n"+




            //ESCOLAS



            //ESTG
            "user.role.school.president.estg=Escola Director da ESTG\n"+
            "user.role.school.board.estg=Escola Board de Direcção da ESTG\n"+
            "user.role.school.secretariado.estg=Escola Secretariado da ESTG\n"+
            //CTC
            "user.role.scientificCouncil.president.estg=CTC ESTG Presidente\n" +
            "user.role.scientificCouncil.board.estg=CTC ESTG Membro\n" +
            "user.role.scientificCouncil.secretariado.estg=CTC ESTG Secretariado\n" +
            //Pedagogico
            "user.role.pedagogicCouncil.president.estg=Pedagógico ESTG Presidente\n" +
            "user.role.pedagogicCouncil.board.estg=Pedagógico ESTG Membro\n" +
            "user.role.pedagogicCouncil.secretariado.estg=Pedagógico ESTG Secretariado\n" +

            //MEMBROS ESCOLAS
            "user.role.worker.estg=Funcionário ESTG\n" +
            "user.role.worker.esae=Funcionário ESAE\n" +
            "user.role.worker.esecs=Funcionário ESECS\n" +
            "user.role.worker.ess=Funcionário ESS\n" +

            "user.role.teacher.estg=Docentes ESTG\n" +
            "user.role.teacher.esae=Docentes ESAE\n" +
            "user.role.teacher.esecs=Docentes ESECS\n" +
            "user.role.teacher.ess=Docentes ESS\n" +

            "user.role.student.estg=Estudantes ESTG\n" +
            "user.role.student.esae=Estudantes ESAE\n" +
            "user.role.student.esecs=Estudantes ESECS\n" +
            "user.role.student.ess=Estudantes ESS\n" +


            //ESAE
            "user.role.school.president.asae=Escola Director da ESAE\n"+
            "user.role.school.board.esae=Escola Board de Direcção da ESAE\n"+
            "user.role.school.secretariado.esae=Escola Secretariado da ESAE\n"+
            //CTC
            "user.role.scientificCouncil.president.esae=CTC ESAE Presidente\n" +
            "user.role.scientificCouncil.board.esae=CTC ESAE Membro\n" +
            "user.role.scientificCouncil.secretariado.esae=CTC ESAE Secretariado\n" +
            //Pedagogico
            "user.role.pedagogicCouncil.president.esae=Pedagógico ESAE Presidente\n" +
            "user.role.pedagogicCouncil.board.esae=Pedagógico ESAE Membro\n" +
            "user.role.pedagogicCouncil.secretariado.esae=Pedagógico ESAE Secretariado\n" +



            //ESECS
            "user.role.school.president.esecs=Escola Director da ESECS\n"+
            "user.role.school.board.esecs=Escola Board de Direcção da ESECS\n"+
            "user.role.school.secretariado.esecs=Escola Secretariado da ESECS\n"+
            //CTC
            "user.role.scientificCouncil.president.esecs=CTC ESECS Presidente\n" +
            "user.role.scientificCouncil.board.esecs=CTC ESECS Membro\n" +
            "user.role.scientificCouncil.secretariado.esecs=CTC ESECS Secretariado\n" +
            //Pedagogico
            "user.role.pedagogicCouncil.president.esecs=Pedagógico ESECS Presidente\n" +
            "user.role.pedagogicCouncil.board.esecs=Pedagógico ESECS Membro\n" +
            "user.role.pedagogicCouncil.secretariado.esecs=Pedagógico ESECS Secretariado\n" +



            //ESS
            "user.role.school.president.ess=Escola Director da ESS\n"+
            "user.role.school.board.ess=Escola Board de Direcção da ESS\n"+
            "user.role.school.secretariado.ess=Escola Secretariado da ESS\n"+
            //CTC
            "user.role.scientificCouncil.president.ess=CTC ESS Presidente\n" +
            "user.role.scientificCouncil.board.ess=CTC ESS Membro\n" +
            "user.role.scientificCouncil.secretariado.ess=CTC ESS Secretariado\n" +
            //Pedagogico
            "user.role.pedagogicCouncil.president.ess=Pedagógico ESS Presidente\n" +
            "user.role.pedagogicCouncil.board.ess=Pedagógico ESS Membro\n" +
            "user.role.pedagogicCouncil.secretariado.ess=Pedagógico ESS Secretariado\n" +





            //ESCOLAS ANTIGOS NAO USAR
            "user.role.board.school.estg=Board de Direcção da ESTG\n"+
            "user.role.board.school.esae=Board de Direcção da ESAE\n"+
            "user.role.board.school.esecs=Board de Direcção da ESECS\n"+
            "user.role.board.school.ess=Board de Direcção da ESS\n"+


            //ESAE
            "user.role.department.board.agric.recurs.nat=Departamento Direção - Agricultura e Recursos Naturais\n" +
            "user.role.department.board.cienc.tecnol.ani=Departamento Direção - Ciência e Tecnologia Animal\n" +
            "user.role.department.diretor.agric.recurs.nat=Departamento Diretor - Agricultura e Recursos Naturais\n" +
            "user.role.department.diretor.cienc.tecnol.ani=Departamento Diretor - Ciência e Tecnologia Animal\n" +
            //ESECS
            "user.role.department.board.comun.artes.tecn=Departamento Direção - Comunicação, Artes e Tecnologias\n" +
            "user.role.department.board.educac.formac=Departamento Direção - Educação e Formação\n" +
            "user.role.department.board.inter.des.soc=Departamento Direção - Intervenção e Desenvolvimento Social\n" +
            "user.role.department.diretor.comun.artes.tecn=Departamento Diretor - Comunicação, Artes e Tecnologias\n" +
            "user.role.department.diretor.educac.formac=Departamento Diretor - Educação e Formação\n" +
            "user.role.department.diretor.inter.des.soc=Departamento Diretor - Intervenção e Desenvolvimento Social\n" +
            //ESS
            "user.role.department.board.cienc.tec.saude=Departamento Direção - Ciências e Tecnologias da Saúde\n" +
            "user.role.department.diretor.cienc.tec.saude=Departamento Diretor - Ciências e Tecnologias da Saúde\n" +
            //ESTG
            "user.role.department.board.cienc.empre.sh=Departamento Direção - Ciências Empresariais, Sociais e Humanas\n" +
            "user.role.department.board.tecnolo.design=Departamento Direção - Tecnologias e Design\n" +
            "user.role.department.diretor.cienc.empre.sh=Departamento Diretor - Ciências Empresariais, Sociais e Humanas\n" +
            "user.role.department.diretor.tecnolo.design=Departamento Diretor - Tecnologias e Design\n"
            ;




}