Subversion Repositories bacoAlunos

Rev

Rev 1857 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1283 jmachado 1
package pt.estgp.estgweb.services.users;
2
 
3
import org.apache.log4j.Logger;
1821 jmachado 4
import org.reflections.Reflections;
1699 jmachado 5
import pt.estgp.estgweb.domain.*;
1283 jmachado 6
import pt.estgp.estgweb.domain.dao.DaoFactory;
1821 jmachado 7
import pt.estgp.estgweb.domain.dao.RoleContainer;
1699 jmachado 8
import pt.estgp.estgweb.filters.exceptions.AccessDeniedException;
1283 jmachado 9
import pt.utl.ist.berserk.logic.serviceManager.IService;
10
 
11
import java.io.BufferedReader;
12
import java.io.IOException;
13
import java.io.StringReader;
14
import java.util.ArrayList;
15
import java.util.List;
1821 jmachado 16
import java.util.Set;
1283 jmachado 17
 
18
/**
19
 * Created by jorgemachado on 29/01/16.
20
 */
21
public class UserRoleConfigService implements IService
22
{
23
    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);
24
 
25
    private List<UserRoleConfig> loadRolesTranslations(UserSession sess)
26
    {
27
        List<UserRoleConfig> roles = DaoFactory.getUserRoleConfigDaoImpl().findAll();
28
        if(roles == null || roles.size() == 0)
29
        {
30
            roles = initRoles();
31
        }
32
        return roles;
33
    }
34
 
35
 
36
 
37
 
38
    private static long lastUpdate = 0;
39
 
40
    public List<UserRoleConfig> loadRolesIfDirty(UserSession sess)
41
    {
42
        if(lastUpdate == 0)
43
        {
44
            return loadRolesTranslations(sess);
45
        }
46
        UserRoleConfig lastChangeRole = DaoFactory.getUserRoleConfigDaoImpl().getLast("updateDate");
47
        if(lastChangeRole.getUpdateDate().getTime() >= lastUpdate)
48
        {
49
            List<UserRoleConfig> roles = loadRolesTranslations(sess);
50
            lastUpdate = 1.5.0/docs/api/java/lang/System.html">System.currentTimeMillis();
51
            return roles;
52
        }
53
 
54
        return null;
55
    }
56
 
1699 jmachado 57
 
1875 grupo1 58
    /**
59
     * Serviço Tear 1 para substituição de Roles ou criação de Novos
60
     * @param oldRole
61
     * @param nomeRole
62
     * @param newRoleStr
63
     * @param session
64
     * @return
65
     * @throws AccessDeniedException
66
     */
67
    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 {
68
        ReplaceRoleResult result;
69
 
70
        UserRoleConfigImpl newUserRoleConfig = DomainObjectFactory.createUserRoleConfigImpl();
71
        newUserRoleConfig.setRole(newRoleStr);
72
        newUserRoleConfig.setValid(true);
73
        newUserRoleConfig.setValue(nomeRole);
74
        newUserRoleConfig.setValuePt(nomeRole);
75
        newUserRoleConfig.setValueEn("");
76
        newUserRoleConfig.setValueEs("");
77
        newUserRoleConfig.setValueFr("");
78
 
79
        try {
80
 
81
            if(oldRole == null || oldRole.trim().length() == 0)
82
            {
83
                result = new  UserRoleConfigService().addUpdateRole(newUserRoleConfig,session,false);
84
            }
85
            else
86
            {
87
 
88
                result = new  UserRoleConfigService().updateOldRoleWithView(oldRole, newUserRoleConfig, session,false);
89
            }
90
 
91
 
92
            if(result.roleKeyAlreadyExist)
93
            {
94
                logger.error("Tentado CRIAR um Role que já existe e não é Administrador nem Super user");
95
                throw new AccessDeniedException("Tentado CRIAR um Role que já existe e não é Administrador nem Super user");
96
            }
97
 
98
 
99
        } catch (AccessDeniedException e) {
100
            logger.error("Tentado alterar um Role e não é Administrador nem Super user");
101
            throw e;
102
        }
103
 
104
        return result;
105
    }
106
 
