/branches/grupo7/impl/conf/WEB-INF/struts/struts-json-ws.xml |
---|
56,10 → 56,10 |
<!--<action path="/ws-units-report-list" forward="/json/coursesServices.do?dispatch=executeService&serviceJson=getCourseUnitsEvaluations"/>--> |
<action path="/ws-course-pedagogic-results-list" forward="/json/coursesServices.do?dispatch=executeService&serviceJson=findPedagogicReport4Period"/> |
<action path="/ws-units-dtp-stats" forward="/json/coursesServices.do?dispatch=executeService&serviceJson=getCourseUnitDtpStats"/> |
<action path="/ws-course-unit-plan-year" forward="/json/coursesServices.do?dispatch=executeService&serviceJson=loadPlanYearForCourseUnitCode"/> |
</action-mappings> |
/branches/grupo7/impl/conf/app.properties |
---|
826,6 → 826,7 |
system.wsjson.service.course.report.quest.result.api=@system.wsjson.service.course.report.quest.result.api@ |
system.wsjson.service.course.units.reports.api=@system.wsjson.service.course.units.reports.api@ |
system.wsjson.service.course.units.dtp.stats.api=@system.wsjson.service.course.units.dtp.stats.api@ |
system.wsjson.service.course.unit.plan.year.api=@system.wsjson.service.course.unit.plan.year.api@ |
###AQUI PODEMOS USAR OU TRA INTRANET OU OUTRO PORTAL PUBLICO |
system.intranet.url=@system.intranet.url@ |
/branches/grupo7/impl/conf/berserk/sd.xml |
---|
4008,6 → 4008,41 |
</filterChains> |
</service> |
<service> |
<name>LoadPlanYearForCourseUnitCode</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass> |
<description> |
@courseCode codigo do curso |
@unitCode codigo da unidade |
Carrega o ano da unidade curricular a partir do plano de estudos |
Serviço de integração |
</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadPlanYearForCourseUnitCode</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
</filterChains> |
</service> |
<!-- SERVICOS DE GERACAO DE RELATORIO DE CURSO --> |
<service> |
<name>CourseReportGenerateGlobalLearningResultsChartImg</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass> |
<description> |
@reportCourseDocument documento course report em json |
Serviço de suporte para gerar um grafico |
Coloca o grafico no report documento |
e salva o documento no curso |
Devolve uma classe RepositoryFile4JsonView serializada em JSON |
</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>generateGlobalLearningResultsChartImg</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
</serviceDefinitions> |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/utils/Globals.java |
---|
177,7 → 177,7 |
//LEGADO PARA REMOVER |
public static final List<String> AREAS = ConfigProperties.getListValues("area"); |
public static final List<String> DEPARTAMENTOS = ConfigProperties.getListValues("departamento"); |
/*SIGES WEB SERVICES*/ |
331,7 → 331,7 |
public static final String SURVEY_QUESTION_TYPE_MATRIX = ConfigProperties.getProperty("surveys.question.type.2"); |
public static final String SURVEY_QUESTION_TYPE_TEXT = ConfigProperties.getProperty("surveys.question.type.3"); |
//Filipe Matos |
//Filipe Matos |
public static final String ASSESSMENT_TYPE_EVALUATION = ConfigProperties.getProperty("assessments.type.0"); |
public static final String ASSESSMENT_TYPE_SELFEVALUATION = ConfigProperties.getProperty("assessments.type.1"); |
public static final String ASSESSMENT_QUESTION_TYPE_RADIO = ConfigProperties.getProperty("assessments.question.type.0"); |
347,7 → 347,7 |
public static final String ASSESSMENT_ANSWER_INCORRECT = ConfigProperties.getProperty("assessment.answer.incorrect"); |
public static final String ASSESSMENT_ANSWER_IMCOMPLETE = ConfigProperties.getProperty("assessment.answer.imcomplete"); |
// |
public static final String TEMPLATE_COURSE_XSL_PATH = "/template/xsd/fragmentoCurso.xsl"; |
public static final String TEMPLATE_XSD_PATH = "/template/xsd"; |
public static final String TEMPLATE_EMAIL_PATH = "/template/email"; |
450,6 → 450,7 |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_QUESTIONARIOS_REPORT_RESULTS = ConfigProperties.getProperty("system.wsjson.service.course.report.quest.result.api"); |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT = ConfigProperties.getProperty("system.wsjson.service.course.units.reports.api"); |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS = ConfigProperties.getProperty("system.wsjson.service.course.units.dtp.stats.api"); |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR = ConfigProperties.getProperty("system.wsjson.service.course.unit.plan.year.api"); |
public static final String SYSTEM_EMAIL_CERTIFICATED_HOME_PAGE = ConfigProperties.getProperty("system.mail.standard.certificated.home.page"); |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java |
---|
7,27 → 7,26 |
import org.json.JSONArray; |
import org.json.JSONException; |
import org.json.JSONObject; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitEvaluationImpl; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.courses.coursereport.CourseReportUtils; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.*; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.courseunitreport.CourseUnitSection; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultSemester; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultUc; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultYear; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultsTable; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.LearningGlobalAnalysisSection; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.*; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.CourseUnitDtpStat; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.UnitDtpSemester; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.UnitsDtpTable; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.surveys.SurveysResultsSection; |
import pt.estgp.estgweb.services.data.RepositoryFile4JsonView; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.questionarios.QuestionariosReportsService; |
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.DataTable; |
import pt.estgp.estgweb.utils.Globals; |
import pt.estgp.estgweb.utils.documentBuilder.DocumentSection; |
import pt.estgp.estgweb.utils.documentBuilder.QuestionariosDataTableComponent; |
import pt.estgp.estgweb.web.controllers.utils.FileUploaded; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.IOException; |
66,10 → 65,14 |
*/ |
public CourseReportDocument createNewCourseReportDocument(String courseCode,String year) throws IOException, JSONException |
{ |
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode); |
CourseReportDocument reportCourseDocument = new CourseReportDocument(); |
reportCourseDocument.init(); |
reportCourseDocument.init(course,year); |
//FIRST SERVICE TO CALL TO OBTAIN UNITS AND EVALUATIONS |
//THIS IS THE BASE FOR THE REMAIN SERVICE CALLS |
List<DocumentSection> courseUnitSections = updateCleanCourseUnitSections(courseCode, year, reportCourseDocument); |
157,7 → 160,7 |
uc.setAprovados1720(unitSection.getCourseUnitEvaluation().getNumAlunosAprov1720()); |
uc.setSemElementos(unitSection.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao()); |
uc.setAprovados(unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal()); |
uc.setReprovados(unitSection.getCourseUnitEvaluation().getNumAlunosReprovados()); |
uc.setReprovados(unitSection.getCourseUnitEvaluation().getNumAlunosInscritos() - unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal() - unitSection.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao()); |
if(uc.getAlunosInscritos() > 0) |
{ |
196,32 → 199,32 |
//UPDATE TOTAIS DE SEMESTRES E DE ANOS |
float totalCumProgPercentGlobal = 0; |
int totalInscritosGlobal = 0; |
float totalInscritosGlobal = 0; |
float totalReprovadosPercentGlobal = 0; |
float totalAprovadosPercentGlobal = 0; |
float totalSemElementosPercentGlobal = 0; |
int totalAprovados1013PercentGlobal = 0; |
float totalAprovados1013PercentGlobal = 0; |
float totalAprovados1416PercentGlobal = 0; |
float totalAprovados1720PercentGlobal = 0; |
for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears()) |
{ |
float totalCumProgPercentAno = 0; |
int totalInscritosAno = 0; |
float totalInscritosAno = 0; |
float totalReprovadosPercentAno = 0; |
float totalAprovadosPercentAno = 0; |
float totalSemElementosPercentAno = 0; |
int totalAprovados1013PercentAno = 0; |
float totalAprovados1013PercentAno = 0; |
float totalAprovados1416PercentAno = 0; |
float totalAprovados1720PercentAno = 0; |
for(UnitsLearningResultSemester semester: learningYearLine.getSemesters()) |
{ |
float totalCumProgPercent = 0; |
int totalInscritos = 0; |
float totalInscritos = 0; |
float totalReprovadosPercent = 0; |
float totalAprovadosPercent = 0; |
float totalSemElementosPercent = 0; |
int totalAprovados1013Percent = 0; |
float totalAprovados1013Percent = 0; |
float totalAprovados1416Percent = 0; |
float totalAprovados1720Percent = 0; |
for(UnitsLearningResultUc uc: semester.getUcs()) |
239,7 → 242,7 |
if(semester.getUcs().size() > 0) |
{ |
semester.setCumprimentoProgramaPercent( totalCumProgPercent / ((float)semester.getUcs().size())); |
semester.setAlunosInscritos( totalInscritos / (semester.getUcs().size())); |
semester.setAlunosInscritos( totalInscritos / ((float)semester.getUcs().size())); |
semester.setAprovadosPercent( totalAprovadosPercent / ((float)semester.getUcs().size())); |
semester.setReprovadosPercent( totalReprovadosPercent / ((float)semester.getUcs().size())); |
semester.setSemElementosPercent( totalSemElementosPercent / ((float)semester.getUcs().size())); |
260,7 → 263,7 |
if(learningYearLine.getSemesters().size() > 0) |
{ |
learningYearLine.setCumprimentoProgramaPercent( totalCumProgPercentAno / ((float)learningYearLine.getSemesters().size())); |
learningYearLine.setAlunosInscritos( totalInscritosAno / (learningYearLine.getSemesters().size())); |
learningYearLine.setAlunosInscritos( totalInscritosAno / ((float)learningYearLine.getSemesters().size())); |
learningYearLine.setAprovadosPercent( totalAprovadosPercentAno / ((float)learningYearLine.getSemesters().size())); |
learningYearLine.setReprovadosPercent( totalReprovadosPercentAno / ((float)learningYearLine.getSemesters().size())); |
learningYearLine.setSemElementosPercent( totalSemElementosPercentAno / ((float)learningYearLine.getSemesters().size())); |
289,16 → 292,7 |
learningResultsTable.setAprovados1416Percent( totalAprovados1416PercentGlobal / ((float)learningResultsTable.getYears().size())); |
learningResultsTable.setAprovados1720Percent( totalAprovados1720PercentGlobal / ((float)learningResultsTable.getYears().size())); |
} |
return learningResultsTable; |
//CRIAR A TABELA DE RESUTLADOS GLOBAIS GERAIS COMO UM RESUMO DA ANTERIOR |
/*for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears()) |
{ |
}*/ |
} |
387,7 → 381,7 |
} |
List<DocumentSection> subSections = new ArrayList<DocumentSection>(); |
ArrayList<DocumentSection> subSections = new ArrayList<DocumentSection>(); |
unitReportsSection.setSections(subSections); |
for(CourseUnit cu :units) |
{ |
411,51 → 405,65 |
public static void main(String[] args) throws IOException, JSONException { |
AbstractDao.getCurrentSession().beginTransaction(); |
/** |
* Este servico gera um grafico com a taxa global de aproveitamento e grava-o no repositorio digital |
* devolvendo o respectivo RepositoryFile4JsonView em json para poder ser anexado ao objecto imagem do |
* widget do grafico |
* @param reportDocumentJson |
* @param session |
* @return |
* @throws IOException |
*/ |
public String generateGlobalLearningResultsChartImg(String reportDocumentJson,UserSession session) throws IOException { |
CourseReportDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44","201617"); |
System.out.println(reportCourseDocument.toJson()); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson); |
LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class); |
LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class); |
GlobalLearningResultsChartImg chartImg = (GlobalLearningResultsChartImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartImg.class); |
//System.setProperty("javax.net.ssl.trustStore", "/JORGE/COPIAS/.keystore"); |
//System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); |
/*URL url = new URL("http://pae.ipportalegre.pt/wsjson/api/app/ws-course-pedagogic-results-list?code=44&year=201617&period=S1"); |
UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class); |
FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument); |
System.out.println(StreamsUtils.readString(url.openStream()));*/ |
RepositoryService repositoryService = new RepositoryService(); |
boolean imageInitialized = chartImg.getImage() != null |
&& |
chartImg.getImage().getIdentifier() != null; |
RepositoryFile4JsonView view; |
if(imageInitialized) |
{ |
String identifier = chartImg.getImage().getIdentifier(); |
view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session); |
} |
else |
{ |
view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session); |
} |
chartImg.setImage(view); |
//TODO FALTA GUARDAR O JSON NO CURSO |
return view.toJson(); |
} |
/* |
public String loadUnitsAndCreateLearningResultsTables4Course(String courseCode, String year) throws IOException, JSONException |
{ |
} |
*/ |
//TODO loadUnitsAndCreateLearningResultsTables4Course |
//HIPOTESE DEVOLVER DOIS OBJECTOS |
//SERVICO DE ARRANQUE |
//DEVOLVE UM REPORT DOCUMENT E O CHAMADOR USA O QUE QUISER |
//A GERACAO DE GRAFICOS FAZ-SE APENAS A PEDIDO |
// SE ELE PEDIR PARA ATUALIZAR TUDO CARREGA-SE UNIDADES E TABELAS NU DOC NOVO |
// E NO BROWSER SUBSTITUI-SE ESSES ELEMENTOS NOS ANTIGOS a seccao das unidades |
// e as as tabelas |
/****************************************************************************/ |
/* |
SERVICOS WS-API |
*/ |
/****************************************************************************/ |
/* SERVICOS WS-API |
/****************************************************************************/ |
/** |
504,7 → 512,10 |
return json; |
} |
JSONObject jsonObject = new JSONObject(json); |
return jsonObject.get("response").toString(); |
if(jsonObject.get("service").equals("ok")) |
return jsonObject.get("response").toString(); |
else |
return json; |
} |
} |
532,6 → 543,18 |
for(CourseUnit cu: units) |
{ |
CourseUnitSection courseUnitSection = CourseReportUtils.createCourseUnitEvaluationSection((CourseUnitImpl) cu); |
if(courseUnitSection.getAnoPlano() < 0) |
{ |
logger.info("Ano do Plano not available from courseUnitsEvaluation Service, will read from API loadPlanYearForCourseUnitCode"); |
try{ |
String json = loadPlanYearForCourseUnitCode(courseCode,cu.getCode(),cu.getSemestre()); |
int ano = new JSONObject(json).getInt("year"); |
courseUnitSection.setAnoPlano(ano); |
}catch(Throwable e ) |
{ |
logger.error("Nao conseguiu obter o ano do plano da API: " + e.toString(),e); |
} |
} |
array.put(courseUnitSection.toJsonObject()); |
} |
559,9 → 582,104 |
} |
JSONObject jsonObject = new JSONObject(json); |
return jsonObject.get("response").toString(); |
if(jsonObject.get("service").equals("ok")) |
return jsonObject.get("response").toString(); |
else |
return json; |
} |
} |
/** |
* |
* |
* @param courseCode codigo Siges na base de dados |
* @param unitCode |
* @return Json com o ano do plano exemplo: { year : 1 } |
* ou -1 se não for encontrado |
*/ |
public String loadPlanYearForCourseUnitCode(String courseCode,String unitCode,String period) throws JSONException, IOException { |
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR.indexOf("localhost")>=0) |
{ |
CourseImpl c = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode); |
int year = c.getUnidadeAnoPlano(period,unitCode); |
return "{ year : " + year + " }"; |
} |
else |
{ |
String json = "{ year : -1 }"; |
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR + "?courseCode=" + courseCode + "&unitCode=" + unitCode + "&period=" + period; |
try{ |
URL url = new URL(serviceUrl); |
URLConnection conn = url.openConnection(); |
InputStream is = conn.getInputStream(); |
json = StreamsUtils.readString(is); |
is.close(); |
}catch(Throwable e) |
{ |
logger.error("Connecting " + serviceUrl,e); |
return json; |
} |
JSONObject jsonObject = new JSONObject(json); |
if(jsonObject.get("service").equals("ok")) |
return jsonObject.get("response").toString(); |
else |
return json; |
} |
} |
public static void main(String[] args) throws IOException, JSONException { |
AbstractDao.getCurrentSession().beginTransaction(); |
CourseReportDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44","201617"); |
System.out.println(reportCourseDocument.toJson()); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
//System.setProperty("javax.net.ssl.trustStore", "/JORGE/COPIAS/.keystore"); |
//System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); |
/*URL url = new URL("http://pae.ipportalegre.pt/wsjson/api/app/ws-course-pedagogic-results-list?code=44&year=201617&period=S1"); |
System.out.println(StreamsUtils.readString(url.openStream()));*/ |
} |
/* |
public String loadUnitsAndCreateLearningResultsTables4Course(String courseCode, String year) throws IOException, JSONException |
{ |
} |
*/ |
//TODO loadUnitsAndCreateLearningResultsTables4Course |
//HIPOTESE DEVOLVER DOIS OBJECTOS |
//SERVICO DE ARRANQUE |
//DEVOLVE UM REPORT DOCUMENT E O CHAMADOR USA O QUE QUISER |
//A GERACAO DE GRAFICOS FAZ-SE APENAS A PEDIDO |
// SE ELE PEDIR PARA ATUALIZAR TUDO CARREGA-SE UNIDADES E TABELAS NU DOC NOVO |
// E NO BROWSER SUBSTITUI-SE ESSES ELEMENTOS NOS ANTIGOS a seccao das unidades |
// e as as tabelas |
} |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
9,10 → 9,10 |
import jomm.utils.StreamsUtils; |
import org.apache.log4j.Logger; |
import org.dom4j.Document; |
import org.hibernate.Query; |
import org.json.JSONArray; |
import org.json.JSONException; |
import org.json.JSONObject; |
import pt.estgp.estgweb.utils.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.CourseView; |
27,6 → 27,7 |
import pt.estgp.estgweb.services.users.UserRoleConfigService; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import pt.estgp.estgweb.utils.Globals; |
import pt.estgp.estgweb.utils.StringsUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
181,7 → 182,7 |
{ |
c = DaoFactory.getCourseDaoImpl().findCourseByCodeAndYear(courseView.getCode(),courseView.getImportYear()); |
if(c != null) |
throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_COURSE); |
throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_COURSE); |
c = DomainObjectFactory.createCourseImpl(); |
DaoFactory.getCourseDaoImpl().save(c); |
} |
699,8 → 700,8 |
logger.error(e,e); |
return "<error>" + e.toString() + ". see log for details</error>"; |
} |
} |
} |
if(course.getStudiesPlans() != null && course.getStudiesPlans().size() > 0) |
{ |
return course.getStudiesPlans().iterator().next().getXml(); |
1178,39 → 1179,16 |
String normalizedName = StringsUtils.getNormalizedNameSafeforCode(c.getName()); |
if(normalizedName == null) |
throw new RuntimeException("Erro o curso " + c.getId() +" + nao tem nome"); |
String roleValidation = "courseValidateProgram" + normalizedName; |
UserRoleConfigImpl newUserRoleConfig = DomainObjectFactory.createUserRoleConfigImpl(); |
newUserRoleConfig.setRole(roleValidation); |
newUserRoleConfig.setValid(true); |
newUserRoleConfig.setValue("Comissão de Curso de " + c.getName()); |
newUserRoleConfig.setValuePt("Comissão de Curso de " + c.getName()); |
newUserRoleConfig.setValueEn(""); |
newUserRoleConfig.setValueEs(""); |
newUserRoleConfig.setValueFr(""); |
try { |
ReplaceRoleResult result; |
if(c.getValidationRole() == null || c.getValidationRole().trim().length() == 0) |
{ |
result = new UserRoleConfigService().addUpdateRole(newUserRoleConfig,userSession,false); |
} |
else |
{ |
String oldValidationRole = c.getValidationRole(); |
result = new UserRoleConfigService().updateOldRoleWithView(oldValidationRole, newUserRoleConfig, userSession,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"); |
} |
String oldValidationRole = c.getValidationRole(); |
String nomeRole = "Comissão de Curso de " + c.getName(); |
try{ |
ReplaceRoleResult result = new UserRoleConfigService().createNewNormalizedRoleService(oldValidationRole,nomeRole,roleValidation,userSession); |
c.setValidationRole(roleValidation); |
return result; |
} catch (AccessDeniedException e) { |
logger.error("Tentado alterar um Role e não é Administrador nem Super user"); |
}catch(AccessDeniedException e) |
{ |
throw e; |
} |
} |
1229,9 → 1207,20 |
public CourseDepartmentImpl updateDepartmentFromJson(String json,UserSession session) throws IOException |
{ |
CourseDepartmentImpl courseDepartment = CourseDepartmentImpl.loadFromJson(json); |
CourseDepartmentImpl courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().load(courseDepartment.getSigla()); |
if(!courseDepartment.getSiglaNova().equals(courseDepartment.getSigla())) |
courseDepartmentPersistent.setSigla(courseDepartment.getSiglaNova()); |
{ |
//courseDepartmentPersistent.setSigla(courseDepartment.getSiglaNova()); |
Query q = AbstractDao.getCurrentSession().createQuery("update " + CourseDepartment.class.getName() + " d " + |
" set d.sigla = :siglaNova where d.sigla = :sigla"); |
q.setString("siglaNova",courseDepartment.getSiglaNova()); |
q.setString("sigla",courseDepartment.getSigla()); |
q.executeUpdate(); |
//courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().load(courseDepartment.getSiglaNova()); |
} |
CourseDepartmentImpl courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().load(courseDepartment.getSiglaNova()); |
//courseDepartmentPersistent.setSigla(courseDepartment.getSigla()); |
courseDepartmentPersistent.setActive(courseDepartment.isActive()); |
courseDepartmentPersistent.setName(courseDepartment.getName()); |
1273,7 → 1262,55 |
} |
/** |
* Cria um conjunto de roles novos para um determinado departamento |
* chama o serviço tier1 UserRoleConfigService.createNewNormalizedRoleService |
* @param session |
* @return |
* @throws IOException |
* @throws AccessDeniedException |
*/ |
public CourseDepartmentImpl newDepartmentRolesFromJson(String json,UserSession session) throws IOException, AccessDeniedException { |
CourseDepartmentImpl courseDepartment = CourseDepartmentImpl.loadFromJson(json); |
CourseDepartmentImpl courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().findBySigla(courseDepartment.getSigla()); |
UserRoleConfigService userRoleConfigService = new UserRoleConfigService(); |
String normalizedName = StringsUtils.getNormalizedNameSafeforCode(courseDepartmentPersistent.getName()); |
if(normalizedName == null) |
throw new RuntimeException("Erro o Departamento " + courseDepartmentPersistent.getSigla() +" + nao tem nome"); |
String nomeRole = "Departamento Direcção - " + courseDepartmentPersistent.getName(); |
String oldRole = courseDepartmentPersistent.getBoardRole(); |
String newRoleStr = "department.board." + normalizedName; |
try |
{ |
userRoleConfigService.createNewNormalizedRoleService(oldRole,nomeRole,newRoleStr, session); |
courseDepartmentPersistent.setBoardRole(newRoleStr); |
} catch (AccessDeniedException e) { |
logger.error(e,e); |
throw e; |
} |
nomeRole = "Departamento Diretor - " + courseDepartmentPersistent.getName(); |
oldRole = courseDepartmentPersistent.getDirectorRole(); |
newRoleStr = "department.diretor." + normalizedName; |
try { |
userRoleConfigService.createNewNormalizedRoleService(oldRole,nomeRole,newRoleStr, session); |
courseDepartmentPersistent.setDirectorRole(newRoleStr); |
} catch (AccessDeniedException e) { |
logger.error(e,e); |
throw e; |
} |
return courseDepartmentPersistent; |
} |
public CourseSchoolImpl updateSchoolFromJson(String json,UserSession session) throws IOException |
{ |
CourseSchoolImpl courseSchool = CourseSchoolImpl.loadFromJson(json); |
1307,6 → 1344,7 |
} |
public CourseSchoolImpl newSchoolFromJson(UserSession session) throws IOException |
{ |
CourseSchoolImpl courseSchoolPersistent = DomainObjectFactory.createCourseSchoolImpl(); |
1341,4 → 1379,4 |
}*/ |
} |
} |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartImg.java |
---|
1,11 → 1,129 |
package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components; |
import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent; |
import jomm.utils.BytesUtils; |
import jomm.utils.MimeTypeGuesser; |
import org.jfree.chart.ChartFactory; |
import org.jfree.chart.JFreeChart; |
import org.jfree.chart.plot.PiePlot; |
import org.jfree.chart.plot.RingPlot; |
import org.jfree.data.general.DefaultPieDataset; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument; |
import pt.estgp.estgweb.utils.Globals; |
import pt.estgp.estgweb.utils.documentBuilder.ImageComponent; |
import pt.estgp.estgweb.web.controllers.utils.FileUploaded; |
import javax.imageio.ImageIO; |
import java.awt.*; |
import java.awt.image.BufferedImage; |
import java.io.FileOutputStream; |
import java.io.IOException; |
/** |
* Created by jorgemachado on 31/10/17. |
*/ |
public class GlobalLearningResultsChartImg extends AutoImageWraperComponent |
public class GlobalLearningResultsChartImg extends ImageComponent |
{ |
/** |
* |
* @param results |
* @return the tmp path for generated chart |
* @throws IOException |
*/ |
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results,CourseReportDocument courseReportDocument) throws IOException |
{ |
float aprovados = results.getAprovados(); |
float reprovados = results.getReprovados(); |
float semElementos = results.getSemElementos(); |
double aprovadosPercent = ((int)(results.getAprovadosPercent()*100.0))/100.0; |
double reprovadosPercent = ((int)(results.getReprovadosPercent()*100.0))/100.0; |
double semElementosPercent = ((int)(results.getSemElementosPercent()*100.0))/100.0; |
} |
String tempName = BytesUtils.generateHexKey() + ".png"; |
DefaultPieDataset data = new DefaultPieDataset(); |
if(reprovados > 0) |
data.setValue("Reprovados " + reprovadosPercent + "%", new Double(reprovados)); |
if(aprovados > 0) |
data.setValue("Aprovados " + aprovadosPercent + "%", new Double(aprovados)); |
if(semElementos > 0) |
data.setValue("Sem Elementos " + semElementosPercent + "%", new Double(semElementos)); |
JFreeChart chart = ChartFactory.createRingChart(null, data, false, true, false); |
chart.setBackgroundPaint(new Color(255,255,255)); |
PiePlot plot = (RingPlot) chart.getPlot(); |
plot.setLabelBackgroundPaint(new Color(255, 249, 235)); |
plot.setLabelPaint(new Color(88, 88, 90)); |
//plot.setDrawingSupplier(new ChartBuilderUtil.ChartDrawingSupplier()); |
plot.setSectionPaint(0, new Color(255, 0, 0)); |
plot.setSectionPaint(1, new Color(15, 218, 10)); |
plot.setSectionPaint(2, new Color(200, 200, 200)); |
plot.setBackgroundPaint(new Color(255, 255, 255)); |
plot.setOutlineVisible(false); |
plot.setLabelFont(new Font( |
"Helvetica", Font.PLAIN, 30)); |
BufferedImage image = chart.createBufferedImage( 300*4, 200*4); |
String pathGraficoTiposAlunos = Globals.TMP_DIR + java.io.File.separator + tempName; |
java.io.File output = new java.io.File(pathGraficoTiposAlunos); |
ImageIO.write(image, "png", new FileOutputStream(output)); |
FileUploaded fileUploaded = new FileUploaded(); |
fileUploaded.setTmpName(tempName); |
fileUploaded.setTitle("Taxa global de aproveitamento"); |
fileUploaded.setDescription("Curso: " + courseReportDocument.getCourseName() + " (" + courseReportDocument.getCourseCode()+ ") ano " + courseReportDocument.getYear()); |
fileUploaded.setContentType(MimeTypeGuesser.getInstance().guessMimeType(output)); |
fileUploaded.setFileSize(output.length()); |
fileUploaded.setExtension("png"); |
return fileUploaded; |
} |
public static void main(String [] args) throws IOException { |
float aprovados = 10; |
float reprovados = 2; |
float semElementos = 4; |
double aprovadosPercent = ((int)10/16*100.0)/100.0; |
double reprovadosPercent = ((int)2/16*100.0)/100.0; |
double semElementosPercent = ((int)4/16*100.0)/100.0; |
String tempName = BytesUtils.generateHexKey() + ".png"; |
DefaultPieDataset data = new DefaultPieDataset(); |
if(reprovados > 0) |
data.setValue("Reprovados " + reprovadosPercent + "%", new Double(reprovados)); |
if(aprovados > 0) |
data.setValue("Aprovados " + aprovadosPercent + "%", new Double(aprovados)); |
if(semElementos > 0) |
data.setValue("Sem Elementos " + semElementosPercent + "%", new Double(semElementos)); |
JFreeChart chart = ChartFactory.createRingChart(null, data, false, true, false); |
chart.setBackgroundPaint(new Color(255,255,255)); |
PiePlot plot = (RingPlot) chart.getPlot(); |
plot.setLabelBackgroundPaint(new Color(255, 249, 235)); |
plot.setLabelPaint(new Color(88, 88, 90)); |
//plot.setDrawingSupplier(new ChartBuilderUtil.ChartDrawingSupplier()); |
plot.setSectionPaint(0, new Color(255, 0, 0)); |
plot.setSectionPaint(1, new Color(15, 218, 10)); |
plot.setSectionPaint(2, new Color(200, 200, 200)); |
plot.setBackgroundPaint(new Color(255, 255, 255)); |
plot.setOutlineVisible(false); |
plot.setLabelFont(new Font( |
"Helvetica", Font.PLAIN, 30)); |
BufferedImage image = chart.createBufferedImage( 300*4, 200*4); |
String pathGraficoTiposAlunos = Globals.TMP_DIR + java.io.File.separator + tempName; |
java.io.File output = new java.io.File(pathGraficoTiposAlunos); |
ImageIO.write(image, "png", new FileOutputStream(output)); |
} |
} |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/UnitsLearningResult.java |
---|
6,21 → 6,25 |
public class UnitsLearningResult |
{ |
float cumprimentoProgramaPercent; |
int alunosInscritos; |
float alunosInscritos; |
int semElementos; |
float semElementos; |
float semElementosPercent; |
int aprovados; |
float aprovados; |
float aprovadosPercent; |
int reprovados; |
float reprovados; |
float reprovadosPercent; |
int aprovados1013; |
float aprovados1013; |
float aprovados1013Percent; |
int aprovados1416; |
float aprovados1416; |
float aprovados1416Percent; |
int aprovados1720; |
float aprovados1720; |
float aprovados1720Percent; |
private boolean manual; |
public float getCumprimentoProgramaPercent() { |
return cumprimentoProgramaPercent; |
} |
29,19 → 33,19 |
this.cumprimentoProgramaPercent = cumprimentoProgramaPercent; |
} |
public int getAlunosInscritos() { |
public float getAlunosInscritos() { |
return alunosInscritos; |
} |
public void setAlunosInscritos(int alunosInscritos) { |
public void setAlunosInscritos(float alunosInscritos) { |
this.alunosInscritos = alunosInscritos; |
} |
public int getSemElementos() { |
public float getSemElementos() { |
return semElementos; |
} |
public void setSemElementos(int semElementos) { |
public void setSemElementos(float semElementos) { |
this.semElementos = semElementos; |
} |
53,11 → 57,11 |
this.semElementosPercent = semElementosPercent; |
} |
public int getAprovados() { |
public float getAprovados() { |
return aprovados; |
} |
public void setAprovados(int aprovados) { |
public void setAprovados(float aprovados) { |
this.aprovados = aprovados; |
} |
69,11 → 73,11 |
this.aprovadosPercent = aprovadosPercent; |
} |
public int getReprovados() { |
public float getReprovados() { |
return reprovados; |
} |
public void setReprovados(int reprovados) { |
public void setReprovados(float reprovados) { |
this.reprovados = reprovados; |
} |
85,11 → 89,11 |
this.reprovadosPercent = reprovadosPercent; |
} |
public int getAprovados1013() { |
public float getAprovados1013() { |
return aprovados1013; |
} |
public void setAprovados1013(int aprovados1013) { |
public void setAprovados1013(float aprovados1013) { |
this.aprovados1013 = aprovados1013; |
} |
101,11 → 105,11 |
this.aprovados1013Percent = aprovados1013Percent; |
} |
public int getAprovados1416() { |
public float getAprovados1416() { |
return aprovados1416; |
} |
public void setAprovados1416(int aprovados1416) { |
public void setAprovados1416(float aprovados1416) { |
this.aprovados1416 = aprovados1416; |
} |
117,11 → 121,11 |
this.aprovados1416Percent = aprovados1416Percent; |
} |
public int getAprovados1720() { |
public float getAprovados1720() { |
return aprovados1720; |
} |
public void setAprovados1720(int aprovados1720) { |
public void setAprovados1720(float aprovados1720) { |
this.aprovados1720 = aprovados1720; |
} |
132,4 → 136,11 |
public void setAprovados1720Percent(float aprovados1720Percent) { |
this.aprovados1720Percent = aprovados1720Percent; |
} |
public boolean isManual() { |
return manual; |
} |
public void setManual(boolean manual) { |
this.manual = manual; |
} |
} |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/UnitsLearningResultsTable.java |
---|
12,31 → 12,23 |
{ |
float cumprimentoProgramaPercent; |
int alunosInscritos; |
float alunosInscritos; |
int semElementos; |
float semElementos; |
float semElementosPercent; |
int aprovados; |
float aprovados; |
float aprovadosPercent; |
int reprovados; |
float reprovados; |
float reprovadosPercent; |
int aprovados1013; |
float aprovados1013; |
float aprovados1013Percent; |
int aprovados1416; |
float aprovados1416; |
float aprovados1416Percent; |
int aprovados1720; |
float aprovados1720; |
float aprovados1720Percent; |
List<UnitsLearningResultYear> years = new ArrayList<UnitsLearningResultYear>(); |
public List<UnitsLearningResultYear> getYears() { |
return years; |
} |
public void setYears(List<UnitsLearningResultYear> years) { |
this.years = years; |
} |
public float getCumprimentoProgramaPercent() { |
return cumprimentoProgramaPercent; |
} |
45,54 → 37,62 |
this.cumprimentoProgramaPercent = cumprimentoProgramaPercent; |
} |
public int getAlunosInscritos() { |
public float getAlunosInscritos() { |
return alunosInscritos; |
} |
public void setAlunosInscritos(int alunosInscritos) { |
public void setAlunosInscritos(float alunosInscritos) { |
this.alunosInscritos = alunosInscritos; |
} |
public int getSemElementos() { |
public float getSemElementos() { |
return semElementos; |
} |
public void setSemElementos(int semElementos) { |
public void setSemElementos(float semElementos) { |
this.semElementos = semElementos; |
} |
public float getSemElementosPercent() { |
return semElementosPercent; |
public float getAprovados1720() { |
return aprovados1720; |
} |
public void setSemElementosPercent(float semElementosPercent) { |
this.semElementosPercent = semElementosPercent; |
public void setAprovados1720(float aprovados1720) { |
this.aprovados1720 = aprovados1720; |
} |
public int getAprovados() { |
return aprovados; |
public List<UnitsLearningResultYear> getYears() { |
return years; |
} |
public void setAprovados(int aprovados) { |
this.aprovados = aprovados; |
public void setYears(List<UnitsLearningResultYear> years) { |
this.years = years; |
} |
public float getAprovadosPercent() { |
return aprovadosPercent; |
public float getAprovados1416Percent() { |
return aprovados1416Percent; |
} |
public void setAprovadosPercent(float aprovadosPercent) { |
this.aprovadosPercent = aprovadosPercent; |
public void setAprovados1416Percent(float aprovados1416Percent) { |
this.aprovados1416Percent = aprovados1416Percent; |
} |
public int getReprovados() { |
return reprovados; |
public float getAprovados1720Percent() { |
return aprovados1720Percent; |
} |
public void setReprovados(int reprovados) { |
this.reprovados = reprovados; |
public void setAprovados1720Percent(float aprovados1720Percent) { |
this.aprovados1720Percent = aprovados1720Percent; |
} |
public float getAprovados1013Percent() { |
return aprovados1013Percent; |
} |
public void setAprovados1013Percent(float aprovados1013Percent) { |
this.aprovados1013Percent = aprovados1013Percent; |
} |
public float getReprovadosPercent() { |
return reprovadosPercent; |
} |
101,51 → 101,51 |
this.reprovadosPercent = reprovadosPercent; |
} |
public int getAprovados1013() { |
return aprovados1013; |
public float getAprovadosPercent() { |
return aprovadosPercent; |
} |
public void setAprovados1013(int aprovados1013) { |
this.aprovados1013 = aprovados1013; |
public void setAprovadosPercent(float aprovadosPercent) { |
this.aprovadosPercent = aprovadosPercent; |
} |
public float getAprovados1013Percent() { |
return aprovados1013Percent; |
public float getAprovados() { |
return aprovados; |
} |
public void setAprovados1013Percent(float aprovados1013Percent) { |
this.aprovados1013Percent = aprovados1013Percent; |
public void setAprovados(float aprovados) { |
this.aprovados = aprovados; |
} |
public int getAprovados1416() { |
return aprovados1416; |
public float getSemElementosPercent() { |
return semElementosPercent; |
} |
public void setAprovados1416(int aprovados1416) { |
this.aprovados1416 = aprovados1416; |
public void setSemElementosPercent(float semElementosPercent) { |
this.semElementosPercent = semElementosPercent; |
} |
public float getAprovados1416Percent() { |
return aprovados1416Percent; |
public float getReprovados() { |
return reprovados; |
} |
public void setAprovados1416Percent(float aprovados1416Percent) { |
this.aprovados1416Percent = aprovados1416Percent; |
public void setReprovados(float reprovados) { |
this.reprovados = reprovados; |
} |
public int getAprovados1720() { |
return aprovados1720; |
public float getAprovados1013() { |
return aprovados1013; |
} |
public void setAprovados1720(int aprovados1720) { |
this.aprovados1720 = aprovados1720; |
public void setAprovados1013(float aprovados1013) { |
this.aprovados1013 = aprovados1013; |
} |
public float getAprovados1720Percent() { |
return aprovados1720Percent; |
public float getAprovados1416() { |
return aprovados1416; |
} |
public void setAprovados1720Percent(float aprovados1720Percent) { |
this.aprovados1720Percent = aprovados1720Percent; |
public void setAprovados1416(float aprovados1416) { |
this.aprovados1416 = aprovados1416; |
} |
} |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/CourseReportDocument.java |
---|
2,9 → 2,12 |
import com.owlike.genson.Genson; |
import com.owlike.genson.GensonBuilder; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.json.JSONException; |
import org.json.JSONObject; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.utils.JsonView; |
import pt.estgp.estgweb.utils.documentBuilder.Document; |
import pt.estgp.estgweb.utils.documentBuilder.DocumentSection; |
20,17 → 23,51 |
private static final Logger logger = Logger.getLogger(CourseReportDocument.class); |
private String courseCode; |
private String courseName; |
private String year; |
public CourseReportDocument() |
{ |
} |
public void init() |
public String getCourseCode() { |
return courseCode; |
} |
public void setCourseCode(String courseCode) { |
this.courseCode = courseCode; |
} |
public String getCourseName() { |
return courseName; |
} |
public void setCourseName(String courseName) { |
this.courseName = courseName; |
} |
public String getYear() { |
return year; |
} |
public void setYear(String year) { |
this.year = year; |
} |
public void init(Course c,String year) |
{ |
setYear(year); |
setCourseCode(c.getCode()); |
setCourseName(c.getName()); |
//1 - Introducao |
IntroSection introSection = new IntroSection(); |
introSection.init(); |
getSections().add(introSection); |
//2 - Mapa Sintese dos Relatórios dos Responsáveis das UC's |
124,6 → 161,25 |
return gensonGenericLoad.serialize(this); |
} |
public static void main(String[] args) |
{ |
CourseReportDocument d = new CourseReportDocument(); |
AbstractDao.getCurrentSession().beginTransaction(); |
List<Course> cursos = DaoFactory.getCourseDaoImpl().findAll(); |
d.init(cursos.get(0),"201718"); |
String json = d.toJson(); |
System.out.println(json); |
CourseReportDocument d2 = CourseReportDocument.fromJson(json); |
System.out.println(d2.toJson()); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/services/users/UserRoleConfigService.java |
---|
55,6 → 55,55 |
} |
/** |
* 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(String oldRole,String nomeRole,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(String oldRole,UserRoleConfigImpl newViewRoleConfig, UserSession sess) |
throws AccessDeniedException |
{ |
237,7 → 286,7 |
result.afetectedCoursesValidatePrograms = courses.size(); |
for(Course c :courses) |
{ |
c.setValidationRole(newRole); |
c.setValidationRole(newRole); |
} |
} |
372,217 → 421,218 |
} |
private static final 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.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"+ |
"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 |
//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" + |
//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" + |
//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.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" + |
"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" + |
//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" + |
//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" + |
//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"+ |
//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" |
//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" |
; |
} |
/branches/grupo7/impl/src/java/pt/estgp/estgweb/web/controllers/widgetmodel/CoursesServicesWidgetController.java |
---|
71,17 → 71,32 |
String code = request.getParameter("code"); |
String year = request.getParameter("year"); |
String semestre = request.getParameter("semestre"); |
IServiceManager sm = ServiceManager.getInstance(); |
String json = (String) sm.execute(RequestUtils.getRequester(request, response), |
"LoadCourseUnitDtpStats", |
new Object[]{code, year}); |
new Object[]{code, year, semestre}); |
return new JSONObject(json); |
} |
public JSONObject loadPlanYearForCourseUnitCode(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable { |
String courseCode = request.getParameter("courseCode"); |
String unitCode = request.getParameter("unitCode"); |
String period = request.getParameter("period"); |
IServiceManager sm = ServiceManager.getInstance(); |
String json = (String) sm.execute(RequestUtils.getRequester(request, response), |
"LoadPlanYearForCourseUnitCode", |
new Object[]{courseCode, unitCode, period}); |
return new JSONObject(json); |
} |
/** |
* * For Json Services |
* @param form |
/branches/grupo7/impl/src/web/admin/courses/departments.jsp |
---|
42,202 → 42,228 |
<div class="container-fluid"> |
<div id="departmentsModule" |
ng-app="departmentsModule" |
ng-controller="departmentsModuleController"> |
<div id="departmentsModule" |
ng-app="departmentsModule" |
ng-controller="departmentsModuleController"> |
<script> |
//DECLARACAO DA APLICACAO LOCAL EM ANGULAR |
var departmentsModule = angular.module('departmentsModule', []); |
GLOBAL_BacoAngularAppDependencies.push('departmentsModule'); |
<script> |
//DECLARACAO DA APLICACAO LOCAL EM ANGULAR |
var departmentsModule = angular.module('departmentsModule', []); |
GLOBAL_BacoAngularAppDependencies.push('departmentsModule'); |
departmentsModule.controller('departmentsModuleController', function($scope) { |
$scope.departments = ${jsonArrayDepartments}; |
$scope.schools = ${jsonArraySchools}; |
$scope.setDirty = function(department) |
{ |
department.dirty = "true"; |
} |
$scope.save = function(department) |
{ |
var d = JSON.stringify(department); |
departmentsModule.controller('departmentsModuleController', function($scope) { |
$scope.departments = ${jsonArrayDepartments}; |
$scope.schools = ${jsonArraySchools}; |
$scope.setDirty = function(department) |
{ |
department.dirty = "true"; |
} |
$scope.save = function(department) |
{ |
var d = JSON.stringify(department); |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/admin/adminDepartment.do", |
"updateCourseDepartment", |
{ |
"courseDepartmentJson" : d |
}, |
".form-horizontal", |
function(departmentJson) |
{ |
department.dirty = "false"; |
$scope.$apply(); |
} |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/admin/adminDepartment.do", |
"updateCourseDepartment", |
{ |
"courseDepartmentJson" : d |
}, |
".form-horizontal", |
function(departmentJson) |
{ |
department.dirty = "false"; |
$scope.$apply(); |
} |
); |
} |
$scope.removeDepartment = function(department,$index) |
{ |
); |
} |
var d = JSON.stringify(department); |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/admin/adminDepartment.do", |
"removeCourseDepartment", |
{ |
"courseDepartmentJson" : d |
}, |
".form-horizontal", |
function(departmentJson) |
{ |
$scope.departments.splice($index,1); |
$scope.$apply(); |
} |
$scope.createRoles = function(department) |
{ |
var d = JSON.stringify(department); |
); |
} |
$scope.newDepartment = function() |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/admin/adminDepartment.do", |
"createRolesForDeparment", |
{ |
"courseDepartmentJson" : d |
}, |
".form-horizontal", |
function(departmentJson) |
{ |
window.location.reload(); |
} |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/admin/adminDepartment.do", |
"newCourseDepartment",{}, |
".form-horizontal", |
function(departmentJson) |
{ |
departmentJson.dirty = "true"; |
$scope.departments.push(departmentJson); |
$scope.$apply(); |
} |
); |
} |
$scope.removeDepartment = function(department,$index) |
{ |
); |
} |
var d = JSON.stringify(department); |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/admin/adminDepartment.do", |
"removeCourseDepartment", |
{ |
"courseDepartmentJson" : d |
}, |
".form-horizontal", |
function(departmentJson) |
{ |
$scope.departments.splice($index,1); |
$scope.$apply(); |
} |
}); |
</script> |
); |
} |
$scope.newDepartment = function() |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/admin/adminDepartment.do", |
"newCourseDepartment",{}, |
".form-horizontal", |
function(departmentJson) |
{ |
departmentJson.dirty = "true"; |
$scope.departments.push(departmentJson); |
$scope.$apply(); |
} |
); |
} |
<p><label class="label-info">Papeis dos Departamentos:</label> Os papeis de departamento são escolhidos da lista de papeis do sistema considerando-se todos os papeis com os prefixos:</p> |
<ul> |
<li>department.board: para membros da direcção</li> |
<li>department.diretor: para diretores direcção</li> |
</ul> |
<p>Caso seja necessário um novo papel deverá administrar os papeis institucionais dirija-se <html:link action="/user/configurationUserRoles">Aqui</html:link></p> |
<button class="btn btn-default" data-toggle="collapse" data-target=".languageNames">Mostrar Campos Multinliguisticos</button> |
}); |
</script> |
<button class="btn btn-success pull-right" ng-click="newDepartment()"><span class="glyphicon glyphicon-plus"/></button> |
<div class="form-horizontal"> |
<div class="web-messages"></div> |
<table class="tablesorter-blue"> |
<thead> |
<tr> |
<th>Identificador</th> |
<th>Trocar Para Identificador * </th> |
<th>Ativo</th> |
<th>Instituição</th> |
<th style="width: 30%">Nome</th> |
<th>Papel para Membro da Direcao</th> |
<th>Papel para Director</th> |
<th></th> |
<th></th> |
</tr> |
</thead> |
<tbody> |
<tr ng-class="{dirty: d.dirty=='true'}" ng-repeat="d in departments | orderBy:name:false"> |
<td> |
<div class="row"> |
<div class="col-md-8"> |
<input readonly="true" class="form-control" type="text" ng-model="d.sigla" ng-keyup="setDirty(d)"> |
</div> |
<div class="col-md-2">*</div> |
</div> |
</td> |
<td> |
<div class="row"> |
<div class="col-md-8"> |
<input class="form-control" type="text" ng-model="d.siglaNova" ng-keyup="setDirty(d)"> |
</div> |
<div class="col-md-2">*</div> |
</div> |
</td> |
<td> |
<select class="chosenOff form-control" ng-model="d.active" ng-change="setDirty(d)"> |
<option ng-value="true" ng-selected="d.active == true">Ativo</option> |
<option ng-value="false" ng-selected="d.active == false">Inativo</option> |
</select> |
</td> |
<td> |
<select class="chosenOff form-control" ng-model="d.courseSchool.id" ng-change="setDirty(d)" ng-options="s.id as s.name for s in schools"> |
</select> |
</td> |
<td> |
<input class="form-control" type="text" ng-model="d.name" ng-keyup="setDirty(d)"> |
<div class="languageNames collapse"> |
EN:<input class="form-control" type="text" ng-model="d.nameEn" ng-keyup="setDirty(d)"> |
ES:<input class="form-control" type="text" ng-model="d.nameEs" ng-keyup="setDirty(d)"> |
FR:<input class="form-control" type="text" ng-model="d.nameFr" ng-keyup="setDirty(d)"> |
</div> |
</td> |
<td style="font-size: 0.7em !important"> |
<select class="chosenOff form-control" ng-model="d.boardRole" ng-change="setDirty(d)"> |
<option value="">Escolha</option> |
<logic:iterate id="role" name="rolesBoardDepartamento"> |
<option value="${role}"><bean:message key="user.role.${role}"/></option> |
</logic:iterate> |
</select> |
</td> |
<td style="font-size: 0.7em !important"> |
<select class="chosenOff form-control" ng-model="d.directorRole" ng-change="setDirty(d)"> |
<option value="">Escolha</option> |
<logic:iterate id="role" name="rolesDiretorDepartamento"> |
<option value="${role}"><bean:message key="user.role.${role}"/></option> |
</logic:iterate> |
</select> |
</td> |
<td> |
<button type="button" class="btn btn-success btn-xs" ng-click="save(d)"> |
<span class="glyphicon glyphicon-ok"/> |
</button> |
</td> |
<td> |
<bacoTags:confirm msg="Tem a certeza que deseja remover o departamento {{d.name}}" targetFunction="angular.element($('#departmentsModule')).scope().removeDepartment({{d}},{{$index}});angular.element($('#departmentsModule')).scope().$apply();" btnClass="btn btn-danger btn-xs" icon="glyphicon glyphicon-remove"/> |
</td> |
<p><label class="label-info">Papeis dos Departamentos:</label> Os papeis de departamento são escolhidos da lista de papeis do sistema considerando-se todos os papeis com os prefixos:</p> |
<ul> |
<li>department.board: para membros da direcção</li> |
<li>department.diretor: para diretores direcção</li> |
</ul> |
<p>Caso seja necessário um novo papel deverá administrar os papeis institucionais dirija-se <html:link action="/user/configurationUserRoles">Aqui</html:link></p> |
<button class="btn btn-default" data-toggle="collapse" data-target=".languageNames">Mostrar Campos Multinliguisticos</button> |
<button class="btn btn-success pull-right" ng-click="newDepartment()"><span class="glyphicon glyphicon-plus"/></button> |
<div class="form-horizontal"> |
<div class="web-messages"></div> |
<table class="tablesorter-blue"> |
<thead> |
<tr> |
<th>Identificador</th> |
<th>Trocar Para Identificador * </th> |
<th>Ativo</th> |
<th>Instituição</th> |
<th style="width: 30%">Nome</th> |
<th>Papel para Membro da Direcao</th> |
<th>Papel para Director</th> |
<th></th> |
<th></th> |
<th></th> |
</tr> |
</thead> |
<tbody> |
<tr ng-class="{dirty: d.dirty=='true'}" ng-repeat="d in departments | orderBy:name:false"> |
<td> |
<div class="row"> |
<div class="col-md-8"> |
<input readonly="true" class="form-control" type="text" ng-model="d.sigla" ng-keyup="setDirty(d)"> |
</div> |
<div class="col-md-2">*</div> |
</div> |
</td> |
<td> |
<div class="row"> |
<div class="col-md-8"> |
<input class="form-control" type="text" ng-model="d.siglaNova" ng-keyup="setDirty(d)"> |
</div> |
<div class="col-md-2">*</div> |
</div> |
</td> |
<td> |
<select class="chosenOff form-control" ng-model="d.active" ng-change="setDirty(d)"> |
<option ng-value="true" ng-selected="d.active == true">Ativo</option> |
<option ng-value="false" ng-selected="d.active == false">Inativo</option> |
</select> |
</td> |
<td> |
<select class="chosenOff form-control" ng-model="d.courseSchool.id" ng-change="setDirty(d)" ng-options="s.id as s.name for s in schools"> |
</select> |
</td> |
<td> |
<input class="form-control" type="text" ng-model="d.name" ng-keyup="setDirty(d)"> |
<div class="languageNames collapse"> |
EN:<input class="form-control" type="text" ng-model="d.nameEn" ng-keyup="setDirty(d)"> |
ES:<input class="form-control" type="text" ng-model="d.nameEs" ng-keyup="setDirty(d)"> |
FR:<input class="form-control" type="text" ng-model="d.nameFr" ng-keyup="setDirty(d)"> |
</div> |
</td> |
</tr> |
</tbody> |
</table> |
<p class="label label-warning">* - A sigla é o identificador do departamento, altere a sigla apenas se perceber as suas implicações. Existem Classes no sistema que dependem da sigla do departamento, a sigla tem de ser unica</p> |
<%-- |
<model:id name="department" property="id"/> |
<model:field name="department" property="name"/> |
<model:field name="department" property="nameEn"/> |
<model:field name="department" property="nameEs"/> |
<model:field name="department" property="nameFr"/> |
<model:remove name="department"/> |
--%> |
</div> |
<td style="font-size: 0.7em !important"> |
<select class="chosenOff form-control" ng-model="d.boardRole" ng-change="setDirty(d)"> |
<option value="">Escolha</option> |
<logic:iterate id="role" name="rolesBoardDepartamento"> |
<option value="${role}"><bean:message key="user.role.${role}"/></option> |
</logic:iterate> |
</select> |
</td> |
<td style="font-size: 0.7em !important"> |
<select class="chosenOff form-control" ng-model="d.directorRole" ng-change="setDirty(d)"> |
<option value="">Escolha</option> |
<logic:iterate id="role" name="rolesDiretorDepartamento"> |
<option value="${role}"><bean:message key="user.role.${role}"/></option> |
</logic:iterate> |
</select> |
</td> |
<td> |
<button type="button" class="btn btn-success btn-xs" ng-click="save(d)"> |
<span class="glyphicon glyphicon-ok"/> |
</button> |
</td> |
<td> |
<bacoTags:confirm msg="Tem a certeza que deseja remover o departamento {{d.name}}" targetFunction="angular.element($('#departmentsModule')).scope().removeDepartment({{d}},{{$index}});angular.element($('#departmentsModule')).scope().$apply();" btnClass="btn btn-danger btn-xs" icon="glyphicon glyphicon-remove"/> |
</td> |
<td> |
<button ng-if="!d.directorRole && !d.boardRole" data-toggle="tooltip" data-title="Criar Roles para este departamento" type="button" class="btn btn-success btn-xs" ng-click="createRoles(d)"> |
<span class="glyphicon glyphicon-user"/> |
</button> |
</td> |
<pre> |
{{departments | json}} |
</pre> |
<%-- DEBUG |
<pre> |
{{departments | json}} |
</pre> |
<pre> |
{{schools | json}} |
</pre> |
--%> |
</div> |
</tr> |
</tbody> |
</table> |
<h2 class="label label-warning">* - A sigla é o identificador do departamento, altere a sigla apenas se perceber as suas implicações. Existem Classes no sistema que dependem da sigla do departamento, a sigla tem de ser unica</h2> |
<h2 class="label label-warning">* - A sigla apenas pode ser alterada se não houver docentes nem cursos a apontar para o departamento que pretende alterar</h2> |
<%-- |
<model:id name="department" property="id"/> |
<model:field name="department" property="name"/> |
<model:field name="department" property="nameEn"/> |
<model:field name="department" property="nameEs"/> |
<model:field name="department" property="nameFr"/> |
<model:remove name="department"/> |
--%> |
</div> |
<!--<pre> |
{{departments | json}} |
</pre>--> |
<%-- DEBUG |
<pre> |
{{departments | json}} |
</pre> |
<pre> |
{{schools | json}} |
</pre> |
--%> |
</div> |
</div> |
<p>* Atenção o identificador é a base dos papeis, deverá trocar também as chaves dos papeis na administração de papeis institucionais, procurando pelos papeis respectivos e alterando a sua chave para a nova sigla ou criando novos papeis</p> |
/branches/grupo7/impl/src/web/user/courses/courseReportEdit.jsp |
---|
95,12 → 95,13 |
<% |
String courseCode = request.getParameter("courseCode"); |
String year = request.getParameter("year"); |
AbstractDao.getCurrentSession().beginTransaction(); |
CourseImpl courseImpl = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode); |
request.setAttribute("course",courseImpl); |
CourseReportDocument courseReport = null; |
try { |
courseReport = new CourseReportServices().createNewCourseReportDocument("44", "201617"); |
courseReport = new CourseReportServices().createNewCourseReportDocument(courseCode, year); |
} catch (Throwable e) { |
System.out.println(e); |
e.printStackTrace(); |
114,218 → 115,233 |
<div class="container-fluid"> |
<style> |
.separatorSection |
{ |
border: 1px solid #ddd; |
} |
</style> |
<style> |
.separatorSection |
{ |
border: 1px solid #ddd; |
} |
</style> |
<!-- Apresentacao da Unidade --> |
<!-- Apresentacao da Unidade --> |
<div class="panel panel-default"> |
<div class="panel-heading"> |
Relatório Anual do curso: ${course.name} |
</div> |
<div class="panel-body"> |
<div class="panel panel-default"> |
<div class="panel-heading"> |
Relatório Anual do curso: ${course.name} |
</div> |
<div class="panel-body"> |
<p><b class="label-info">Tipo de Curso:</b> <bean:message key="course.${course.degree}"/></p> |
<p><b class="label-info">Ano Lectivo:</b> ${course.importYear}</p> |
<p><b class="label-info">Departamento:</b> ${course.department.name}</p> |
<p><b class="label-info">Escola:</b> ${course.department.courseSchool.name}</p> |
<p><b class="label-info">Tipo de Curso:</b> <bean:message key="course.${course.degree}"/></p> |
<p><b class="label-info">Ano Lectivo:</b> ${course.importYear}</p> |
<p><b class="label-info">Departamento:</b> ${course.department.name}</p> |
<p><b class="label-info">Escola:</b> ${course.department.courseSchool.name}</p> |
<script> |
<script> |
//Especifico da aplicacao |
var courseReportApp = angular.module('courseReportApp', []); |
GLOBAL_BacoAngularAppDependencies.push('courseReportApp'); |
//Especifico da aplicacao |
var courseReportApp = angular.module('courseReportApp', ['ui.tree']); |
GLOBAL_BacoAngularAppDependencies.push('courseReportApp'); |
courseReportApp.directive('resizable', function () { |
return { |
restrict: 'A', |
scope: { |
callback: '&onResize' |
}, |
link: function postLink(scope, elem, attrs) { |
elem.resizable(); |
elem.on('resize', function (evt, ui, comp) { |
scope.$apply(function() { |
if (scope.callback) { |
scope.callback({$evt: evt, $ui: ui, $comp: comp }); |
} |
}) |
}); |
courseReportApp.directive('resizable', function () { |
return { |
restrict: 'A', |
scope: { |
callback: '&onResize' |
}, |
link: function postLink(scope, elem, attrs) { |
elem.resizable(); |
elem.on('resize', function (evt, ui, comp) { |
scope.$apply(function() { |
if (scope.callback) { |
scope.callback({$evt: evt, $ui: ui, $comp: comp }); |
} |
}; |
}) |
}); |
} |
}; |
}); |
courseReportApp.controller('courseReportAppController', function($scope) |
{ |
courseReportApp.controller('courseReportAppController', function($scope) |
{ |
$scope.docAppSelector = "#courseReportApp"; |
$scope.report = <%=courseReportJson%> |
$scope.docAppSelector = "#courseReportApp"; |
$scope.report = <%=courseReportJson%> |
$scope.resize = function(evt,ui,comp) { |
//console.log (evt,ui); |
comp.width = ui.size.width; |
comp.height = ui.size.height; |
} |
$scope.resize = function(evt,ui,comp) { |
//console.log (evt,ui); |
comp.width = ui.size.width; |
comp.height = ui.size.height; |
} |
/** |
* @classe class to match |
* @superClasses array of strings |
* */ |
$scope.contains = function(obj,classe) |
{ |
if(obj['@class'] && obj['@class'] == classe) |
return true; |
if(obj.allSuperClasses) |
{ |
for(var i in obj.allSuperClasses) |
{ |
if(classe == obj.allSuperClasses[i]) |
return true; |
} |
} |
return false; |
} |
/** |
* @classe class to match |
* @superClasses array of strings |
* */ |
$scope.contains = function(obj,classe) |
{ |
if(obj['@class'] && obj['@class'] == classe) |
return true; |
if(obj.allSuperClasses) |
{ |
for(var i in obj.allSuperClasses) |
{ |
if(classe == obj.allSuperClasses[i]) |
return true; |
} |
} |
return false; |
} |
$scope.showSep = function(section) |
{ |
$(".separatorSectionNav").each(function() |
{ |
angular.element($(this)).scope().section.active = false; |
}); |
section.active = true; |
$scope.showSep = function(section,subSection) |
{ |
var s; |
for(s in section.sections) |
{ |
section.sections[s].active = false; |
} |
/*$(".separatorSectionNav").each(function() |
{ |
angular.element($(this)).scope().section.active = false; |
});*/ |
subSection.active = true; |
} |
} |
$scope.class2id = function(obj) |
/** |
* Este metodo devolve o template mais profundo na hierarquia de classes |
* permitindo emular o override, quanto mais especifica for a classe |
* e caso exista template é esse o template devolvido |
* procura um script com o id da classe e se nao existir |
* vai subindo nas super classes |
* @param obj |
* @returns {*} |
*/ |
$scope.class2id = function(obj) |
{ |
var objClassId = obj["@class"].replaceAll(".","_"); |
if($("script#" + objClassId).length > 0) |
{ |
return objClassId; |
} |
if(obj.allSuperClasses) |
{ |
var s; |
for(s in obj.allSuperClasses) |
{ |
var superClass = obj.allSuperClasses[s]; |
var superClassId = superClass.replaceAll(".","_"); |
if($("script#" + superClassId).length > 0) |
{ |
return obj["@class"].replaceAll(".","_"); |
return superClassId; |
} |
} |
} |
return obj["@class"].replaceAll(".","_"); |
} |
$scope.addText = function(parentCustomPane) |
{ |
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.TextComponent") |
} |
$scope.addText = function(parentCustomPane) |
{ |
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.TextComponent") |
} |
$scope.addImage = function(parentCustomPane) |
{ |
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.ImageComponent") |
} |
$scope.addImage = function(parentCustomPane) |
{ |
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.ImageComponent") |
} |
$scope.addSimpleDocComponent = function(parentCustomPane,classComponent) |
$scope.addSimpleDocComponent = function(parentCustomPane,classComponent) |
{ |
if(!parentCustomPane.components) |
{ |
parentCustomPane.components = []; |
} |
parentCustomPane.components.push( |
{ |
if(!parentCustomPane.components) |
{ |
parentCustomPane.components = []; |
} |
parentCustomPane.components.push( |
{ |
"@class" : classComponent |
} |
); |
"@class" : classComponent |
} |
$scope.removeComponent = function(index,array) |
{ |
array.splice(index,1); |
); |
} |
$scope.removeComponent = function(index,array) |
{ |
array.splice(index,1); |
} |
$scope.callbackUploadedFiles = function(filesUploadResult,token,targetElement) |
{ |
var modelObject = BacoAngularUtils.getAngularElementModel(targetElement); |
} |
$scope.callbackUploadedFiles = function(filesUploadResult,token,targetElement) |
{ |
var modelObject = BacoAngularUtils.getAngularElementModel(targetElement); |
modelObject.filesUploadResult = filesUploadResult; |
if(modelObject.image && modelObject.image.identifier) |
if(modelObject.image && modelObject.image.identifier) |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/json/repository.do", |
"replaceRepositoryFileFromTempPrivateDomain", |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/json/repository.do", |
"replaceRepositoryFileFromTempPrivateDomain", |
{ |
"identifier" : modelObject.image.identifier, |
"fileUploaded" : BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0]) |
}, |
"#courseReportApp", |
function(repositoryFile4JsonView) |
{ |
modelObject.image = repositoryFile4JsonView; |
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime(); |
delete modelObject.filesUploadResult; |
angular.element($("#courseReportApp")).scope().$apply(); |
}, |
function(){} |
); |
} |
else |
"identifier" : modelObject.image.identifier, |
"fileUploaded" : BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0]) |
}, |
"#courseReportApp", |
function(repositoryFile4JsonView) |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/json/repository.do", |
"saveRepositoryFileFromTempPrivateDomain", |
{ |
"fileUploaded" : BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0]) |
}, |
"#courseReportApp", |
function(repositoryFile4JsonView) |
{ |
modelObject.image = repositoryFile4JsonView; |
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime(); |
delete modelObject.filesUploadResult; |
angular.element($("#courseReportApp")).scope().$apply(); |
}, |
function(){} |
); |
} |
} |
modelObject.image = repositoryFile4JsonView; |
//image URL is generated on reimport just to avoid caching |
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime(); |
angular.element($("#courseReportApp")).scope().$apply(); |
}, |
function(){} |
); |
} |
else |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/json/repository.do", |
"saveRepositoryFileFromTempPrivateDomain", |
{ |
"fileUploaded" : BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0]) |
}, |
"#courseReportApp", |
function(repositoryFile4JsonView) |
{ |
modelObject.image = repositoryFile4JsonView; |
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime(); |
angular.element($("#courseReportApp")).scope().$apply(); |
}, |
function(){} |
); |
} |
} |
}); |
</script> |
<!--TEMPLATES FOR DOCUMENT BUILDER--> |
<jsp:include page="../utils/documentsBuilder.jsp"/> |
<div class="form-vertical"> |
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController"> |
}); |
</script> |
<!--TEMPLATES FOR DOCUMENT BUILDER--> |
<jsp:include page="../utils/documentsBuilder.jsp"/> |
<jsp:include page="coursereport/templates.jsp"/> |
<ul class="nav nav-tabs"> |
<li ng-model="section" class="separatorSectionNav" ng-class="{ active: section.active}" ng-repeat="section in report.sections"> |
<a ng-click="showSep(section)">{{section.title}}</a> |
</li> |
</ul> |
<div class="form-vertical"> |
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController"> |
<div ng-init="section=report;" ng-include="'pt_estgp_estgweb_utils_documentBuilder_DocumentSection'"> |
</div> |
<!--DocumentSection--> |
<div ng-model="section" ng-class="{ hidden: !section.active}" ng-repeat="section in report.sections" class="separatorSection clearfix"> |
<!-- <pre class="code">{{ report | json }}</pre>--> |
<div ng-repeat="comp in section.components" ng-include="class2id(comp)"> |
</div> |
</div><!--App--> |
</div> <!--form--> |
</div> |
<!--/DocumentSection--> |
</div><!--Panel Body--> |
<%-- |
<pre class="code">{{ report | json }}</pre> |
--%> |
</div><!--Panel--> |
</div><!--App--> |
</div> <!--form--> |
</div><!--Panel Body--> |
</div><!--Panel--> |
</div><!--container-fluid--> |
<% |
/branches/grupo7/impl/build.xml |
---|
577,9 → 577,9 |
<replacefilter token="@system.wsjson.service.course.report.quest.result.api@" value="${system.wsjson.service.course.report.quest.result.api}"/> |
<replacefilter token="@system.wsjson.service.course.units.reports.api@" value="${system.wsjson.service.course.units.reports.api}"/> |
<replacefilter token="@system.wsjson.service.course.units.dtp.stats.api@" value="${system.wsjson.service.course.units.dtp.stats.api}"/> |
<replacefilter token="@system.wsjson.service.course.unit.plan.year.api@" value="${system.wsjson.service.course.unit.plan.year.api}"/> |
<replacefilter token="@system.intranet.url@" value="${system.intranet.url}"/> |
<replacefilter token="@system.public.url@" value="${system.public.url}"/> |