View Javadoc

1   package ecar.servlet.geraFilhosIett;
2   
3   import java.io.IOException;
4   import java.io.PrintWriter;
5   import java.util.Collection;
6   import java.util.Iterator;
7   import java.util.List;
8   
9   import javax.servlet.ServletException;
10  import javax.servlet.http.HttpServlet;
11  import javax.servlet.http.HttpServletRequest;
12  import javax.servlet.http.HttpServletResponse;
13  
14  import org.apache.log4j.Logger;
15  
16  import ecar.bean.AtributoEstruturaListagemItens;
17  import ecar.dao.AcompReferenciaItemDao;
18  import ecar.dao.ItemEstruturaDao;
19  import ecar.dao.TipoFuncAcompDao;
20  import ecar.dao.UsuarioDao;
21  import ecar.pojo.AcompReferenciaAref;
22  import ecar.pojo.ItemEstruturaIett;
23  import ecar.pojo.StatusRelatorioSrl;
24  import ecar.pojo.UsuarioUsu;
25  
26  public class GeraFilhosIettServlet extends HttpServlet{
27  
28  	/**
29  	 * 		As classes java, GeraFilhosIettServlet e ItemEstruturaHtml, junto com o javascript listaItens  
30  	 * 	formam a base da implementação de Ajax na listagem de itens em monitoramento. Cada uma delas possuem
31  	 *  funções e particularidades abaixo descritas.
32  	 *  
33  	 *  GeraFilhosIettServlet -> Servlet responsável por receber, processar e retornar os dados  
34  	 * 								.......     .............
35  	 */
36  	private static final long serialVersionUID = -8290318086971631602L;
37  	private Logger logger = Logger.getLogger(this.getClass());
38  	//itemEstrutura é o nó central
39  	private ItemEstruturaIett itemEstrutura;
40  	private List tpfaOrdenadosPorEstrutura;
41  	private StatusRelatorioSrl statusLiberado;	
42  	private String status;
43  	private String idPagina;
44  	private String pathEcar;
45  	private String caminhoUrl;
46  	private String codTipoAcompanhamento;
47  	private String exigeLiberarAcompanhamento;
48  	private String codAref;
49  	private boolean permissaoAdministradorAcompanhamento;
50  	private List<AtributoEstruturaListagemItens> colecaoItens;
51  	private Collection<AcompReferenciaAref> periodosConsiderados;
52  	private UsuarioUsu usuario;
53  	private HttpServletRequest request;
54  
55  		
56  	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
57  		logger.info("request :: GET:: Classe:: " + this.getClass().getName() );
58  		execute(request,response);
59  	}
60  	
61  	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
62  		logger.info("request :: POST:: Classe:: " + this.getClass().getName() );
63  		execute(request,response);				
64  	}
65  
66  		
67  	private void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
68  		String responseHTML = "";		
69  		try{						
70  			setaValoresIniciais(request);
71  						
72  			ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request); 
73  			List<AtributoEstruturaListagemItens> descendentesAtEstListagem = itemEstruturaDao.recuperaDescendentesImediatos(itemEstrutura, colecaoItens);
74  			
75  			//Aqui começa a imprimir os filhos do item 
76  			if(descendentesAtEstListagem != null && descendentesAtEstListagem.size() > 0) {
77  				int quantidadeFilhosExibir = descendentesAtEstListagem.size();		
78  				Iterator descendentesAtEstListagemIt = descendentesAtEstListagem.iterator();
79  				tpfaOrdenadosPorEstrutura = new TipoFuncAcompDao().getFuncaoAcompOrderByEstruturas();
80  
81  				int contadorFilhos = 1;
82  				while(descendentesAtEstListagemIt.hasNext()){					
83  					AtributoEstruturaListagemItens atEstListagem = (AtributoEstruturaListagemItens)descendentesAtEstListagemIt.next();
84  					ItemEstruturaIett itemFilho =  (ItemEstruturaIett) itemEstruturaDao.buscar(ItemEstruturaIett.class, atEstListagem.getItem().getCodIett());
85  					
86  					boolean itemEstruturaPossuiFilho = itemEstruturaDao.existeDescendentesImediatos(itemFilho, colecaoItens);
87  										
88  					ItemEstruturaHtml itemEstruturaHtml = new ItemEstruturaHtml(itemFilho,atEstListagem,
89  							usuario,statusLiberado,periodosConsiderados,tpfaOrdenadosPorEstrutura,
90  							status,idPagina,pathEcar,caminhoUrl,codTipoAcompanhamento,exigeLiberarAcompanhamento,
91  							codAref,request,permissaoAdministradorAcompanhamento,itemEstruturaPossuiFilho);
92  					
93  					responseHTML += itemEstruturaHtml.geraHtmlDoItem();
94  					
95  					//Se existir mais de um filho, separa-os por "*@*", marcador utilizado na apresentação
96  					if(contadorFilhos != quantidadeFilhosExibir){						
97  						responseHTML += "*@*";
98  					}							 
99  
100 					contadorFilhos++;
101 				}								
102 				
103 			}
104 						
105 			//Seta o comprimento dos dados dos filhos
106 			int numeroColunasPorFilho = 7 + periodosConsiderados.size();
107 			responseHTML = numeroColunasPorFilho + "*@*" + responseHTML;
108 			responseToHTML(response, responseHTML);
109 		}catch(Exception e){
110 			e.printStackTrace(System.out);
111 			logger.error(e);			
112 			responseHTML = "<tr>Nenhum registro encontrado</tr>";
113 			responseToHTML(response, responseHTML);
114 		}
115 	}
116 
117 		
118 	private void responseToHTML ( HttpServletResponse response, String conteudo ) throws IOException {
119 		response.setContentType("text/html");
120 		PrintWriter writer = response.getWriter();
121 		writer.append(conteudo);
122 		writer.flush();
123 		writer.close();
124 	}
125 	
126 	private void setaValoresIniciais(HttpServletRequest request) throws Exception{
127 		//TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao();
128     	UsuarioDao usuDao = new UsuarioDao(request);  
129     	ItemEstruturaDao itemDao = new ItemEstruturaDao(request);
130     	
131         //this.tpfaOrdenadosPorEstrutura = tipoFuncAcompDao.getFuncaoAcompOrderByEstruturas(); 
132     	this.statusLiberado = (StatusRelatorioSrl) itemDao.
133         										buscar(StatusRelatorioSrl.class,
134         										Long.valueOf(AcompReferenciaItemDao.STATUS_LIBERADO));    	
135     	this.usuario = (UsuarioUsu) usuDao.buscar(UsuarioUsu.class, new Long(request.getParameter("codUsuarioLogado")));    	    	
136     	this.periodosConsiderados = (Collection) request.getSession().getAttribute("periodosConsiderados");
137     	this.colecaoItens = (List) request.getSession().getAttribute("colecaoItens");
138     	this.status = request.getParameter("status");
139     	this.pathEcar = request.getParameter("pathEcar");
140     	this.idPagina = request.getParameter("idPagina");
141     	this.caminhoUrl = request.getParameter("caminhoUrl");
142     	this.codTipoAcompanhamento = request.getParameter("codTipoAcompanhamento");
143     	this.exigeLiberarAcompanhamento = request.getParameter("exigeLiberarAcompanhamento");
144     	this.permissaoAdministradorAcompanhamento = new Boolean(request.getParameter("permissaoAdministradorAcompanhamento")).booleanValue();
145     	this.codAref = request.getParameter("codAref");
146     	this.itemEstrutura = (ItemEstruturaIett) itemDao.buscar(ItemEstruturaIett.class, new Long(request.getParameter("codIett")));
147     	    	
148 	}
149 	
150 }