1699 jmachado 107
    public ReplaceRoleResult updateOldRoleWithView(1.5.0/docs/api/java/lang/String.html">String oldRole,UserRoleConfigImpl newViewRoleConfig, UserSession sess)
108
            throws AccessDeniedException
1283 jmachado 109
    {
1821 jmachado 110
        return updateOldRoleWithView(oldRole, newViewRoleConfig, sess,true);
111
    }
112
 
113
    public ReplaceRoleResult updateOldRoleWithView(1.5.0/docs/api/java/lang/String.html">String oldRole,UserRoleConfigImpl newViewRoleConfig, UserSession sess,boolean updateCourses)
114
            throws AccessDeniedException
115
    {
1699 jmachado 116
        UserRoleConfig oldUserRoleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(oldRole);
1821 jmachado 117
        if(oldUserRoleConfig == null)
118
        {
119
            return addUpdateRole(newViewRoleConfig,sess,updateCourses);
120
        }
121
        else
122
        {
123
            newViewRoleConfig.setId(oldUserRoleConfig.getId());
124
            return addUpdateRole(newViewRoleConfig,sess,updateCourses);
125
        }
1699 jmachado 126
    }
127
 
1821 jmachado 128
    public ReplaceRoleResult addUpdateRole(UserRoleConfigImpl viewRoleConfig, UserSession sess) throws AccessDeniedException {
129
        return addUpdateRole(viewRoleConfig, sess,true);
130
    }
131
    public ReplaceRoleResult addUpdateRole(UserRoleConfigImpl viewRoleConfig, UserSession sess, boolean updateCourseRoles)
1699 jmachado 132
            throws AccessDeniedException
133
    {
134
 
135
        ReplaceRoleResult replaceRoleResult;
136
        //boolean isNew = userRoleConfig.getId() <= 0;
137
        UserRoleConfig persistent;
138
        1.5.0/docs/api/java/lang/String.html">String newRoleStr = viewRoleConfig.getRole().trim();
139
        if(viewRoleConfig.getId() <= 0)
1283 jmachado 140
        {
1821 jmachado 141
            replaceRoleResult = replaceOrCreateRoleKey(null, newRoleStr, sess,updateCourseRoles);
1699 jmachado 142
            if(replaceRoleResult.roleKeyAlreadyExist)
143
                return replaceRoleResult;
144
            persistent = replaceRoleResult.updatedUserRoleConfig;
145
        }
146
        else
147
        {
148
            persistent = DaoFactory.getUserRoleConfigDaoImpl().get(viewRoleConfig.getId());
149
 
150
            boolean chaveMudou = !newRoleStr.equals(persistent.getRole());
151
            if(chaveMudou)
1283 jmachado 152
            {
1699 jmachado 153
                if(sess.getUser().isSuperuserOrAdmin())
154
                {
1821 jmachado 155
                    replaceRoleResult = replaceOrCreateRoleKey(persistent.getRole(), newRoleStr, sess,updateCourseRoles);
1699 jmachado 156
 
157
                    if(replaceRoleResult.roleKeyAlreadyExist)
158
                        return replaceRoleResult;
159
                    persistent = replaceRoleResult.updatedUserRoleConfig;
160
                }
161
                else
162
                {
163
                    throw new AccessDeniedException("Nao pode alterar o código do papel porque não é administrador");
164
                }
1283 jmachado 165
            }
1699 jmachado 166
            else
1700 jmachado 167
            {
168
                replaceRoleResult = new ReplaceRoleResult(newRoleStr);
169
            }
1699 jmachado 170
 
171
        }
172
 
173
 
174
        persistent.setValue(viewRoleConfig.getValue());
175
        persistent.setValid(viewRoleConfig.isValid());
176
        persistent.setValueEn(viewRoleConfig.getValueEn());
177
        persistent.setValueEs(viewRoleConfig.getValueEs());
178
        persistent.setValueFr(viewRoleConfig.getValueFr());
179
        persistent.setValuePt(viewRoleConfig.getValuePt());
180
        persistent.setObs(viewRoleConfig.getObs());
181
 
182
        return replaceRoleResult;
183
    }
184
 
185
 
1821 jmachado 186
    public static Set<Class<? extends RoleContainer>> roleContainerClasses = null;
187
    private synchronized void init()
188
    {
189
        if(roleContainerClasses == null)
190
        {
191
            Reflections reflections = new Reflections("pt.estgp.estgweb");
192
 
193
            roleContainerClasses = reflections.getSubTypesOf(RoleContainer.class);
194
        }
195
    }
196
 
197
 
1699 jmachado 198
    /**
199
     * Serviço de nível SUPORTE
200
     * Usado pelo update de Roles e Pela normalização de Roles de Comissões de Curso
201
     * Substitui a presença de um ROLE por um NOVO
202
     *
203
     *
204
     * @param oldRole if null does not find old users for replace
205
     * @param newRole need to be filled
206
     * @param sess
207
     * @return ReplaceRoleResult if roleKeyAlreadyExist = true - nothing was done need to be a none existing new role key
208
     * ReplaceRoleResult.updatedUserRoleConfig tem o role antigo atualizado ou o novo criado com o newRole
209
     */
1821 jmachado 210
    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)
1699 jmachado 211
    {
1700 jmachado 212
        ReplaceRoleResult result = new ReplaceRoleResult(newRole);
1699 jmachado 213
 
214
        UserRoleConfig roleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(newRole);
215
        if(roleConfig != null)
216
        {
217
            result.roleKeyAlreadyExist = true;
218
            return result;
219
        }
220
        else if(oldRole == null)
221
        {
222
            roleConfig = DomainObjectFactory.createUserRoleConfigImpl();
223
            roleConfig.setRole(newRole);
224
            DaoFactory.getUserRoleConfigDaoImpl().save(roleConfig);
225
            result.updatedUserRoleConfig = roleConfig;
226
        }
227
        else
228
        {
229
            roleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(oldRole);
230
            roleConfig.setRole(newRole);
231
            result.updatedUserRoleConfig = roleConfig;
232
 
233
            replaceUserRoles(oldRole, newRole, result);
234
 
1821 jmachado 235
            if(updateCourses)
236
                replaceCourseRoles(oldRole, newRole, result);
1699 jmachado 237
 
238
            replaceSchoolAndDepartmentRoles(oldRole, newRole, result);
239
 
240
            replaceEventClasseManagerRoles(oldRole, newRole, result);
1821 jmachado 241
            init();
242
            for (1.5.0/docs/api/java/lang/Class.html">Class serviceClass : roleContainerClasses) {
243
                1.5.0/docs/api/java/lang/System.html">System.out.println("Replacing Roles Notification Found: " + serviceClass.getName());
244
                try {
245
                    ((RoleContainer)serviceClass.newInstance()).replaceRoleNotification(oldRole,newRole,result);
246
                } catch (1.5.0/docs/api/java/lang/InstantiationException.html">InstantiationException e) {
247
                    logger.error(e,e);
248
                } catch (1.5.0/docs/api/java/lang/IllegalAccessException.html">IllegalAccessException e) {
249
                    logger.error(e, e);
250
                }
251
            }
252
            //DaoFactory.getBpmnRoleSelectorDaoImpl().replaceRoleNotification(oldRole, newRole, result);
1699 jmachado 253
 
1821 jmachado 254
            //replaceBpmnActorPoolRoles(oldRole, newRole, result);
1699 jmachado 255
 
256
 
257
        }
258
        return result;
259
    }
260
 
261
 
262
    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) {
263
        List<EventClass> eventClasses = DaoFactory.getEventClassDaoImpl().findByManagerRole(oldRole);
264
        result.afectedEventClassManagers = eventClasses.size();
265
        for(EventClass eventClass: eventClasses)
266
        {
267
            eventClass.setManagersRole(newRole);
268
        }
269
    }
