Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1786 → Rev 1789

/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java
3,7 → 3,6
import com.owlike.genson.Genson;
import com.owlike.genson.GensonBuilder;
import com.owlike.genson.reflect.VisibilityFilter;
import jomm.dao.impl.AbstractDao;
import jomm.utils.BytesUtils;
import jomm.utils.FilesUtils;
import jomm.utils.StreamsUtils;
18,13 → 17,12
import pt.estgp.estgweb.domain.views.CourseView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedException;
import pt.estgp.estgweb.services.courses.xsd.Curso;
import pt.estgp.estgweb.services.courses.xsd.SemestreImpl;
import pt.estgp.estgweb.services.courses.xsd.UnidadeType;
import pt.estgp.estgweb.services.courses.xsd.*;
import pt.estgp.estgweb.services.data.IRepositoryFile;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.users.ReplaceRoleResult;
import pt.estgp.estgweb.services.users.UserRoleConfigService;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Dom4jUtil;
60,6 → 58,7
RepositoryService repositoryService = new RepositoryService();
 
 
 
/**
* Servico e subservico para termos acesso as variaveis de controlo
* @param id
356,7 → 355,7
courseStudiesPlan.setXml(sw.toString());
 
 
String json = getGensonPlanoEstudos().serialize(curso);
String json = CursoImpl.getGensonPlanoEstudosParaApiJsonWS().serialize(curso);
//SETTING JSON in COURSE STUDIES PLAN
courseStudiesPlan.setJson(json);
 
417,24 → 416,6
}
 
 
private static Genson getGensonPlanoEstudos(){
Genson genson = new GensonBuilder()
.exclude("class")
.exclude("siges", Curso.class)
.exclude("nome",Curso.class)
.exclude("codigoPlanoSiges",Curso.class)
.exclude("anoPlanoSiges",Curso.class)
.exclude("descPlanoSiges",Curso.class)
.exclude("dep")
.exclude("removed",UnidadeType.class)
.exclude("perfilId",Curso.Semestre.Perfil.class)
.exclude("semestreId",Curso.Semestre.class)
.create();
return genson;
}
 
 
 
private static Genson getGensonCourse(){
Genson genson = new GensonBuilder()
.exclude(Object.class)
475,6 → 456,7
.include("schoolForJsonApi", CourseImpl.class)
.include("statusForJsonApi", CourseImpl.class)
 
 
.include("name", Course.class)
.include("nameEn", Course.class)
.include("nameEs", Course.class)
624,6 → 606,7
* Nota: O plano de Estudos é uma classe persistente que tem apenas versão e descrição
* deverá ter como campo o XML e o JSON já gerados do plano de estudos que comporta
*
* //TODO REVER
* @param code
* @return
* @throws JSONException
665,7 → 648,9
JSONObject studiesPlanObj;
if(studiesPlan.getJson() != null)
{
studiesPlanObj = new JSONObject(studiesPlan.getJson());
CursoImpl c = CursoImpl.loadFromJson(studiesPlan.getJson());
autoFillTotalHorasContacto(c);
studiesPlanObj = c.toJsonObjectJsonApiWS();
studiesPlanObj.put("version",studiesPlan.getVersion());
coursesResponse.put("courseStudiesPlan",studiesPlanObj);
}
982,7 → 967,7
* Updates studiesPlanVersion
* Updates studiesPlanVersionDescription
* Updates PlanoEstudos XML and JSON
*
* TODO REVER
* @param courseId
* @param coursePlanId
* @param planoEditado
1026,6 → 1011,12
planoEditado.setSiges(course.getCode());//GARANTIR QUE O CODIGO SIGEST ESTA CORRECTO
planoEditado.setNome(course.getName());
planoEditado.setDep(course.getArea());
 
/**
* Calcula automaticamente as horas de contacto totais
*/
autoFillTotalHorasContacto(planoEditado);
 
//planoEditado.setDepDesc("");
//planoEditado.setDepDescEn("");
//planoEditado.setDepDescEs("");
1037,7 → 1028,7
marshaller.marshal(planoEditado,xml);
 
