/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package gestor.utiles;

import gestor.*;

public class PrinterStatus {

   static int detectadoPocoPapel = -1;

   public native static int getPrinterStatus();

   public static boolean comprobarImpresoraPreparada() {
      StringBuilder sb = new StringBuilder();
      int r = 0;
      try {
         r = getPrinterStatus();
      } catch(Exception ex) {
         //String s = ex.getMessage();
      }
      r = r & 999;
      if (r != 0) {
         String nombre = Configuracion.instanciaUnica().codigoGestor;
         sb.append("**** ATENCIÓN -- IMPRESORA DE TIQUE ****").append("#");
         sb.append("  Autoservicio  ").append(nombre).append("#");
         if(Configuracion.instanciaUnica().modoDebug) {
            sb.append(r).append(": ");
         }
         switch (r) {
            case -1:
               sb.append("ERROR DE ACCESO A LA IMPRESORA");
               break;
            case 1:
               sb.append("IMPRESORA SIN PAPEL");
               break;
            case 4:
               sb.append("QUEDA POCO PAPEL");
               detectadoPocoPapel++;
               if (detectadoPocoPapel > 15) {
                  detectadoPocoPapel = 0;
               }
               break;
            case 32:
               sb.append("ATASCO EN LA SALIDA (¿Tique no retirado?)");
               break;
            default:
               sb.append("Cod.Err:").append(r);
               break;
            }
         if (r != 4 || detectadoPocoPapel == 0) {
            if(Configuracion.instanciaUnica().modoDebug) {
               Global.mainForm.MsgBox(sb.toString().replaceAll("#", "\n"));
            } 
            Comunicaciones.comm.enviar(Comunicaciones.MENSAJE_A_ADMINISTRADOR,
                    "autoServicio", nombre, sb.toString());
            Comunicaciones.comm.enviar(Comunicaciones.MENSAJE_A_GESTORES,
                    "autoServicio", nombre, sb.toString());
         }
      }
      return (r == 0 || r == 4);
   }
}