270
 
271
    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) {
272
        List<User> users = DaoFactory.getUserDaoImpl().loadRoleUsers(oldRole);
273
        result.afetectedUsers = users.size();
274
        for(User u : users)
275
        {
276
            if(u.hasRole(oldRole))
1283 jmachado 277
            {
1699 jmachado 278
                u.removeRole(oldRole);
1283 jmachado 279
            }
1699 jmachado 280
            u.addRole(newRole);
281
        }
282
    }
1283 jmachado 283
 
1699 jmachado 284
    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) {
285
        List<Course> courses = DaoFactory.getCourseDaoImpl().findValidateRole(oldRole);
286
        result.afetectedCoursesValidatePrograms = courses.size();
287
        for(Course c :courses)
1283 jmachado 288
        {
1875 grupo1 289
            c.setValidationRole(newRole);
1283 jmachado 290
        }
291
    }
292
 
1699 jmachado 293
    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) {
294
        List<CourseDepartment> departments = DaoFactory.getCourseDepartmentDaoImpl().findByDirectorRole(oldRole);
295
        result.afetectedDepartmentsDirectors = departments.size();
296
        for(CourseDepartment department: departments)
1283 jmachado 297
        {
1699 jmachado 298
            department.setDirectorRole(newRole);
1283 jmachado 299
        }
1699 jmachado 300
 
301
        departments = DaoFactory.getCourseDepartmentDaoImpl().findByBoardRole(oldRole);
302
        result.afetectedDepartmentsBoards = departments.size();
303
        for(CourseDepartment department: departments)
304
        {
305
            department.setBoardRole(newRole);
306
        }
307
 
308
        List<CourseSchool> schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolDirector(oldRole);
309
        result.afetectedSchoolsDirectors = schools.size();
310
        for(CourseSchool school: schools)
311
        {
312
            school.setSchoolDirectorRole(newRole);
313
        }
314
 
315
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolBoard(oldRole);
316
        result.afetectedSchoolsBoard = schools.size();
317
        for(CourseSchool school: schools)
318
        {
319
            school.setSchoolBoardRole(newRole);
320
        }
321
 
322
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolSecretariado(oldRole);
323
        result.afetectedSchoolsSecretario = schools.size();
324
        for(CourseSchool school: schools)
325
        {
326
            school.setSchoolSecretariadoRole(newRole);
327
        }
328
 
329
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolPresidentCtc(oldRole);
330
        result.afetectedSchoolsPresidentCtc = schools.size();
331
        for(CourseSchool school: schools)
332
        {
333
            school.setCtcPresidentRole(newRole);
334
        }
335
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolMemberCtc(oldRole);
336
        result.afetectedSchoolsMemberCtc = schools.size();
337
        for(CourseSchool school: schools)
338
        {
339
            school.setCtcMemberRole(newRole);
340
        }
341
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolSecretariadoCtc(oldRole);
342
        result.afetectedSchoolsSecretarioCtc = schools.size();
343
        for(CourseSchool school: schools)
344
        {
345
            school.setCtcSecretariadoRole(newRole);
346
        }
347
 
348
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolPresidentPedagogico(oldRole);
349
        result.afetectedSchoolsPresidentPedagogico = schools.size();
350
        for(CourseSchool school: schools)
351
        {
352
            school.setPedagogicoPresidentRole(newRole);
353
        }
354
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolMemberPedagogico(oldRole);
355
        result.afetectedSchoolsMemberPedagogico = schools.size();
356
        for(CourseSchool school: schools)
357
        {
358
            school.setPedagogicoMemberRole(newRole);
359
        }
360
        schools = DaoFactory.getCourseSchoolDaoImpl().findBySchoolSecretariadoPedagogico(oldRole);
361
        result.afetectedSchoolsSecretarioPedagogico = schools.size();
362
        for(CourseSchool school: schools)
363
        {
364
            school.setPedagogicoSecretariadoRole(newRole);
365
        }
1283 jmachado 366
    }
