Re:SiTef - jCliSiTefI

2 respostas
F
/*
 * ServletTeste.java
 *
 * Created on 6 de Agosto de 2010, 17:05
 */

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;
import softwareexpress.sitef.jCliSiTefI;

/**
 *
 * @version
 */
public class ServletTeste extends HttpServlet {
    
    private boolean SiTefIniciado = false;
    private jCliSiTefI CliSiTef = null;
    private int S;
    private String ip = "172.22.202.103"; // Servidor
    //private String ip = "172.22.70.80"; // fonte: do prompt do DOS (comando ipconfig)
    private String ret = "inciando...";
    private int ProximoComando;
    
    private void iniciaSiTef() {
        
        try {
            CliSiTef = new jCliSiTefI();
        } catch(Throwable e) {
            ret = e.toString();
        }
        //out.println("1*" + ret);
        if(CliSiTef != null) {
            ret += ":jCliSiTefI CliSiTef = new jCliSiTefI();\n";
            
            //out.println("2*" + ret);
            CliSiTef.SetEnderecoSiTef(ip);
            CliSiTef.SetCodigoLoja("00000000");
            CliSiTef.SetNumeroTerminal("SE000001");
            CliSiTef.SetConfiguraResultado(0);
            S = CliSiTef.ConfiguraIntSiTefInterativo();
            //out.println("3*" + ret);
            if (S != 0) {
                ret += "Erro na ConfiguraIntSiTefInterativo (" + ip + ")= " + S;
            }
            //out.println("4*" + ret);
            CliSiTef.SetModalidade(100);
            CliSiTef.SetValor("5000");
            CliSiTef.SetNumeroCuponFiscal("123456");
            CliSiTef.SetDataFiscal("20040514");
            CliSiTef.SetHorario("120000");
            CliSiTef.SetOperador("Operador1");
            CliSiTef.SetRestricoes("xxxxxx");
            S = CliSiTef.IniciaFuncaoSiTefInterativo();
            CliSiTef.SetBuffer("");
            CliSiTef.SetContinuaNavegacao(0);
            //out.println("5*" + ret);
            
        } else {
            ret += "CliSiTef == null";
            //out.println("7*" + ret);
        }
        //out.println("8*" + ret);
    }
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        if(CliSiTef == null || request.getSession().getAttribute("pergunta") == null)
        {
            ret = "";
            iniciaSiTef();
        }
        
        ret += "Entrando no loop\n";
        boolean mantemLoop = true;
        boolean usouResposta = false;
        while(mantemLoop) {
            request.getSession().setAttribute("buffer", "Buffer: " + CliSiTef.GetBuffer());
            S = CliSiTef.ContinuaFuncaoSiTefInterativo();
            if (S == -9) 
                break;
            if (S == 10000) {
                          
                // Aqui deve-se colocar o tratamento de cada tipo de ProximoComando
                ret += "ProximoComando = " + CliSiTef.GetProximoComando();
                ret += "TipoCampo = " + CliSiTef.GetTipoCampo();
                ret += "TamanhoMinimo = " + CliSiTef.GetTamanhoMinimo();
                ret += "TamanhoMaximo = " + CliSiTef.GetTamanhoMaximo();
                ret += "Buffer = " + CliSiTef.GetBuffer();
                
                ProximoComando = CliSiTef.GetProximoComando();
                if (ProximoComando >= 20 && ProximoComando != 23 && ProximoComando != 22) {
                    mantemLoop = false;
                    try {
                        String sBuffer = CliSiTef.GetBuffer();
                        String resposta = "";
                        
                        if (request.getParameter("resposta") != null && usouResposta == false)
                            resposta = (String)request.getParameter("resposta");
                        
                        request.getSession().setAttribute("pergunta", sBuffer);
                        
                        if(resposta.length() < 1) // Se não tiver resposta
                            response.sendRedirect("teste2.jsp");
                        else {
                            ret += "Valor de entrada = " + resposta;
                            
                            CliSiTef.SetBuffer(resposta.trim());
                            usouResposta = true;
                            mantemLoop = true;
                            request.getSession().setAttribute("saida", ret);
                        }
                    } catch (Exception e) {
                    }
                }
            }
        }
        request.getSession().setAttribute("saida", ret);
        if (S != 10000) {
            ret += "ContinuaFuncaoSiTefInterativo retornou " + S;
            ret += "Trn pendentes: " + CliSiTef.ObtemQuantidadeTransacoesPendentes();
            CliSiTef.SetConfirma((short) 1);
            CliSiTef.FinalizaTransacaoSiTefInterativo();
            ret += "FinalizaTransacaoSiTefInterativo()";
            
            request.getSession().setAttribute("saida", ret);
            request.getSession().setAttribute("acabou", "sim");
            
            response.sendRedirect("teste2.jsp");
        }
        