courseStudiesPlanPersistente.setXml(xml.toString());
String json = getGensonPlanoEstudos().serialize(planoEditado);
String json = CursoImpl.getGensonPlanoEstudosParaApiJsonWS().serialize(planoEditado);
//SETTING JSON in COURSE STUDIES PLAN
courseStudiesPlanPersistente.setJson(json);
break;
1050,6 → 1041,35
}
}
 
private void autoFillTotalHorasContacto(Curso planoEditado) {
if(planoEditado.getSemestre() != null)
{
for(Curso.Semestre s : planoEditado.getSemestre())
{
if(s.getUnidade() != null)
{
for(UnidadeType u : s.getUnidade())
{
u.setTotalHorasContacto(UnidadeImpl.calculateTotalHorasContacto(u.getHorasContacto()));
}
}
if(s.getPerfil() != null)
{
for(Curso.Semestre.Perfil p : s.getPerfil())
{
if(p.getUnidade() != null)
{
for(UnidadeType u : p.getUnidade())
{
u.setTotalHorasContacto(UnidadeImpl.calculateTotalHorasContacto(u.getHorasContacto()));
}
}
}
}
}
}
}
 
public void generateFreshJsonPlanosEstudosFromXml(UserSession session)
{
List<CourseStudiesPlan> coursePlans = DaoFactory.getCourseStudiesPlanDaoImpl().findAll();
1072,7 → 1092,7
StringWriter xml = new StringWriter();
marshaller.marshal(cursoPlano,xml);
courseStudiesPlanPersistente.setXml(xml.toString());
String json = getGensonPlanoEstudos().serialize(cursoPlano);
String json = CursoImpl.getGensonPlanoEstudosParaApiJsonWS().serialize(cursoPlano);
//SETTING JSON in COURSE STUDIES PLAN
courseStudiesPlanPersistente.setJson(json);
}
1124,12 → 1144,13
return t;
}
 
/*
public static void main(String[] args)
{
AbstractDao.getCurrentSession().beginTransaction();
new CoursesService().generateFreshJsonPlanosEstudosFromXml(null);
AbstractDao.getCurrentSession().getTransaction().commit();
}
}*/
 
public StudiesPlanImporter importStudiesPlanVersionFromFile(InputStream stream, Long studiesPlanId, UserSession session) throws IOException
{
1150,7 → 1171,7
return importer;
}
 
public UserRoleConfigService.ReplaceRoleResult createRoleCourseComission(long courseId,UserSession userSession) throws AccessDeniedException
public ReplaceRoleResult createRoleCourseComission(long courseId,UserSession userSession) throws AccessDeniedException
{
Course c = DaoFactory.getCourseDaoImpl().load(courseId);
String normalizedName = StringsUtils.getNormalizedNameSafeforCode(c.getName());
1168,7 → 1189,7
 
try {
 
UserRoleConfigService.ReplaceRoleResult result;
ReplaceRoleResult result;
if(c.getValidationRole() == null || c.getValidationRole().trim().length() == 0)
{
result = new UserRoleConfigService().addUpdateRole(newUserRoleConfig,userSession);
1301,5 → 1322,18
 
}
 
public static void main(String[] args) throws JAXBException, IOException {
 
String json = "{\"anoPlanoSiges\":null,\"codigoPlanoSiges\":null,\"dep\":null,\"descPlanoSiges\":null,\"nome\":null,\"semestre\":[{\"id\":\"S1\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Português — Língua e Literatura\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:12\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"},\"eCTS\":\"6\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Geografia\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:16\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"História\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:20\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Linguística e Análise do Discurso\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:24\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"},\"eCTS\":\"6\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Matemática no 1.o Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:28\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Educação para a Saúde\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:32\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Música, Emoção e Criatividade\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:36\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Educação para a Cidadania\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:40\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Descobrir a Matemática\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:44\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"}],\"type\":\"semestre\",\"$$hashKey\":\"object:6\"},{\"id\":\"S2\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Português no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:54\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Estudo do Meio no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:58\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática da Matemática no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:62\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática das Expressões no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:66\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Psicologia da Educação\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:70\",\"eCTS\":\"3\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Investigação em Educação\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:74\",\"eCTS\":\"3\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"}}],\"type\":\"semestre\",\"$$hashKey\":\"object:48\"},{\"id\":\"S3\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Prática de Ensino Supervisionada no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"500\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:90\",\"eCTS\":\"20\",\"horasContacto\":{\"s\":\"30\",\"e\":\"270\",\"oT\":\"45\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Seminário de Investigação I\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"50\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:98\",\"eCTS\":\"2\",\"horasContacto\":{\"s\":\"20\",\"oT\":\"10\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática da História e Geografia de Portugal no 2º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"100\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:94\",\"eCTS\":\"4\",\"horasContacto\":{\"tP\":\"35\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Português no 2º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"100\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:102\",\"eCTS\":\"4\",\"horasContacto\":{\"oT\":\"15\",\"tP\":\"35\"}}],\"type\":\"semestre\",\"$$hashKey\":\"object:78\"},{\"id\":\"S4\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:106\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:110\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:114\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:118\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:122\"}],\"type\":\"semestre\",\"$$hashKey\":\"object:84\"}],\"siges\":null}";
CursoImpl c = CursoImpl.loadFromJson(json);
 