367
 
368
 
369
    private List<UserRoleConfig> initRoles()
370
    {
371
        List<UserRoleConfig> roles = new ArrayList<UserRoleConfig>();
372
        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));
373
        1.5.0/docs/api/java/lang/String.html">String roleSpec = null;
374
        try {
375
            while((roleSpec = reader.readLine()) != null)
376
            {
377
                1.5.0/docs/api/java/lang/String.html">String[] fields = roleSpec.split("=");
378
                1.5.0/docs/api/java/lang/String.html">String role = fields[0].substring("user.role.".length());
379
                1.5.0/docs/api/java/lang/String.html">String desc = fields[1];
380
                UserRoleConfigImpl userRoleConfig = DomainObjectFactory.createUserRoleConfigImpl();
381
                userRoleConfig.setRole(role.trim());
382
                userRoleConfig.setValue(desc);
383
                userRoleConfig.setValid(true);
384
                roles.add(userRoleConfig);
385
                DaoFactory.getUserRoleConfigDaoImpl().save(userRoleConfig);
386
            }
387
        } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
388
            logger.error(e,e);
389
        }
390
        return roles;
391
    }
392
 
1346 jmachado 393
    public 1.5.0/docs/api/java/lang/Integer.html">Integer checkIfAreNewStandardRoles(UserSession userSession)
