View Javadoc

1   /*
2    * Created on 19/05/2006
3    *
4    */
5   package ecar.servlet.relatorio;
6   
7   import java.io.File;
8   import java.text.SimpleDateFormat;
9   import java.util.Date;
10  
11  import javax.servlet.http.HttpServletRequest;
12  
13  import comum.util.Pagina;
14  import comum.util.XmlBuilder;
15  
16  import ecar.dao.ConfiguracaoDao;
17  import ecar.exception.ECARException;
18  import ecar.login.SegurancaECAR;
19  import ecar.pojo.ConfiguracaoCfg;
20  
21  /**
22   * @author aleixo
23   *
24   */
25  public class LayoutArquivoExportacao extends AbstractServletReportXmlXsl {
26  
27  	private static final long serialVersionUID = 2395457474744685932L;
28  	private static final int TAMANHO_VALORES = 14;
29  	private ConfiguracaoCfg configuracao;
30  	
31  	/**
32  	 * Pega XML.<br>
33  	 * 
34  	 * @author N/C
35       * @since N/C
36       * @version N/C
37  	 * @param HttpServletRequest request
38  	 * @return StringBuffer
39  	 * @throws ECARException
40  	 */
41  	public StringBuffer getXml(HttpServletRequest request) throws ECARException{
42  		configuracao = (new ConfiguracaoDao(null)).getConfiguracao();
43  		
44  		setSaida(SAIDA_DOWNLOAD_E_GRAVAR);
45  		String caminho = configuracao.getRaizUpload() + configuracao.getUploadIntegracao();
46  		if(!caminho.endsWith("/"))
47  			caminho = caminho + "/";
48  		
49  		String nomeArquivo = Pagina.getParamStr(request, "nomeArquivo");
50  		SegurancaECAR usuarioLogado = (SegurancaECAR) request.getSession().getAttribute("seguranca");
51  		String codUsuarioLogado = usuarioLogado.getUsuario().getCodUsu().toString();
52  		
53  		String titulo = "Layout para o arquivo \"" + nomeArquivo + "\"";
54  
55  		String caminhoCompleto = "";
56  
57  		String formato = "ddMMyyyy";
58          SimpleDateFormat formatter = new SimpleDateFormat(formato);
59              
60          nomeArquivo += "_" + formatter.format(new Date()) + "_" + codUsuarioLogado + "_layout.pdf";
61  		caminhoCompleto = caminho + nomeArquivo;
62  					
63  		File diretorio = new File(caminho);
64  		
65  		if(!diretorio.isDirectory())
66  			diretorio.mkdirs();
67  
68  		setCaminhoArquivoSaidaGravar(caminhoCompleto);
69  		
70  		XmlBuilder builder = new XmlBuilder();
71  
72  		builder.addNode("layout", "titulo=\"" + builder.normalize(titulo) + "\"");
73  		
74  		geraXMLTR00(builder);
75  		geraXMLTR01(builder);
76  		geraXMLTR02(builder);
77  		geraXMLTR99(builder);
78  		
79  		builder.closeNode("layout");
80  		
81          return builder.toStringBuffer();
82      }
83      
84  	/**
85  	 * Gera XMLTROO.<br>
86  	 * 
87  	 * @author N/C
88       * @since N/C
89       * @version N/C
90  	 * @param XmlBuilder builder
91  	 */
92  	public void geraXMLTR00(XmlBuilder builder){
93  		builder.addNode("tr", "numero=\"00 - Header\" mostrarObs=\"N\"");
94  
95  		escreveCampoTr(builder, "Campo", "Posição inicial", "Tamanho", "Tipo de dado", "Conteúdo");
96  
97  		escreveCampoTr(builder, "TR", "0", "2", "Numérico", "00");
98  		escreveCampoTr(builder, "Sistema", "2", "6", "String", "Sigla do Sistema");
99  		escreveCampoTr(builder, "Mês inicial da solicitação", "8", "2", "Numérico", "MM");
100 		escreveCampoTr(builder, "Ano inicial da solicitação", "10", "4", "Numérico", "AAAA");
101 		escreveCampoTr(builder, "Mês final da solicitação", "14", "2", "Numérico", "MM");
102 		escreveCampoTr(builder, "Ano final da solicitação", "16", "4", "Numérico", "AAAA");
103 		escreveCampoTr(builder, "Data/Hora da geração", "20", "14", "Numérico", "DDMMAAAAHHMMSS");
104 		escreveCampoTr(builder, "Data/Hora da Carga", "34", "14", "Numérico", "DDMMAAAAHHMMSS (Data da carga efetuada pelo sistema corporativo)");
105 		
106 		builder.closeNode("tr");
107 	}
108 	
109 	/**
110 	 * Gera XMLTRO1.<br>
111 	 * 
112 	 * @author N/C
113      * @since N/C
114      * @version N/C
115 	 * @param XmlBuilder builder
116 	 */
117 	public void geraXMLTR01(XmlBuilder builder){
118 		builder.addNode("tr", "numero=\"01 - Registro de valores\" mostrarObs=\"N\"");
119 
120 		escreveCampoTr(builder, "Campo", "Posição inicial", "Tamanho", "Tipo de dado", "Conteúdo");
121 
122 		escreveCampoTr(builder, "TR", "0", "2", "Numérico", "01");
123 		escreveCampoTr(builder, "Conta", "2", "255", "String", "Conta Contábil");
124 		escreveCampoTr(builder, "Mês", "257", "2", "Numérico", "MM");
125 		escreveCampoTr(builder, "Ano", "259", "4", "Numérico", "AAAA");
126 		
127 		String[] valores = new String[6];
128 		valores[0] = configuracao.getFinanceiroDescValor1Cfg();
129 		valores[1] = configuracao.getFinanceiroDescValor2Cfg();
130 		valores[2] = configuracao.getFinanceiroDescValor3Cfg();
131 		valores[3] = configuracao.getFinanceiroDescValor4Cfg();
132 		valores[4] = configuracao.getFinanceiroDescValor5Cfg();
133 		valores[5] = configuracao.getFinanceiroDescValor6Cfg();
134 		
135 		int pos = 263;
136 		for(int i = 0; i < 6; i++){
137 			if("".equals(valores[i].trim()))
138 				valores[i] = "Não preencher";
139 			escreveCampoTr(builder, valores[i], String.valueOf(pos), String.valueOf(TAMANHO_VALORES), "Numérico", "99999999999900");
140 			pos += TAMANHO_VALORES;
141 		}
142 		
143 		escreveCampoTr(builder, "Contabilidade Aberta/Fechada", String.valueOf(pos), "1", "String", "A - Aberto; F - Fechado");		
144 		
145 		builder.closeNode("tr");
146 	}
147 
148 	/**
149 	 * Gera XMLTRO2.<br>
150 	 * 
151 	 * @author N/C
152      * @since N/C
153      * @version N/C
154 	 * @param XmlBuilder builder
155 	 */
156 	public void geraXMLTR02(XmlBuilder builder){
157 		builder.addNode("tr", "numero=\"02 - Registro de valores não previstos no e-Car\" mostrarObs=\"N\"");
158 
159 		escreveCampoTr(builder, "Campo", "Posição inicial", "Tamanho", "Tipo de dado", "Conteúdo");
160 
161 		escreveCampoTr(builder, "TR", "0", "2", "Numérico", "02");
162 		escreveCampoTr(builder, "Mês", "2", "2", "Numérico", "MM");
163 		escreveCampoTr(builder, "Ano", "4", "4", "Numérico", "AAAA");
164 		
165 		String[] valores = new String[6];
166 		valores[0] = configuracao.getFinanceiroDescValor1Cfg();
167 		valores[1] = configuracao.getFinanceiroDescValor2Cfg();
168 		valores[2] = configuracao.getFinanceiroDescValor3Cfg();
169 		valores[3] = configuracao.getFinanceiroDescValor4Cfg();
170 		valores[4] = configuracao.getFinanceiroDescValor5Cfg();
171 		valores[5] = configuracao.getFinanceiroDescValor6Cfg();
172 		
173 		int pos = 8;
174 		for(int i = 0; i < 6; i++){
175 			if("".equals(valores[i].trim()))
176 				valores[i] = "Não preencher";
177 			escreveCampoTr(builder, valores[i], String.valueOf(pos), String.valueOf(TAMANHO_VALORES), "Numérico", "99999999999900");
178 			pos += TAMANHO_VALORES;
179 		}
180 		
181 		builder.closeNode("tr");
182 	}
183 
184 	/**
185 	 * Gera XMLTR99.<br>
186 	 * 
187 	 * @author N/C
188      * @since N/C
189      * @version N/C
190 	 * @param XmlBuilder builder
191 	 */
192 	public void geraXMLTR99(XmlBuilder builder){
193 		builder.addNode("tr", "numero=\"99 - Trailer\" mostrarObs=\"S\"");
194 
195 		escreveCampoTr(builder, "Campo", "Posição inicial", "Tamanho", "Tipo de dado", "Conteúdo");
196 
197 		escreveCampoTr(builder, "TR", "0", "2", "Numérico", "99");
198 		escreveCampoTr(builder, "Quantidade de registros", "2", "6", "Numérico", "Quantidade de registros incluindo o Header e o Trailer");
199 		
200 		String[] valores = new String[6];
201 		valores[0] = configuracao.getFinanceiroDescValor1Cfg();
202 		valores[1] = configuracao.getFinanceiroDescValor2Cfg();
203 		valores[2] = configuracao.getFinanceiroDescValor3Cfg();
204 		valores[3] = configuracao.getFinanceiroDescValor4Cfg();
205 		valores[4] = configuracao.getFinanceiroDescValor5Cfg();
206 		valores[5] = configuracao.getFinanceiroDescValor6Cfg();
207 		
208 		int pos = 8;
209 		for(int i = 0; i < 6; i++){
210 			if("".equals(valores[i].trim()))
211 				valores[i] = "Não preencher";
212 			else
213 				valores[i] = "Total do " + valores[i];
214 			
215 			escreveCampoTr(builder, valores[i], String.valueOf(pos), String.valueOf(TAMANHO_VALORES), "Numérico", "99999999999900");
216 			pos += TAMANHO_VALORES;
217 		}
218 		
219 		
220 		builder.closeNode("tr");
221 	}
222 
223 	/**
224 	 * Escreve campo Tr.<br>
225 	 * 
226 	 * @author N/C
227      * @since N/C
228      * @version N/C
229 	 * @param XmlBuilder builder
230 	 * @param String nome
231 	 * @param String posIni
232 	 * @param String tamanho
233 	 * @param String tipo
234 	 * @param String conteudo
235 	 */
236 	public void escreveCampoTr(XmlBuilder builder, String nome, String posIni, String tamanho, String tipo, String conteudo){
237 		builder.addClosedNode("campo",
238 				"nome=\"" + builder.normalize(nome) + "\"" +
239 				" posIni=\"" + builder.normalize(posIni) + "\"" +
240 				" tamanho=\"" + builder.normalize(tamanho) + "\"" +
241 				" tipo=\"" + builder.normalize(tipo) + "\"" +
242 				" conteudo=\"" + builder.normalize(conteudo) + "\""
243 				);
244 	}
245 	
246 	/**
247 	 * Pega o nome do arquivo XLS.<br>
248 	 * 
249 	 * @author N/C
250      * @since N/C
251      * @version N/C
252 	 * @return String
253 	 */
254     public String getXslFileName() {
255         return "layoutArquivoExportacao.xsl";
256     }
257     
258     /**
259      * Retorna pagina de erro.<br>
260      * 
261      * @author N/C
262      * @since N/C
263      * @version N/C
264      * @param HttpServletRequest request
265      * @param String mensagem
266      * @return String - Erro da pagina
267      */
268     public String getErrorPage(HttpServletRequest request, String mensagem){        
269         String errorPage = "exportarConta.jsp?msgOperacao=" + mensagem; 
270         return errorPage;
271     }
272 }