package pt.estgp.estgweb.services.courseunits;
import jomm.dao.impl.AbstractDao;
import jomm.utils.PdfUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.fop.apps.FOPException;
import org.apache.log4j.Logger;
import org.dom4j.*;
import org.hibernate.Query;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.estgp.estgweb.web.FtpServer;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class SaveCourseUnitProgram
implements IService
{
RepositoryService repositoryService =
new RepositoryService
();
LoadCourseUnitAnnouncements loadCourseUnitAnnouncements =
new LoadCourseUnitAnnouncements
();
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(SaveCourseUnitProgram.
class);
public CourseUnitProgramView run
(CourseUnitProgramView cupv,
1.5.0/docs/api/java/lang/Long.html">Long coursUnitId, UserSession usession
) throws ServiceException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException,
1.5.0/docs/api/java/io/IOException.html">IOException, FOPException
{
CourseUnit c = DaoFactory.
getCourseUnitDaoImpl().
get(coursUnitId
);
CourseUnitProgram program = c.
getCourseUnitProgram();
if(program ==
null)
{
program =
new CourseUnitProgramImpl
();
DaoFactory.
getCourseUnitProgramDaoImpl().
save(program
);
program.
setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl
());
DaoFactory.
getCourseUnitProgramPart2DaoImpl().
save(program.
getCourseUnitProgramPart2());
c.
setCourseUnitProgram(program
);
}
//
if(usession.
getUser().
isSuperuserOrAdmin())
{
cupv.
persistViewInObjectAdministrator(program
);
cupv.
persistViewInObjectCoordinator(program
);
cupv.
persistViewInObjectTeacher(program
);
setResponsableTeacher
(cupv, c
);
}
if(usession.
getUser() instanceof Teacher
&& (((Teacher
)(usession.
getUser())).
isTeacherOfCourseUnit(c.
getId(),
true)))
{
cupv.
persistViewInObjectTeacher(program
);
}
if(usession.
getUser() instanceof Teacher
&& (((usession.
getUser())).
hasRole(c.
getCourse().
getValidationRole())
||
((usession.
getUser()) == c.
getCourse().
getCoordinator()))
)
{
cupv.
persistViewInObjectCoordinator(program
);
setResponsableTeacher
(cupv, c
);
}
List
<String
> errors =
new ArrayList
<String
>();
createPdf
(c,errors,usession
);
if(usession.
getUser() instanceof Teacher
)
DirectedCoordinatedUnitsService.
sendNotificationsEditedInterestedPeople(c,usession
);
else
{
logger.
info("Nao vai informar docentes");
}
return cupv
;
}
private void setResponsableTeacher
(CourseUnitProgramView cupv, CourseUnit c
) {
if(cupv.
getResponsableId() > 0
)
{
Teacher t = DaoFactory.
getTeacherDaoImpl().
load(cupv.
getResponsableId());
c.
setResponsableTeacher(t
);
}
}
public void createPdf
(CourseUnit cu, List
<String
> errors
) throws 1.5.0/docs/api/java/io/IOException.html">IOException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
createPdf
(cu,errors,
null);
}
public void createPdf
(CourseUnit cu, List
<String
> errors,UserSession u
) throws 1.5.0/docs/api/java/io/IOException.html">IOException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
createPdf
(cu,errors,
null,
null);
}
public void createPdf
(CourseUnit cu, List
<String
> errors,UserSession u,List
<String
> warns
) throws 1.5.0/docs/api/java/io/IOException.html">IOException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
1.5.0/docs/api/java/lang/String.html">String path = generatePdfFile
(cu, errors, u
);
RepositoryService repositoryService =
new RepositoryService
();
User owner
;
if(cu.
getTeachers() !=
null && cu.
getTeachers().
size() > 0
)
owner = cu.
getTeachers().
iterator().
next();
else
owner = DaoFactory.
getUserDaoImpl().
load(new 1.5.0/docs/api/java/lang/Long.html">Long(1
));
if(owner.
getUsername() ==
null)
{
errors.
add("Docente: " + owner.
getName() +
" ( " + owner.
getId() +
" ) don't have username check that situation");
// owner.setUsername("UKNOWN");
}
if(cu.
getProgramStreamId() ==
null)
{
1.5.0/docs/api/java/lang/String.html">String identifier = repositoryService.
storeRepositoryFile(new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(path
),
"application/pdf",
"pdf",
((int) new 1.5.0/docs/api/java/io/File.html">File(path
).
length()), cu.
getCode() +
".pdf",
"courseunit.program.description" + cu.
getName(), ResourceAccessControlEnum.
publicDomain,owner
);
cu.
setProgramStreamId(identifier
);
}
else
{
repositoryService.
updateRepositoryFile(cu.
getProgramStreamId(),
new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(path
),
"application/pdf",
"pdf",
((int)new 1.5.0/docs/api/java/io/File.html">File(path
).
length()),cu.
getCode() +
".pdf",
"courseunit.program.description " + cu.
getName(), ResourceAccessControlEnum.
publicDomain);
}
cu.
setObjectives(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getObjectivos());
//Obrigar a ser falso
//NOVO
RepositoryFileImpl repoFile = repositoryService.
loadView(cu.
getProgramStreamId());
sendPdfFtpIonline
(cu,errors,u,path,repoFile.
getLastVersion().
getSaveDate(),
null,warns
);
}
public boolean sendPdfFtpIonline
(CourseUnit cu, List
<String
> errors, UserSession u, FTPClient client, List
<String
> warns
) throws 1.5.0/docs/api/java/io/IOException.html">IOException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
RepositoryService repositoryService =
new RepositoryService
();
if(cu.
getProgramStreamId() !=
null && cu.
getProgramStreamId().
length()> 0
)
{
RepositoryFileImpl repoFile = repositoryService.
loadView(cu.
getProgramStreamId());
1.5.0/docs/api/java/lang/String.html">String path = generatePdfFile
(cu, errors, u
);
sendPdfFtpIonline
(cu,errors,u,path,repoFile.
getLastVersion().
getSaveDate(),client,warns
);
return true;
}
return false;
}
1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat sdf =
new 1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat("yyyy_MM_dd.HH_mm_ss");
private void sendPdfFtpIonline
(CourseUnit cu, List
<String
> errors, UserSession u,
1.5.0/docs/api/java/lang/String.html">String pdfPath,
5+0%2Fdocs%2Fapi+Date">Date versionDate,FTPClient client,List
<String
> warnings
) throws 1.5.0/docs/api/java/io/IOException.html">IOException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
if(Globals.
TEST_ENVIRONEMENT)
{
1.5.0/docs/api/java/lang/String.html">String warn =
"System in TEST Environement - will NOT send file to ionline test.control.var.DontSendIonlineFiles = true";
if(warnings
!=
null)
warnings.
add(warn
);
logger.
warn(warn
);
return;
}
FtpServer server =
null;
if(client ==
null)
{
server = FtpServer.
getNewServer(Globals.
FTP_IONLINE_URL,Globals.
FTP_IONLINE_USER,Globals.
FTP_IONLINE_PASS);
client = server.
getClient();
if(client ==
null)
{
logger.
warn("###################");
logger.
warn("################### > CANT CONNECT FTP - could be FTPTimeout: " + Globals.
FTP_TIMEOUT_SECONDS);
errors.
add("################### > CANT CONNECT FTP to send program " +
((CourseUnitImpl
)cu
).
getSigesUniqueIdentifiers());
return;
}
}
client.
setFileType(FTP.
BINARY_FILE_TYPE);
1.5.0/docs/api/java/lang/String.html">String pastaFichaCurricular = Globals.
FTP_IONLINE_START_PATH + cu.
getPathIntranet() +
"/" + Globals.
INTRANET_DTP +
"/" + Globals.
INTRANET_DTP_FichaCurricular;
if(!client.
changeWorkingDirectory(pastaFichaCurricular
))
{
logger.
error("FTP CANT CHANGE TO PATH: " + pastaFichaCurricular
);
}
else
{
if(!client.
storeFile(cu.
getCode() +
"_" + cu.
getNormalizedName() +
"_v" + sdf.
format(versionDate
) +
".pdf",
new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(pdfPath
)))
{
errors.
add("CANT store file in given time, probably timeout at " + Globals.
FTP_DATA_STORE_TIMEOUT_SECONDS);
}
if(server
!=
null)
{
client.
quit();
client.
disconnect();
}
}
//
}
private 1.5.0/docs/api/java/lang/String.html">String generatePdfFile
(CourseUnit cu, List
<String
> errors, UserSession u
) throws 1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException,
1.5.0/docs/api/java/io/IOException.html">IOException, FOPException
{
CourseUnitProgramImpl cProgram =
(CourseUnitProgramImpl
) DaoFactory.
getCourseUnitProgramDaoImpl().
narrow(cu.
getCourseUnitProgram());
cProgram.
consistNullValues();
5+0%2Fdocs%2Fapi+Document">Document responseDoc = DocumentHelper.
createDocument();
Namespace namespace =
new Namespace
("uc",
"http://baco.estgp.pt/schemas/courseunits/program/");
responseDoc.
setXMLEncoding("ISO-8859-1");
1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat sdf =
new 1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat("dd-MM-yyyy");
5+0%2Fdocs%2Fapi+Element">Element curriculum = responseDoc.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("UnidadeCurricular", namespace
));
curriculum.
addAttribute(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("data",namespace
),sdf.
format(new java.
util.
5+0%2Fdocs%2Fapi+Date">Date()));
5+0%2Fdocs%2Fapi+Element">Element curso = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("curso",namespace
));
if(cu.
getCourseName() ==
null)
{
if(cu.
getCourse() ==
null)
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println("Unidade nao tem curso");
curso.
setText("Desactualizado");
}
else
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println("Unidade nao tem nome no curso a actualizar com " + cu.
getCourse().
getName());
curso.
setText(cu.
getCourse().
getName());
cu.
setCourseName(cu.
getCourse().
getName());
}
}
else
curso.
setText(cu.
getCourseName());
5+0%2Fdocs%2Fapi+Element">Element anoLectivo = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("anoLectivo",namespace
));
anoLectivo.
setText(DatesUtils.
getImportYearPrograms(cu.
getImportYear()));
5+0%2Fdocs%2Fapi+Element">Element unidadeCurricular = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("unidadeCurricular",namespace
));
unidadeCurricular.
setText(cu.
getName());
if(cu.
getResponsableTeacher() !=
null)
{
5+0%2Fdocs%2Fapi+Element">Element responsavel = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("responsavel",namespace
));
if(cu.
getResponsableTeacher().
getName()==
null)
{
errors.
add("Erro a carregar docente responsavel da unidade " + cu.
getCode());
responsavel.
setText("erro");
}
else
responsavel.
setText(StringsUtils.
getNormalizedName(cu.
getResponsableTeacher().
getName()));
5+0%2Fdocs%2Fapi+Element">Element responsavelEmail = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("responsavelEmail",namespace
));
if(cu.
getResponsableTeacher().
getEmail()==
null)
{
logger.
warn("Teacher don't has email: " + cu.
getResponsableTeacher().
getSigesCode() +
" - " + cu.
getResponsableTeacher().
getName());
try {
1.5.0/docs/api/java/lang/Thread.html">Thread.
sleep(3000
);
} catch (1.5.0/docs/api/java/lang/InterruptedException.html">InterruptedException e
) {
e.
printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
responsavelEmail.
setText("");
}
else
responsavelEmail.
setText(cu.
getResponsableTeacher().
getEmail());
}
5+0%2Fdocs%2Fapi+Element">Element apresentacaoObjectivos = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("objetivosDaAprendizagem",namespace
));
apresentacaoObjectivos.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getObjectivos());
int docenteNumber =
1;
for(Teacher t : cu.
getTeachers())
{
5+0%2Fdocs%2Fapi+Element">Element codigoSIGESDocente1 = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("codigoSIGESDocente" + docenteNumber,namespace
));
codigoSIGESDocente1.
setText(t.
getSigesCode()+
"");
5+0%2Fdocs%2Fapi+Element">Element outroDocente1 = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("outroDocente" + docenteNumber,namespace
));
if(t.
getName()==
null)
{
errors.
add("Erro a carregar docente da unidade " + cu.
getCode());
outroDocente1.
setText("erro");
}
else
outroDocente1.
setText(StringsUtils.
getNormalizedName(t.
getName()));
5+0%2Fdocs%2Fapi+Element">Element docenteEmail1 = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("docenteEmail" + docenteNumber,namespace
));
if(t.
getEmail()==
null)
{
logger.
warn("Teacher don't has email: " + t.
getSigesCode() +
" - " + t.
getName());
try {
1.5.0/docs/api/java/lang/Thread.html">Thread.
sleep(3000
);
} catch (1.5.0/docs/api/java/lang/InterruptedException.html">InterruptedException e
) {
e.
printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
docenteEmail1.
setText("");
}
else
docenteEmail1.
setText(t.
getEmail());
docenteNumber++
;
}
5+0%2Fdocs%2Fapi+Element">Element conteudosProgramaticos = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("conteudosProgramaticos",namespace
));
conteudosProgramaticos.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getConteudos());
5+0%2Fdocs%2Fapi+Element">Element demonstracaoCoerenciaConteudosObjectivos = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("demonstracaoCoerenciaConteudosObjectivos",namespace
));
demonstracaoCoerenciaConteudosObjectivos.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getDemonstracaoCoerenciaConteudos());
5+0%2Fdocs%2Fapi+Element">Element metodologiasEnsino = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("metodologiasEnsino",namespace
));
metodologiasEnsino.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getMetodologiasEnsino());
5+0%2Fdocs%2Fapi+Element">Element alunosOrdinariosPorFrequencia = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosOrdinariosPorFrequencia",namespace
));
alunosOrdinariosPorFrequencia.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getAvaliacaoOrdinariosFrequencia());
5+0%2Fdocs%2Fapi+Element">Element alunosOrdinariosPorExame = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosOrdinariosPorExame",namespace
));
alunosOrdinariosPorExame.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getAvaliacaoOrdinariosExame());
5+0%2Fdocs%2Fapi+Element">Element alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia",namespace
));
alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getAvaliacaoEspeciaisFrequencia());
5+0%2Fdocs%2Fapi+Element">Element alunosMobilidadeAlunosComEstatutoEspecialPorExame = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("alunosMobilidadeAlunosComEstatutoEspecialPorExame",namespace
));
alunosMobilidadeAlunosComEstatutoEspecialPorExame.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getAvaliacaoEspeciaissExame());
5+0%2Fdocs%2Fapi+Element">Element demonstracaoDaCoerenciaMetodologiasObjectivos = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("demonstracaoDaCoerenciaMetodologiasObjectivos",namespace
));
demonstracaoDaCoerenciaMetodologiasObjectivos.
setText(cu.
getCourseUnitProgram().
getCourseUnitProgramPart2().
getDemonstracaoObjectivosMetodologia());
5+0%2Fdocs%2Fapi+Element">Element bibliografiaPrincipal = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("bibliografiaPrincipal",namespace
));
bibliografiaPrincipal.
setText(cu.
getCourseUnitProgram().
getBibliografia());
5+0%2Fdocs%2Fapi+Element">Element bibliografiaComplementar = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("bibliografiaComplementar",namespace
));
bibliografiaComplementar.
setText(cu.
getCourseUnitProgram().
getBibliografiaComplementar());
5+0%2Fdocs%2Fapi+Element">Element adaptacaoMetodologiasObjectivos = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("adaptacaoMetodologiasObjectivos",namespace
));
adaptacaoMetodologiasObjectivos.
setText(cu.
getCourseUnitProgram().
getAdaptacaoObjectivosMetodologia());
5+0%2Fdocs%2Fapi+Element">Element verificacaoCargaECTS = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("verificacaoCargaECTS",namespace
));
verificacaoCargaECTS.
setText(cu.
getCourseUnitProgram().
getDemonstracaoCargaEcts());
5+0%2Fdocs%2Fapi+Element">Element avaliacaoFuncaoObjectivos = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("avaliacaoFuncaoObjectivos",namespace
));
avaliacaoFuncaoObjectivos.
setText(cu.
getCourseUnitProgram().
getGarantiaAvaliacaoFuncaObjectivos());
5+0%2Fdocs%2Fapi+Element">Element metodologiasFacilitamParticipacaoCientificas = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("metodologiasFacilitamParticipacaoCientificas",namespace
));
metodologiasFacilitamParticipacaoCientificas.
setText(cu.
getCourseUnitProgram().
getMetodologiasActividadeCientifica());
5+0%2Fdocs%2Fapi+Element">Element ects = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("ects",namespace
));
ects.
setText(cu.
getCourseUnitProgram().
getEcts());
5+0%2Fdocs%2Fapi+Element">Element preRequisitos = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("preRequisitos",namespace
));
preRequisitos.
setText(cu.
getCourseUnitProgram().
getPrerequisitos());
5+0%2Fdocs%2Fapi+Element">Element obrigatoria = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("obrigatoria",namespace
));
obrigatoria.
setText(cu.
getCourseUnitProgram().
getObrigatoria());
5+0%2Fdocs%2Fapi+Element">Element lingua1 = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("lingua1",namespace
));
lingua1.
setText(cu.
getCourseUnitProgram().
getLingua1());
5+0%2Fdocs%2Fapi+Element">Element lingua2 = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("lingua2",namespace
));
lingua2.
setText(cu.
getCourseUnitProgram().
getLingua2());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaT = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaT",namespace
));
cargaHorariaT.
setText(cu.
getCourseUnitProgram().
getCargaHorariaT());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaTP = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaTP",namespace
));
cargaHorariaTP.
setText(cu.
getCourseUnitProgram().
getCargaHorariaTP());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaPL = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaPL",namespace
));
cargaHorariaPL.
setText(cu.
getCourseUnitProgram().
getCargaHorariaPL());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaS = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaS",namespace
));
cargaHorariaS.
setText(cu.
getCourseUnitProgram().
getCargaHorariaS());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaTC = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaTC",namespace
));
cargaHorariaTC.
setText(cu.
getCourseUnitProgram().
getCargaHorariaTC());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaO = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaO",namespace
));
cargaHorariaO.
setText(cu.
getCourseUnitProgram().
getCargaHorariaO());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaOT = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaOT",namespace
));
cargaHorariaOT.
setText(cu.
getCourseUnitProgram().
getCargaHorariaOT());
5+0%2Fdocs%2Fapi+Element">Element cargaHorariaTotal = curriculum.
addElement(new 1.5.0/docs/api/javax/xml/namespace/QName.html">QName("cargaHorariaTotal",namespace
));
cargaHorariaTotal.
setText(cu.
getCourseUnitProgram().
getCargaHorariaTotal());
// Dom4jUtil.writeSout(responseDoc);
1.5.0/docs/api/java/lang/String.html">String path = Globals.
TMP_DIR +
1.5.0/docs/api/java/io/File.html">File.
separator + cu.
getCode() +
"-" + cu.
getNormalizedName() +
".pdf";
1.5.0/docs/api/java/io/FileOutputStream.html">FileOutputStream out =
new 1.5.0/docs/api/java/io/FileOutputStream.html">FileOutputStream(path
);
Map
<String,Object
> params =
new HashMap
<String,Object
>();
params.
put("site", Globals.
SITE_URL);
if(cu.
isValidProgram())
params.
put("validadoCC",
"true");
else
params.
put("validadoCC",
"false");
if(u
!=
null && u.
getUser() !=
null)
params.
put("revisor", u.
getUser().
getName());
org.
w3c.
dom.
5+0%2Fdocs%2Fapi+Document">Document dd = Dom4jUtil.
toW3c(responseDoc
);
PdfUtils.
createPdfFromXml(new 1.5.0/docs/api/javax/xml/transform/dom/DOMSource.html">DOMSource(dd
),
"pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", out, params
);
out.
flush();
out.
close();
return path
;
}
public void storeAllPrograms
() throws 1.5.0/docs/api/java/io/IOException.html">IOException {
CourseUnitDaoImpl dao = DaoFactory.
getCourseUnitDaoImpl();
1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.
getCurrentSession().
createQuery("select c from c in class " + CourseUnit.
class.
getName() +
" where c.importYear = ?");
q.
setString(0,DaoFactory.
getConfigurationDaoImpl().
getInterfaceImportYear());
Iterator
<CourseUnit
> cuIter = q.
iterate();
FtpServer server = FtpServer.
getNewServer(Globals.
FTP_IONLINE_URL,Globals.
FTP_IONLINE_USER,Globals.
FTP_IONLINE_PASS);
FTPClient client = server.
getClient();
if(client ==
null)
{
logger.
warn("###################");
logger.
warn("################### > CANT CONNECT FTP");
return;
}
while (cuIter.
hasNext()) {
CourseUnit next = cuIter.
next();
try {
List
<String
> errors =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/System.html">System.
out.
print("Sending " + next.
getCourse().
getName() +
" - " + next.
getSemestre() +
" - " + next.
getNormalizedName());
if(sendPdfFtpIonline
(next,errors,
null,client,
null))
1.5.0/docs/api/java/lang/System.html">System.
out.
print(" ... OK");
else
1.5.0/docs/api/java/lang/System.html">System.
out.
print(" ... FAIL probably no StreamID");
1.5.0/docs/api/java/lang/System.html">System.
out.
print("\n");
if(errors.
size()>0
)
for(1.5.0/docs/api/java/lang/String.html">String error:errors
)
logger.
warn(error
);
} catch (1.5.0/docs/api/java/io/IOException.html">IOException e
) {
logger.
error(e,e
);
} catch (1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException e
) {
logger.
error(e, e
);
} catch (FOPException e
) {
e.
printStackTrace();
}
AbstractDao.
getCurrentSession().
evict(next
);
}
client.
quit();
client.
disconnect();
}
public static void main
(1.5.0/docs/api/java/lang/String.html">String[] args
) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
AbstractDao.
getCurrentSession().
beginTransaction();
new SaveCourseUnitProgram
().
storeAllPrograms();
AbstractDao.
getCurrentSession().
flush();
AbstractDao.
getCurrentSession().
getTransaction().
commit();
}
}