394
    {
395
        int totalNew = 0;
396
        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));
397
        1.5.0/docs/api/java/lang/String.html">String roleSpec = null;
398
        try {
399
            while((roleSpec = reader.readLine()) != null)
400
            {
401
 
402
                1.5.0/docs/api/java/lang/String.html">String[] fields = roleSpec.split("=");
403
                1.5.0/docs/api/java/lang/String.html">String role = fields[0].substring("user.role.".length());
404
                1.5.0/docs/api/java/lang/String.html">String desc = fields[1];
405
 
406
                UserRoleConfigImpl userRoleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(role);
407
                if(userRoleConfig == null)
408
                {
409
                    totalNew++;
410
                    userRoleConfig = DomainObjectFactory.createUserRoleConfigImpl();
411
                    userRoleConfig.setRole(role.trim());
412
                    userRoleConfig.setValue(desc);
413
                    userRoleConfig.setValid(true);
414
                    DaoFactory.getUserRoleConfigDaoImpl().save(userRoleConfig);
415
                }
416
            }
417
        } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
418
            logger.error(e,e);
419
        }
420
        return totalNew;
421
    }
422
 
1283 jmachado 423
    private static final 1.5.0/docs/api/java/lang/String.html">String INIT_ROLES = "user.role.all=Todos\n" +
1875 grupo1 424
            "user.role.admin=Administrador\n" +
425
            "user.role.student=Estudante\n" +
426
            "user.role.comissao.avaliacao.desempenho.docente=Comissão de Avaliação de Desempenho Docente\n" +
427
            "user.role.erasmusStudent=Estudante de Erasmus\n" +
428
            "user.role.teacher=Professor\n" +
429
            "user.role.teacher.eg=Professor da Área de Engenharia\n" +
430
            "user.role.teacher.dg=Professor da Área de Design\n" +
431
            "user.role.teacher.ce=Professor da Área de Ciencias Empresariais\n" +
432
            "user.role.teacher.ch=Professor da Área de Ciencias Humanas\n" +
433
            "user.role.teacher.td=Professor do DTD\n" +
434
            "user.role.teacher.cesh=Professor do DCESH\n" +
435
            "user.role.student.eg=Aluno da Área de Engenharia\n" +
436
            "user.role.student.dg=Aluno da Área de Design\n" +
437
            "user.role.student.ce=Aluno da Área de Ciencias Empresariais\n" +
438
            "user.role.student.ch=Aluno da Área de Ciencias Humanas\n" +
439
            "user.role.student.td=Aluno do DTD\n" +
440
            "user.role.student.cesh=Aluno do DCESH\n" +
441
            "user.role.ci=Centro Informático\n" +
442
            "user.role.worker=Funcionário\n" +
443
            "user.role.invited=Convidado\n" +
444
            "user.role.services=Serviços\n" +
445
            "user.role.questionarios.tipologias.admin=Questionarios - Verificação de Tipologias\n" +
446
            "user.role.questionarios.atribuicoes.admin=Questionarios - Atribuições de Cursos\n" +
447
            "user.role.questionarios.atribuicoes.check_teachers=Questionarios - Verificação de Professores\n" +
448
            "user.role.questionarios.admin=Questionários - Super Administrador\n" +
449
            "user.role.questionarios.gerais=Questionários - Permissões Básicas (necessário)\n" +
450
            "user.role.servicesPrograms=Gestão de Programas Curriculares\n" +
451
            "user.role.servicesStudiesPlans=Gestão de Planos de Estudos\n" +
452
            "user.role.servicesCoursesManagement=Gestão de Cursos\n" +
453
            "user.role.servicesRolesManagement=Gestão de Papeis Institucionais\n" +
454
            "user.role.event_class_manager=Gestão de Classes de Eventos\n" +
455
            "user.role.event_manager_nfc=Gestão de Eventos do Nucleo de Formacao Continua\n" +
456
            "user.role.administrativeCouncil=Membro da Direcção\n" +
457
            "user.role.administrativeCouncil.director=Director\n" +
458
            "user.role.administrativeCouncil.vice=Vice Director\n" +
459
            "user.role.schoolSecretary=Secretário da Escola\n" +
460
            "user.role.administrativeCouncilSecretariat=Secretaria da Direcção\n" +
461
            "user.role.teachersSecretariat=Secretaria de Pessoal Docente\n" +
462
            "user.role.dtd.president=Presidente do DTD\n" +
463
            "user.role.cesh.president=Presidente do DCESH\n" +
464
            "user.role.dtd.presidency=Membro da Presidencia do DTD\n" +
465
            "user.role.cesh.presidency=Membro da Presidencia do DCESH\n" +
466
            "user.role.scientificCouncil.president=CTC Presidente (Não utilizado)\n" +
1618 jmachado 467
 
468
 
469
 
1875 grupo1 470
            "user.role.representativeCouncil.president=Presidente do Conselho de Representantes\n" +
471
            "user.role.pedagogicCouncil.president=Presidente do Conselho Pedagógico\n" +
472
            "user.role.representativeCouncil=Conselho de Representantes\n" +
473
            "user.role.scientificCouncil=CTC Membro (Não utilizado)\n" +
474
            "user.role.erasmusCouncil=Conselho Erasmus\n" +
475
            "user.role.pedagogicCouncil=Conselho Pedagógico\n" +
476
            "user.role.courseCoordinator=Coordenadores\n" +
477
            "user.role.futureStudent=Futuros Alunos\n" +
478
            "user.role.oldStudent=Antigos Alunos\n" +
479
            "user.role.studentAssociation=Associação de Estudantes\n" +
480
            "user.role.computerCenter=Centro Informático\n" +
481
            "user.role.courseDirector=Presidente de Departamento\n" +
482
            "user.role.identifiersManager=Utilizador de Gestão de Identificadores\n" +
483
            "user.role.identifiersCollectionCreator=Administrador de Colecções de Identificadores\n" +
484
            "user.role.studentsID=Alunos de Informação e Documentação\n" +
485
            "user.role.studentsFSIR=Alunos de Fontes de Informação e Serviço de Referência\n" +
486
            "user.role.sendMailMessages=Enviar Mensagens de Correio Electronico\n" +
487
            "user.role.pedagogicCouncilSecretariat=Secretariado do Conselho Pedagógico\n" +
488
            "user.role.directionSecretariat=Secretariado da Direcção\n" +
489
            "user.role.studentsSecretariat=Secretaria de Alunos\n" +
490
            "user.role.assessementsTester=Testador de Provas de Avaliação\n" +
491
            "user.role.processes.admin=Inspector de Processos" +
492
            "user.role.validate.ei=Comissão de Curso de Engenharia Informática\n" +
493
            "user.role.courseValidateProgramGPME=Comissão de Curso de Gestão de PME\n" +
494
            "user.role.courseValidateProgramCET_TD=Comissão de Curso de CETS de TD\n" +
495
            "user.role.courseValidateProgramEI=Comissão de Curso de EI\n" +
496
            "user.role.courseValidateProgramEC=Comissão de Curso de EC\n" +
497
            "user.role.courseValidateProgramBioEng=Comissão de Curso de BioEng\n" +
498
            "user.role.courseValidateProgramEGI=Comissão de Curso de EGI\n" +
499
            "user.role.courseValidateProgramEERA=Comissão de Curso de EERA\n" +
500
            "user.role.courseValidateProgramDC=Comissão de Curso de DC\n" +
501
            "user.role.courseValidateProgramDA=Comissão de Curso de DA\n" +
502
            "user.role.courseValidateProgramTVAPE=Comissão de Curso de TVAPE\n" +
503
            "user.role.courseValidateProgramMI=Comissão de Curso de MI\n" +
504
            "user.role.courseValidateProgramEGPMEestranho=Comissão de Curso de EPGME\n" +
505
            "user.role.courseValidatePrograms=Validação de Programas\n" +
506
            "user.role.courseValidateProgramCET_CESH=Comissão de Curso de CETS de CESH\n" +
507
            "user.role.courseValidateProgramAPM=Comissão de Curso de APM\n" +
508
            "user.role.courseValidateProgramAA=Comissão de Curso de AA\n" +
509
            "user.role.courseValidateProgramG=Comissão de Curso de G\n" +
510
            "user.role.courseValidateProgramID=Comissão de Curso de ID\n" +
511
            "user.role.courseValidateProgramRPS=Comissão de Curso de RPS\n" +
512
            "user.role.courseValidateProgramTGI=Comissão de Curso de TGI\n" +