JAXBContext jc = JAXBContext.newInstance(Curso.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter xml = new StringWriter();
marshaller.marshal(c,xml);
System.out.println(xml);
}
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/xsd/UnidadeImpl.java
3,8 → 3,10
/**
* Created by jorgemachado on 15/09/16.
*/
public class UnidadeImpl extends UnidadeType {
public UnidadeType.HorasContacto getHorasContacto() {
public class UnidadeImpl extends UnidadeType
{
public UnidadeType.HorasContacto getHorasContacto()
{
 
if(horasContacto == null)
horasContacto = new HorasContacto();
186,5 → 188,53
return null;
}
 
/**
* GenField
* **/
public static String calculateTotalHorasContacto(HorasContacto h)
{
if(h == null)
return "0";
double total = 0;
total += convertHoras(h.getE());
total += convertHoras(h.getO());
total += convertHoras(h.getOT());
total += convertHoras(h.getP());
total += convertHoras(h.getPD());
total += convertHoras(h.getPL());
total += convertHoras(h.getS());
total += convertHoras(h.getT());
total += convertHoras(h.getTC());
total += convertHoras(h.getTP());
 
String totalStr = String.format( "%.1f", total ).replace(",", ".");
if(totalStr.endsWith(".0"))
{
return ((int)total) + "";
}
return totalStr;
}
 
private static double convertHoras(String horas)
{
if(horas == null || horas.trim().length() == 0)
return 0;
try
{
if(horas.indexOf(",")>=0)
{
horas = horas.replace(",",".");
}
Double d = Double.parseDouble(horas);
return d.doubleValue();
}
catch(Throwable e)
{
return 0;
}
}
 
 
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/xsd/CursoImpl.java
14,6 → 14,23
*/
public class CursoImpl extends Curso
{
public static Genson getGensonPlanoEstudosParaApiJsonWS(){
Genson genson = new GensonBuilder()
.useRuntimeType(true)
.exclude("class")
.exclude("siges", Curso.class)
.exclude("nome",Curso.class)
.exclude("codigoPlanoSiges",Curso.class)
.exclude("anoPlanoSiges",Curso.class)
.exclude("descPlanoSiges",Curso.class)
.exclude("dep")
.exclude("removed",UnidadeType.class)
.exclude("perfilId",Semestre.Perfil.class)
.exclude("semestreId",Semestre.class)
.create();
return genson;
}
 
public List<Semestre> getSemestre()
{
if (semestre == null) {
23,13 → 40,13
}
 
//ESTE GENSON e apenas para propositos de interface. O JSON gerado para envio pelas API's e feito no servico
//CourseService.savePlanoEstudosEditado que usa o Genson obtido em CourseService.getGensonPlanoEstudos
//CourseService.savePlanoEstudosEditado que usa o Genson obtido em CourseService.getGensonPlanoEstudosParaApiJsonWS
 
static Genson genson;
 
static {
GensonBuilder gensonBuilder = new GensonBuilder()
.exclude(Object.class)
//.exclude(Object.class)
 
.include(Boolean.class)
.include(Integer.class)
68,5 → 85,9
return new JSONObject(toJson());
}
 
public JSONObject toJsonObjectJsonApiWS() throws IOException, JSONException {
return new JSONObject(getGensonPlanoEstudosParaApiJsonWS().serialize(this));
}
 
 
}
/branches/v3/impl/src/doc/estgweb.eap
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/branches/v3/impl/src/web/user/courses/studiesPlansAdministrationEdit.jsp
387,6 → 387,31
"FICHA_URL" : true
}
 
$scope.isInteger = function(n) { return Number(n) === n && n % 1 === 0; }
$scope.isFloat = function(n) { return Number(n) === n && n % 1 !== 0; }
 
 
$scope.getTotalHorasContacto = function(totalHoras)
{
var total = 0;
 
for (var key in totalHoras )
{
if(key != "tc" && key != "ot" && key != "pd"
&& key != "pd"
&& key != "pl"
&& key != "tp")
{
var valor = totalHoras[key];
if(!isNaN(Number(valor)))
{
total+= Number(valor);
}
}
}
return total;
}
 
$scope.submeterForm = function()
{
$("#planoEstudosJsonInterface").val(
512,7 → 537,7
<th>SIGES</th>
<th>Nome</th>
<th>ECTS</th>
<th>Total</th>
<th>Total Horas de Trabalho</th>
<th>T</th>
<th>TP</th>
<th>P</th>
675,7 → 700,8
<th ng-show="confView.SIGES">SIGES</th>
<th ng-show="confView.Nome">Nome</th>
<th ng-show="confView.ECTS">ECTS</th>
<th ng-show="confView.Total">Total</th>
<th ng-show="confView.Total">Total Horas Trabalho</th>
<th>Total Contacto</th>
<th ng-show="confView.T">T</th>
<th ng-show="confView.TP">TP</th>
<th ng-show="confView.P">P</th>
735,7 → 761,8
<th ng-show="confView.SIGES">SIGES</th>
<th ng-show="confView.Nome">Nome</th>
<th ng-show="confView.ECTS">ECTS</th>
<th ng-show="confView.Total">Total</th>
<th ng-show="confView.Total">Total Horas de Trabalho</th>
<th>Total Contacto</th>
<th ng-show="confView.T">T</th>
<th ng-show="confView.TP">TP</th>
<th ng-show="confView.P">P</th>
795,7 → 822,7
</td>
<td ng-show="confView.ECTS"><input type="text" style="width: 40px" ng-model="u.eCTS"/></td>
<td ng-show="confView.Total"><input type="text" style="width: 40px" ng-model="u.totalHoras"></td>
 
<td>{{getTotalHorasContacto(u.horasContacto)}}</td>
<td ng-show="confView.T"><input type="text" style="width: 40px" ng-model="u.horasContacto.t"/></td>
<td ng-show="confView.TP"><input type="text" style="width: 40px" ng-model="u.horasContacto.tP"/></td>
<td ng-show="confView.P"><input type="text" style="width: 40px" ng-model="u.horasContacto.p"/></td>
/branches/v3/impl/src/xsd/planoestudos.xsd
75,19 → 75,20
<xsd:element name="nomeFr" type="xsd:string"/>
<xsd:element name="dep" type="xsd:string"/>
<xsd:element name="totalHoras" type="xsd:int"/>
<xsd:element name="totalHorasContacto" type="xsd:string"/>
<xsd:element name="horasContacto">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="T" type="xsd:int" minOccurs="0"/>
<xsd:element name="TP" type="xsd:int" minOccurs="0"/>
<xsd:element name="P" type="xsd:int" minOccurs="0"/>
<xsd:element name="PL" type="xsd:int" minOccurs="0"/>
<xsd:element name="PD" type="xsd:int" minOccurs="0"/>
<xsd:element name="OT" type="xsd:int" minOccurs="0"/>
<xsd:element name="E" type="xsd:int" minOccurs="0"/>
<xsd:element name="S" type="xsd:int" minOccurs="0"/>
<xsd:element name="TC" type="xsd:int" minOccurs="0"/>
<xsd:element name="O" type="xsd:int" minOccurs="0"/>
<xsd:element name="T" type="xsd:string" minOccurs="0"/>
<xsd:element name="TP" type="xsd:string" minOccurs="0"/>
<xsd:element name="P" type="xsd:string" minOccurs="0"/>
<xsd:element name="PL" type="xsd:string" minOccurs="0"/>
<xsd:element name="PD" type="xsd:string" minOccurs="0"/>
<xsd:element name="OT" type="xsd:string" minOccurs="0"/>
<xsd:element name="E" type="xsd:string" minOccurs="0"/>
<xsd:element name="S" type="xsd:string" minOccurs="0"/>
<xsd:element name="TC" type="xsd:string" minOccurs="0"/>
<xsd:element name="O" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
/branches/v3/impl/gen/java/pt/estgp/estgweb/services/courses/xsd/package-info.java
2,7 → 2,7
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-558
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2016.11.06 at 11:30:49 AM WET
// Generated on: 2017.07.07 at 02:58:14 PM WEST
//
 
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.estgp.pt/xsd/planoestudos/1.0/", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
/branches/v3/impl/gen/java/pt/estgp/estgweb/services/courses/xsd/Curso.java
2,20 → 2,15
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-558
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2016.11.06 at 11:30:49 AM WET
// Generated on: 2017.07.07 at 02:58:14 PM WEST
//
 
 
package pt.estgp.estgweb.services.courses.xsd;
 
import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
283,7 → 278,12
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* Objects of the following type(s) are allowed in t
public void setSemestre(List<Semestre> semestre) {
this.semestre = semestre;
}
 
t
* {@link Curso.Semestre }
*
*
297,7 → 297,7
 
 
/**
* <p>Java class for anonymous complex type.
* <p>Java class for anonymous comp}lex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
/branches/v3/impl/gen/java/pt/estgp/estgweb/services/courses/xsd/UnidadeType.java
2,7 → 2,7
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-558
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2016.11.06 at 11:30:49 AM WET
// Generated on: 2017.07.07 at 02:58:14 PM WEST
//
 
 
33,21 → 33,22
* &lt;element name="nomeFr" type="{http://www.w3.org/2001/XMLSchema}string"/>
* &lt;element name="dep" type="{http://www.w3.org/2001/XMLSchema}string"/>
* &lt;element name="totalHoras" type="{http://www.w3.org/2001/XMLSchema}int"/>
* &lt;element name="totalHorasContacto" type="{http://www.w3.org/2001/XMLSchema}string"/>
* &lt;element name="horasContacto">
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="T" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="TP" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="P" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="PL" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="PD" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="OT" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="E" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="S" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="TC" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="O" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="T" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="TP" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="P" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="PL" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="PD" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="OT" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="E" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="S" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="TC" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="O" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
75,6 → 76,7
"nomeFr",
"dep",
"totalHoras",
"totalHorasContacto",
"horasContacto",
"ects",
"obs"
95,6 → 97,8
protected String dep;
protected int totalHoras;
@XmlElement(required = true)
protected String totalHorasContacto;
@XmlElement(required = true)
protected UnidadeType.HorasContacto horasContacto;
@XmlElement(name = "ECTS", required = true)
protected String ects;
290,6 → 294,30
}
 
/**
* Gets the value of the totalHorasContacto property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTotalHorasContacto() {
return totalHorasContacto;
}
 
/**
* Sets the value of the totalHorasContacto property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTotalHorasContacto(String value) {
this.totalHorasContacto = value;
}
 
/**
* Gets the value of the horasContacto property.
*
* @return
420,16 → 448,16
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="T" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="TP" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="P" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="PL" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="PD" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="OT" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="E" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="S" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="TC" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="O" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
* &lt;element name="T" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="TP" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="P" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="PL" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="PD" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="OT" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="E" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="S" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="TC" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="O" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
454,35 → 482,35
public static class HorasContacto {
 
@XmlElement(name = "T")
protected Integer t;
protected String t;
@XmlElement(name = "TP")
protected Integer tp;
protected String tp;
@XmlElement(name = "P")
protected Integer p;
protected String p;
@XmlElement(name = "PL")
protected Integer pl;
protected String pl;
@XmlElement(name = "PD")
protected Integer pd;
protected String pd;
@XmlElement(name = "OT")
protected Integer ot;
protected String ot;
@XmlElement(name = "E")
protected Integer e;
protected String e;
@XmlElement(name = "S")
protected Integer s;
protected String s;
@XmlElement(name = "TC")
protected Integer tc;
protected String tc;
@XmlElement(name = "O")
protected Integer o;
protected String o;
 
/**
* Gets the value of the t property.
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getT() {
public String getT() {
return t;
}
 
491,10 → 519,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setT(Integer value) {
public void setT(String value) {
this.t = value;
}
 
503,10 → 531,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getTP() {
public String getTP() {
return tp;
}
 
515,10 → 543,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setTP(Integer value) {
public void setTP(String value) {
this.tp = value;
}
 
527,10 → 555,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getP() {
public String getP() {
return p;
}
 
539,10 → 567,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setP(Integer value) {
public void setP(String value) {
this.p = value;
}
 
551,10 → 579,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getPL() {
public String getPL() {
return pl;
}
 
563,10 → 591,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setPL(Integer value) {
public void setPL(String value) {
this.pl = value;
}
 
575,10 → 603,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getPD() {
public String getPD() {
return pd;
}
 
587,10 → 615,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setPD(Integer value) {
public void setPD(String value) {
this.pd = value;
}
 
599,10 → 627,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getOT() {
public String getOT() {
return ot;
}
 
611,10 → 639,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setOT(Integer value) {
public void setOT(String value) {
this.ot = value;
}
 
623,10 → 651,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getE() {
public String getE() {
return e;
}
 
635,10 → 663,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setE(Integer value) {
public void setE(String value) {
this.e = value;
}
 
647,10 → 675,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getS() {
public String getS() {
return s;
}
 
659,10 → 687,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setS(Integer value) {
public void setS(String value) {
this.s = value;
}
 
671,10 → 699,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getTC() {
public String getTC() {
return tc;
}
 
683,10 → 711,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setTC(Integer value) {
public void setTC(String value) {
this.tc = value;
}
 
695,10 → 723,10
*
* @return
* possible object is
* {@link Integer }
* {@link String }
*
*/
public Integer getO() {
public String getO() {
return o;
}
 
707,10 → 735,10
*
* @param value
* allowed object is
* {@link Integer }
* {@link String }
*
*/
public void setO(Integer value) {
public void setO(String value) {
this.o = value;
}
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/services/courses/xsd/ObjectFactory.java
2,7 → 2,7
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-558
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2016.11.06 at 11:30:49 AM WET
// Generated on: 2017.07.07 at 02:58:14 PM WEST
//
 
 
37,19 → 37,19
}
 
/**
* Create an instance of {@link Curso.Semestre }
* Create an instance of {@link Curso }
*
*/
public Curso.Semestre createCursoSemestre() {
return new Curso.Semestre();
public Curso createCurso() {
return new Curso();
}
 
/**
* Create an instance of {@link Curso }
* Create an instance of {@link Curso.Semestre.Perfil }
*
*/
public Curso createCurso() {
return new Curso();
public Curso.Semestre.Perfil createCursoSemestrePerfil() {
return new Curso.Semestre.Perfil();
}
 
/**
69,11 → 69,11
}
 
/**
* Create an instance of {@link Curso.Semestre.Perfil }
* Create an instance of {@link Curso.Semestre }
*
*/
public Curso.Semestre.Perfil createCursoSemestrePerfil() {
return new Curso.Semestre.Perfil();
public Curso.Semestre createCursoSemestre() {
return new Curso.Semestre();
}
 
}
/branches/v3/common/jms/javax.jms.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream