ru.kuban.rpc.fiscal
Class PrinterQueue

java.lang.Object
  extended by ru.kuban.rpc.fiscal.AbstractPrinterQueue
      extended by ru.kuban.rpc.fiscal.PrinterQueue

public class PrinterQueue
extends AbstractPrinterQueue

Очередь принтера. Вся работа с принтером производится через данную очередь. Все методы данного класса блокирующие, т.е. управление возвращается только после выполнения метода. Класс является потокобезопасным, все обращения к методам данного класса из разных потоков выполняются строго по очереди и образуют очередь принтера.


Method Summary
 void addBufferListener(PrinterBufferListener l)
          Регистрирует слушатель событий принтера, связанных с изменением буфера Z-отчетов принтера.
 ZReport closeSession()
          Закрывает текущую смену на принтере.
 java.lang.Integer getBufSize()
          Получает из принтера размер буфера Z-отчетов.
 void initPrinter()
          Инициализирует принтер.
 boolean isSessionOpened()
          Получает из принтера данные о текущей смене и если текущая смена открыта возвращает true.
 boolean isSessionOver()
          Получает из принтера данные о текущей смене и если текущая смена открыта и превысила 24 часа возвращает true.
 FiscalData printFiscalCheck(double totalSum, double... sum)
          Печатает на принтере фискальный чек и возвращает фискальные данные в виде FiscalData.
 void printNewRollCheck()
          Печатает на принтере чек смены рулона, аналогичен printTestCheck.
 void printTestCheck(java.lang.String... str)
          Печатает на принтере тестовый нефискальный чек.
 void printXReport()
          Распечатывает X-отчет текущей смены.
 void printZReports()
          Распечатывает Z-отчеты из буфера принтера.
 void removeBufferListener(PrinterBufferListener l)
          Удаляет слушатель событий принтера, связанных с изменением буфера Z-отчетов принтера.
 PrinterInfo updateStatus()
          Считывает из принтера данные, такие как серийный номер, номер ЭКЛЗ и т.д.
 
Methods inherited from class ru.kuban.rpc.fiscal.AbstractPrinterQueue
addQueueListener, addStatusListener, awaitTermination, getErrorDescr, getFiscalStatus, getLength, getPrinterStatus, getStatus, removeQueueListener, removeStatusListener, shutdown
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

addBufferListener

public void addBufferListener(PrinterBufferListener l)
Регистрирует слушатель событий принтера, связанных с изменением буфера Z-отчетов принтера. При изменении размера буфера выкидывается событие. Размер буфера изменяется при закрытии смены с печатью Z-отчета в буфер и при распечатывании Z-отчетов из буфера.

Parameters:
l - слушатель событий буфера принтера. Если равен null исключение выброшено не будет и слушатель добавлен не будет

removeBufferListener

public void removeBufferListener(PrinterBufferListener l)
Удаляет слушатель событий принтера, связанных с изменением буфера Z-отчетов принтера.

Parameters:
l - слушатель событий буфера принтера. Если равен null исключение выброшено не будет и слушатель удален не будет

initPrinter

public void initPrinter()
                 throws java.lang.InterruptedException,
                        PrinterException
Инициализирует принтер. Проверяет связь с принтером и готовность к работе, записывает базовые настройки в принтер. Рекомендуется вызывать данный метод перед началом работы.

Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером

updateStatus

public PrinterInfo updateStatus()
                         throws java.lang.InterruptedException,
                                PrinterException
Считывает из принтера данные, такие как серийный номер, номер ЭКЛЗ и т.д.

Returns:
Доступные данные принтера
Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером

printTestCheck

public void printTestCheck(java.lang.String... str)
                    throws java.lang.InterruptedException,
                           PrinterException
Печатает на принтере тестовый нефискальный чек.

Parameters:
str - строки для печати на тестовом чеке
Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером

printNewRollCheck

public void printNewRollCheck()
                       throws java.lang.InterruptedException,
                              PrinterException
Печатает на принтере чек смены рулона, аналогичен printTestCheck.

Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером

printFiscalCheck

public FiscalData printFiscalCheck(double totalSum,
                                   double... sum)
                            throws java.lang.InterruptedException,
                                   PrinterException,
                                   PrinterSessionOverException
Печатает на принтере фискальный чек и возвращает фискальные данные в виде FiscalData.

Parameters:
totalSum - сумма "итого", должна быть равна сумме промежуточных сумм
sum - промежуточные суммы, должна быть как минимум одна промежуточная сумма
Returns:
представление данных фискального чека в формате принтера
Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером
PrinterSessionOverException - возникает при попытке печати фискального чека при истекшей текущей смене (если истекло 24 часа)
See Also:
FiscalData

getBufSize

public java.lang.Integer getBufSize()
                             throws java.lang.InterruptedException,
                                    PrinterException
Получает из принтера размер буфера Z-отчетов. Означает сколько еще Z-отчетов можно записать в буфер до его окончания.

Returns:
Размер буфера Z-отчетов
Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером

isSessionOpened

public boolean isSessionOpened()
                        throws java.lang.InterruptedException,
                               PrinterException
Получает из принтера данные о текущей смене и если текущая смена открыта возвращает true. В противном случае возвращает false. Если смена открыта, её можно закрыть методом closeSession().

Returns:
true - смена открыта, false - смена не открыта
Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером
See Also:
closeSession()

isSessionOver

public boolean isSessionOver()
                      throws java.lang.InterruptedException,
                             PrinterException
Получает из принтера данные о текущей смене и если текущая смена открыта и превысила 24 часа возвращает true. В противном случае возвращает false. Если смена привысила 24 часа, следующий фискальный чек приведет к ошибке, чтобы этого избежать необходимо закрыть текущую смену методом closeSession().

Returns:
true - смена превысила 24 часа, false - смена еще не превысила 24 часа
Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером
See Also:
closeSession()

printXReport

public void printXReport()
                  throws java.lang.InterruptedException,
                         PrinterException
Распечатывает X-отчет текущей смены.

Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером

closeSession

public ZReport closeSession()
                     throws java.lang.InterruptedException,
                            PrinterException
Закрывает текущую смену на принтере. При закрытии смены формируется Z-отчет и, если принтер поддерживает такую возможность, записывается в буфер принтера. В противном случае Z-отчет распечатывается на принтере.

Returns:
Данные Z-отчета
Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером
See Also:
ZReport

printZReports

public void printZReports()
                   throws java.lang.InterruptedException,
                          PrinterException
Распечатывает Z-отчеты из буфера принтера. Очень длительная операция, в зависимости от количества Z-отчетов занимает несколько десятков секунд. Если в буфере нет Z-отчетов, печать не происходит

Throws:
java.lang.InterruptedException - возникает если очередь принтера будет прервана во время выполнения
PrinterException - возникает при ошибке взаимодействия с принтером