513
            "user.role.courseValidateProgramRU=Comissão de Curso de RU\n" +
514
            "user.role.courseValidateProgramCF=Comissão de Curso de Contabilidade e Finanças\n" +
515
            "user.role.courseValidateProgramNONE=Nenhuma\n" +
516
            "user.role.courseValidateProgramTPB=Comissão de Curso de Tecnologias de Produção de Biocombustíveis\n"+
517
            "user.role.board.institution=Board de Direcção do Instituto Politecnico\n"+
518
            "user.role.repositoryDocs=Administração do Repositório Digital\n"+
519
            "user.role.repositoryDeposit=Depositante do Repositório Digital\n"+
1670 jmachado 520
 
521
 
522
 
1732 jmachado 523
 
1875 grupo1 524
            //ESCOLAS
1670 jmachado 525
 
526
 
527
 
1875 grupo1 528
            //ESTG
529
            "user.role.school.president.estg=Escola Director da ESTG\n"+
530
            "user.role.school.board.estg=Escola Board de Direcção da ESTG\n"+
531
            "user.role.school.secretariado.estg=Escola Secretariado da ESTG\n"+
532
            //CTC
533
            "user.role.scientificCouncil.president.estg=CTC ESTG Presidente\n" +
534
            "user.role.scientificCouncil.board.estg=CTC ESTG Membro\n" +
535
            "user.role.scientificCouncil.secretariado.estg=CTC ESTG Secretariado\n" +
536
            //Pedagogico
537
            "user.role.pedagogicCouncil.president.estg=Pedagógico ESTG Presidente\n" +
538
            "user.role.pedagogicCouncil.board.estg=Pedagógico ESTG Membro\n" +
539
            "user.role.pedagogicCouncil.secretariado.estg=Pedagógico ESTG Secretariado\n" +
1670 jmachado 540
 
1875 grupo1 541
            //MEMBROS ESCOLAS
542
            "user.role.worker.estg=Funcionário ESTG\n" +
543
            "user.role.worker.esae=Funcionário ESAE\n" +
544
            "user.role.worker.esecs=Funcionário ESECS\n" +
545
            "user.role.worker.ess=Funcionário ESS\n" +
1670 jmachado 546
 
1875 grupo1 547
            "user.role.teacher.estg=Docentes ESTG\n" +
548
            "user.role.teacher.esae=Docentes ESAE\n" +
549
            "user.role.teacher.esecs=Docentes ESECS\n" +
550
            "user.role.teacher.ess=Docentes ESS\n" +
1670 jmachado 551
 
1875 grupo1 552
            "user.role.student.estg=Estudantes ESTG\n" +
553
            "user.role.student.esae=Estudantes ESAE\n" +
554
            "user.role.student.esecs=Estudantes ESECS\n" +
555
            "user.role.student.ess=Estudantes ESS\n" +
1728 jmachado 556
 
557
 
1875 grupo1 558
            //ESAE
559
            "user.role.school.president.asae=Escola Director da ESAE\n"+
560
            "user.role.school.board.esae=Escola Board de Direcção da ESAE\n"+
561
            "user.role.school.secretariado.esae=Escola Secretariado da ESAE\n"+
562
            //CTC
563
            "user.role.scientificCouncil.president.esae=CTC ESAE Presidente\n" +
564
            "user.role.scientificCouncil.board.esae=CTC ESAE Membro\n" +
565
            "user.role.scientificCouncil.secretariado.esae=CTC ESAE Secretariado\n" +
566
            //Pedagogico
567
            "user.role.pedagogicCouncil.president.esae=Pedagógico ESAE Presidente\n" +
568
            "user.role.pedagogicCouncil.board.esae=Pedagógico ESAE Membro\n" +
569
            "user.role.pedagogicCouncil.secretariado.esae=Pedagógico ESAE Secretariado\n" +
1670 jmachado 570
 
571
 
572
 
1875 grupo1 573
            //ESECS
574
            "user.role.school.president.esecs=Escola Director da ESECS\n"+
575
            "user.role.school.board.esecs=Escola Board de Direcção da ESECS\n"+
576
            "user.role.school.secretariado.esecs=Escola Secretariado da ESECS\n"+
577
            //CTC
578
            "user.role.scientificCouncil.president.esecs=CTC ESECS Presidente\n" +