        //out.close();
    }
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}

e uma pagina jsp:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%
//Para o IE nao fazer cache do <div>
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Teste CliSiTef</title>
    </head>
    <body>

        <h1>Teste CliSiTef</h1>
        <form method="post" id="form1" action="ServletTeste">
            <%=session.getAttribute("pergunta")%>
            <input type="text" id="resposta" name="resposta">
            <input type="submit">
            <%=session.getAttribute("buffer")%>
            <br>
            Saida:
            &lt;textarea rows="50" cols="80"&gt;
                &lt;%=session.getAttribute("saida")%&gt;
            &lt;/textarea&gt;
            &lt;%
                if(session.getAttribute("acabou") != null)
                {
                    session.setAttribute("saida", null);
                    session.setAttribute("buffer", null);
                    session.setAttribute("pergunta", null);
                    session.setAttribute("acabou", null);
                    %&gt;
                    &lt;script type="text/javascript"&gt;
                        document.form1.submit();
                    &lt;/script&gt; 
                    &lt;%
                }
            %&gt;
        &lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;

2 Respostas

H

Amigo, estou perdido nem sei por onde começar, setei mais ou menos como vc os parametros da dll, mas sempre que chamo o ConfiguraIntSitEfInterativo volta um número gigante como retorno. Como vc fez a carga da dll? Já teve algum retorno gigante como este? Acho que alguém pudesse explicar o passo a passa básico me ajudaria muito.

N

Olá pessoal,

alguem já utilizou essa biblioteca da Software Express ? Estou arrancando os cabelos para poder fazer isso funcionar com minha aplicação WEB.

Minha maior duvida e no bloco abaixo ! Como integro isso com um JSP por exemplo ?

Essa biblioteca trabalha com esse SetBuffer, eu preciso passar os parametros direto e não via in.readline() como tem no exemplo e estou quebrando a cabeça com isso.

Por favor se alguem já passou por isso me ajude ! :smiley:

while (true)
    {
      S = CliSiTef.ContinuaFuncaoSiTefInterativo ( );
      System.out.println("laco" + S);
      if (S != 10000)
        break;

      //  Aqui deve-se colocar o tratamento de cada tipo de ProximoComando
      System.out.println ("ProximoComando = " + CliSiTef.GetProximoComando ( ));
      System.out.println ("TipoCampo = " + CliSiTef.GetTipoCampo ( ));
      System.out.println ("TamanhoMinimo = " + CliSiTef.GetTamanhoMinimo ( ));
      System.out.println ("TamanhoMaximo = " + CliSiTef.GetTamanhoMaximo ( ));
      System.out.println ("Buffer = " + CliSiTef.GetBuffer ( ));

      ProximoComando = CliSiTef.GetProximoComando ( );
      
      //System.out.println("PX" + ProximoComando);
      
      if (ProximoComando >= 20 &&  ProximoComando != 23 && ProximoComando != 22){
        try {
          CliSiTef.SetBuffer (in.readLine ( ));
        } catch (IOException e) {
        }
      }
    }

Muito Obrigado

Criado 10 de agosto de 2010
Ultima resposta 22 de mar. de 2010
Respostas 2
Participantes 3