Boa tarde galera,
Estou com uma aplicação que me gera um documento de project.
quando se pede para abrir esse documento, ele abre dois projects igual!
[code] public void projectExportar()throws PlcException{
Proposta proposta = (Proposta ) entidadePlc;
if(proposta.getSumario().get(0).getTotalCicloAB()==null){
throw new PlcException(“validacao.antes.gerar.cronograma”);
}
try
{
//ProjectReader reader = new MPPReader ();
ProjectFile project = new ProjectFile();
project.setAutoFilter(true);
project.setAutoOutlineLevel(true);
project.setAutoOutlineNumber(true);
project.setAutoResourceID(true);
project.setAutoResourceUniqueID(true);
project.setAutoTaskUniqueID(true);
project.setAutoWBS(true);
List <Horas> horas = proposta.getHoras();
Integer i=0;
HashMap<Long,Task> hmProjeto = new HashMap<Long,Task>();
HashMap<Long,Task> hmCiclo = new HashMap<Long,Task>();
HashMap<Long,Task> hmFase = new HashMap<Long,Task>();
HashMap<Long,Task> hmEtapa = new HashMap<Long,Task>();
HashMap<Long,Task> hmAtividade = new HashMap<Long,Task>();
Duration duracao = null;
Task t = null;
t = project.addTask();
hmProjeto.put(1L, t);
t.setID(0);
t.setName(proposta.getNome());
t.setDuration(duracao.getInstance(proposta.getSumario().get(0).getTotalCicloAB(), TimeUnit.HOURS));
t.setWork(duracao.getInstance(proposta.getSumario().get(0).getTotalCicloAB(), TimeUnit.HOURS));
for (Iterator iterator = horas.iterator(); iterator.hasNext();) {
HorasEntity horasItem = (HorasEntity) iterator.next();
i=i+1;
duracao = null;
t = null;
if (horasItem.isCiclo()) {
t = hmCiclo.get(horasItem.getCodCiclo());
if (t==null) {
//t = project.addTask();
//hmCiclo.put(horasItem.getCodCiclo(), t);
Task tPai = hmProjeto.get(1L);
t = tPai.addTask();
hmCiclo.put(horasItem.getCodCiclo(), t);
}
}
if (horasItem.isFase()) {
t = hmFase.get(horasItem.getCodFase());
if (t==null) {
Task tPai = hmCiclo.get(horasItem.getCodCiclo());
t = tPai.addTask();
hmFase.put(horasItem.getCodFase(), t);
}
}
if (horasItem.isEtapa()) {
t = hmEtapa.get(horasItem.getCodEtapa());
if (t==null) {
Task tPai = hmFase.get(horasItem.getCodFase());
t = tPai.addTask();
hmEtapa.put(horasItem.getCodEtapa(), t);
}
}
if (horasItem.isAtividade()) {
t = hmAtividade.get(horasItem.getCodAtividade());
if (t==null) {
Task tPai = hmEtapa.get(horasItem.getCodEtapa());
t = tPai.addTask();
hmAtividade.put(horasItem.getCodAtividade(), t);
}
}
t.setID(i);
t.setName(horasItem.getDescricao());
if (horasItem.getHoraUsuario()!=null){
t.setDuration(duracao.getInstance(horasItem.getHoraUsuario(), TimeUnit.HOURS));
t.setWork(duracao.getInstance(horasItem.getHoraUsuario(), TimeUnit.HOURS));
}else{
t.setDuration(duracao.getInstance(0d, TimeUnit.HOURS));
}
}
//*************************Disponibilizar aquivo para Download****************************************************
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext context = facesContext.getExternalContext();
String filename = proposta.getNome()+".mpx";
String mimeType = "application/vnd.ms-project";
HttpServletResponse response = (HttpServletResponse) context.getResponse();
response.setHeader("Content-Disposition", "attachment;filename=\""
+ filename + "\""); // aki eu seto o header e o nome q vai
// aparecer na hr do donwload
response.setContentType(mimeType); // e obviamente o tipo
try {
OutputStream out = response.getOutputStream();
MPXWriter writer = new MPXWriter();
writer.setLocale(new Locale("pt","BR"));
writer.write(project, out);
out.flush();
out.close();
facesContext.responseComplete();
} catch (IOException ex) {
PlcMsgJsfHelper.getInstance().msg("erro.download",PlcConstantes.MSG.IND_COR_MENSAGEM_VALORES.IND_AMARELO);
}
}
catch (Exception ex)
{
ex.printStackTrace(System.out);
}
}[/code]
Será que alguém pode me ajudar!!
Desde já agradeço a todos!!!