579
            "user.role.scientificCouncil.board.esecs=CTC ESECS Membro\n" +
580
            "user.role.scientificCouncil.secretariado.esecs=CTC ESECS Secretariado\n" +
581
            //Pedagogico
582
            "user.role.pedagogicCouncil.president.esecs=Pedagógico ESECS Presidente\n" +
583
            "user.role.pedagogicCouncil.board.esecs=Pedagógico ESECS Membro\n" +
584
            "user.role.pedagogicCouncil.secretariado.esecs=Pedagógico ESECS Secretariado\n" +
1670 jmachado 585
 
586
 
587
 
1875 grupo1 588
            //ESS
589
            "user.role.school.president.ess=Escola Director da ESS\n"+
590
            "user.role.school.board.ess=Escola Board de Direcção da ESS\n"+
591
            "user.role.school.secretariado.ess=Escola Secretariado da ESS\n"+
592
            //CTC
593
            "user.role.scientificCouncil.president.ess=CTC ESS Presidente\n" +
594
            "user.role.scientificCouncil.board.ess=CTC ESS Membro\n" +
595
            "user.role.scientificCouncil.secretariado.ess=CTC ESS Secretariado\n" +
596
            //Pedagogico
597
            "user.role.pedagogicCouncil.president.ess=Pedagógico ESS Presidente\n" +
598
            "user.role.pedagogicCouncil.board.ess=Pedagógico ESS Membro\n" +
599
            "user.role.pedagogicCouncil.secretariado.ess=Pedagógico ESS Secretariado\n" +
1670 jmachado 600
 
601
 
602
 
603
 
604
 
1875 grupo1 605
            //ESCOLAS ANTIGOS NAO USAR
606
            "user.role.board.school.estg=Board de Direcção da ESTG\n"+
607
            "user.role.board.school.esae=Board de Direcção da ESAE\n"+
608
            "user.role.board.school.esecs=Board de Direcção da ESECS\n"+
609
            "user.role.board.school.ess=Board de Direcção da ESS\n"+
1670 jmachado 610
 
611
 
1875 grupo1 612
            //ESAE
613
            "user.role.department.board.agric.recurs.nat=Departamento Direção - Agricultura e Recursos Naturais\n" +
614
            "user.role.department.board.cienc.tecnol.ani=Departamento Direção - Ciência e Tecnologia Animal\n" +
615
            "user.role.department.diretor.agric.recurs.nat=Departamento Diretor - Agricultura e Recursos Naturais\n" +
616
            "user.role.department.diretor.cienc.tecnol.ani=Departamento Diretor - Ciência e Tecnologia Animal\n" +
617
            //ESECS
618
            "user.role.department.board.comun.artes.tecn=Departamento Direção - Comunicação, Artes e Tecnologias\n" +
619
            "user.role.department.board.educac.formac=Departamento Direção - Educação e Formação\n" +
620
            "user.role.department.board.inter.des.soc=Departamento Direção - Intervenção e Desenvolvimento Social\n" +
621
            "user.role.department.diretor.comun.artes.tecn=Departamento Diretor - Comunicação, Artes e Tecnologias\n" +
622
            "user.role.department.diretor.educac.formac=Departamento Diretor - Educação e Formação\n" +
623
            "user.role.department.diretor.inter.des.soc=Departamento Diretor - Intervenção e Desenvolvimento Social\n" +
624
            //ESS
625
            "user.role.department.board.cienc.tec.saude=Departamento Direção - Ciências e Tecnologias da Saúde\n" +
626
            "user.role.department.diretor.cienc.tec.saude=Departamento Diretor - Ciências e Tecnologias da Saúde\n" +
627
            //ESTG
628
            "user.role.department.board.cienc.empre.sh=Departamento Direção - Ciências Empresariais, Sociais e Humanas\n" +
629
            "user.role.department.board.tecnolo.design=Departamento Direção - Tecnologias e Design\n" +
630
            "user.role.department.diretor.cienc.empre.sh=Departamento Diretor - Ciências Empresariais, Sociais e Humanas\n" +
631
            "user.role.department.diretor.tecnolo.design=Departamento Diretor - Tecnologias e Design\n"
1585 jmachado 632
            ;
1283 jmachado 633
 
1626 jmachado 634
 
635
 
636
 
1283 jmachado 637
}
1875 grupo1 638